Prompt Caching pre LLM 2026: Ako znížiť náklady o 90% s Claude a OpenAI

Praktický sprievodca prompt cachingom v LLM API pre rok 2026: Claude cache_control breakpointy, OpenAI automatický cache a Gemini Context Caching. Cenové porovnanie, produkčné vzory pre RAG a multi-turn agentov, plus anti-patterny, ktoré ničia cache hit rate.

Prompt Caching: Claude vs OpenAI 2026

Aktualizované: 1. júna 2026

Prompt caching je technika, ktorá umožňuje LLM API znovu použiť už vypočítané časti promptu (KV cache), typicky znižuje vstupné náklady o 50 až 90 % a latenciu time-to-first-token až o 80 %. V tomto sprievodcovi prejdeme implementáciou prompt cachingu pre Claude API (s explicitnými cache_control breakpointmi), OpenAI API (automatický cache) a Gemini API (kontextový cache), porovnáme cenové modely v roku 2026 a ukážeme produkčné vzory pre RAG, agentov a viacobratové konverzácie.

Honestly, toto je jedna z mála optimalizácií, ktorú som v poslednom projekte nasadil za hodinu a hneď zrazila účet o 78 %. Tak poďme na to.

  • Claude účtuje zápis do cache 1.25× základnej ceny pre 5-minútový TTL a 2× pre 1-hodinový TTL; čítanie z cache stojí len 0.1×, takže návratnosť máte po jedinom hite.
  • OpenAI prompt caching funguje úplne automaticky pre prompty ≥ 1 024 tokenov a poskytuje 50 až 75 % zľavu bez akejkoľvek zmeny kódu.
  • Minimálny cachovateľný prefix v Claude API je 1 024 tokenov pre Sonnet 4.6 a 4 096 pre Opus 4.7; pod tento prah sa cache nepoužije bez chybového hlásenia.
  • Najčastejšie anti-patterny: dynamický timestamp v systémovom prompte, používateľsky špecifický obsah v prefixe a menenie poradia tool definícií.
  • Pre Gemini sa cache vytvára explicitne cez Context Caching API a fakturuje sa za množstvo tokenov uložených v čase (token-hodiny).
  • Správna implementácia v multi-turn agentovi alebo RAG pipeline znižuje mesačný účet z $50 až $100 na $10 až $19 pri rovnakom objeme requestov.

Čo je prompt caching a ako funguje?

Keď LLM spracováva prompt, vypočíta vnútornú reprezentáciu tokenov, takzvanú KV cache (key-value cache attention vrstiev). Pri ďalšom requeste s rovnakým prefixom musí model bez prompt cachingu prepočítať všetko od začiatku. Prompt caching tento výpočet uloží na strane providera (typicky vo VRAM GPU clusteru) a pri zhode ho znovu použije.

Existujú tri konceptuálne modely:

  • Explicitný caching s breakpointmi (Claude): vývojár pomocou cache_control bloku označí, dokiaľ má byť obsah cachovaný. Maximálne 4 breakpointy per request.
  • Automatický caching (OpenAI, Azure OpenAI): provider deteguje opakované prefixy a aplikuje cache transparentne. Žiadna zmena API.
  • Explicitné vytvorenie cache objektu (Gemini): cache sa vytvorí samostatným API volaním a referencuje sa cez cached_content_id.

Cache funguje vždy prefixovo. Keď sa zmení token na pozícii N, všetko od N ďalej je miss, aj keď je obsah neskôr identický. Preto je poradie blokov v requeste kritické: stabilné časti (tool definície, systémový prompt, RAG context) patria dopredu, dynamické (otázka používateľa, timestamp) dozadu. Ak vás zaujíma širší kontext práce s dlhými promptmi, pozrite si tiež náš sprievodca Context Engineering pre AI agentov, ktorý sa venuje rozkladu kontextového okna do efektívnych vrstiev.

Ako zapnúť prompt caching v Claude API

Claude vyžaduje explicitný cache_control blok na poslednom prvku každého segmentu, ktorý chcete cachovať. Funkčný príklad v Pythone pomocou oficiálneho SDK:

import anthropic

client = anthropic.Anthropic()

SYSTEM_KNOWLEDGE_BASE = """
<dokumentacia>
... 30 000 tokenov firemnej dokumentacie ...
</dokumentacia>
"""

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "Si asistent firmy AcmeCorp. Odpovedaj vylucne v slovencine."
        },
        {
            "type": "text",
            "text": SYSTEM_KNOWLEDGE_BASE,
            "cache_control": {"type": "ephemeral", "ttl": "5m"}
        }
    ],
    messages=[
        {"role": "user", "content": "Ake su nase GDPR procesy pre subprocessors?"}
    ]
)

print(response.usage)
# cache_creation_input_tokens: 30421  (prvy request, zapis)
# cache_read_input_tokens:        0
# input_tokens:                  18   (len dynamicky user prompt)

Pri druhom requeste v rámci nasledujúcich asi 5 minút uvidíte v usage objekte cache_read_input_tokens: 30421 a cache_creation_input_tokens: 0. Zaplatíte len 10 % ceny za prefix. Pekné, však?

1-hodinový TTL pre dlhšie session

Pre dlhšie pracovné relácie (napríklad coding agent, ktorý môže byť idle 30 minút) použite "ttl": "1h". Zápis stojí 2× namiesto 1.25×, ale break-even je len 2 hity.

"cache_control": {"type": "ephemeral", "ttl": "1h"}

Cachovanie tool definícií

Tool definície sa cachujú spolu so systémovým promptom. Ak váš agent volá 20 toolov so zložitými JSON schémami, ich cachovanie ušetrí veľkú časť každého requestu:

tools = [
    {"name": "search_db", "description": "...", "input_schema": {...}},
    # ... dalsich 19 toolov ...
]
# Posledny tool oznacime cache_control. Claude cachuje VSETKY tooly do tohto bodu
tools[-1]["cache_control"] = {"type": "ephemeral"}

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Najdi vsetky open faktury."}]
)

Podrobnú špecifikáciu (vrátane multimodálnych vstupov a vertex/bedrock špecifík) nájdete v oficiálnej dokumentácii Anthropic Prompt Caching.

OpenAI prompt caching: automatický režim

Na rozdiel od Claude, OpenAI nevyžaduje žiadne API zmeny. Cache sa aplikuje automaticky pre každý prompt dlhší ako 1 024 tokenov, ktorý zdieľa prefix s nedávnym requestom. Hity sú v inkrementoch po 128 tokenoch a expirujú po 5 až 10 minútach nečinnosti (off-peak až do 1 hodiny).

from openai import OpenAI

client = OpenAI()

SYSTEM = """Si AI asistent pre firmu AcmeCorp.
... 8 000 tokenov instrukcii a dokumentacie ...
"""

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": "Zhrn posledny kvartalny report."}
    ]
)

print(resp.usage.prompt_tokens_details)
# CachedTokensDetails(cached_tokens=7936)

Cenová úspora závisí od modelu. GPT-5.5 ponúka 75 % zľavu na cachované tokeny ($5.00 → $1.25 za milión), staršie modely typicky 50 %. Detaily a aktuálne hodnoty sú v OpenAI prompt caching guide.

Latencia: kde sa naozaj prejaví

Pri 150 000-tokenovom prompte je TTFT cca 67 % rýchlejší pri cache hite. Pri krátkych promptoch (1 024 tokenov) je rozdiel len asi 7 %. Práve preto je caching najviac viditeľný v RAG aplikáciách, dlhých systémových promptoch a multi-turn konverzáciách.

Gemini Context Caching: explicitný model

Google Gemini používa odlišný prístup. Cache je samostatný objekt, ktorý vytvoríte API volaním a potom referencujete pri každom requeste cez ID. Toto je výhodné, keď chcete jeden veľký kontext zdieľať medzi mnohými requestmi cielene:

from google import genai
from google.genai import types

client = genai.Client()

