Inicio / Artículos

LangGraph para agentes de producción: puntos de control, HITL y grafos multiagente

Por qué las cadenas se detienen y reinician en los ciclos, y cómo los nodos, aristas y salvadores de puntos de control de LangGraph hacen que los agentes de producción sean operativos, con revisión humana en el proceso.

Editor: REACTAPP.TOP7 min de lectura1610 palabras

Fuentes: LangGraph Explained: Build Production-Ready AI Agents in 2026

¿Qué es LangGraph?

LangGraph es un entorno de ejecución para crear agentes con estado y multi-pasos como grafos explícitos: los nodos realizan tareas, las aristas deciden qué se ejecuta a continuación, y el estado compartido persiste a lo largo de los pasos, incluso después de fallos o pausas humanas.

Hace dos años, muchos “agentes” eran bucles while alrededor de un LLM sin posibilidad de recuperación. Los fallos a mitad de tarea obligaban a reiniciar desde cero. Los grafos convierten la memoria, las ramificaciones y la reanudación en elementos fundamentales.

Por qué las cadenas no eran suficientes

Las cadenas LCEL son ideales para pipelines lineales. Tienen dificultades cuando se necesitan ciclos, enrutamiento condicional, puntos de control duraderos o aprobación humana durante la ejecución. Esos son problemas propios de los grafos.

Conceptos clave: nodos, aristas y estado

  • Estado — campos tipados que lleva a cabo la ejecución
  • Nodos — funciones que actualizan el estado
  • Aristas — transiciones fijas o condicionales
  • Compilar — validar la estructura, adjuntar un marcador de verificación
  • Invocar/fluir — ejecutar con configuración
  • from typing import TypedDict, Annotated
    from langgraph.graph import StateGraph, END
    import operator
    
    # Define your state
    class AgentState(TypedDict):
        messages: Annotated[list, operator.add]
        next_action: str
        final_answer: str
    
    from langgraph.graph import StateGraph, END
    from langgraph.prebuilt import ToolNode
    from langchain_openai import ChatOpenAI
    from langchain_core.tools import tool
    
    # 1. Define a tool
    @tool
    def search_web(query: str) -> str:
        """Search the web for current information."""
        # Connect to your actual search API here
        return f"Search results for: {query}"
    
    # 2. Define the LLM with tools bound
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    tools = [search_web]
    llm_with_tools = llm.bind_tools(tools)
    
    # 3. Define node functions
    def call_llm(state):
        response = llm_with_tools.invoke(state["messages"])
        return {"messages": [response]}
    
    def should_continue(state):
        last_message = state["messages"][-1]
        if last_message.tool_calls:
            return "run_tools"
        return END
    
    # 4. Build the graph
    workflow = StateGraph(AgentState)
    workflow.add_node("agent", call_llm)
    workflow.add_node("run_tools", ToolNode(tools))
    
    workflow.set_entry_point("agent")
    workflow.add_conditional_edges("agent", should_continue)
    workflow.add_edge("run_tools", "agent")
    
    # 5. Compile with a checkpointer
    from langgraph.checkpoint.sqlite import SqliteSaver
    memory = SqliteSaver.from_conn_string("agents.db")
    graph = workflow.compile(checkpointer=memory)
    
    # 6. Run with a thread ID for persistent state
    config = {"configurable": {"thread_id": "user-123"}}
    result = graph.invoke({"messages": [("user", "What is the latest GPT model?")]}, config)
    print(result["messages"][-1].content)
    
    # Add a human approval gate before a risky action
    workflow.add_node("human_review", interrupt(before="execute_payment"))
    
    pip install langgraph langchain-openai psycopg2-binary
    

    Cómo funciona realmente la gestión de estados

    Las actualizaciones se fusionan a través de los reductores. Los reductores mal configurados duplican mensajes o eliminan campos. Considere la elección del reductor como parte de la revisión del esquema.

    Primer agente (Python)

    Defina el estado → agregue nodos → conecte aristas → compile → invoque con un ID de hilo al usar un salvador.

    Intervención humana

    Interrumpa antes de que surjan efectos secundarios; reanude con un paquete de aprobación. Esta es la diferencia operativa entre las demostraciones y los agentes en producción.

    Patrones multiagente

    Las transferencias de supervisores/especialistas, las ramas paralelas y los subgrafos se corresponden perfectamente con nodos nombrados que comparten o tienen estados particionados.

    Persistencia y recuperación

    Los mecanismos de punto de control respaldados por base de datos sobreviven a los reinicios del proceso. Los salvadores en memoria son solo para pruebas.

    Cuándo usar LangGraph

    Úsalo cuando el flujo de control es no lineal, se debe pausar o reanudar. Prefiere cadenas más simples para respuestas RAG de un solo uso sin ramificaciones.

    Cierre

    Los agentes en producción necesitan un estado y aristas explícitos, no soluciones improvisadas. LangGraph es una forma fiable de representar todo esto en código.

    Omite el ruido promocional del mercado; el valor real radica en el flujo de control con puntos de control y en HITL. Mantén los tutoriales centrados en estas herramientas básicas.

    Instrumenta los eventos de inicio/finalización de los nodos para que las trazas muestren qué rama se ejecutó. Los grafos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Renombrar un nodo sin realizar una migración interrumpe los hilos reanudados que aún apuntan a los nombres antiguos.

    Omite el ruido de las promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de los nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Renombrar un nodo sin realizar una migración interrumpe los hilos reanudados que aún apuntan a los nombres antiguos.

    Omite el ruido de las promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de los nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Renombrar un nodo sin realizar una migración interrumpe los hilos reanudados que aún apuntan a los nombres antiguos.

    Omite el ruido de las promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de los nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Renombrar un nodo sin realizar una migración interrumpe los hilos reanudados que aún apuntan a los nombres antiguos.

    Omite el ruido de las promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de los nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de gráficos de versiones junto con las instrucciones. Un cambio de nombre de nodo sin migración interrumpe los hilos reanudados que aún apuntan a nombres antiguos.

    Omite el ruido de promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y HITL. Mantén los tutoriales centrados en esas primitivas.

    Instrumenta los eventos de inicio/finalización de nodos para que las trazas muestren qué rama se ejecutó. Los gráficos sin telemetría se convierten en cajas negras a las 2 de la madrugada.

    Definiciones de grafos de versiones junto con las instrucciones. Renombrar un nodo sin realizar migración interrumpe los hilos en curso que aún hacen referencia a los nombres antiguos.

    Omite el ruido de las promociones del mercado; el valor técnico radica en el flujo de control con puntos de verificación y en HITL. Mantén los tutoriales centrados en esas primitivas.

    Asocia cada tipo de incidente en producción a una característica del grafo: tiempos de espera → nodo de reintentos, JSON incorrecto de la herramienta → nodo de validación, anulación por el operador → interrupción.

    Los subgrafos ayudan a aislar las instrucciones específicas de cada especialista sin perder ni un solo ID de hilo padre para fines de auditoría.

    Evita incluir toda la política empresarial en un único nodo central; divídela para que los fallos puedan atribuirse claramente.

    Asocia cada tipo de incidente en producción a una característica del grafo: tiempos de espera → nodo de reintentos, JSON incorrecto de la herramienta → nodo de validación, anulación por el operador → interrupción.

    Los subgrafos ayudan a aislar las instrucciones específicas de cada especialista sin perder ni un solo ID de hilo padre para fines de auditoría.

    Evite cargar toda la política empresarial en un único nodo central; divídala para que los fallos puedan atribuirse a algo específico.

    Asocie cada tipo de incidente en producción con una característica del grafo: tiempos de espera → nodo de intentos repetidos, JSON incorrecto de la herramienta → nodo de validación, anulación por parte del operador → interrupción.

    Los subgrafos ayudan a aislar las solicitudes de los especialistas sin perder ni un solo ID de hilo padre para fines de auditoría.

    Evite cargar toda la política empresarial en un único nodo central; divídala para que los fallos puedan atribuirse a algo específico.

    Asocie cada tipo de incidente en producción con una característica del grafo: tiempos de espera → nodo de intentos repetidos, JSON incorrecto de la herramienta → nodo de validación, anulación por parte del operador → interrupción.

    Los subgrafos ayudan a aislar las solicitudes de los especialistas sin perder ni un solo ID de hilo padre para fines de auditoría.

    Evite cargar toda la política empresarial en un único nodo central; divídala para que los fallos puedan atribuirse a algo específico.

    Asigne a cada tipo de incidente en producción una característica del grafo: tiempos de espera → nodo de reintentos, JSON inválido de la herramienta → nodo de validación, anulación por el operador → interrupción.

    Los subgrafos ayudan a aislar las solicitudes de especialistas sin perder ni un solo ID de hilo padre para auditorías.

    Evite cargar toda la política empresarial en un único nodo central; divídala para que los fallos puedan atribuirse claramente.

    Asigne a cada tipo de incidente en producción una característica del grafo: tiempos de espera → nodo de reintentos, JSON inválido de la herramienta → nodo de validación, anulación por el operador → interrupción.

    Los subgrafos ayudan a aislar las solicitudes de especialistas sin perder ni un solo ID de hilo padre para auditorías.

    Lecturas relacionadas