El problema
Un agente de atención al cliente basado en un LLM puede sonar convincente y educado y, aun así, fallar donde más duele: prometer productos agotados, aplicar políticas de devolución obsoletas o repetir llamadas a herramientas en bucle. Nada de eso hace saltar un error técnico en la consola.
La solución
Herramientas de soporte
Suites de evaluación offline (LangSmith)
Producción
En el proyecto Building Reliable Agents instrumenté el agente de soporte OfficeFlow y lo fui mejorando, de la versión inicial a una v5 lista para producción, con el ciclo Build ➔ Test ➔ Deploy ➔ Monitor de LangSmith:
- De v0 a v5:
- v0: agente base, sin trazabilidad ni políticas acotadas.
- v1: instrumentación completa con LangSmith para ver las ejecuciones.
- v2: instrucciones reforzadas sobre el uso de herramientas y el formato de respuesta.
- v3: reglas estrictas para comprobar el stock en la base de datos SQLite antes de responder.
- v4: RAG sin trocear (No-chunking RAG), para consultar íntegras las políticas de la empresa.
- v5: respuestas más concisas, sin redundancias.
- Evaluación offline en tres capas:
- Heurísticas en código: scripts deterministas (
eval_schema_check.py) que validan la estructura JSON exacta y el stock en la base de datos, sin gastar LLM. - Evaluadores semánticos (LLM-as-a-judge): rúbricas automáticas que miden la fidelidad a la documentación oficial y la veracidad de las afirmaciones.
- Comparación por pares (Pairwise Evaluation): experimentos ciegos que enfrentan dos versiones del prompt (
run_pairwise_experiment.py) con orden aleatorio (randomize_order=True), para comprobar si la nueva supera a la anterior.
- Heurísticas en código: scripts deterministas (
- Monitorización en producción y colas de feedback:
- Reglas de automatización que analizan el tráfico en vivo en LangSmith.
- El agente Insights detecta tendencias de insatisfacción.
- Las trazas fallidas o con votos negativos pasan solas a colas de anotación humana (Annotation Queues) para que el equipo las revise.
Stack desglosado
- Orquestación: LangGraph y Python.
- Plataforma de observabilidad: LangSmith (
@traceable,RunTree,metadata,tags). - Bases de datos: SQLite (inventario de productos y base de conocimiento).
- Metodología de testing:
langsmith.evaluate(), evaluadores heurísticos deterministas y evaluadores de criterios LLM.
Resultados y aprendizajes
Lo que funcionó fue cambiar la validación a mano («probar a ojo con 3 preguntas») por suites de evaluación offline que se pueden repetir. Cada cambio en un prompt o en un modelo se valida contra datasets cerrados, con métricas numéricas, antes de tocar el despliegue.
Lo que aprendí: la fiabilidad de un agente no la regala el LLM. Se trabaja como cualquier otra disciplina de ingeniería, con trazabilidad detallada, aserciones deterministas sobre las herramientas y ciclos continuos de feedback humano.