Tutorialen tar utgangspunkt i en New Hire Onboarding Coordinator: agenten sender velkomstpakke, pauser mens den nye ansatte signerer dokumenter, delegerer IT-provisionering til en sub-agent, venter på maskinvareleveranse, og ender med en personlig dag-én-plan. Hele flyten kan strekke seg over uker uten at en eneste tilstandsbit går tapt.
Det første grepet er en state machine i Python:
class OnboardingStep:
START = "START"
WELCOME_SENT = "WELCOME_SENT"
DOCUMENTS_SIGNED = "DOCUMENTS_SIGNED"
IT_PROVISIONED = "IT_PROVISIONED"
HARDWARE_DELIVERED = "HARDWARE_DELIVERED"
COMPLETED = "COMPLETED"
Agentens system-prompt leser current_step direkte fra session-state, ikke fra chat-historikken. Hver tool-call oppdaterer state atomisk via ToolContext.state, slik at hvert checkpoint blir skrevet ned før neste steg.
Det andre grepet er persistert sesjon. ADK leveres med DatabaseSessionService som kan peke på SQLite lokalt eller Cloud SQL i produksjon — én konfigurasjonslinje (sqlite+aiosqlite:///sessions.db) gjør at agenten kan kveles og restartes uten å miste den nye ansattes navn, status eller pending signaler.
Det tredje grepet er webhook-drevet resume. Når et eksternt system sender POST til /webhooks/document_signed, hydreres sesjonen og agenten fortsetter fra riktig checkpoint. Ingen polling, ingen blokkerte tråder.
uv tool install google-agents-cliGoogle argumenterer for at stateløse chatbots feiler på tre konkrete måter når kjøretiden strekker seg over dager: prompten forurenses av irrelevant historikk, token-kostnaden eksploderer ved replay av hele samtalen, og modellen hallusinerer mellomliggende steg som aldri skjedde. Større kontekstvindu løser ingen av delene. Eksplisitt, durable state er svaret.
Hva bør du gjøre?
- Sjekk om ADK-prosjektet ditt fortsatt bruker
InMemorySessionService. Om ja, bytt tilDatabaseSessionServicefør neste deploy. Uten det forsvinner all sesjonsstate ved container-restart. - Definer state-stegene eksplisitt i en Python-klasse. Ikke la system-prompten gjette progresjon fra chat-historikk. Et state-felt som «WELCOME_SENT» er hardere å hallusinere bort enn en mengde tekst.
- Bytt polling mot webhooks der det er praktisk mulig. Et FastAPI-endepunkt som tar imot signaler fra eksterne systemer er billigere og enklere enn å holde liv i en agent som ikke har noe å gjøre.