Kitchen Nightmares: Edición Agentes de LangChain
Desarrollé una aplicación de salud para analizar recetas y crear planes de comidas.
Utilicé FastAPI y React para la aplicación web. Utilicé LangChain para los agentes. Utilicé LangSmith para ver qué estaban haciendo mis agentes.
El objetivo era sencillo. Un usuario proporciona una URL. La aplicación obtiene la receta y la divide en componentes como platos principales, guarniciones y salsas. Los usuarios pueden luego combinarlos para armar comidas o realizar un seguimiento de las calorías.
Me encontré con un problema importante de fiabilidad en los agentes.
Al principio, utilicé un solo agente para agrupar la receta y dar formato a la salida. Fallaba constantemente. Generaba elementos duplicados. Omitía instrucciones. Combinaba todo en un único bloque gigante.
Intenté una configuración de agentes duales para solucionar esto:
- Agente 1 (Agrupación): Encuentra los diferentes componentes de la receta y organiza los ingredientes y las instrucciones.
- Agente 2 (Estructuración): Toma ese texto organizado y lo convierte en un formato JSON limpio.
Esto funcionó durante un día. Al día siguiente, los errores regresaron. El agente de estructuración empezó a devolver un JSON al que le faltaban todos los ingredientes y las instrucciones.
Dejé de usar sentencias print y empecé a usar LangSmith.
LangSmith me muestra la latencia, el uso de tokens y el coste. Lo más importante es que me muestra exactamente dónde se rompe la cadena.
En mi caso, el agente de agrupación funcionaba perfectamente. Generaba un markdown excelente con todos los detalles. El fallo ocurría en el segundo agente. Estaba perdiendo datos durante la transformación.
Ahora estoy trabajando en tres soluciones:
- Mejorar la fiabilidad del agente: Noté que el agente de estructuración intenta adivinar un campo de tipo de cocina que no estaba en el prompt original. Esta confusión causa errores.
- Añadir validación: Utilizaré funciones de Python para comprobar la salida. Quiero asegurarme de que el markdown sea correcto y de que no haya duplicados.
- Mejor observabilidad: Quiero vincular cada ejecución de agente a una solicitud de usuario específica para facilitar el rastreo.
Construir con agentes no es una tarea de una sola vez. Es un ciclo constante de pruebas y correcciones.
Fuente: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi
