Startseite / Artikel

LangGraph für Produktionsagenten: Kontrollpunkte, HITL und Mehr-Agenten-Graphen

Warum Ketten bei Fahrrädern zum Stillstand kommen und wieder in Bewegung geraten, sowie wie LangGraph-Node, -Kanten und -Checkpoint-Speicher es ermöglichen, Produktionsagenten nutzbar zu machen, wobei eine menschliche Überprüfung eingebunden ist.

Verlag: REACTAPP.TOP7 Min. Lesezeit1610 Wörter

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

Was ist LangGraph?

LangGraph ist eine Laufzeitumgebung zum Erstellen von zustandsbehafteten, mehrschrittigen Agenten als expliziten Graphen: Knoten führen Aufgaben aus, Kanten entscheiden, was als Nächstes ausgeführt wird, und der gemeinsame Zustand bleibt über die Schritte hinweg bestehen – auch nach Fehlern und menschlichen Pausen.

Vor zwei Jahren bestanden viele „Agenten“ aus while-Schleifen um ein LLM ohne Wiederherstellungsmöglichkeit. Abstürze mitten in einer Aufgabe bedeuteten ein Neustarten von vorne. Graphen machen Speicherung, Verzweigungen und Fortsetzung zum Standard.

Warum Ketten nicht ausreichten

LCEL-Ketten eignen sich hervorragend für lineare Pipelines. Sie haben Schwierigkeiten, wenn Zyklen, bedingte Routen, dauerhafte Checkpoints oder menschliche Genehmigungen während des Ablaufs benötigt werden. Das sind Graphenprobleme.

