Claude Architect · Lektion

Hela historiken krävs

Varje begäran innehåller hela konversationen.

Lektion 1 av 413 steg

Hela historiken krävs är en gratis lektion i Claude Architect på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Claude Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Claude Architect innehåller totalt 4 lektioner.

Modellen behåller inget tillstånd

Det viktigaste att känna till om Claude API är att modellen är tillståndslös. Den kommer inte ihåg något mellan förfrågningar. Det finns ingen dold session på Anthropic-sidan som lagrar tidigare turer.

Varje gång Ni anropar API:t skickar Ni hela konversationshistoriken i arrayen messages. Om ett faktum inte finns i den arrayen känner modellen helt enkelt inte till det — även om den berättade samma sak för Er för trettio sekunder sedan.

För en Claude Certified Architect förändrar denna insikt hur Ni utformar alla system med flera turer, agentiska loopar och överlämningar mellan flera agenter.

En förfrågans anatomi

En Claude API-förfrågan innehåller en fast uppsättning fält. Dessa kommer Ni att använda i varje tur:

  • model — vilken Claude-modell som ska anropas
  • max_tokens — budget för utdata
  • system — systemprompten (instruktioner, persona och regler)
  • messages — hela konversationshistoriken som en array av objekt med roll och innehåll
  • tools och tool_choice — valfria verktygsdefinitioner och styrning av verktygsval

Observera vad som INTE finns här: någon form av konversations-ID eller sessionstoken. Tillståndet finns helt och hållet i det som Ni skickar igen.

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="You are a concise travel assistant.",
    messages=[
        {"role": "user", "content": "I want to visit Japan in spring."}
    ],
)

Bygga historikarrayen

För att fortsätta en konversation svarar Ni inte på en session — Ni lägger till modellens föregående svar och den nya användarturen i samma lista med messages och skickar sedan allt igen.

Mönstret är följande: hämta den senaste turens messages, lägg till assistentens svar, lägg till det nya användarmeddelandet och anropa igen. Arrayen växer för varje utbyte.

messages = [
    {"role": "user", "content": "I want to visit Japan in spring."},
    {"role": "assistant", "content": "Great — cherry blossom season peaks in early April."},
    {"role": "user", "content": "What about the weather then?"},
]

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=messages,  # full history, every turn
)

Vad händer om Ni glömmer

Anta att Ni endast skickar det senaste användarmeddelandet — "What about the weather then?" — och tar bort de tidigare turerna. Modellen har ingen aning om vad ”then” syftar på eller att Japan någonsin nämndes.

Den kommer antingen att be om ett förtydligande eller hitta på en kontext. Detta är den vanligaste orsaken till buggar av typen ”boten glömde vad vi pratade om”. Lösningen är aldrig ett knep i prompten — det är att skicka hela historiken igen.

Verktygsresultat är också en del av historiken

Historiken består inte bara av text från användaren och assistenten. När modellen anropar ett verktyg fortsätter konversationen med strukturerade turer:

  • en assistant-tur som innehåller ett tool_use-block
  • en user-tur som innehåller motsvarande tool_result

Ni måste lägga tillbaka verktygsresultatet i messages och skicka allt igen. Modellen ”ser” endast verktygets utdata eftersom den nu är en del av historiken som Ni för vidare.

messages.append({"role": "assistant", "content": response.content})  # has tool_use
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": tool_use_id,
        "content": "Tokyo, April: ~15C, mild, occasional rain.",
    }],
})

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=tools,
    messages=messages,  # history now includes the tool_result
)

Den agentiska loopen för historiken vidare

Det är därför den agentiska loopen fungerar som den gör. I varje iteration skickar Ni förfrågan, granskar stop_reason och, om den är tool_use, kör verktygen, lägger till resultaten i historiken och fortsätter loopen — tills stop_reason är end_turn.

Loopen är i grunden en loop som samlar historik. Avsluta baserat på stop_reason, ALDRIG genom att söka efter ord som ”done” i texten. En gräns för antalet iterationer är ett skyddsnät, inte den primära stoppmekanismen.

while True:
    response = client.messages.create(
        model="claude-sonnet-4-5", max_tokens=1024,
        tools=tools, messages=messages,
    )
    if response.stop_reason == "tool_use":
        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": run_tools(response)})
        continue  # resend the FULL grown history
    break  # end_turn -> done

Underagenter ärver INTE historiken

Här finns fällan med flera agenter. I ett nav-och-ekrar-system delegerar en koordinator arbete till underagenter via Task-anrop. Men en underagent får en ny konversation — den ärver INTE koordinatorns meddelandehistorik.

Om underagenten behöver kundens ID, ordernumret eller ett tidigare fynd måste koordinatorn skicka det uttryckligen i underagentens prompt. Att anta att historiken ärvs leder garanterat till fel: underagenten arbetar i blindo.

