Claude Architect · Lektion

Tokens, kontekstvinduer og pris

Hvorfor hele historikken sendes ved hver tur, og hvad det koster

Lektion 4 af 413 trin

Tokens, kontekstvinduer og pris er en gratis Claude Architect-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Claude Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Claude Architect-kurset indeholder 4 lektioner i alt.

Claude har ingen hukommelse

Her er den vigtigste idé i denne lektion: Claude API'et bevarer INGEN tilstand mellem ture.

Modellen husker ikke din seneste meddelelse. Hvert API-kald starter på ny. Så hvordan kan chatbots tilsyneladende huske?

Du sender hele samtalehistorikken i hver eneste forespørgsel. Feltet messages indeholder hele udvekslingen hver gang.

Hvad en forespørgsel indeholder

En Claude API-forespørgsel har nogle få vigtige felter:

  • model — hvilken Claude-model der skal bruges
  • max_tokens — loftet for svarlængden
  • system — systemprompten
  • messages — HELE historikken ved hver tur
  • tools / tool_choice — valgfri værktøjskonfiguration

Bemærk, at messages vokser over tid. Tur 1 sender 1 meddelelse. Tur 10 sender alle de 19 tidligere meddelelser plus den nye.

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="You are a support agent.",
    messages=[
        {"role": "user", "content": "My order is late."},
        {"role": "assistant", "content": "I can help. What is your order ID?"},
        {"role": "user", "content": "It's #4821."},
    ],
)

Hvad er et token?

Modeller læser ikke tegn eller hele ord. De læser tokens — små tekststykker.

En tommelfingerregel er, at ét token svarer til cirka 4 engelske tegn eller omtrent 3/4 ord. "unhappiness" kan blive opdelt i "un" og "happiness". Tegnsætning og mellemrum tæller også.

Tokens er vigtige, fordi du betaler pr. token, og kontekstvinduet måles i tokens, ikke ord.

Input- kontra output-tokens

Hver forespørgsel har to tokenoptællinger, som faktureres forskelligt:

  • Input-tokens — alt det, du sender: system + tools + hele messages-historikken.
  • Output-tokens — det, modellen genererer i sit svar.

Output-tokens koster normalt mere pr. token end input-tokens. Men fordi hele historikken sendes igen ved hver tur, er det input-tokens, der stille og roligt vokser voldsomt i lange samtaler.

Kontekstvinduet

Kontekstvinduet er det maksimale antal tokens, en model kan håndtere i én forespørgsel — input og output tilsammen.

Hvis hele din historik plus de ønskede max_tokens overskrider vinduet, mislykkes forespørgslen. Vinduet er et fast loft, ikke et forslag.

Derfor rammer langvarige chats og store værktøjsoutputs til sidst en grænse: Den historik, der sendes igen, vokser hele tiden mod grænsen.

Omkostningerne vokser med historikken

Fordi du sender hele historikken igen ved hver tur, vokser omkostningerne ikke lineært med samtalen — de vokser omtrent med længdens kvadrat.

Tur 1 fakturerer nogle få tokens. Tur 20 fakturerer alle de 19 tidligere ture igen plus den nye. I en chat med 10 meddelelser faktureres de tidlige meddelelser igen 10 gange i løbet af chatten.

For en arkitekt betyder det, at en snakkesalig agent, der aldrig beskærer sin historik, er en dyr agent.

# Rough illustration of resent input growing each turn
history = []
for turn in range(1, 6):
    history.append({"role": "user", "content": user_msg(turn)})
    resp = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=512,
        messages=history,  # ENTIRE history resent every turn
    )
    history.append({"role": "assistant", "content": resp.content})
    print("turn", turn, "input_tokens", resp.usage.input_tokens)

Mål, før du optimerer

Hvert svar indeholder et usage-objekt, der rapporterer input_tokens og output_tokens. Det er din kilde til de faktiske omkostninger.

Du kan også tælle tokens før afsendelse, så du kan forudsige omkostningerne og kontrollere, at du er under vinduet — uden at betale for en fuld generering.

Tommelfingerregel: instrumentér tokenforbruget i produktion. Samlede omkostningstal skjuler, hvilke samtaler eller værktøjskald der er dyre.

count = client.messages.count_tokens(
    model="claude-sonnet-4-5",
    system="You are a support agent.",
    messages=history,
)
print("input tokens before send:", count.input_tokens)

resp = client.messages.create(model="claude-sonnet-4-5", max_tokens=512, messages=history)
print("billed:", resp.usage.input_tokens, resp.usage.output_tokens)

Værktøjsoutput fylder konteksten

I agentløkker føjes værktøjsresultater til historikken og sendes igen ved hver efterfølgende tur. Et detaljeret værktøj, der returnerer en JSON-blob på 5.000 tokens, bliver ved med at koste dig resten af samtalen.

