Desplegando agentes LangGraph en producción: checklist completo

By Carlos Montiel | Especialista en IA Empresarial
Publicado: 2026-07-28 | Por: Carlos Montiel | Lectura: ~4 minutos

Un grafo que funciona en un notebook está a varios pasos de estar listo para producción. Este es el checklist que aplicamos antes de dar luz verde a un agente LangGraph con usuarios reales.

1. Persistencia real, no MemorySaver

`MemorySaver` guarda el estado en la memoria del proceso Python: se pierde en cada reinicio y no funciona si tienes más de una instancia del servicio detrás de un balanceador de carga, porque cada instancia tendría su propia memoria aislada. Para producción, usa `PostgresSaver` o `RedisSaver` con una base de datos compartida entre instancias:

from langgraph.checkpoint.postgres import PostgresSaver from psycopg_pool import ConnectionPool pool = ConnectionPool( conninfo=os.environ["DATABASE_URL"], max_size=20, kwargs={"autocommit": True, "prepare_threshold": 0}, ) checkpointer = PostgresSaver(pool) checkpointer.setup() app = builder.compile(checkpointer=checkpointer)

Verifica también una política de retención: conversaciones abandonadas acumulan filas indefinidamente si no hay un job programado que purgue hilos inactivos después de N días, según tu política de datos.

2. Límites de recursión y de tiempo

Un grafo con un ciclo mal condicionado puede entrar en bucle infinito, agotando presupuesto de API antes de que nadie lo note. LangGraph tiene un límite de recursión por defecto, pero debe ajustarse explícitamente a tu caso:

config = { "configurable": {"thread_id": thread_id}, "recursion_limit": 25, } try: resultado = app.invoke(entrada, config=config) except GraphRecursionError: logger.error("Grafo excedió el límite de recursión", extra={"thread_id": thread_id}) resultado = respuesta_de_fallback()

Complementa esto con un timeout a nivel de infraestructura (por ejemplo, en el gateway o el worker que invoca el grafo), independiente del límite de recursión, para cubrir el caso de un nodo individual que se cuelga esperando una API externa lenta.

3. Manejo de errores por nodo

Un nodo que lanza una excepción no controlada detiene todo el grafo. Para herramientas externas (APIs de terceros, bases de datos), envuelve la lógica del nodo con manejo de errores explícito que devuelva un estado de error legible en lugar de propagar la excepción cruda:

def nodo_consultar_inventario(estado: EstadoAgente): try: resultado = api_inventario.consultar(estado["sku"]) return {"inventario": resultado, "error": None} except TimeoutError: return {"inventario": None, "error": "timeout_inventario"} except Exception as e: logger.exception("Error inesperado consultando inventario") return {"inventario": None, "error": "error_desconocido"}

El nodo siguiente en el grafo puede entonces ramificar según `estado["error"]`, decidiendo si reintenta, escala a un humano, o responde con un mensaje de disculpa al usuario, en lugar de que el usuario reciba un error 500 sin contexto.

4. LangGraph Platform vs. despliegue propio

Para equipos que no quieren operar la infraestructura de checkpointing, colas y escalado, LangGraph Platform ofrece despliegue gestionado con APIs REST generadas automáticamente a partir del grafo compilado, streaming nativo, y un panel de gestión de hilos e interrupciones pendientes. Para equipos con requisitos de residencia de datos estrictos (frecuente en clientes financieros y gubernamentales en la región), el despliegue propio sobre un servidor ASGI expuesto con `langgraph-api` sigue siendo la opción, a cambio de operar tú mismo la infraestructura de persistencia y escalado.

5. Observabilidad desde el día uno

Conecta LangSmith (o el sistema de trazas equivalente) antes del primer usuario real, no después del primer incidente. Cada invocación debe llevar metadata de correlación —`user_id`, `thread_id`, versión del grafo desplegado— para poder filtrar trazas cuando algo falla:

config = { "configurable": {"thread_id": thread_id, "user_id": user_id}, "tags": ["prod", "v2.3.0"], "metadata": {"canal": "whatsapp"}, }

6. Pruebas de regresión sobre el grafo completo

Antes de cada despliegue, corre el conjunto de evaluación (cubierto en el artículo sobre LangSmith) contra el grafo completo, no solo contra nodos individuales aislados: un cambio en el prompt del nodo supervisor puede alterar el enrutamiento hacia trabajadores de forma no obvia si solo se prueba el nodo modificado en aislamiento. La lista de verificación mínima antes de promover a producción: persistencia compartida configurada, límite de recursión ajustado, manejo de error por nodo que puede fallar externamente, trazabilidad con metadata de correlación, y suite de evaluación ejecutada contra el grafo compilado completo.

Carlos Montiel
Arquitecto de Soluciones IA Empresarial
Especialista en LLMs, Agentes y Orquestación
guatemalia.com/#contacto · info@guatemalia.com

¿Necesitas implementar IA en tu empresa?

Carlos Montiel es arquitecto de soluciones IA empresarial. Implementa LLMs, Agentes, RAG y orquestadores en empresas de Guatemala y Latinoamérica. Contáctalo para una consultoría.

Contactar a Carlos Montiel

info@guatemalia.com