Skicka kontext uttryckligen

Eftersom tillståndet inte delas måste koordinatorn paketera rätt kontext för varje delegering. Ge underagenten exakt det den behöver för att agera — inte mer (principen om minsta behörighet gäller även kontext).

Flera Task-anrop i samma svar körs parallellt, och varje anrop är en självständig instruktion. Behandla varje underagentprompt som en komplett, fristående förfrågan.

subagent_prompt = f"""
You are researching flight options.
Context (you have no other history):
- Destination: Tokyo, Japan
- Travel window: early April 2026
- Origin: Istanbul (IST)
Return the 3 cheapest round-trip options with dates and prices.
"""
# Coordinator allowedTools must include "Task".
# Subagent starts with a blank message history -> context must be inline.

Historiken växer — och det gör kostnaden också

Att skicka allt igen får en konsekvens: hela historiken tokeniseras på nytt i varje tur. Långa konversationer innebär större, långsammare och dyrare förfrågningar, och till slut blir kontextfönstret fullt.

Arkitektarbete med fokus på tillförlitlighet handlar om att hantera denna tillväxt utan att förlora precision:

  • Korta ned utförliga verktygsresultat till endast relevanta fält innan de läggs till.
  • Progressiv sammanfattning komprimerar äldre turer — men var uppmärksam: siffror, procenttal och datum blir då vaga.

Behåll transaktionella fakta ordagrant

Lösningen på vaga sammanfattningar är att flytta hårda fakta — order-ID:n, belopp, datum och verifierade identiteter — till ett separat ”case facts”-block som behålls ordagrant, utanför sammanfattningen. Sammanfatta pratet, aldrig siffrorna.

Tänk också på lost-in-the-middle: modeller fokuserar mest på början och slutet av kontexten. Placera de viktigaste fakta och den aktuella instruktionen där de kommer att synas, inte begravda i mitten av en lång historik.

messages = [
    {"role": "user", "content":
        "CASE FACTS (verbatim):\n"
        "- Order #A-4471, total $129.00, placed 2026-03-02\n"
        "- Customer verified: ID CUST-8830\n\n"
        "CONVERSATION SUMMARY:\n"
        "Customer reported a late delivery and requested options."
    },
    {"role": "user", "content": "Now: can you process a partial refund?"},
]

Sessioner kan återupptas — verktygsresultat kan vara inaktuella

Claude Code sparar historik mellan sessioner: --resume <name> fortsätter en namngiven session, och fork_session skapar en gren från en gemensam punkt. Praktiskt — men en varning som är värd att komma ihåg inför provet.

Återupptagna verktygsresultat kan vara inaktuella om kodbasen har ändrats sedan de samlades in. Det är inte alltid rätt att föra vidare gammal historik; ibland är en ny session som försetts med en ren, strukturerad sammanfattning bättre än att spela upp inaktuell kontext.

# Continue a prior named session (history reloaded)
claude --resume refactor-auth

# Branch from a shared point without polluting the original
# fork_session -> new line of exploration from the same base

Snabbkontroll: den glömska underagenten

Ett scenario som testar lektionens centrala beslut.

Sammanfattning: hela historiken krävs

Kom ihåg följande inför provet och verkliga system:

  • Modellen är tillståndslös; varje förfrågan måste innehålla hela hela messages-historiken.
  • Verktygsanrop utökar historiken — lägg till varje tool_result och skicka allt igen.
  • Den agentiska loopen samlar historik; stoppa på stop_reason, inte på analyserad text.
  • Underagenter ärver inte koordinatorns historik — skicka all kontext uttryckligen i varje prompt.
  • Historiken växer: korta ned utförliga verktygsresultat och sammanfatta äldre turer, men behåll transaktionella fakta ordagrant och tänk på lost-in-the-middle.
  • Återupptagna sessioner kan innehålla inaktuella verktygsresultat — ibland är en ny session med en ren sammanfattning bättre.
Gratis att börja

Lär dig Python 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
26
Lektioner
104

Vanliga frågor

Är lektionen ”Hela historiken krävs” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Claude Architect, inklusive ”Hela historiken krävs”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Claude Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”Hela historiken krävs”?

Varje begäran innehåller hela konversationen. Ni övar på Claude Architect 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 Claude Architect?

Du behöver inga förkunskaper. Utbildningen i Claude Architect 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 1 av 4.

Hur lång tid tar lektionen ”Hela historiken krävs”?

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 Claude Architect-lektionen?

Ja. Varje Claude Architect-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. Hela historiken krävs
  2. Risker med progressiv sammanfattning
  3. Effekten av det som går förlorat i mitten
  4. Block med fakta från fallet och trimning av utdata
← Tillbaka till Claude Architect