Hoppa till innehållet
AI-grafen
F· AI engineeringinferens-optimering· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

Prompt-caching och prefixdelning

Kunna använda prefix-caching för att sänka kostnad vid upprepade systemprompter.

Förkunskaper

Intuition

Varje anrop med samma 2 000 tokens långa systemprompt räknar om exakt samma KV-cache. Prefix-caching sparar den och återanvänder den.

Kravet är att prefixet är identiskt token för token. Därför måste prompten struktureras rätt:

[systemprompt        ]  ← identisk, cachas
[dokument/kontext    ]  ← identisk per dokument, cachas per dokument
[samtalshistorik     ]  ← växer men bara i slutet, prefixet cachas
[användarens fråga   ]  ← unik, räknas alltid

Det som förstör cachen: en tidsstämpel, ett användarnamn eller ett slumpmässigt id först i prompten. Ett enda tecken som skiljer och hela prefixet måste räknas om.

Kod

# Anthropic: explicita cache-brytpunkter
msgs = [{"role": "system", "content": [
            {"type": "text", "text": SYSTEMPROMPT, "cache_control": {"type": "ephemeral"}},
            {"type": "text", "text": DOKUMENT, "cache_control": {"type": "ephemeral"}}]},
        {"role": "user", "content": fraga}]      # unik del sist

# vLLM / llama.cpp: automatisk prefixmatchning — inget att konfigurera,
# men samma krav: identiskt prefix.

def besparing(system_tokens, fraga_tokens, anrop, pris_in=3.0, cache_rabatt=0.9):
    """pris per 1M tokens; cache_rabatt = andel av priset som försvinner vid träff"""
    utan = (system_tokens + fraga_tokens) * anrop
    med  = system_tokens + (system_tokens * (1 - cache_rabatt) + fraga_tokens) * (anrop - 1)
    return {"utan": utan, "med": round(med),
            "sparat_pct": round(100 * (1 - med / utan), 1),
            "kr_sparat": round((utan - med) / 1e6 * pris_in, 2)}

print(besparing(system_tokens=2000, fraga_tokens=100, anrop=10_000))
# {'utan': 21000000, 'med': 3200900, 'sparat_pct': 84.8, 'kr_sparat': 53.4}

Att tänka på: cacheträffar är oftast billigare men inte gratis; cachen har en livstid (minuter hos de flesta leverantörer); och den påverkar inte utdatakvaliteten alls — resultatet är identiskt. Det är ren besparing, förutsatt att prompten är byggd i rätt ordning.

Behärskning innebär

  • Använder prefix-caching för upprepade systemprompter
  • Strukturerar prompten så att cachen träffar
  • Räknar ut besparingen

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser