0Pricing
AI Agents · Leçon

Conserver l’état d’un graphe (points de contrôle)

Enregistrez l’état dans Postgres ou SQLite afin qu’un agent de longue durée puisse être mis en pause, repris et audité.

Conserver l’état d’un graphe (points de contrôle) est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Pourquoi persister l’état ?

Les agents de longue durée doivent pouvoir :

  • Se mettre en pause et reprendre plusieurs heures plus tard
  • Récupérer après un plantage en cours d’exécution
  • Prendre en charge l’intervention humaine (attendre une approbation)
  • Rejouer une exécution à des fins de débogage

Les gestionnaires de points de contrôle LangGraph persistent l’état à chaque limite de nœud.

Gestionnaire de points de contrôle en mémoire

Pour le développement et les tests :

from langgraph.checkpoint.memory import MemorySaver

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

Gestionnaire de points de contrôle Postgres

Pour la production :

from langgraph.checkpoint.postgres import PostgresSaver

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

Gestionnaire de points de contrôle Sqlite

Persistance locale sans serveur de base de données :

from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3

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

Identifiants de fil

Chaque exécution possède un thread_id, comparable à un identifiant de session. Plusieurs utilisateurs obtiennent des thread_id distincts ; reprendre une exécution signifie utiliser le même identifiant :

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

Reprendre une exécution

Appelez invoke avec le même thread_id et sans entrée : l’agent reprend là où il s’était arrêté :

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

Inspecter l’état

Lisez l’état actuel d’un fil :

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

Historique de l’état

Parcourez chaque point de contrôle en remontant dans le temps :

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

Créer une bifurcation d’exécution

Vous pouvez mettre à jour l’état à un point de contrôle antérieur et reprendre l’exécution à partir de là — utile pour le débogage « et si ? » :

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

Intervention humaine avec interruption avant

Mettez l’exécution en pause avant un nœud sensible afin qu’une personne puisse l’examiner :

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)

Reprendre après modification

La personne peut modifier l’état avant de reprendre :

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

Suivi des coûts entre les points de contrôle

L’état persistant peut inclure des compteurs de jetons et de coûts qui survivent aux plantages :

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

# Every LLM-calling node adds to it.

Nettoyage

Les anciens fils s’accumulent. Supprimez régulièrement ceux qui sont terminés pour maîtriser le stockage :

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

Reprendre des fils

Comment reprendre l’exécution d’un agent après un plantage ?

Récapitulatif

Utilisez SqliteSaver en local et PostgresSaver en production. Les identifiants de fil séparent les exécutions. Combinez-les avec interrupt_before pour les flux avec intervention humaine.

Questions Fréquemment Posées

La leçon « Conserver l’état d’un graphe (points de contrôle) » est-elle gratuite ?

Oui — le texte complet de « Conserver l’état d’un graphe (points de contrôle) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Conserver l’état d’un graphe (points de contrôle) » ?

Enregistrez l’état dans Postgres ou SQLite afin qu’un agent de longue durée puisse être mis en pause, repris et audité. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Conserver l’état d’un graphe (points de contrôle) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi les graphes surpassent les chaînes linéaires
  2. Nœuds, arêtes et état
  3. Routage conditionnel et embranchements
  4. Conserver l’état d’un graphe (points de contrôle)
← Retour à AI Agents