Beständigt graftillstånd (kontrollpunkter)
Spara tillståndet i Postgres eller SQLite, så att en långkörande agent kan pausas, återupptas och granskas.
Beständigt graftillstånd (kontrollpunkter) är en gratis lektion i AI-agenter på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter innehåller totalt 4 lektioner.
Varför spara tillstånd?
Långkörande agenter behöver kunna:
- Pausa och återuppta körningen flera timmar senare
- Återhämta sig från krascher mitt under körningen
- Stödja människa i loopen (vänta på godkännande)
- Spela upp en körning igen för felsökning
LangGraph-checkpointers sparar tillståndet vid varje nodgräns.
Checkpointer i minnet
För utveckling och testning:
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)Postgres Checkpointer
För produktion:
from langgraph.checkpoint.postgres import PostgresSaver
checkpointer = PostgresSaver.from_conn_string('postgresql://...')
await checkpointer.setup() # create tables
app = graph.compile(checkpointer=checkpointer)Sqlite Checkpointer
Lokal persistens utan en databasserver:
from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3
conn = sqlite3.connect('agents.db', check_same_thread=False)
checkpointer = SqliteSaver(conn)Tråd-ID:n
Varje körning har ett thread_id — ungefär som ett sessions-ID. Flera användare får separata thread_id:n; att återuppta en körning innebär att använda samma ID:
config = {'configurable': {'thread_id': 'user-42-conversation-1'}}
result = app.invoke({'messages': [...]}, config)Återuppta en körning
Anropa invoke med samma thread_id och utan indata — agenten fortsätter där den slutade:
# Some hours later:
app.invoke(None, config)Inspektera tillståndet
Läs det aktuella tillståndet för en tråd:
snapshot = app.get_state(config)
print(snapshot.values) # current state dict
print(snapshot.next) # which node is next
print(snapshot.created_at)Tillståndshistorik
Gå tillbaka genom varje kontrollpunkt:
for snapshot in app.get_state_history(config):
print(snapshot.created_at, snapshot.values)Förgrena en körning
Ni kan uppdatera tillståndet vid vilken tidigare kontrollpunkt som helst och köra om därifrån — användbart vid felsökning av "vad händer om"-scenarier:
app.update_state(config, {'plan': 'a different plan'})
app.invoke(None, config) # continue with the new planMänniska i loopen med interrupt_before
Pausa körningen före en känslig nod så att en människa kan granska den:
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)Återuppta efter redigering
Människan kan redigera tillståndet innan körningen återupptas:
app.update_state(config, {'email_draft': 'final version'})
app.invoke(None, config)Kostnadsspårning mellan kontrollpunkter
Sparat tillstånd kan innehålla räknare för token och kostnad som överlever krascher:
class State(TypedDict):
cost_usd: Annotated[float, lambda a, b: a + b]
# Every LLM-calling node adds to it.Rensning
Gamla trådar samlas på hög. Ta regelbundet bort slutförda trådar för att kontrollera lagringsåtgången:
await checkpointer.delete(thread_id='old-thread')Återuppta trådar
Hur återupptar Ni en agentkörning efter en krasch?
Sammanfattning
Använd SqliteSaver lokalt och PostgresSaver i produktion. Tråd-ID:n håller körningar åtskilda. Kombinera med interrupt_before för arbetsflöden med människa i loopen.
Lär dig AI-agenter med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 60
- Lektioner
- 239
Vanliga frågor
Är lektionen ”Beständigt graftillstånd (kontrollpunkter)” gratis?
Ja – hela texten till ”Beständigt graftillstånd (kontrollpunkter)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter innehåller totalt 4 lektioner.
Vad lär jag mig i ”Beständigt graftillstånd (kontrollpunkter)”?
Spara tillståndet i Postgres eller SQLite, så att en långkörande agent kan pausas, återupptas och granskas. Ni övar på AI-agenter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-agenter?
Du behöver inga förkunskaper. Utbildningen i AI-agenter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Beständigt graftillstånd (kontrollpunkter)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-agenter-lektionen?
Ja. Varje AI-agenter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Varför grafer slår platta kedjor
- Noder, kanter och tillstånd
- Villkorsstyrd routing och förgrening
- Beständigt graftillstånd (kontrollpunkter)