Prompt caching u Claude API-ju 2026: Vodič za 90% manje troškove

Kako prompt caching u Claude API-ju smanjuje troškove do 90% i latenciju do 85%. Praktični vodič s Python primjerima, TTL strategijom i workspace izolacijom iz veljače 2026.

Claude prompt caching 2026: Uštedite 90%

Prompt caching u Claude API-ju 2026. godine postao je jedna od onih tehnika koje više ne možete zaobići ako vam stvarno stalo do troškova LLM aplikacija. Dobro konfigurirano predmemoriranje može srezati troškove na 10 % izvornih cijena ulaznih tokena i smanjiti latenciju do 85 % na dugačkim promptovima. U ovom vodiču prolazimo kroz to kako prompt caching zapravo radi, kada ga koristiti (a kada ne), kako postaviti breakpointe, i — kroz niz radnih Python primjera — od prve implementacije do produkcijske strategije.

Iskreno, ako razvijate RAG sustav, agenta koji ponavlja iste alate, ili chat aplikaciju s velikim sistemskim promptom, ovo više nije opcija. I pazite: u veljači 2026. Anthropic je promijenio model izolacije keša s organizacijske na razinu workspace-a, što prilično mijenja kako planirate dijeljenje predmemorije. O tome kasnije.

Što je prompt caching i zašto je ključan 2026.

Kad Claude obrađuje prompt, interno izračunava takozvani KV (key-value) cache — matematički prikaz već procesiranih tokena u pažnji modela. Prompt caching omogućuje da Anthropic taj međurezultat privremeno zadrži. Sljedeći zahtjev koji koristi isti prefiks (identičan sistemski prompt, definicije alata i povijest) jednostavno preskače skupi korak ponovnog izračuna.

Za aplikacije s velikim kontekstnim prozorom, ovo nije kozmetička optimizacija. Recimo da 100 000 tokena konteksta šaljete 50 puta tijekom radnog sata. Bez keša platit ćete punu cijenu svaki put. S kešem? Prvi zahtjev košta 125 % (premija za upis), a svaki sljedeći — tek 10 %.

Kada ima smisla koristiti prompt caching

  • Veliki sistemski promptovi: detaljne instrukcije za agenta, stilski vodiči, priručnici.
  • Definicije alata (tool use): skupovi od 10+ alata s kompleksnim JSON shemama.
  • Dohvaćeni dokumenti u RAG-u: dugi dokumenti koji se u sesiji ponavljaju.
  • Višekratne konverzacije: chat povijest koja se akumulira između zahtjeva.
  • Few-shot primjeri: dugačke liste demonstrativnih parova ulaz-izlaz.

Kada NEMA smisla

Ako je svaki vaš prompt jedinstven (primjerice, pojedinačna izolirana pitanja korisnika bez zajedničkog konteksta), prompt caching će vas samo koštati dodatnih 25 %. Jer ćete plaćati upise u keš koje, realno, nitko nikad neće pročitati.

Cjenovni model prompt cachinga 2026.

Cijene su izražene kao množitelji bazne cijene ulaznog tokena (base input token price):

  • Obični ulazni token: 1,0× (standardna cijena).
  • Upis u keš, 5 min TTL: 1,25× (25 % premija za prvo keširanje).
  • Upis u keš, 1 sat TTL: 2,0× (dvostruka cijena za prošireni TTL).
  • Čitanje iz keša: 0,1× (90 % popusta na svaki cache hit).
  • Izlazni token: nepromijenjeno (generiranje se ne kešira).

Praktični izračun povrata ulaganja

Pretpostavimo prompt od 100 000 tokena i claude-sonnet-4-5 cijenu od 3 USD po milijun ulaznih tokena.

  • Bez cachinga, 10 zahtjeva: 10 × 100 000 × 3 USD/1M = 3,00 USD.
  • S 5-minutnim kešem, 10 zahtjeva: 1 × 1,25 × 0,30 USD + 9 × 0,10 × 0,30 USD = 0,375 + 0,27 = 0,645 USD.

