Descriere & Utilizare
Lanțurile clasice LCEL sunt grafuri aciclice direcționate (merg doar înainte, de la A la B la C). Însă un agent autonom real are nevoie de bucle (cicluri): încearcă să caute ceva, vede că rezultatul e insuficient, reformulează căutarea, apelează o altă unealtă și abia apoi răspunde.
LangGraph modelează această arhitectură în jurul unui StateGraph. Primul pas este definirea schemei de stare (State) folosind un TypedDict sau Pydantic.
Adnotarea specială Annotated[list, add_messages] este un reducer: îi spune lui LangGraph ca, atunci când un nod returnează un mesaj nou, să nu suprascrie toată lista de mesaje, ci să îl adauge (append) inteligent la istoricul existent.
Cum să o reții ușor
💡 Ca tabla albă din sala de ședințe a unei echipe de investigație: fiecare specialist (nod) intră în sală, citește ce s-a scris până atunci pe tablă (`State`), își face munca și adaugă noile sale concluzii pe tablă pentru colegul următor.
Opțiuni și parametri tehnici
- Inițializează topologia grafului în jurul schemei de date
State. - Aplică funcțiile de reducere (reducers) pe fiecare cheie a stării după execuția fiecărui nod.
- Prin apelul
app = workflow.compile(), validează graful (să nu existe noduri orfane) și returnează un obiectCompiledGraphcare se apelează identic cu un Runnable (app.invoke()).
Exemple practice și cazuri de utilizare
- Stare extinsă cu contor de pași:
class State(TypedDict):
messages: Annotated[list, add_messages]
incercari: int
documente_gasite: list[str] - Compilare și rulare:
app = workflow.compile(); rez = app.invoke({'messages': [('user', 'Salut!')]})
Sfaturi de configurare & capcane
Nu uita niciodată să pui Annotated[list, add_messages] pe cheia messages! Dacă pui doar messages: list simplu, fiecare nod va șterge mesajele anterioare și va păstra doar ultimul mesaj generat.
Comenzi și ghiduri înrudite
langgraph-nodes-edges: Resursă asociată din acest modul.langgraph-memory-saver: Resursă asociată din acest modul.create-react-agent: Resursă asociată din acest modul.