La memorizzazione nella cache dei prompt è la singola leva più importante sul costo di un agente e quella che più probabilmente non funziona senza che tu te ne accorga. Se contrassegnata correttamente, la parte ripetuta della richiesta viene fatturata a un decimo della tariffa di input. Se contrassegnata in modo errato — o instradata attraverso qualcosa che riscrive il prefisso — viene fatturata più della tariffa normale, perché paghi per scrivere voci della cache che nessuno legge.
Il meccanismo è ben documentato altrove. Ciò che non è documentato da nessuna parte è cosa cambia quando la richiesta passa attraverso un gateway, situazione che riguarda la maggior parte delle persone che leggono questo testo. Entrambi gli aspetti sono riportati di seguito.
Il meccanismo, in breve
Contrassegni un prefisso stabile — un prompt di sistema, uno schema di strumenti, un documento — e il provider ne memorizza la forma elaborata. La richiesta successiva il cui prefisso corrisponde esattamente lo legge invece di rielaborarlo.
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "<your long, stable instructions>",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "..." }]
}Due proprietà fanno tutto il lavoro e causano tutti i problemi. La corrispondenza avviene su un prefisso, quindi qualsiasi modifica iniziale invalida tutto ciò che segue. Inoltre una voce ha una durata, quindi una conversazione con intervalli lunghi tra i turni ricostruisce la cache invece di leggerla.
Quanto costa
| Modello | Input, per 1M | Lettura dalla cache | Scrittura nella cache su Kunavo |
|---|---|---|---|
| Claude Haiku 4.5 | $0,70 | $0,07 | $0,88 |
| Claude Sonnet 5 | $1,40 | $0,14 | $1,75 |
| Claude Opus 5 | $3,50 | $0,35 | $4,38 |
La terza colonna è il rapporto standard: una lettura costa un decimo dell’input. Anche la quarta è standard: una scrittura nella cache costa 1,25× l’input, il moltiplicatore indicato da Anthropic per una voce di cinque minuti; poiché entrambi i rapporti si applicano al prezzo di input di Kunavo, ciascuno mantiene lo stesso sconto rispetto al listino Anthropic dell’input del modello. Kunavo si discosta da Anthropic per la voce di un’ora: Anthropic indica quella scrittura a 2× l’input, mentre Kunavo la fattura allo stesso 1,25×. Questo è importante soprattutto per i carichi di lavoro che ricostruiscono spesso la cache — agenti di lunga durata, conversazioni lente, qualsiasi situazione in cui il prefisso cambia frequentemente — perché sono i carichi in cui le scritture, non le letture, dominano la voce cache della fattura.
Entrambi i valori vengono letti dal catalogo al momento del rendering, la stessa fonte letta dalla tabella dei prezzi e dal calcolatore Claude: in questa pagina non ci sono tariffe inserite manualmente.
Leggere l’oggetto usage
Non dedurre il comportamento della cache dalla fattura: ogni risposta lo indica direttamente e i tre conteggi dei token costituiscono l’intera diagnosi.
// The four numbers that tell you whether caching is working.
// Read them from every response before you tune anything.
"usage": {
"input_tokens": 312, // billed at the input rate
"cache_creation_input_tokens": 0, // billed at the write rate
"cache_read_input_tokens": 24106, // billed at the read rate
"output_tokens": 890
}
// A healthy cached agent turn looks like the above: a small
// input_tokens, a large cache_read, and a zero creation.
// If cache_creation is large on EVERY turn, the cache is being
// rebuilt each time and you are paying more, not less.Perché le percentuali di hit diminuiscono dietro un gateway
Una cache risiede nell’upstream che l’ha creata e la corrispondenza del prefisso è esatta. Questi due fatti insieme producono tre modalità di errore che non si verificano mai quando chiami direttamente un solo provider:
L’instradamento è cambiato. Se richieste consecutive arrivano su upstream diversi, la seconda non trova alcuna cache: la voce scritta dalla prima non è visibile dal punto in cui è stata eseguita la seconda. Questo è invisibile nei tuoi log e compare solo come un conteggio di creazione della cache che avrebbe dovuto essere una lettura. È la causa più comune e spiega perché un gateway che reindirizza liberamente tra upstream può costare meno per token e di più per sessione.
Qualcosa è stato inserito prima del prefisso. Un livello che riscrive il messaggio di sistema, normalizza le definizioni degli strumenti o riordina i campi produce un prefisso diverso, e un prefisso diverso è un mancato riscontro. Non si verifica alcun errore; aumenta semplicemente la fattura.
L’intervallo ha superato la durata della voce. Un agente che riflette per diversi minuti tra un turno e l’altro può ricostruire la cache ogni volta. Questo dipende dal carico di lavoro, non dal gateway, ma interagisce male con il primo caso: una ricostruzione è anche un’opportunità di reindirizzamento.
La diagnosi per tutti e tre è la stessa: osserva cache_creation_input_tokens durante una sessione. Un valore piatto e elevato significa che stai ricostruendo. Un valore elevato una sola volta e zero dopo significa che funziona. Su Kunavo, il costo a livello di richiesta e i conteggi dei token memorizzati nella cache sono nella vista usage, mentre la documentazione di riferimento sulla cache contiene i dettagli a livello di endpoint.
Cosa fare
Mantieni il prefisso memorizzato nella cache realmente stabile: inserisci qualsiasi elemento che cambia per richiesta dopo il blocco contrassegnato, mai prima. Raggruppa i turni dell’agente più ravvicinati quando possibile, perché il tempo di inattività è nemico delle voci di breve durata. Misura inoltre una sessione dall’inizio alla fine, non una singola richiesta: la memorizzazione nella cache è una proprietà di una sequenza e una stima per richiesta non può rilevarla. Il calcolatore del costo dei token di Claude include un campo per i token memorizzati nella cache proprio per questo motivo: impostalo sulla frazione del prompt che viene realmente ripetuta e il valore mensile smette di essere fittizio.
Domande frequenti
Come funziona la memorizzazione nella cache dei prompt di Claude?
Contrassegni un prefisso stabile della richiesta — in genere il prompt di sistema, le definizioni degli strumenti o un documento lungo — con cache_control, e il provider memorizza la forma elaborata di quei token. Nella richiesta successiva il cui prefisso corrisponde esattamente, quei token vengono serviti dalla cache e fatturati a una frazione della tariffa di input invece di essere rielaborati. La corrispondenza riguarda un prefisso esatto, quindi qualsiasi modifica nelle prime parti della richiesta invalida tutto ciò che segue.
Quanto fa risparmiare la memorizzazione nella cache dei prompt di Claude?
Una lettura dalla cache viene fatturata a un decimo della tariffa di input del modello. Su Claude Sonnet 5 ciò equivale a $0,14 invece di $1,40 per 1M di token; su Claude Opus 5, $0,35 invece di $3,50; su Claude Haiku 4.5, $0,07 invece di $0,70. Il risparmio dipende interamente dalla frazione di input che si ripete: un prodotto di chat in cui ogni prompt è diverso non risparmia nulla, mentre un agente di coding che reinvia una mappa del repository di 24.000 token a ogni turno trasforma gran parte della sua fattura di input in un decimo dell'importo.
Kunavo applica un sovrapprezzo per la scrittura nella cache?
Sì: lo stesso 1,25× applicato da Anthropic, con lo sconto del modello. L’API di Anthropic applica alla scrittura di una voce nella cache un prezzo superiore alla tariffa di input normale, perché la scrittura richiede più elaborazione di un token ordinario: 1,25× dell’input per una voce di cinque minuti e 2× per una di un’ora. Kunavo fattura ogni scrittura nella cache a 1,25× della propria tariffa di input del modello, inclusa quella di un’ora, quindi una scrittura mantiene lo stesso sconto rispetto al listino Anthropic dell’input del modello: su Claude Sonnet 5, $1,75 per 1M di token scritti rispetto a $1,40 per l’input normale. Questo è impostato in un unico punto del codice di fatturazione come rapporto di scrittura pari a 1,25 per i modelli Claude, e i calcolatori di questo sito leggono la tariffa risultante dalla stessa funzione invece di ripeterla, quindi il valore visualizzato non può divergere da quello addebitato.
Perché la mia percentuale di cache hit è bassa tramite un gateway?
Perché una cache è associata all’upstream che la contiene e la corrispondenza del prefisso è esatta. In una configurazione con gateway, tre situazioni la interrompono mentre non la interromperebbero chiamando direttamente un solo provider. Una richiesta instradata verso un upstream diverso da quello precedente non trova alcuna cache lì, perché la cache non è condivisa. Qualsiasi elemento inserito prima del prefisso — un messaggio di sistema riscritto, un elenco di strumenti riordinato — produce un prefisso diverso e quindi un mancato riscontro. Infine, un intervallo più lungo della durata della voce la fa scadere, quindi un agente con attività poco frequente la ricostruisce a ogni turno. L’oggetto usage indica quale caso si verifica: un valore elevato di cache_creation_input_tokens a ogni richiesta significa ricostruzione, non memorizzazione nella cache.
Come faccio a capire se la memorizzazione nella cache dei prompt funziona davvero?
Leggi l’oggetto usage invece della fattura. Ogni risposta riporta separatamente input_tokens, cache_creation_input_tokens e cache_read_input_tokens. Una cache funzionante mostra un conteggio input ridotto, un conteggio cache_read elevato e un conteggio creation pari a zero o occasionale. Una cache che viene ricostruita mostra un conteggio creation elevato a ogni singolo turno: costa più che non usare affatto la cache, perché paghi per scrivere voci che nessuno legge.
Qual è la dimensione minima per una cache dei prompt di Claude?
Esiste una soglia al di sotto della quale un prefisso non può essere memorizzato nella cache, e varia in base alla fascia del modello, quindi un prompt di sistema breve potrebbe non essere mai memorizzato, indipendentemente da come lo contrassegni. Il test pratico è empirico, non documentale: contrassegna il prefisso, invia due richieste identiche e verifica se la seconda riporta cache_read_input_tokens superiore a zero. Se non lo fa, il prefisso è sotto la soglia oppure non è identico a livello di byte.
La memorizzazione nella cache dei prompt cambia ciò che restituisce il modello?
No. La memorizzazione nella cache è un’ottimizzazione di fatturazione e latenza applicata all’elaborazione del prefisso, non una modifica a ciò che il modello vede o produce. La stessa richiesta con e senza cache_control restituisce lo stesso tipo di risposta; cambiano il costo del prefisso e la velocità con cui arriva il primo token.