{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"ai/prompt-caching","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/ai/prompt-caching/","da":"https://cmaintz.github.io/tech-atlas/da/terms/ai/prompt-caching/"},"term":{"en":"Prompt caching","da":"Prompt caching"},"aka":{"en":["context caching"],"da":["context caching"]},"domain":["ai"],"cluster":"ai-infrastructure","layer":"inference","status":"current","era":2024,"summary":{"en":"A service feature that saves the work done on the start of a prompt, so later requests starting the same way are faster and cheaper.","da":"En funktion, der gemmer arbejdet med starten af en prompt, så senere forespørgsler, der starter ens, bliver hurtigere og billigere."},"body":{"formal":{"en":"A model-serving feature that stores the KV cache for the opening part of a prompt for a short time and reuses it when a later request begins with exactly the same tokens, so only the new remainder has to be read; providers usually bill reused tokens at a lower rate.","da":"En funktion i modelservering, der i kort tid gemmer KV-cache for den første del af en prompt og genbruger den, når en senere forespørgsel begynder med nøjagtig de samme tokens, så kun den nye rest skal læses; udbydere tager normalt en lavere pris for genbrugte tokens."},"plain":{"en":"Like a lawyer who has already read the thick case file - each new question about it takes minutes, not a whole day of rereading.","da":"Som en advokat, der allerede har læst den tykke sagsmappe - hvert nyt spørgsmål om den tager minutter, ikke en hel dag med genlæsning."},"inPractice":{"en":"At a Danish webshop, the developer behind the customer chat puts the 40 pages of delivery and return rules first in every request and the customer's question last; the provider reuses the stored start, so the chat's monthly bill falls sharply.","da":"I en dansk webshop lægger udvikleren bag kundechatten de 40 sider med leverings- og returregler først i hver forespørgsel og kundens spørgsmål til sidst; udbyderen genbruger den gemte begyndelse, så chattens månedlige regning falder markant."},"whyItMatters":{"en":"It only pays off if the fixed part comes first and stays word-for-word the same. Providers keep the stored work for minutes up to a day and should never share it between customers - where it is shared, answer speed can reveal what others sent.","da":"Det betaler sig kun, hvis den faste del kommer først og forbliver ord for ord den samme. Udbydere gemmer arbejdet fra minutter op til et døgn og bør aldrig dele det mellem kunder - hvor det deles, kan svarhastigheden afsløre, hvad andre har sendt."}},"deepDive":{"en":"Mechanically, prompt caching is KV-cache persistence across requests. After a request's prefill, the serving system keeps the key and value tensors for a prefix of the prompt, indexed by a hash of the exact token sequence, often in fixed-size blocks so that any block-aligned prefix can be matched. When a new request arrives, the scheduler looks up the longest cached prefix, skips prefill for those tokens and computes only the remainder. Because every token's keys and values depend on all preceding tokens, a single changed token invalidates the cache from that point onward; identical content in a different position is not reusable. Open-source engines expose the same idea as automatic prefix caching (vLLM) or RadixAttention (SGLang, which organises cached prefixes in a radix tree).\n\nCommercial APIs implement it in two styles, and the details change between model generations, so current documentation is the authority. Anthropic's API uses explicit cache_control breakpoints (up to four per request) or an automatic mode; the prefix is hashed in the order tools, system, messages; the default lifetime is five minutes, refreshed on each hit, with an optional one-hour lifetime; at the time of writing cache writes cost 1.25× the base input price (2× for one hour) and cache reads around 0.1×, with model-dependent minimum prefix lengths. OpenAI applies caching automatically once a prompt passes a minimum length (1,024 tokens on many models), routes requests by a hash of the initial tokens, optionally steered by a prompt_cache_key, and bills cached input tokens at a discount. Google's Gemini API offers both implicit caching and explicit cached-content objects with a configurable TTL.\n\nGetting hits is a prompt-engineering discipline. Stable content goes first (tool definitions, system prompt, reference documents, few-shot examples) and variable content last; timestamps, request IDs, randomised example order or non-deterministic JSON key ordering early in the prompt silently destroy the hit rate. Changing the tool list or model version also invalidates the prefix. Teams should monitor the provider's usage fields for cached versus uncached input tokens instead of assuming savings, since low-traffic endpoints may see entries expire between requests.\n\nThe security dimension is a timing side channel. A cache hit makes time to first token measurably shorter, so if a cache is shared between users, an attacker can probe whether a given prefix was recently sent by someone else. Gu et al. (ICML 2025) audited commercial APIs with statistical timing tests and detected global cache sharing across all users at seven providers, OpenAI among them at the time of the study. Current major providers state that caches are isolated per organisation or workspace, and self-hosted multi-tenant deployments should apply the same isolation. Prompt caching is also distinct from response caching, which stores whole answers for identical or semantically similar queries and returns them without running the model at all.","da":"Mekanisk er prompt caching bevarelse af KV-cache på tværs af forespørgsler. Efter en forespørgsels prefill gemmer serving-systemet key- og value-tensorerne for et præfiks af prompten, indekseret med en hash af den nøjagtige tokensekvens, ofte i blokke af fast størrelse, så ethvert blokjusteret præfiks kan matches. Når en ny forespørgsel kommer, slår scheduleren det længste gemte præfiks op, springer prefill over for de tokens og beregner kun resten. Da hvert tokens keys og values afhænger af alle foregående tokens, ugyldiggør ét ændret token cachen fra det punkt og frem; identisk indhold på en anden position kan ikke genbruges. Open source-motorer tilbyder samme idé som automatic prefix caching (vLLM) eller RadixAttention (SGLang, der organiserer gemte præfikser i et radix-træ).\n\nKommercielle API'er implementerer det på to måder, og detaljerne ændrer sig mellem modelgenerationer, så den aktuelle dokumentation er autoritativ. Anthropics API bruger eksplicitte cache_control-breakpoints (op til fire pr. forespørgsel) eller en automatisk tilstand; præfikset hashes i rækkefølgen tools, system, messages; standardlevetiden er fem minutter og forlænges ved hvert hit, med mulighed for en time; i skrivende stund koster skrivning til cachen 1,25 gange basisprisen for input (2 gange for en time) og læsning omkring 0,1 gange, med minimumslængder for præfikset, der afhænger af modellen. OpenAI cacher automatisk, når en prompt overstiger en minimumslængde (1.024 tokens på mange modeller), router forespørgsler efter en hash af de første tokens, som kan styres med en prompt_cache_key, og afregner cachede input-tokens med rabat. Googles Gemini API tilbyder både implicit caching og eksplicitte cached-content-objekter med konfigurerbar TTL.\n\nAt få cache-hits er en disciplin i promptdesign. Stabilt indhold skal først (værktøjsdefinitioner, systemprompt, referencedokumenter, few-shot-eksempler) og variabelt indhold sidst; tidsstempler, request-id'er, tilfældig rækkefølge af eksempler eller ikke-deterministisk rækkefølge af JSON-nøgler tidligt i prompten ødelægger stille og roligt hitraten. Ændringer i værktøjslisten eller modelversionen ugyldiggør også præfikset. Teams bør overvåge udbyderens forbrugsfelter for cachede og ikke-cachede input-tokens i stedet for at antage en besparelse, da endpoints med lav trafik kan opleve, at posterne udløber mellem forespørgslerne.\n\nSikkerhedsvinklen er en timing-sidekanal. Et cache-hit gør tiden til første token målbart kortere, så hvis en cache deles mellem brugere, kan en angriber afprøve, om et givent præfiks for nylig er sendt af en anden. Gu m.fl. (ICML 2025) auditerede kommercielle API'er med statistiske timingtests og påviste global deling af cache mellem alle brugere hos syv udbydere, på undersøgelsestidspunktet også OpenAI. De store udbydere oplyser i dag, at caches er isoleret pr. organisation eller workspace, og selvhostede installationer med flere lejere bør anvende samme isolering. Prompt caching skal også holdes adskilt fra response caching, der gemmer hele svar på identiske eller semantisk lignende forespørgsler og returnerer dem helt uden at køre modellen."},"edges":[{"type":"requires","to":"ai/kv-cache","why":{"en":"What is stored is the KV cache for the prompt's start - kept after one request ends so the next can pick it up.","da":"Det, der gemmes, er KV-cache for promptens begyndelse - bevaret, efter én forespørgsel er slut, så den næste kan tage den op."},"confidence":"high","strength":"primary"},{"type":"requires","to":"ai/prompt","confidence":"high","strength":"normal"},{"type":"used-with","to":"ai/time-to-first-token","why":{"en":"Skipping the reread of a long shared start is one of the biggest ways to shorten the wait before the first token.","da":"At springe genlæsningen af en lang fælles begyndelse over er en af de største måder at forkorte ventetiden før det første token."},"confidence":"high","strength":"primary"},{"type":"used-with","to":"ai/system-prompt","confidence":"high","strength":"normal"}],"depth":4,"sources":[{"title":"Anthropic documentation - Prompt caching","tier":"official-doc","publisher":"Anthropic"},{"title":"OpenAI API documentation - Prompt caching","tier":"official-doc","publisher":"OpenAI"},{"title":"Gu et al. (2025), Auditing Prompt Caching in Language Model APIs","tier":"reference"}],"draft":true}