AI Agents · Lezione

Persistenza dello stato del grafo (checkpoint)

Salvi lo stato in Postgres o SQLite, così un agente di lunga durata può essere messo in pausa, ripreso e sottoposto ad audit.

Lezione 4 di 415 passaggi

Persistenza dello stato del grafo (checkpoint) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Perché rendere persistente lo stato?

Gli agenti a esecuzione prolungata devono poter:

  • Mettere in pausa e riprendere l'esecuzione ore dopo
  • Riprendersi da arresti anomali durante l'esecuzione
  • Supportare l'intervento umano (attendere un'approvazione)
  • Riprodurre un'esecuzione per il debug

I checkpointer di LangGraph rendono persistente lo stato a ogni confine tra nodi.

Checkpointer in memoria

Per sviluppo e test:

from langgraph.checkpoint.memory import MemorySaver

checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)

Checkpointer Postgres

Per la produzione:

from langgraph.checkpoint.postgres import PostgresSaver

checkpointer = PostgresSaver.from_conn_string('postgresql://...')
await checkpointer.setup()   # create tables
app = graph.compile(checkpointer=checkpointer)

Checkpointer Sqlite

Persistenza locale senza un server DB:

from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3

conn = sqlite3.connect('agents.db', check_same_thread=False)
checkpointer = SqliteSaver(conn)

ID dei thread

Ogni esecuzione ha un thread_id, simile a un ID di sessione. Utenti diversi ricevono thread_id separati; per riprendere un'esecuzione devi usare lo stesso ID:

config = {'configurable': {'thread_id': 'user-42-conversation-1'}}
result = app.invoke({'messages': [...]}, config)

Ripresa di un'esecuzione

Chiama invoke con lo stesso thread_id e senza input: l'agente continuerà dal punto in cui si era fermato:

# Some hours later:
app.invoke(None, config)

Ispezione dello stato

Leggi lo stato corrente di un thread:

snapshot = app.get_state(config)
print(snapshot.values)         # current state dict
print(snapshot.next)           # which node is next
print(snapshot.created_at)

Cronologia dello stato

Ripercorri tutti i checkpoint precedenti:

for snapshot in app.get_state_history(config):
    print(snapshot.created_at, snapshot.values)

Creazione di un fork dell'esecuzione

Puoi aggiornare lo stato in qualsiasi checkpoint precedente e rieseguire da quel punto, utile per il debug di scenari «what if»:

app.update_state(config, {'plan': 'a different plan'})
app.invoke(None, config)   # continue with the new plan

Intervento umano con interrupt_before

Sospendi l'esecuzione prima di un nodo sensibile, in modo che una persona possa esaminarla:

app = graph.compile(
    checkpointer=checkpointer,
    interrupt_before=['send_email']
)

result = app.invoke({'messages': [...]}, config)
# Agent paused. Human inspects state.
# When approved:
app.invoke(None, config)

Ripresa dopo la modifica

La persona può modificare lo stato prima di riprendere l'esecuzione:

app.update_state(config, {'email_draft': 'final version'})
app.invoke(None, config)

Monitoraggio dei costi tra i checkpoint

Lo stato persistente può includere contatori di token e costi che sopravvivono agli arresti anomali:

class State(TypedDict):
    cost_usd: Annotated[float, lambda a, b: a + b]

# Every LLM-calling node adds to it.

Pulizia

I thread meno recenti si accumulano. Elimina periodicamente quelli completati per controllare lo spazio di archiviazione:

await checkpointer.delete(thread_id='old-thread')

Ripresa dei thread

Come puoi riprendere l'esecuzione di un agente dopo un arresto anomalo?

Riepilogo

Usa SqliteSaver in locale e PostgresSaver in produzione. Gli ID dei thread separano le esecuzioni. Combinali con interrupt_before per i flussi di lavoro con intervento umano.

Gratis per iniziare

Impara AI Agents con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
60
Lezioni
239

Domande Frequenti

La lezione «Persistenza dello stato del grafo (checkpoint)» è gratuita?

Sì — il testo completo di «Persistenza dello stato del grafo (checkpoint)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Persistenza dello stato del grafo (checkpoint)»?

Salvi lo stato in Postgres o SQLite, così un agente di lunga durata può essere messo in pausa, ripreso e sottoposto ad audit. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Persistenza dello stato del grafo (checkpoint)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché i grafi superano le chain lineari
  2. Nodi, archi e stato
  3. Routing condizionale e branching
  4. Persistenza dello stato del grafo (checkpoint)
← Torna a AI Agents