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 webe
  • data_analyst — analyzuje štrukturované dáta
  • writer_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.