Ušteda: ~78,5 %. Uz dovoljno cache hitova iznad 4-5, ušteda se približava teoretskom maksimumu od 90 %. Nije loše za par dodatnih redaka koda.

Prvi korak: minimalna implementacija u Pythonu

Prije bilo čega provjerite da imate instaliran anthropic SDK verzije 0.39.0 ili novije:

pip install "anthropic>=0.39.0"

Postavite API ključ:

export ANTHROPIC_API_KEY="sk-ant-..."

Sljedeći primjer pokazuje kako keširati dugački sistemski prompt. Ključna je oznaka cache_control s tipom ephemeral:

from anthropic import Anthropic

client = Anthropic()

LONG_SYSTEM_PROMPT = """
Ti si strucni pravni asistent specijaliziran za hrvatsko radno pravo.
... (minimalno 1024 tokena statickog sadrzaja) ...
"""

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": LONG_SYSTEM_PROMPT,
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "Koji je otkazni rok nakon 5 godina staza?"}
    ]
)

print(response.usage)
# Usage(input_tokens=15,
#       cache_creation_input_tokens=1240,
#       cache_read_input_tokens=0,
#       output_tokens=280)

Na prvom pozivu vidjet ćete cache_creation_input_tokens > 0. Na drugom pozivu istim sistemskim promptom cache_read_input_tokens bit će popunjen, a cache_creation_input_tokens jednak 0 — to je potvrda cache hita. Jednostavno.

Važno: minimalna veličina bloka

Prompt caching odbacuje blokove kraće od praga:

  • Claude Opus 4.1, Sonnet 4.5, Sonnet 4: minimalno 1 024 tokena.
  • Claude Haiku 4.5, Haiku 3.5, Haiku 3: minimalno 2 048 tokena.

Ako je vaš sistemski prompt kraći, spojite ga s definicijama alata u isti keširani blok tako da zajedno prijeđu prag. Ovo je ujedno i najčešća zamka u koju razvojni timovi upadaju prvi put.

Hijerarhija keširanja: tools → system → messages

Anthropic gradi prefiks keša u fiksnom redoslijedu: najprije definicije alata, potom sistemski prompt, zatim povijest poruka. Cache breakpoint na poruci implicitno keširа sve što je ispred nje — uključujući tools i system.

Možete postaviti do 4 breakpointa u jednom zahtjevu, što omogućuje različite granice za različite dijelove prompta. Dobra vijest: dodavanje više breakpointova ne košta dodatno. Naplata ovisi isključivo o tome koliko tokena je stvarno keširano i pročitano.

Primjer s više breakpointova: RAG s dokumentima

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[
        {
            "name": "search_knowledge_base",
            "description": "...",
            "input_schema": {...},
            "cache_control": {"type": "ephemeral"}   # breakpoint 1
        }
    ],
    system=[
        {
            "type": "text",
            "text": SYSTEM_INSTRUCTIONS,
            "cache_control": {"type": "ephemeral"}   # breakpoint 2
        }
    ],
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": RETRIEVED_DOCUMENTS,
                    "cache_control": {"type": "ephemeral"}  # breakpoint 3
                },
                {
                    "type": "text",
                    "text": user_question
                }
            ]
        }
    ]
)

Ovdje alati i sistemski prompt keširaju se zajedno i ostaju stabilni tijekom svih zahtjeva. Dohvaćeni dokumenti keširaju se na granici 3 — ako korisnik postavi više pitanja o istim dokumentima, svi daljnji pozivi koriste keš. Ovo je, po mom mišljenju, jedan od najneiskorištenijih obrazaca u tipičnim RAG implementacijama.

TTL od 5 minuta ili 1 sata: kada odabrati koji

Zadani TTL je 5 minuta, a timer se resetirа na svaki pogodak. Dakle, u aktivnoj sesiji s upitom svake 2 minute keš ostaje topao beskonačno — bez dodatne cijene.

TTL od 1 sata uključujete ovako:

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

