Skip to main content
NexPatch
8 Min. Lesezeit

LangGraph Deep Dive: Zyklische Workflows und State Management für AI-Agenten

LangGraph ermöglicht komplexe, zustandsbehaftete Agentenprozesse mit zyklischen Abläufen, bedingten Verzweigungen und Checkpointing – weit über lineare LangChain-Ketten hinaus.

LangGraph Workflow-Diagramm mit State Management für AI-Agenten

LangGraph Deep Dive: Zyklische Workflows und State Management für AI-Agenten

LangGraph ist Teil des LangChain-Ökosystems, aber stärker auf graphbasierte Steuerung und explizites State-Management ausgerichtet. Im Gegensatz zu LangChain, das Arbeitsabläufe als geradlinige Ketten (Directed Acyclic Graphs) abbildet, erlaubt LangGraph beliebige gerichtete Graphen mit Schleifen und gemeinsamem Zustand. Dadurch sind komplexe, interaktive Agentenprozesse möglich, bei denen Schritte wiederholt oder in unterschiedlicher Reihenfolge ausgeführt werden können. LangGraph wurde explizit für zustandsbehaftete Multi-Agenten-Anwendungen konzipiert.

Graph-basierte Agentensteuerung mit LangGraph

In LangGraph fließt ein zentrales State-Objekt durch den Graphen. Jeder Knoten ist eine Python-Funktion, die das aktuelle state (z.B. als TypedDict oder Pydantic-Modell) empfängt und manipuliert. Man definiert einen Workflow beispielsweise so:

from langgraph.graph import StateGraph, MessagesState, START, END def mock_llm(state: MessagesState) -> MessagesState: # Beispiel: KI-Modell-Antwort hinzufügen state.messages.append({"role": "ai", "content": "Hello!"}) return state # Graph mit dem Zustandsmodell MessagesState anlegen graph = StateGraph(MessagesState) graph.add_node("mock_llm", mock_llm) # Knoten hinzufügen graph.add_edge(START, "mock_llm") # Start -> mock_llm graph.add_edge("mock_llm", END) # mock_llm -> Ende # Graph kompilieren und ausführen app = graph.compile() result = app.invoke({"messages": [{"role": "user", "content": "Hi!"}]})

In diesem einfachen Beispiel wird nach dem Startknoten mock_llm ausgeführt und dann das Ende erreicht. Alle Knoten greifen auf dasselbe state zu, das zwischen den Aufrufen weitergegeben wird. Das state-Objekt kann komplexe Datenstrukturen enthalten – Nachrichtenlisten, Variablen, Zwischenergebnisse – die von jedem Knoten gelesen und erweitert werden können.

Zyklische Workflows und Conditional Edges

Abstrakte Darstellung zyklischer Workflows und bedingter Verzweigungen

LangGraph unterstützt zyklische Abläufe und bedingte Verzweigungen über Conditional Edges. Mit add_conditional_edges lässt sich festlegen, welcher Knoten nach einem Knoten ausgeführt wird, je nach Zustand. Angenommen, das State enthält eine boolesche Variable flag. Eine Routing-Funktion leitet dann je nach Wert weiter zum Knoten „positive" oder „negative":

def decide(state): return "positive" if state.get("flag", False) else "negative" graph.add_node("positive", handle_positive) graph.add_node("negative", handle_negative) graph.add_conditional_edges("start", decide, {True: "positive", False: "negative"})

decide(state) prüft das flag-Feld. Ist es True, geht es zum Knoten „positive", sonst zu „negative". Man kann beliebig viele Zielknoten und sogar den END-Knoten eintragen. Intern erzeugt LangGraph dadurch einen flexiblen Workflow-Zweig, der abhängig vom Laufzeit-Zustand verzweigt und auch Schleifen ermöglicht. Durch solche Bedingungen sind if/else-Logiken direkt im Graphen umsetzbar und erlauben robuste, adaptive Steuerung des Agentenablaufs.

Zustandsverwaltung und Checkpointing

Ein zentrales Merkmal von LangGraph ist das explizite State-Management. Der gemeinsame Zustand (state) bleibt über den gesamten Agentenlauf persistiert. Für langlaufende oder unterbrechbare Prozesse bietet LangGraph eine Checkpointing-Funktion. Mit create_checkpoint(state) lässt sich an beliebigen Stellen ein Schnappschuss des aktuellen Zustands erstellen:

