Utrwalanie stanu grafu (punkty kontrolne)
Zapisuj stan w Postgres lub SQLite, aby długotrwały agent mógł zostać wstrzymany, wznowiony i poddany audytowi.
Utrwalanie stanu grafu (punkty kontrolne) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Dlaczego utrwalać stan?
Agenty działające przez długi czas muszą umożliwiać:
- Wstrzymanie i wznowienie działania wiele godzin później
- Odtworzenie działania po awarii w trakcie wykonywania
- Obsługę udziału człowieka w pętli (oczekiwanie na zatwierdzenie)
- Odtworzenie przebiegu na potrzeby debugowania
Checkpointery LangGraph utrwalają stan na granicy każdego węzła.
Checkpointer w pamięci
Do programowania i testów:
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)Checkpointer PostgreSQL
Do środowiska produkcyjnego:
from langgraph.checkpoint.postgres import PostgresSaver
checkpointer = PostgresSaver.from_conn_string('postgresql://...')
await checkpointer.setup() # create tables
app = graph.compile(checkpointer=checkpointer)Checkpointer SQLite
Lokalna trwałość danych bez serwera bazy danych:
from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3
conn = sqlite3.connect('agents.db', check_same_thread=False)
checkpointer = SqliteSaver(conn)Identyfikatory wątków
Każde uruchomienie ma identyfikator thread_id — podobny do identyfikatora sesji. Wielu użytkowników otrzymuje osobne identyfikatory thread_id; wznowienie uruchomienia oznacza użycie tego samego identyfikatora:
config = {'configurable': {'thread_id': 'user-42-conversation-1'}}
result = app.invoke({'messages': [...]}, config)Wznawianie uruchomienia
Wywołaj invoke z tym samym identyfikatorem thread_id i bez danych wejściowych — agent będzie kontynuować działanie od miejsca, w którym je przerwano:
# Some hours later:
app.invoke(None, config)Sprawdzanie stanu
Odczytaj bieżący stan wątku:
snapshot = app.get_state(config)
print(snapshot.values) # current state dict
print(snapshot.next) # which node is next
print(snapshot.created_at)Historia stanu
Przejdź wstecz przez wszystkie punkty kontrolne:
for snapshot in app.get_state_history(config):
print(snapshot.created_at, snapshot.values)Rozgałęzianie uruchomienia
Możesz zaktualizować stan w dowolnym wcześniejszym punkcie kontrolnym i ponownie uruchomić działanie od tego miejsca — przydaje się to podczas debugowania scenariuszy „co by było, gdyby”:
app.update_state(config, {'plan': 'a different plan'})
app.invoke(None, config) # continue with the new planUdział człowieka w pętli z interrupt_before
Wstrzymaj wykonywanie przed wrażliwym węzłem, aby człowiek mógł je sprawdzić:
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)Wznawianie po edycji
Przed wznowieniem człowiek może edytować stan:
app.update_state(config, {'email_draft': 'final version'})
app.invoke(None, config)Śledzenie kosztów między punktami kontrolnymi
Utrwalony stan może zawierać liczniki tokenów i kosztów, które przetrwają awarie:
class State(TypedDict):
cost_usd: Annotated[float, lambda a, b: a + b]
# Every LLM-calling node adds to it.Czyszczenie
Stare wątki się kumulują. Okresowo usuwaj ukończone wątki, aby kontrolować ilość przechowywanych danych:
await checkpointer.delete(thread_id='old-thread')Wznawianie wątków
Jak wznowić uruchomienie agenta po awarii?
Podsumowanie
Używaj SqliteSaver lokalnie, a PostgresSaver w środowisku produkcyjnym. Identyfikatory wątków rozdzielają uruchomienia. Połącz je z interrupt_before, aby obsługiwać przepływy z udziałem człowieka w pętli.
Często zadawane pytania
Czy lekcja „Utrwalanie stanu grafu (punkty kontrolne)” jest bezpłatna?
Tak — pełny tekst „Utrwalanie stanu grafu (punkty kontrolne)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Utrwalanie stanu grafu (punkty kontrolne)”?
Zapisuj stan w Postgres lub SQLite, aby długotrwały agent mógł zostać wstrzymany, wznowiony i poddany audytowi. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Utrwalanie stanu grafu (punkty kontrolne)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego grafy są lepsze od płaskich łańcuchów
- Węzły, krawędzie i stan
- Warunkowe kierowanie i rozgałęzianie
- Utrwalanie stanu grafu (punkty kontrolne)