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 uncheckpoint_idunic. - La un nou apel
.invoke()cu acelașithread_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
langgraph-human-in-the-loop: Resursă asociată din acest modul.langgraph-stategraph: Resursă asociată din acest modul.chat-message-history: Resursă asociată din acest modul.