Kernkonzepte: Knoten, Kanten und Zustand

  • Zustand – typisierte Felder, die während des Ablaufs mitgetragen werden
  • Knoten – Funktionen, die den Zustand aktualisieren
  • Kanten – feste oder bedingte Übergänge
  • Kompilieren – Struktur überprüfen, Checkpointer hinzufügen
  • Aufrufen/Streamen – mit Konfiguration ausführen
  • 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
    

    Wie Zustandsverwaltung tatsächlich funktioniert

    Änderungen werden über Reducer zusammengeführt. Falsch konfigurierte Reducer duplizieren Nachrichten oder löschen Felder. Die Auswahl des Reducers sollte als Teil der Schema-Überprüfung betrachtet werden.

    Erster Agent (Python)

    Zustand definieren → Knoten hinzufügen → Kanten verbinden → kompilieren → bei Verwendung eines Savers mit einer Thread-ID aufrufen.

    Mensch im Prozess

    Unterbrechen vor Nebeneffekten; mit einer Genehmigungsdatenmenge fortsetzen. Das ist der operative Unterschied zwischen Demos und Produktionsagenten.

    Mehr-Agent-Muster

    Die Übertragung von Aufgaben zwischen Supervisoren/Spezialisten, parallele Verzweigungen sowie Untergraphen lassen sich sauber auf benannte Knoten mit gemeinsamem oder geteiltem Zustand abbilden.

    Persistenz und Wiederherstellung

    Checkpoint-Tools, die auf einer Datenbank basieren, überstehen Neustarts von Prozessen. In-Memory-Speicherlösungen dienen ausschließlich zum Testen.

    Wann LangGraph verwendet werden sollte

    Nutzen Sie es, wenn der Kontrollfluss nichtlinear ist, pausiert oder fortgesetzt werden muss. Für einmalige RAG-Antworten ohne Verzweigungen sind einfachere Strukturen vorzuziehen.

    Fazit

    Produktionsagenten benötigen expliziten Zustand und Kanten – nicht nur theoretische Ansätze. LangGraph ist eine zuverlässige Methode, dieses Konzept in Code umzusetzen.

    Ignorieren Sie den Marketing-Lärm auf Marktplätzen; der technische Wert liegt in checkpointbasiertem Kontrollfluss und HITL. Halten Sie die Tutorials auf diese Grundlagen fokussiert.

    Instrumentieren Sie Start- und End-Ereignisse der Knoten, damit die Protokolle zeigen, welche Verzweigung ausgeführt wurde. Graphen ohne Telemetriedaten werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graph-Definitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die wieder aufgenommenen Threads, die weiterhin auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen auf dem Markt; der technische Wert liegt im kontrollierten Ablauf mit Checkpoints sowie in HITL. Halten Sie die Tutorials auf diesen Grundkonzepten fokussiert.

    Instrumentieren Sie die Start-/Ende-Ereignisse der Knoten, damit die Spuren zeigen, welche Abzweigung ausgeführt wurde. Graphen ohne Telemetrie werden um 2 Uhr morgens zu Black Boxes.

    Versionen der Graphendefinitionen zusammen mit den Anweisungen. Ein Umbenennen eines Knotens ohne Migration stört die fortgesetzten Threads, die noch auf alte Namen verweisen.

    Ignorieren Sie den Lärm aus Marketingaktionen des Marktplatzes; der technische Wert liegt im überwachten Ablauf und in HITL. Halten Sie die Tutorials auf diese Grundkonzepte fokussiert.

    Ordnen Sie jedem Typ von Produktionsvorkommnis eine Graphenfunktion zu: Zeitüberschreitungen → Wiederholungs-Knoten, fehlerhaftes JSON der Tool-Software → Validierungs-Knoten, Eingriff des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anweisungen zu isolieren, ohne bei Prüzwecken eine einzige Eltern-Thread-ID zu verlieren.

    Vermeiden Sie es, die gesamte Geschäftsrichtlinie in einen einzigen „Gott-Knoten“ zu packen; teilen Sie sie auf, damit Fehler zugeordnet werden können.

    Ordnen Sie jedem Typ von Produktionsvorkommnis eine Graphenfunktion zu: Zeitüberschreitungen → Wiederholungs-Knoten, fehlerhaftes JSON der Tool-Software → Validierungs-Knoten, Eingriff des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anweisungen zu isolieren, ohne bei Prüzwecken eine einzige Eltern-Thread-ID zu verlieren.

    Vermeiden Sie es, die gesamte Geschäftsrichtlinie in einen einzigen „God-Node“ zu packen; teilen Sie sie auf, damit Fehler zugeordnet werden können.

    Ordnen Sie jedem Typ von Produktionsvorkommnis eine Graphen-Eigenschaft zu: Zeitüberschreitungen → Node für Wiederholungsversuche, fehlerhaftes JSON der Tool-Software → Validierungsnode, Eingriffe des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anfragen zu isolieren, ohne dabei eine einzige Eltern-Thread-ID für die Prüfung zu verlieren.

    Vermeiden Sie es, die gesamte Geschäftsrichtlinie in einen einzigen „God-Node“ zu packen; teilen Sie sie auf, damit Fehler zugeordnet werden können.

    Ordnen Sie jedem Typ von Produktionsvorkommnis eine Graphen-Eigenschaft zu: Zeitüberschreitungen → Node für Wiederholungsversuche, fehlerhaftes JSON der Tool-Software → Validierungsnode, Eingriffe des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anfragen zu isolieren, ohne dabei eine einzige Eltern-Thread-ID für die Prüfung zu verlieren.

    Vermeiden Sie es, die gesamte Geschäftsrichtlinie in einen einzigen „God-Node“ zu packen; teilen Sie sie auf, damit Fehler zugeordnet werden können.

    Jeden Typ von Produktionsstörung auf eine Graphen-Eigenschaft zuordnen: Zeitüberschreitungen → Node für Wiederholungsversuche, fehlerhaftes JSON der Tool-Software → Validierungsnode, Eingriffe des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anfragen zu isolieren, ohne dabei eine einzige Eltern-Thread-ID für die Prüfung zu verlieren.

    Vermeiden Sie es, die gesamte Geschäftsrichtlinie in einen einzigen „Gott-Node“ zu packen; teilen Sie sie auf, damit Fehler zugeordnet werden können.

    Jeden Typ von Produktionsstörung auf eine Graphen-Eigenschaft zuordnen: Zeitüberschreitungen → Node für Wiederholungsversuche, fehlerhaftes JSON der Tool-Software → Validierungsnode, Eingriffe des Operators → Unterbrechung.

    Untergraphen helfen dabei, spezialisierte Anfragen zu isolieren, ohne dabei eine einzige Eltern-Thread-ID für die Prüfung zu verlieren.