AI-agenter · Lektion

Beständigt graftillstånd (kontrollpunkter)

Spara tillståndet i Postgres eller SQLite, så att en långkörande agent kan pausas, återupptas och granskas.

Lektion 4 av 415 steg

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 plan

Mä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.

Gratis att börja

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

  1. Varför grafer slår platta kedjor
  2. Noder, kanter och tillstånd
  3. Villkorsstyrd routing och förgrening
  4. Beständigt graftillstånd (kontrollpunkter)
← Tillbaka till AI-agenter