Odluka: 5 min ili 1 h?

  • Koristite 5 min TTL kada je promet redovit i frekvenca zahtjeva brža od 5 minuta. Jeftiniji upis (1,25×) i automatsko osvježavanje čuva vas od nepotrebne cijene.
  • Koristite 1 h TTL za batch obradu, noćne poslove, ili aplikacije s neredovitim prometom gdje zahtjevi dolaze u naletima svakih 20-40 minuta. Dvostruka premija na upis isplati se nakon dovoljnog broja hitova.

Miješanje 5 min i 1 h TTL-ova

Možete ih kombinirati u istom zahtjevu, ali s pravilom: blokovi s dužim TTL-om moraju biti ispred onih s kraćim. Tipičan obrazac — definicije alata na 1 h (stabilne tijekom cijelog dana), a povijest poruka na 5 min (mijenja se po sesiji).

Provjera je li keš zapravo pogođen

U response.usage polju promatrajte tri vrijednosti:

  • cache_creation_input_tokens: koliko je tokena upisano u keš ovim zahtjevom.
  • cache_read_input_tokens: koliko je tokena pročitano iz keša (cache hit).
  • input_tokens: koliko je nekeširanih tokena obrađeno.

Jednostavan helper za izračun hit-rate metrike:

def cache_hit_ratio(usage):
    total = (usage.cache_read_input_tokens
             + usage.cache_creation_input_tokens
             + usage.input_tokens)
    if total == 0:
        return 0.0
    return usage.cache_read_input_tokens / total

# U produkciji: logirajte ovaj omjer u Datadog/Prometheus

Ako su i cache_creation_input_tokens i cache_read_input_tokens jednaki 0, vaš blok je bio kraći od minimalnog praga i nije uopće keširan. Klasika početničke muke.

Promjena iz veljače 2026: izolacija keša po workspaceu

Od 5. veljače 2026. Anthropic je na Claude API-ju i Azure AI Foundry preview-u promijenio model izolacije keša s razine organizacije na razinu workspace.

Praktične posljedice:

  • Ako ste dijelili isti sistemski prompt između više workspaceova, sada svaki workspace ima vlastiti keš — i plaća vlastiti upis.
  • Dev, staging i prod workspaceovi neće dijeliti keš. Planirajte testove s tim u vidu.
  • Amazon Bedrock i Google Vertex AI i dalje koriste organizacijsku izolaciju.

Ako imate monorepo s više workspaceova iste aplikacije, razmislite o konsolidaciji ili prihvatite dodatnu cijenu upisa. Nažalost, nema srednjeg puta.

Najčešće greške koje invalidiraju keš

  1. Dinamički sadržaj u keširanoj zoni. Trenutni timestamp, korisnikovo ime, slučajni ID bilo gdje prije cache_control granice pokvarit će prefiks.
  2. Mijenjanje redoslijeda alata. Dict literali u Pythonu znaju se serijalizirati u različitim redoslijedima — uvijek sortirajte alate deterministički.
  3. Različiti modeli. Keš je vezan za točan ID modela; claude-sonnet-4-5 i claude-sonnet-4 ne dijele keš.
  4. Promjena temperature ili drugih inferencijskih parametara. Neki parametri invalidiraju keš; držite ih konstantnim tijekom sesije.
  5. Premještanje breakpointa. Ako na prošlom zahtjevu niste imali cache_control točno na istom mjestu, novi zahtjev pravi novi upis.

Napredna strategija: hibridni keš za chat aplikacije

Za produkcijski chatbot s dugačkom povijesti preporučena arhitektura ima tri sloja:

  1. Sloj 1 — alati + sistemski prompt (1 h TTL). Ovo se mijenja tek pri deployovima.
  2. Sloj 2 — povijest razgovora do zadnjih N poruka (5 min TTL). Raste između upita, ali ostaje topla tijekom aktivnog razgovora.
  3. Sloj 3 — trenutna korisnikova poruka (bez keša). Uvijek nova.
def build_cached_messages(history, new_user_msg):
    messages = []
    # Cijeli povijest ide u jedan blok s 5 min TTL kesiranjem
    if history:
        history_text = "\n".join(
            f"{m['role']}: {m['content']}" for m in history
        )
        messages.append({
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": f"[HISTORY]{history_text}[/HISTORY]",
                    "cache_control": {"type": "ephemeral"}
                }
            ]
        })
    messages.append({"role": "user", "content": new_user_msg})
    return messages