from langgraph.checkpoint import create_checkpoint def process_with_checkpoint(state): # ... (Arbeitslogik hier) checkpoint = create_checkpoint(state) # Zustand speichern return {"checkpoint": checkpoint, "state": state} graph.add_node("process", process_with_checkpoint)

Später kann man mit load_checkpoint(checkpoint) den gespeicherten Zustand wiederherstellen. Dies ermöglicht es, auf Eingriffe oder Systemunterbrechungen zu reagieren: Der Agent kann an einem Checkpoint anhalten, der Entwickler prüft den Zustand und fährt danach an derselben Stelle fort. Die Workflow-Ausführung ist dadurch resilient gegenüber Fehlern und Pausen.

Menschliche Kontrolle (Human-in-the-Loop)

LangGraph unterstützt auch Human-in-the-Loop. Man kann Knoten definieren, die den aktuellen Zustand visualisieren und manuelle Eingaben abwarten. Beispielsweise könnte ein human_input-Knoten wie folgt aussehen:

def human_input(state): print("Zustand:", state) feedback = input("Geben Sie hier Anweisungen ein: ") state["human_feedback"] = feedback return state graph.add_node("human_input", human_input)

Außerdem lassen sich bedingte Kanten nutzen, um – etwa basierend auf einer Unsicherheitsmetrik – zu entscheiden, ob menschliches Eingreifen nötig ist. So kann der Ablauf bei niedriger Vertrauenswahrscheinlichkeit in einen „Mensch"-Knoten verzweigen, andernfalls automatisch fortgesetzt werden. Dadurch bleiben komplexe Abläufe steuerbar, weil der Mensch bei Bedarf eingreifen und das gemeinsame State-Objekt manuell korrigieren kann.

Multi-Agenten-Orchestrierung und Tool-Calling

Vernetzte Knoten zur Darstellung der Multi-Agenten-Orchestrierung

LangGraph eignet sich besonders für Multi-Agenten-Setups. Man kann in einem Graphen verschiedene Knoten unterschiedlichen Spezialisten oder Werkzeugen zuordnen. Übliche Muster sind etwa Pipeline-Workflows (Schritt-für-Schritt) oder Hub-and-Spoke (Koordinator-Knoten verteilt Aufgaben). Dank des geteilten Zustands können Agenten einfach kooperieren – jeder Knoten liest und erweitert das gemeinsame Kontext-Objekt.

Ein typisches Beispiel sind Tool-Calling-Agenten: Hier bindet man externe Werkzeuge (z.B. Kalkulator, Such-API) ein und orchestriert sie im Graphen:

from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI from langchain.tools import tool # Zustand mit Konversationen, internem Gedächtnis etc. class AgentState(TypedDict): messages: list ... # LLM und Tools initialisieren llm = ChatOpenAI(model="gpt-4o", temperature=0).bind_tools([calculator, wikipedia]) tool_node = ToolNode([calculator, wikipedia]) # Agenten-Knoten: LLM-Aufruf async def call_model(state: AgentState): response = llm.invoke(state["messages"]) state["messages"].append(response) return state # Routing-Entscheidung: Weiterleitung ans Tool oder Ende def should_continue(state: AgentState) -> str: last = state["messages"][-1] if last.tool_calls: return "tools" return "end" # Graph aufbauen workflow = StateGraph(AgentState) workflow.add_node("agent", call_model) workflow.add_node("tools", tool_node) workflow.set_entry_point("agent") workflow.add_conditional_edges("agent", should_continue, {"tools": "tools", "end": END}) workflow.add_edge("tools", "agent") app = workflow.compile()

Der Knoten "agent" repräsentiert den LLM-Abruf, "tools" den Ausführungsmechanismus für zurückgegebene Funktionsaufrufe. Über eine bedingte Kante wird nach jedem LLM-Call überprüft, ob ein Tool-Aufruf vorliegt – falls ja, wird der Tool-Executor ausgeführt, andernfalls gelangt man zum Ende.

Fazit

LangGraph erweitert die gewohnten LLM-Frameworks um explizites State-Management und flexible, graphbasierte Steuerung. Zyklische Abläufe, bedingte Verzweigungen, Wiederaufnahme durch Checkpointing und Human-in-the-Loop-Unterbrechungen lassen sich damit leicht realisieren. Dies macht LangGraph ideal für robuste, mehrstufige Agentensysteme, bei denen verschiedene Modelle oder Tools zusammenarbeiten und den Workflow je nach Situation dynamisch anpassen müssen.

