Prompt-caching och prefixdelning
Kunna använda prefix-caching för att sänka kostnad vid upprepade systemprompter.
Förkunskaper
- EKV-cachekrävs
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
- Anthropic — Prompt caching — dokumentation, fri läsning
- arXiv — Efficient Memory Management for LLM Serving with PagedAttention (vLLM) — arXiv (öppen åtkomst; licens per artikel)