mirror of
https://github.com/marcogll/vanessa_bot_vanity.git
synced 2026-01-13 21:35:16 +00:00
first commit
This commit is contained in:
55
app/modules/ai.py
Normal file
55
app/modules/ai.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import os
|
||||
import importlib
|
||||
import importlib.metadata as importlib_metadata
|
||||
|
||||
# Compatibilidad para entornos donde packages_distributions no existe (p.ej. Python 3.9 con importlib recortado).
|
||||
if not hasattr(importlib_metadata, "packages_distributions"):
|
||||
try:
|
||||
import importlib_metadata as backport_metadata # type: ignore
|
||||
if hasattr(backport_metadata, "packages_distributions"):
|
||||
importlib_metadata.packages_distributions = backport_metadata.packages_distributions # type: ignore[attr-defined]
|
||||
else:
|
||||
importlib_metadata.packages_distributions = lambda: {} # type: ignore[assignment]
|
||||
except Exception:
|
||||
importlib_metadata.packages_distributions = lambda: {} # type: ignore[assignment]
|
||||
|
||||
import google.generativeai as genai
|
||||
|
||||
def classify_reason(text: str) -> str:
|
||||
"""
|
||||
Clasifica el motivo de un permiso utilizando la API de Gemini.
|
||||
|
||||
Args:
|
||||
text: El motivo del permiso proporcionado por el usuario.
|
||||
|
||||
Returns:
|
||||
La categoría clasificada (EMERGENCIA, MÉDICO, TRÁMITE, PERSONAL) o "OTRO" si no se puede clasificar.
|
||||
"""
|
||||
try:
|
||||
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
|
||||
|
||||
model = genai.GenerativeModel('gemini-pro')
|
||||
|
||||
prompt = f"""
|
||||
Clasifica el siguiente motivo de solicitud de permiso en una de estas cuatro categorías: EMERGENCIA, MÉDICO, TRÁMITE, PERSONAL.
|
||||
Responde únicamente con la palabra de la categoría en mayúsculas.
|
||||
|
||||
Motivo: "{text}"
|
||||
Categoría:
|
||||
"""
|
||||
|
||||
response = model.generate_content(prompt)
|
||||
|
||||
# Limpiar la respuesta para obtener solo la categoría
|
||||
category = response.text.strip().upper()
|
||||
|
||||
# Validar que la categoría sea una de las esperadas
|
||||
valid_categories = ["EMERGENCIA", "MÉDICO", "TRÁMITE", "PERSONAL"]
|
||||
if category in valid_categories:
|
||||
return category
|
||||
else:
|
||||
return "PERSONAL" # Si la IA devuelve algo inesperado, se asigna a PERSONAL
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error al clasificar con IA: {e}")
|
||||
return "PERSONAL" # En caso de error, se asigna a PERSONAL por defecto
|
||||
Reference in New Issue
Block a user