In der Praxis erstellt man einen StateGraph, fügt Knoten für einzelne Verarbeitungsschritte hinzu und verknüpft diese über Kanten und Bedingungen. So entstehen aus Bausteinen völlig neue Orchestrierungs-Pattern, die weit über lineare Prompt-Ketten hinausgehen. Mit LangGraph baut man ausführbare, visuelle Agenten-Flows, die aufwändige Szenarien handhaben können – von Dialogsystemen bis zu automatisierten Analyse-Pipelines – und dabei stets den Überblick über den gemeinsamen Zustand behalten.

Veröffentlicht von

Fabian Franz
Fabian Franz
CEO
Profile

Full-Stack Entwicklung

Von der Idee zur Produktion in Wochen

Next.js, React, TypeScript - co-gegründete Produkte mit staatlicher Förderung.

Unsere Arbeit ansehen

Verwandte Artikel

ZURÜCK ZUM BLOG
Mosaikartiges Bild von Wolken, zusammengesetzt aus Bauteilen von Servern und Rechenzentren.
Beitrag7 Min. Lesezeit

Digitale Souveränität bei KI: So machen Sie sie prüfbar

Digitale Souveränität bei KI ist erst dann gegeben, wenn Sie nachweisen können, wo Ihre Modelle laufen, welche Daten das Haus verlassen, wer was genutzt hat und wie Sie den Anbieter wieder verlassen. Prüfbar wird sie über vier Kriterien: Ort der Verarbeitung, Datenfluss, lückenlose Protokollierung und Austauschbarkeit des Modells.

13. Oktober 2026
Alternative zu großen Datenplattformen: wann eine eng geschnittene Prognoselösung reicht
Vergleich5 Min. Lesezeit

Alternative zu großen Datenplattformen: wann eine eng geschnittene Prognoselösung reicht

Eine Alternative zu großen Datenplattformen ist eine eng geschnittene Prognoselösung für eine konkrete Aufgabe, etwa Absatz, Energiebedarf oder Ersatzteilbedarf. Sie ist schneller eingeführt und rechnet sich eher, deckt aber nicht jede Analyse im Unternehmen ab. Eine große Plattform lohnt sich, wenn viele Anwendungsfälle über eine gemeinsame Datenarchitektur laufen sollen.

12. Oktober 2026
Bedarfsprognose erklärt: was sie leistet und was sie braucht
Glossar5 Min. Lesezeit

Bedarfsprognose erklärt: was sie leistet und was sie braucht

Eine Bedarfsprognose schätzt aus historischen und laufenden Betriebsdaten, wie viel von einem Gut in einem künftigen Zeitraum benötigt wird, etwa Produkte, Material, Ersatzteile oder Energie. Sie ist die Grundlage für Einkauf, Lagerhaltung und Produktionsplanung und ersetzt Erfahrungswerte durch eine nachvollziehbare, laufend aktualisierte Rechnung.

12. Oktober 2026
Grafik: eine verschlungene, labyrinthartige Struktur als Sinnbild für ein Modell, das sich über die Zeit verändert.
Beitrag7 Min. Lesezeit

Modelldrift erkennen: warum KI-Modelle nachlassen und was dagegen hilft

Modelldrift erkennen heißt, rechtzeitig zu bemerken, dass ein KI-Modell schlechter wird, weil sich die Eingangsdaten oder die Zusammenhänge dahinter verändert haben. Erkennbar ist das an sinkender Trefferquote, häufigeren Korrekturen durch Fachleute und verschobenen Datenmustern. Dagegen helfen laufende Überwachung, geplantes Nachtraining und eine benannte Betriebsverantwortung.

9. Oktober 2026
Collage: Ein aufgeschlagenes Buch auf einer Tastatur, darüber schweben einzelne rot markierte Wörter.
Glossar3 Min. Lesezeit

Abrechnung pro Token erklärt: wie KI-Kosten entstehen

Ein Token ist die kleinste Texteinheit, in die ein Sprachmodell Text zerlegt, meist ein Wort oder ein Wortteil. Bei der Abrechnung pro Token zahlen Sie für jedes Token, das das Modell liest und schreibt, wobei Eingabe und Ausgabe in der Regel getrennt bepreist werden, sodass die Kosten mit der Nutzung wachsen.

6. Oktober 2026

Wir verwenden Cookies

Wir verwenden Cookies und ähnliche Technologien, um Ihr Browsing-Erlebnis zu verbessern, den Website-Traffic zu analysieren und Inhalte zu personalisieren. Sie können wählen, welche Kategorien Sie akzeptieren möchten.

Erfahren Sie mehr in unserer Datenschutzerklärung und Impressum.