Saltar al contenido principal
Jordi Izquierdo Montalbán
Proyectos

Agente de Pedidos LangSlice

Ciclo de vida completo Build-Test-Deploy-Monitor con create_agent de LangChain v0.3+: análisis forense de trazas para resolver fallos lógicos en herramientas, evaluadores heurísticos de stock y evaluación online de sentimiento de clientes.

Código privado: te lo enseño en una entrevista

LangChain v0.3, LangGraph Studio, LangSmith, Python, FastAPI, LLM-as-a-Judge, uv

El problema

Los agentes conversacionales que gestionan pedidos en tiempo real traen un tipo de fallo nuevo: el bug lógico silencioso. El modelo responde con un lenguaje impecable y cordial, pero por dentro confirma ingredientes agotados o aplica mal la regla del pedido mínimo. El cliente se frustra y el servidor no lanza ninguna excepción.

La solución

De la detección del fallo a la monitorización: agente de pedidos (create_agent) → análisis forense de trazas → evaluación offline de stock → LangGraph Studio/Cloud → LLM-as-a-judge de sentimiento.

Desarrollé y desplegué el agente de pedidos LangSlice con LangChain v0.3 (create_agent) y LangGraph. Seguí un flujo de diagnóstico, corrección, despliegue y monitorización continua:

  1. Instrumentación y análisis forense de trazas:
    • Bug 1, toppings sin stock: inspeccioné la jerarquía de spans con @traceable sobre las llamadas a herramientas secundarias (get_ingredient) y vi por qué el agente confirmaba ingredientes agotados sin avisar al cliente.
    • Reproduje el fallo de forma determinista con datasets de trazas pregrabadas (upload_traces.py --input traces-1.json).
  2. Evaluación offline con datasets cerrados (eval.py):
    • Escribí un evaluador heurístico (ingredient_stock_evaluator) que audita las llamadas a herramientas y comprueba que no se admite en el pedido ningún ingrediente con stock menor o igual a cero.
    • Refactoricé la herramienta para que use db.list_toppings() y filtre solo las existencias disponibles.
  3. Despliegue local y en la nube:
    • Configuré el manifiesto langgraph.json.
    • Levanté el entorno en local con LangGraph Studio y el servidor integrado en el puerto 2024, para depurar de forma visual, bifurcar estados y separar el tráfico de desarrollo del de producción.
    • Lo conecté a una interfaz web para usuarios finales (agent_client.py, app.py).
  4. Monitorización en producción y Bug 2:
    • Con tráfico real apareció el Bug 2: la regla de pedido mínimo de entrega ($25) calculaba solo el subtotal de las guarniciones e ignoraba las pizzas.
    • Configuré un evaluador online continuo a nivel de conversación (thread), con una rúbrica semántica de varios factores (tono y resolución efectiva del pedido).
    • Detecté un sesgo de falso positivo con usuarios educados pero insatisfechos usando la variable {{{human_ai_pairs}}}, y pasé esos casos a colas de anotación humana.

Stack desglosado

  • Ecosistema: LangChain v0.3 (create_agent), LangGraph y LangGraph Studio.
  • Entorno de ejecución: Python y empaquetado rápido con uv.
  • Servidor y API: LangGraph Server, FastAPI y cliente web integrado.
  • Observabilidad y calidad: LangSmith (trazas jerárquicas, datasets reproducibles y evaluación online a nivel de hilo).

Resultados y aprendizajes

Lo que funcionó fue depurar de forma visual en LangGraph Studio y apoyarme en datasets de regresión. Pude bifurcar el estado de una conversación justo antes de la llamada a la herramienta, arreglar la lógica del pedido en minutos y probar la corrección sobre cientos de variantes sintéticas.

Lo que aprendí: en producción los peores errores no son los que revientan con un error 500, sino los que se ejecutan limpios y devuelven un resultado de negocio equivocado.