cache = client.caches.create(
    model="gemini-2.5-pro",
    config=types.CreateCachedContentConfig(
        display_name="acme-docs-cache",
        system_instruction="Si asistent AcmeCorp.",
        contents=[long_document],  # 100 000+ tokenov
        ttl="3600s"
    )
)

response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents="Ake su klucove KPI v Q1?",
    config=types.GenerateContentConfig(cached_content=cache.name)
)

Gemini účtuje cache nie podľa hitov, ale podľa množstva tokenov uložených v čase (token-hodiny). Minimálne 1 024 tokenov, maximálne asi 10 miliónov pri Gemini 2.5 Pro. Tento model je optimálny pre situácie typu „dlhý PDF zdieľaný 1 000 používateľmi". Zaplatíte úložisko raz, nie tisíckrát zápis.

Porovnanie cien a vlastností 2026

Vlastnosť Claude (Sonnet 4.6) OpenAI (GPT-5.5) Gemini 2.5 Pro
Aktivácia Explicitne (cache_control) Automaticky Explicitne (Cache API)
Minimum tokenov 1 024 1 024 (krok 128) 1 024
Cena zápisu 1.25× (5m) / 2× (1h) Žiadny príplatok Storage fee/hodinu
Cena čítania 0.1× (90 % zľava) 0.25× (75 % zľava) 0.25× + storage
Default TTL 5 min (1h opcia) 5 až 60 min Konfigurovateľné
Cache izolácia Workspace-level (od 2/2026) Organizácia Projekt
Break-even hitov 1 (5m) / 2 (1h) Okamžite Závisí od TTL

Pre väčšinu produkčných workloadov je Claude najefektívnejší vďaka 90 % zľave na čítaní; OpenAI má prednosť nulovej implementačnej réžie; Gemini vyniká pri masívnych zdieľaných kontextoch.

Produkčné vzory pre RAG a agentov

Vzor 1: RAG s cachovanou retrieval bázou

V klasickom RAG pipeline sa pre každý request opätovne posiela top-k retrieved chunks. Ak však retrievnete pevný set 50 chunkov pre dennú reláciu používateľa, tieto patria do cachovaného prefixu:

system_blocks = [
    {"type": "text", "text": SYSTEM_PROMPT},
    {
        "type": "text",
        "text": format_chunks(daily_session_chunks),
        "cache_control": {"type": "ephemeral", "ttl": "1h"}
    }
]
# Kazda dalsia otazka v ramci hodiny stoji 0.1x za prefix

Vzor 2: Multi-turn agent s rastúcou históriou

Pri viacobratovej konverzácii sa s každým obratom predlžuje messages pole. Použite cumulative caching: označte cache_control na poslednej user správe, aby sa cachovala celá história po každý nový request:

messages = conversation_history.copy()
messages[-1]["content"][-1]["cache_control"] = {"type": "ephemeral"}

Vzor 3: Cachovanie tool výsledkov pre deterministické agenty

Pre agenta s veľa krokmi (napríklad coding agent), ktorý vykonáva tooly a vracia výsledky, cachujte celú trajektóriu okrem poslednej tool response. Stratégia testovania a verifikácie agentových odpovedí je popísaná v našom článku o evaluácii LLM aplikácií s DeepEval a RAGAS.

Anti-patterny, ktoré ničia hit rate

Najčastejšie chyby, ktoré sa objavujú v code reviews produkčných LLM aplikácií:

  • Dynamický timestamp v systémovom prompte. f"Dnešný dátum je {datetime.now()}" invaliduje cache každú sekundu. Riešenie: presunúť timestamp do user message, alebo orezať na deň.
  • Používateľské meno alebo user_id v prefixe. Každý používateľ má cache miss. Riešenie: presunúť do user správy alebo do tool argumentov.
  • Nedeterministické poradie JSON kľúčov. Ak serializujete dict v Pythone bez sort_keys=True, môže sa poradie meniť medzi requestmi. Riešenie: explicitná serializácia.
  • Pridávanie tool definícií dynamicky. Vkladanie nového toolu na pozíciu 3 invaliduje cache pre tooly 4 až 20. Riešenie: pridávať len na koniec.
  • Pod-prahový obsah. Cachovanie 800 tokenov nefunguje (minimum je 1 024) a žiadne chybové hlásenie nedostanete. Riešenie: meranie skutočného cache_read_input_tokens.
  • Príliš veľa breakpointov. Claude má limit 4 breakpointy; piaty sa ticho ignoruje. Použite ho na 4 najefektívnejšie miesta (tools, system, RAG context, posledná user správa).

