Construyendo flujos de trabajo agentivos con LangChain
Durante los últimos dos años en Intuit he estado trabajando en sistemas de IA agentivos que van mucho más allá del simple patrón "prompt entra, respuesta sale". Estos flujos encadenan múltiples llamadas a LLM, invocan herramientas externas y toman decisiones de forma autónoma —todo mientras atienden a millones de usuarios en TurboTax y QuickBooks.
¿Qué hace que un flujo sea "agentivo"?
Las integraciones tradicionales con LLM siguen un patrón petición-respuesta: el usuario pregunta, el modelo responde. Los flujos agentivos son diferentes. El LLM actúa como un motor de razonamiento que decide qué hacer a continuación, invoca herramientas, evalúa resultados e itera hasta completar la tarea.
En Intuit, un flujo agentivo típico se ve así:
- El usuario sube una forma W-2
- El agente invoca una herramienta de OCR para extraer los campos
- El agente valida los datos extraídos contra los esquemas del IRS
- El agente identifica discrepancias y hace preguntas aclaratorias
- El agente llena los campos correctos en la forma fiscal
Cada paso involucra una llamada al LLM que decide la siguiente acción. El agente mantiene el estado, maneja errores y puede retroceder cuando es necesario.
LangChain como capa de orquestación
Elegimos LangChain (y después LangGraph) como nuestro framework de orquestación por varias razones:
- Abstracción de herramientas — Interfaces limpias para envolver APIs internas, bases de datos y microservicios como herramientas invocables
- Gestión de memoria — Soporte integrado para historial de conversación y memoria de trabajo en interacciones de varios turnos
- Componibilidad — Las cadenas y grafos nos permiten construir flujos complejos a partir de componentes simples y testeables
- Observabilidad — La integración con LangSmith nos dio visibilidad completa de los traces en producción
Arquitectura: el grafo del agente
Nuestros agentes en producción usan un patrón de grafo de estados (vía LangGraph) en lugar de simples cadenas secuenciales. Cada nodo del grafo representa una capacidad —extracción de datos, validación, cálculo, interacción con el usuario— y las aristas representan transiciones condicionales.
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node("extract", extract_document_data)
graph.add_node("validate", validate_against_schema)
graph.add_node("clarify", ask_user_clarification)
graph.add_node("populate", populate_form_fields)
graph.add_edge("extract", "validate")
graph.add_conditional_edges("validate", route_on_confidence)
graph.add_edge("clarify", "validate")
graph.add_edge("populate", END)
La función route_on_confidence revisa el puntaje de validación. Si la confianza está por debajo de nuestro umbral, dirige al nodo de aclaración; de lo contrario, avanza al llenado.
Confiabilidad a escala
Ejecutar flujos agentivos para millones de usuarios nos enseñó lecciones duras sobre confiabilidad:
- Presupuestos de tokens — Cada llamada del agente tiene un presupuesto máximo de tokens. Implementamos circuit breakers que terminan cadenas descontroladas antes de agotar recursos.
- Fallbacks deterministas — Cuando el agente no puede resolver una tarea con confianza, caemos en sistemas basados en reglas en lugar de adivinar. Los usuarios confían más en la exactitud que en la velocidad.
- Salidas estructuradas — Forzamos esquemas JSON en cada respuesta del LLM usando modelos Pydantic. Esto atrapa campos alucinados antes de que se propaguen aguas abajo.
- Ejecución asíncrona — Las tareas largas del agente (como análisis multi-documento) corren de forma asíncrona con callbacks de progreso, evitando timeouts en las peticiones.
Monitoreo y evaluación
Construimos un pipeline de evaluación propio que corre cada noche contra un dataset dorado de resultados conocidos. Las métricas clave incluyen:
- Tasa de completación de tareas — Porcentaje de flujos que llegan al estado final sin intervención humana
- Precisión de llamadas a herramientas — Si el agente seleccionó la herramienta correcta en cada paso
- Latencia P95 — Tiempo de extremo a extremo para los flujos más complejos
- Costo por tarea — Gasto total de tokens por flujo completado
Conclusiones clave
Construir sistemas agentivos es fundamentalmente distinto a construir software tradicional. El no determinismo significa que necesitas guardarrieles robustos, pruebas extensas y rutas de degradación elegantes. Pero cuando funciona, los resultados son notables —nuestras funciones impulsadas por agentes redujeron el tiempo de captura manual de datos en un 60% mientras mejoraban la exactitud.
Si vas empezando con flujos agentivos, mi consejo: arranca con una tarea estrecha y bien definida. Logra confiabilidad antes de expandir el alcance. E invierte fuerte en observabilidad desde el día uno —no puedes depurar lo que no puedes ver.
¿Necesitas agentes de IA para tu negocio?
En The Brainy Guys construimos y desplegamos agentes de IA en producción sobre infraestructura dedicada.
Conocer másRecibe ideas de IA e ingeniería
Artículos sobre agentes de IA, sistemas distribuidos y arquitectura de software. Sin spam, te puedes dar de baja cuando quieras.
Sigue leyendo
La geometría de todo: una síntesis de investigación de Riemann a los transformers
Una síntesis de investigación multiagente que rastrea una sola idea matemática —la intuición de Riemann en 1854 de que la geometría es moldeada por el contenido— a través de la relatividad general, la atención de los transformers y la geometría de la actividad poblacional neuronal del cerebro.
Del monolito a los microservicios: lecciones de 20 años
Una retrospectiva de carrera sobre arquitectura de sistemas distribuidos — desde los primeros monolitos en Java hasta los microservicios orientados a eventos, y los trade-offs que realmente importan.