LangGraph: MemorySaver & Checkpointers (Persistență) în LangChain & LangGraph

Salvează automat un snapshot (checkpoint) al stării grafului după fiecare pas, oferind memorie între conversații, toleranță la erori și Time Travel.

Sintaxă & invocare Python
from langgraph.checkpoint.memory import MemorySaver

memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
config = {'configurable': {'thread_id': 'conversatie_101'}}
app.invoke({'messages': [('user', 'Reține codul 7749')]}, config=config)

Descriere & Utilizare

Un Checkpointer în LangGraph este mult mai puternic decât o simplă memorie de chat: el salvează întreaga stare a grafului (toate variabilele, mesajele și nodul curent) după fiecare pas de execuție, organizată pe fire de conversație (thread_id).

Pentru dezvoltare și testare se folosește MemorySaver() (stocare în RAM), iar pentru producție există pachetele oficiale SqliteSaver și PostgresSaver.

Datorită salvării fiecărui pas intermediar, poți inspecta starea oricând cu app.get_state(config), poți relua un agent care s-a oprit din cauza unei erori de rețea exact de la nodul unde rămăsese și poți face Time Travel (modificarea unei stări trecute și bifurcarea execuției pe o altă cale).

Cum să o reții ușor

💡 Ca sistemul de Auto-Save din jocurile video moderne: la fiecare cameră în care intri, jocul salvează automat poziția, inventarul și viața personajului. Dacă închizi consola sau vrei să încerci o altă alegere în dialog, încarci salvarea exact din acel punct.

Opțiuni și parametri tehnici

  • La compilarea grafului cu checkpointer=memory, fiecare tranziție de nod declanșează serializarea stării.
  • Stările sunt indexate după thread_id și un checkpoint_id unic.
  • La un nou apel .invoke() cu același thread_id, graful încarcă automat ultimul snapshot și continuă conversația.

Exemple practice și cazuri de utilizare

  • Continuare conversație: app.invoke({'messages': [('user', 'Ce cod ți-am zis mai devreme?')]}, config=config)
  • Inspectare stare curentă: stare = app.get_state(config); print(stare.values['messages'])

Sfaturi de configurare & capcane

Orice apel către un graf compilat cu checkpointer necesită obligatoriu transmiterea dicționarului config={'configurable': {'thread_id': '...'}}; în caz contrar, LangGraph va ridica o excepție de configurare.

Comenzi și ghiduri înrudite