Meranie cache hit rate v produkcii

Bez merania nemáte feedback loop. Každá platforma vracia v response telemetriu, ktorú treba logovať a agregovať:

# Claude
usage = response.usage
hit_rate = usage.cache_read_input_tokens / (
    usage.cache_read_input_tokens + usage.cache_creation_input_tokens + 1
)

# OpenAI
cached = response.usage.prompt_tokens_details.cached_tokens
total_in = response.usage.prompt_tokens
hit_rate = cached / total_in if total_in else 0

Dobré produkčné dashboardy sledujú:

  1. Cache hit rate per endpoint (cieľ pre RAG: > 80 %, pre agentov > 60 %).
  2. Cache creation tokens. Ak rastú, niekto pridáva dynamický obsah do prefixu.
  3. P95 TTFT pre cache hit vs miss requesty.
  4. Náklady na 1 000 requestov rozdelené na cache write / cache read / input / output.

Nástroje ako Langfuse, Helicone alebo OpenTelemetry s LLM semantic conventions dokážu túto telemetriu agregovať out-of-the-box. Pre Gemini si pozrite oficiálnu Gemini Context Caching dokumentáciu s príkladmi billing query.

Často kladené otázky

Aký je minimálny počet tokenov pre prompt caching v Claude API?

Pre Claude Sonnet 4.6, Sonnet 4.5 a Opus 4.1 je minimum 1 024 tokenov. Pre Claude Opus 4.7, 4.6 a 4.5 je to 4 096 tokenov. Pod týmto prahom sa cache ticho ignoruje bez chybového hlásenia, takže treba kontrolovať cache_read_input_tokens v response.

Znižuje prompt caching aj latenciu, nielen cenu?

Áno. OpenAI uvádza až 80 % redukciu time-to-first-token pri cache hitoch dlhých promptov; pri 150 000-tokenovom prompte je rozdiel asi 67 % rýchlejší TTFT. Pri krátkych promptoch (okolo 1 024 tokenov) je úspora latencie len asi 7 %, takže ekonomický prínos je výraznejší ako rýchlostný.

Koľko stojí cache zápis v Claude API?

Zápis do 5-minútovej cache stojí 1.25× základnú vstupnú cenu, zápis do 1-hodinovej cache 2×. Čítanie je vždy 0.1× (90 % zľava). Pre 5-minútový TTL je teda návratnosť už po jedinom cache hite, pre 1-hodinový po dvoch.

Treba pre OpenAI prompt caching meniť kód?

Nie. OpenAI aplikuje caching plne automaticky pre prompty s 1 024 a viac tokenmi, ktoré zdieľajú prefix s nedávnym requestom. Stačí logovať response.usage.prompt_tokens_details.cached_tokens a optimalizovať poradie obsahu (stabilné dopredu, dynamické dozadu).

Ako dlho zostáva cache aktívny?

Claude default TTL je 5 minút nečinnosti, voliteľne 1 hodina. OpenAI typicky 5 až 10 minút, počas off-peak až do 1 hodiny. Gemini má konfigurovateľný TTL pri vytvorení cache objektu. Každý cache hit resetuje timer, takže aktívna session udržiava cache „warm" prakticky neobmedzene.

Môže iná organizácia získať prístup k mojej cache?

Nie. Caches sú izolované per organizácia u všetkých troch poskytovateľov. Od februára 2026 Claude API a Microsoft Foundry ponúkajú aj workspace-level izoláciu v rámci organizácie. Cache hit vyžaduje 100 % zhodu prefixu, takže náhodné kolízie neexistujú.

Editorial Team
O Autorovi Editorial Team

Our team of expert writers and editors.