LangGraph
Ein Low-Level-Framework des LangChain-Teams zur Erstellung deterministischer, zyklischer Multi-Agenten-Systeme in Form von Zustandsautomaten (State Machines) mit umfassender Unterstützung für Persistenz.
1. Konzeptüberblick und systemische Herausforderungen
Der Versuch, einen robusten Produktions-Agenten mit einfachen while True-Schleifen in Python oder linearen Ketten zu bauen, stößt schnell auf kritische ingenieurtechnische Grenzen:
- Fehlende Persistenz: Wenn der Server während eines 5-minütigen Agent-Prozesses neu gestartet wird, gehen der gesamte aktuelle Zustand und Fortschritt unwiederbringlich verloren.
- Unkontrollierbarer Flow (Black Box Problem): Es ist schwierig vorherzusagen, wann der Agent die Arbeit beenden wird oder wie man ihn bei einem Validierungsfehler gezwungenermaßen einen Schritt zurücksetzen kann.
- Unmöglichkeit langfristiger Pausen (Human-in-the-Loop): Die Ausführung des Programms anzuhalten, um auf eine Benutzerbestätigung zu warten, ohne den Prozessspeicher im normalen Code zu blockieren, ist extrem komplex.
LangGraph löst diese Probleme, indem es Agentensysteme als Stateful Graphs modelliert. Jeder komplexe Prozess wird in transparente Nodes, Übergangskanten (Edges) und einen einzigen typisierten State zerlegt, der nach jedem Schritt atomar in der Datenbank persistiert wird.
2. Architektonische Taxonomie und mentales Modell
Die LangGraph-Architektur basiert auf vier zentralen Entitäten:
- 1. Shared State:
Ein streng typisiertes Interface (via
TypedDictoder Pydantic). Definiert das Datenschema, das allen Nodes zur Verfügung steht. Für Felder können spezifische Reducers definiert werden, z. B.Annotated[list, add_messages], die neue Nachrichten automatisch anhängen, statt das Array zu überschreiben. - 2. Nodes: Gewöhnliche synchrone oder asynchrone Funktionen. Jede Node nimmt den aktuellen State entgegen, führt Berechnungen durch (Modellaufruf, Testausführung oder DB-Zugriff) und gibt ein partielles State Update (State Delta) zurück.
- 3. Edges & Conditional Edges:
- Standard Edges: Determinierter Übergang von Node A zu Node B.
- Conditional Edges: Eine Router-Funktion analysiert die letzte Modellausgabe und entscheidet, wohin der Flow geleitet wird (z. B.: Wenn ein Tool aufgerufen wurde ->
tools; wenn eine finale Antwort gefunden wurde ->END).
- 4. Checkpointers:
Treiber für die langfristige Speicherung (
MemorySaverfür Tests,PostgresSaver/SqliteSaverfür Produktion). Erstellen unveränderliche Snapshots bei jedem Superstep.
3. Technischer Pipeline und interne Mechanik
Die Ausführung des Graphen folgt dem Modell des Bulk Synchronous Parallelism (BSP):
- State Initialization (Session Start):
Der Graph empfängt die Eingabe und ein Konfigurationsobjekt mit dem Schlüssel
thread_id. Der Checkpointer lädt den zuletzt gespeicherten State für diesen Thread. - Superstep Execution: Alle aktiven Nodes der aktuellen Phase werden parallel ausgeführt. Jede Node liest denselben State-Snapshot und generiert ihren eigenen Update-Patch.
- Reducer Aggregation & Checkpoint Commit (State Merge): Nach Abschluss aller Nodes der Phase wendet das System die Reducers auf die erhaltenen Änderungen an, bildet den neuen State und persistiert ihn atomar in der Datenbank.
- Edge Routing & Interrupt Inspection (Routing und Pause-Prüfung):
Bedingte Übergänge werden evaluiert. Wenn der Graph auf einen Unterbrechungspunkt (
interrupt_before) trifft, wird die Ausführung sicher beendet und die Kontrolle an die externe Anwendung übergeben.
4. Praktische Ingenieurs-Szenarien in der Produktion
01. Autonomer Entwicklungszyklus und Code-Fehlerbehebung
Ein Graph mit vier Nodes:
generate_code->run_unit_tests->evaluate_output.- Wenn die Tests erfolgreich bestehen -> Übergang zu
create_pr. - Wenn die Tests fehlschlagen -> leitet eine bedingte Edge den State zurück zu
generate_codezusammen mit dem Fehler-Stacktrace (mit einer Begrenzung auf maximal 5 Iterationen).
02. Finanzieller Human-in-the-Loop Prozess
Ein Agent analysiert widersprüchliche Kundenrechnungen. Wenn der Rückerstattungsbetrag unter $100 liegt, führt der Graph die Rückerstattung automatisch über die Node execute_refund aus. Liegt der Betrag darüber, wird der Graph unterbrochen (interrupt), generiert einen Link zum Genehmigungsformular für den Manager und setzt die Arbeit erst fort, nachdem ein Webhook vom Menschen empfangen wurde.
03. Multi-Agenten-System „Supervisor – Specialists“
Die zentrale Node Supervisor fungiert als Top-Level-Router. Je nach Aufgabentyp schaltet er den Kontext zwischen spezialisierten Subgraphs um: ResearchSubgraph (Websuche und Analyse) und DraftingSubgraph (Vertragsgenerierung), wobei er den einheitlichen Unternehmenskontext verwaltet.
5. Fallstricke, häufige Fehler und Sicherheit
- State Bloat: Das Speichern von gigabytegroßen PDF-Dateien oder massiven Tabellen im Shared State führt dazu, dass jeder Checkpoint in PostgreSQL hunderte Millisekunden benötigt. Bewahren Sie im State nur leichte Metadaten und S3-URLs der Artefakte auf.
- Recursion Limit Exceeded: Wenn bedingte Edges keinen garantierten Ausstieg aus der Schleife haben, bricht die Ausführung mit einem Systemfehler ab, wenn die Tiefengrenze erreicht ist (standardmäßig 25 Schritte). Kontrollieren Sie die Versuchsanzahl immer direkt im State-Schema.
- Nicht serialisierte Objekte im State: Der Versuch, einen offenen Dateideskriptor, eine DB-Verbindung oder ein funktionales Closure im State zu speichern, führt zum Absturz des Checkpointers beim Serialisierungsversuch in JSON/Pickle.
FAQ: LangGraph
Verwandte Begriffe
Multi-Agent-Orchestrierung
Architektur zur Interaktion unabhängiger, spezialisierter KI-Agenten, die in einem verteilten Netzwerk oder einer Hierarchie zusammenarbeiten, um komplexe Engineering-Aufgaben parallel zu lösen.
CrewAI
Eines der beliebtesten Python-Frameworks zur Erstellung autonomer Agententeams, basierend auf rollenbasierter Aufgabenteilung, Tools und Task-Delegation.
PydanticAI
Ein modernes Python-Framework der Schöpfer von Pydantic, das strenge Typisierung, Dependency Injection und deterministische Schema-Validierung in die Welt der AI-Agenten bringt.
Agentenspeicher (Agent Memory)
Ein umfassendes Subsystem zur Speicherung, Filterung und Abfrage von Daten, das einen zustandslosen LLM-Aufruf in ein zustandsbehaftetes System umwandelt: vom kurzlebigen Scratchpad-Puffer bis hin zu einem sitzungsübergreifenden Wissensspeicher.