Mjerenje stvarne uštede u produkciji

Ne vjerujte teoretskim brojkama — uvijek izmjerite. Sam sam se više puta opekao kad je "teoretska" ušteda u produkciji ispala tek polovica očekivane. Minimalna telemetrija koju treba logirati po zahtjevu:

  • request_id, workspace_id, model.
  • cache_creation_input_tokens, cache_read_input_tokens, input_tokens, output_tokens.
  • Izračunati effective_cost_usd koristeći tabelu cijena.
  • latency_ms ukupno i time_to_first_token_ms.

Nakon tjedan dana prometa usporedite prosječni hit-rate po endpointu. Ako je ispod 50 %, vjerojatno vam je prompt dinamičniji nego što mislite — pregledajte ga zajedno s dev timom da pronađete izvor nestabilnosti.

Kada prompt caching NIJE dovoljan

Ako i nakon keširanja vaši troškovi ostaju previsoki, sljedeći koraci su:

  • Batch API s 50 % popustom za nehitne poslove.
  • Selekcija modela — Haiku 4.5 za rutiranje, Sonnet 4.5 za glavnu logiku.
  • Sažimanje povijesti razgovora umjesto slanja cijele.
  • Embedding-baziran dohvat umjesto slanja cijelog dokumenta u kontekst.

Prompt caching je često prva, ali rijetko posljednja optimizacija.

Često postavljana pitanja (FAQ)

Koliko dugo traje Claude prompt cache?

Zadani TTL je 5 minuta i resetirа se na svaki pogodak. Opciono možete postaviti 1 sat TTL koristeći "ttl": "1h" u cache_control bloku, uz dvostruku cijenu upisa.

Koliko iznosi popust na cache read?

90 %. Cache read tokeni naplaćuju se po 0,1× bazne cijene ulaznih tokena. Cache write košta 1,25× za 5 min TTL ili 2,0× za 1 sat TTL.

Je li prompt caching automatski ili ga moram eksplicitno uključiti?

Morate ga eksplicitno uključiti postavljanjem "cache_control": {"type": "ephemeral"} na željeni content block. Anthropic ne keširа automatski.

Može li se prompt caching koristiti sa streamingom?

Da. Metrike keša pojavit će se u message_start događaju na početku streama, tako da odmah znate je li bio cache hit.

Rade li Amazon Bedrock i Google Vertex AI isto?

Uglavnom da — cache_control sintaksa i cjenovni model su isti. Glavna razlika: od veljače 2026. izolacija keša je per-workspace na Anthropic API-ju, dok Bedrock i Vertex AI zadržavaju izolaciju na razini organizacije.

Što ako je moj sistemski prompt kraći od 1024 tokena?

Keš neće biti kreiran. Rješenje: spojite sistemski prompt s definicijama alata ili few-shot primjerima u jedan blok koji zajedno prelazi prag, ili ga proširite detaljnijim uputama umjesto da odustanete.

Zaključak

Prompt caching u Claude API-ju je 2026. prešao iz "lijepo-imati" u "obavezno" za svaku produkcijsku LLM aplikaciju. Uz 90 % popust na cache read i smanjenje latencije do 85 %, dobro konfigurirano keširanje često vraća investiciju razvoja već u prvom tjednu prometa.

Ključni zaključci: držite keširani prefiks statičnim, iskoristite svih 4 moguća breakpointa kad imate različite zone stabilnosti, pazite na novu per-workspace izolaciju uvedenu u veljači 2026., i — najvažnije — uvijek mjerite hit-rate u produkciji. Kombinirano s Batch API-jem i pametnom selekcijom modela, prompt caching je najbrži put do održivog ekonomičnog LLM sustava.

Article changelog (1)
  • — SEO meta refreshed (title and description updated)
Editorial Team
O Autoru Editorial Team

Our team of expert writers and editors.