Løsningen er at beskære detaljeret værktøjsoutput til de relevante felter, før du føjer det til. Gem ikke et helt API-udtræk i konteksten, når tre felter er alt, hvad modellen har brug for.

raw = lookup_order(order_id)  # huge JSON
# Trim to what the model actually needs
tool_result = {
    "order_id": raw["id"],
    "status": raw["status"],
    "eta": raw["estimated_delivery"],
}
history.append({
    "role": "user",
    "content": [{"type": "tool_result", "tool_use_id": tu_id,
                 "content": json.dumps(tool_result)}],
})

Opsummér for at holde dig inden for budgettet

Ved lange samtaler kan du erstatte gamle samtaletrin med en kompakt progressiv opsummering for at holde historikken lille og inden for kontekstvinduet.

Men pas på: Opsummering gør tal, procenter og datoer upræcise. Modellen omskriver "refundering på 482,10 $ den 14.03.2026" til "en refundering sidste forår."

Arkitektens løsning: Hent transaktionsfakta ud i en separat ordret "blok med sagsfakta", som opbevares uden for opsummeringen, så de nøjagtige værdier aldrig udviskes.

Fortabt i midten

Et større kontekstvindue er ikke en gratis omgang. Modeller fokuserer stærkest på begyndelsen og slutningen af inputtet og mindst på midten. Det er effekten "fortabt i midten".

Hvis du derfor begraver en vigtig instruktion eller fakta midt i en enorm historik, risikerer du, at den bliver ignoreret — selv om du har betalt fuld pris for at sende den.

Placer vigtige instruktioner og den aktuelle opgave tæt på kanterne, og beskær den omfangsrige midte.

Batch API til ikke-blokerende job

Et middel til at sænke omkostningerne er Message Batches API. Det er omkring 50 % billigere end standardanmodninger og har et behandlingsvindue på op til 24 timer.

Ulemperne er, at der ikke er nogen SLA for svartid, og at kald af værktøjer over flere samtaletrin ikke understøttes. Brug custom_id til at knytte anmodninger sammen, og indsend kun fejlene igen.

Brug Batch til rapporter natten over og store revisioner. Brug det aldrig til blokerende, tidskritiske kontroller eller kontroller før sammenfletning — en bruger venter på dem.

batch = client.messages.batches.create(requests=[
    {"custom_id": "doc-001", "params": {
        "model": "claude-sonnet-4-5", "max_tokens": 1024,
        "messages": [{"role": "user", "content": classify(doc_1)}]}},
    {"custom_id": "doc-002", "params": {
        "model": "claude-sonnet-4-5", "max_tokens": 1024,
        "messages": [{"role": "user", "content": classify(doc_2)}]}},
])  # ~50% cheaper, up to 24h, no latency SLA

Hurtigt tjek

Omkostningen pr. samtale for en chatbot til produktionssupport stiger hurtigt, efterhånden som sessionerne bliver længere, selv om hvert brugersvar er kort. Hvad er den primære årsag, og hvad er den rigtige løsning på arkitekturniveau?

Opsummering: Tokens, kontekst og omkostninger

Vigtigste pointer:

  • API'et gemmer ingen tilstand — du sender hele messages-historikken igen ved hvert samtaletrin.
  • Der faktureres pr. token, opdelt i input (system + værktøjer + historik) og output.
  • Kontekstvinduet begrænser input + output. Den historik, der sendes igen, vokser mod grænsen, og omkostningen vokser omtrent med kvadratet på samtalens længde.
  • Mål med usage og count_tokens, og beskær omfattende output fra værktøjer til relevante felter.
  • Opsummér for at holde dig inden for budgettet, men opbevar nøjagtige tal og datoer i en ordret blok med sagsfakta, og vær opmærksom på effekten med fortabt i midten.
  • Batch API = ca. 50 % billigere, men kun til ikke-blokerende job — aldrig til tidskritiske kontroller.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
26
Lektioner
104

Ofte stillede spørgsmål

Er lektionen “Tokens, kontekstvinduer og pris” gratis?

Ja — alle 3 lektioner i læringssporet Claude Architect, inklusive “Tokens, kontekstvinduer og pris”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Claude Architect-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tokens, kontekstvinduer og pris”?

Hvorfor hele historikken sendes ved hver tur, og hvad det koster Du øver dig i Claude Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Claude Architect?

Der kræves ingen tidligere erfaring. Claude Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Tokens, kontekstvinduer og pris”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Claude Architect-lektion?

Ja. Alle Claude Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Claude-modelfamilien
  2. En API-forespørgsels anatomi
  3. Forklaring af stopårsager
  4. Tokens, kontekstvinduer og pris
← Tilbage til Claude Architect