# Falto definir 'TriajeOut' por eso lanzamos este script
from typing import Literal, List, Dict
from pydantic import BaseModel, Field
from langchain_core.messages import SystemMessage, HumanMessage
# 1. Definimos el molde Pydantic (Asegurate de ejecutar esto primero)
class TriajeOut(BaseModel):
decision: Literal["AUTO_RESOLVER", "PEDIR_INFO", "ABRIR_TICKET"] = Field(
description="La acción a tomar basándose en las reglas de negocio."
)
urgency: Literal["BAJA", "MEDIA", "ALTA"] = Field(
description="Nivel de urgencia evaluado a partir de la criticidad del mensaje del usuario."
)
missing_fields: List[str] = Field(
default=[],
description="Lista de campos o datos que faltan si la decisión es PEDIR_INFO. Vacío en otros casos."
)
# 2. Vinculamos el modelo estructurado a Groq
chain_de_triaje = llm_groq.with_structured_output(TriajeOut)
# 3. Definición de la función de triaje
def triaje(mensaje: str) -> Dict:
salida = chain_de_triaje.invoke(
[
SystemMessage(content=PROMPT_TRIAJE),
HumanMessage(content=mensaje)
]
)
return salida.model_dump()
print("✅ Modelo Pydantic y función 'triaje' cargados con éxito.")