LangGraph: Stavové automaty pre produkčných AI agentov
LangGraph je framework pre budovanie komplexných AI agentov ako riadených grafov so stavom — riešenie pre tímy, ktoré prešli od prototypov k produkčným systémom a narazili na limity jednoduchých reťazí volání.
1. Prečo LangGraph vznikol
Prvá generácia LLM frameworkov stavala agentov ako lineárne reťaze: vstup → LLM → výstup. Pre jednoduché úlohy to stačilo. Problém nastal, keď sa požiadavky skomplikovali:
- Agent potrebuje slučky — opakovať krok, kým výsledok nesplní podmienku
- Niekoľko agentov musí spolupracovať a odovzdávať si medzivýsledky
- Ľudský operátor musí schváliť akciu pred jej vykonaním
- Pri páde servera treba obnoviť beh z posledného kontrolného bodu, nie začínať odznova
LangGraph (vydaný 2024 firmou LangChain, Inc.) rieši tieto problémy tým, že modeluje agenta ako riadený graf so zdieľaným stavom — nie ako sekvenciu krokov, ale ako stavový automat, kde uzly sú funkcie a hrany určujú tok na základe aktuálneho stavu.
2. Ako LangGraph funguje
Tri základné stavebné bloky tvoria celý systém:
Stav (State)
Python TypedDict alebo Pydantic model, ktorý nesie všetky informácie počas behu grafu. Každý uzol ho číta a vracia čiastočnú aktualizáciu.
from typing import TypedDict, Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
next_action: str
attempts: int
Uzly (Nodes) Bežné Python funkcie, ktoré prijímajú stav a vracajú jeho aktualizáciu. Môžu volať LLM, nástroje, databázy, externé API — akýkoľvek Python kód.
def call_llm(state: AgentState):
response = llm.invoke(state["messages"])
return {"messages": [response], "attempts": state["attempts"] + 1}
Hrany (Edges) Definujú tok. Môžu byť pevné (vždy ísť na uzol B po uzle A) alebo podmienené — funkcia rozhodne, kam ďalej na základe aktuálneho stavu.
def should_continue(state: AgentState):
if state["next_action"] == "done":
return END
elif state["attempts"] > 5:
return "escalate_to_human"
else:
return "continue_work"
Checkpointing je štvrtý kľúčový prvok: LangGraph ukladá stav po každom kroku do perzistentného úložiska (SQLite, PostgreSQL, Redis). To umožňuje obnoviť agenta po páde servera, implementovať „human-in-the-loop" pauzy a debugovať beh krok po kroku.
3. LangGraph vs. alternatívy
| Framework | Prístup | Silná stránka | Slabá stránka |
|---|---|---|---|
| LangGraph | Graf so stavom | Produkčná robustnosť, checkpointing, HITL | Strmšia krivka učenia |
| CrewAI | Role-based agenti | Rýchly prototyp, čitateľný kód | Menej kontroly nad tokom |
| AutoGen | Konverzácia medzi agentmi | Multi-agent chat, flexibilita | Ťažšie deterministické toky |
| Vanilla LangChain | LCEL reťaze | Jednoduchosť, veľký ekosystém | Žiadne slučky, žiadny stav |
| Temporal.io | Distribuované workflow | Extrémna škálovateľnosť, zrelosť | Nie LLM-natívne, zložitejší setup |
LangGraph vyniká tam, kde je potrebná kombinácia komplexnej logiky, persistencie a ľudského dohľadu — typicky produkčné agentické systémy v enterprise prostredí.
4. Praktické vzory
ReAct agent s nástrojmi Klasický vzor: LLM rozhodne, či použiť nástroj alebo odpovedať priamo. LangGraph implementuje slučku „premýšľaj → konaj → pozoruj" natívne.
from langgraph.prebuilt import create_react_agent
agent = create_react_agent(
model=llm,
tools=[search_tool, calculator_tool, db_tool]
)
result = agent.invoke({"messages": [HumanMessage(content="Aká je cena Applu dnes?")]})
Multi-agent supervisor Jeden „supervisor" LLM riadi tím špecializovaných sub-agentov:
web_researcher— hľadá informácie na webedata_analyst— analyzuje štrukturované dátawriter_agent— formuluje finálnu odpoveď
Supervisor podľa povahy úlohy smeruje tok do správneho sub-agenta. LangGraph to implementuje ako hierarchický graf, kde každý sub-agent je sám osebe podgraf.
Human-in-the-loop schválenie Kritické akcie (odoslanie emailu, zmazanie záznamu, finančná transakcia) môžu byť prerušené pred vykonaním:
graph = builder.compile(
checkpointer=memory,
interrupt_before=["send_email_node"]
)
# Graf beží do bodu prerušenia, uloží stav a čaká
# Operátor skontroluje, schváli alebo upraví
# Beh pokračuje od toho istého miesta
Tento vzor je kľúčový pre regulované odvetvia (financie, zdravotníctvo), kde automatizácia bez dohľadu nie je právne prípustná.
5. Limity a čo sledovať
Komplexnosť ladenia Grafový tok je ťažšie sledovať ako sekvenčný kód. LangSmith (monitoring platforma od LangChain) pomáha vizualizovať behy a trasovať volania, ale pridáva ďalšiu závislosť a náklady.
Správa stavu pri škálovaní Zdieľaný stav funguje skvele pre jedného agenta. Pri desiatkach tisíc súbežných agentov sa stáva bottleneckom — treba starostlivý dizajn schémy stavu a vhodný výber perzistenčnej vrstvy.
Nestabilita API LangGraph prechádzal v rokoch 2024–2025 rýchlou evolúciou. Kód z tutoriálov starých 6 mesiacov nemusí fungovať s aktuálnou verziou — pred každým projektom overiť voči aktuálnej dokumentácii.
Rastúca konkurencia Temporal.io, Prefect a AWS Step Functions ponúkajú podobné záruky persistencie a obnovy s lepšou infraštruktúrnou zrelosťou. Pre tímy bez LLM-špecifických potrieb môžu byť lepšou voľbou. Na druhej strane, LangGraph Platform (managed cloud hosting) zjednodušuje nasadenie bez vlastnej infraštruktúry.
Čo sledovať: Integrácia LangGraph s MCP protokolom otvára nové možnosti — agenti môžu priamo konzumovať MCP servery ako nástroje bez vlastného wrappera. Spolu s rastúcim dôrazom na dlhodobú persistenciu (agenti, ktorí „spoja" viacero sedení) to naznačuje smer, kde LangGraph smeruje v roku 2026.
Zhrnutie: LangGraph posúva budovanie AI agentov od jednoduchých reťazí ku stavovým automatom s persistenciou a ľudským dohľadom — čo je presne to, čo produkčné systémy potrebujú. Pre tímy stavajúce serióznych agentov je dnes de facto štandard v Python ekosystéme.