Nell’articolo sulla context window ho notato una cosa curiosa: mandando due volte di fila lo stesso testo a GPT-6 Luna, alla seconda chiamata OpenAI aveva già messo in cache da solo quasi tutto il contesto. È il prompt caching, e insieme alla Batch API è il modo più semplice per pagare molto meno le API dei modelli IA senza cambiare modello e senza togliere una riga dal prompt.
Le due leve funzionano in modo diverso. La cache fa risparmiare quando mandi spesso lo stesso contesto; il batch quando puoi aspettare la risposta. In questo articolo ti spiego come funzionano con OpenAI, Anthropic e Google, e ti mostro cosa è successo quando le ho provate davvero, compresa una soglia che, se non la conosci, ti fa credere di risparmiare mentre paghi prezzo pieno.
Cos’è il prompt caching
Quando un modello legge il tuo prompt, fa un lavoro di calcolo su ogni token. Se la richiesta successiva comincia esattamente con lo stesso testo, il provider può riusare quel lavoro invece di rifarlo da capo. Tu paghi quella parte molto meno e ricevi la risposta prima.
La parola chiave è “comincia”. La cache funziona sul prefisso: il testo deve essere identico dall’inizio fino al punto messo in cache, carattere per carattere. Basta una data, un nome utente o uno spazio diverso nelle prime righe e la cache non serve più. Per questo l’ordine del prompt conta: prima le parti fisse, per ultime quelle che cambiano.
I casi tipici in cui fa la differenza:
- istruzioni di sistema lunghe, uguali per tutti gli utenti;
- lo stesso documento su cui fai tante domande diverse, come un manuale o un contratto;
- le chat, dove a ogni turno rimandi tutta la cronologia precedente;
- gli agenti con tanti strumenti, le cui definizioni viaggiano identiche in ogni chiamata.
Come funziona il prompt caching da un provider all’altro
Il principio è lo stesso per tutti, ma i dettagli cambiano parecchio.
| OpenAI (GPT-6) | Anthropic (Claude) | Google (Gemini) | |
|---|---|---|---|
| Come si attiva | Da sola | Con cache_control nella richiesta | Da sola (implicita) |
| Soglia minima | 1.024 token | 512 token su Opus 5.5 e Fable 5.1, 1.024 su Sonnet 5, 4.096 su Haiku 4.5 | 4.096 token sui Flash 3.x |
| Lettura dalla cache | 10% del prezzo di input | 10% (5% su Opus 5.5, 2,5% su Fable 5.1) | scontata in automatico |
| Scrittura in cache | n.d. | 125% del prezzo di input (200% per la cache da un’ora) | n.d. |
| Quanto dura | 30 minuti dall’ultimo uso | 5 minuti, rinnovati a ogni uso (oppure un’ora) | n.d. |
Con OpenAI e Google non devi fare niente: se il prompt è abbastanza lungo e comincia come uno recente, lo sconto arriva da solo. Con Anthropic invece la cache la chiedi tu, e c’è un piccolo sovrapprezzo sulla prima scrittura: la paghi il 25% in più, poi ogni lettura costa un decimo. Su Claude puoi anche mettere il parametro una volta sola in cima alla richiesta e lasciare che sia l’API a scegliere il punto di cache, oppure indicare tu fino a quattro punti precisi.
Per attivarla su Claude basta questo nel blocco delle istruzioni di sistema:
"system": [
{
"type": "text",
"text": "Istruzioni lunghe e documento di riferimento...",
"cache_control": {"type": "ephemeral"}
}
]
L’esperimento: la cache alla prova
Ho messo nelle istruzioni di sistema il testo di questo blog, una volta tutto intero e una volta solo l’inizio, con la cache attiva, e ho fatto la stessa domanda tre volte di fila. Ecco cosa riportava il campo usage delle risposte.
| Prova | Token del prompt | 1ª chiamata | 2ª e 3ª chiamata | Tempi |
|---|---|---|---|---|
| Claude Haiku 4.5, inizio del blog | 2.859 | nessuna cache | nessuna cache | 1,63 · 0,90 · 0,89 s |
| Claude Sonnet 5, inizio del blog | 3.079 | 3.079 scritti in cache | 3.079 letti dalla cache | 1,13 · 1,12 · 1,03 s |
| Claude Haiku 4.5, tutto il blog | 47.295 | 47.295 scritti in cache | 47.295 letti dalla cache | 1,42 · 0,91 · 1,02 s |
La soglia che non ti avvisa
Guarda la prima riga. Il prompt aveva cache_control, ma con 2.859 token Haiku 4.5 è sotto la sua soglia minima di 4.096 e la cache semplicemente non si attiva. Nessun errore, nessun avviso: la richiesta va a buon fine e paghi prezzo pieno. Se non controlli i campi cache_creation_input_tokens e cache_read_input_tokens nella risposta, non te ne accorgi mai.
La seconda riga è quasi lo stesso testo, ma su Claude Sonnet 5, che ha la soglia a 1.024 token: la cache parte subito. È lo stesso motivo per cui il chatbot di questo blog, quando rispondeva con Haiku, non poteva usare la cache: il suo prompt stava sotto la soglia. Lo racconto nell’articolo su quanto costa davvero un chatbot AI.
Quanto si risparmia davvero
Prendiamo la terza riga, tutto il blog su Haiku 4.5, a $1 per milione di token di input:
- senza cache, ogni chiamata costa circa $0,047 di input;
- con la cache, la prima costa $0,059 (la scrittura si paga il 25% in più) e ognuna delle successive $0,0047, un decimo.
Il sovrapprezzo della prima chiamata si recupera già alla seconda. Su dieci domande sullo stesso testo si passa da $0,47 a $0,10: il 78% in meno. E più domande fai, più ti avvicini al 90%.
E si va anche più veloci
Con 47.000 token, la prima chiamata ha impiegato 1,42 secondi e quelle servite dalla cache circa un secondo. Sui prompt corti la differenza sparisce nel rumore, ma con contesti lunghi il modello che non deve rileggere tutto risponde prima.
Come scrivere prompt che la cache ama
- Prima quello che non cambia. Istruzioni, documenti di riferimento, definizioni degli strumenti in cima; la domanda dell’utente e i dati del momento in fondo.
- Niente variabili nelle prime righe. L’errore più comune è mettere data e ora, o il nome dell’utente, all’inizio del system prompt: cambia a ogni richiesta e la cache non scatta mai. Se servono, mettili in fondo.
- Nelle chat, aggiungi e non riscrivere. Se a ogni turno riformatti o riassumi tutta la cronologia, il prefisso cambia. Aggiungere i messaggi nuovi in coda lascia la cache valida.
- Tieni conto della durata. Su Claude la cache vive 5 minuti dall’ultimo uso, su GPT-6 30. Se le richieste sono rade, su Claude valuta la cache da un’ora: la scrittura costa il doppio, ma non la perdi tra una domanda e l’altra.
- Controlla i numeri. Registra i campi della cache nel log delle chiamate. È l’unico modo per sapere se sta funzionando.
Batch API: metà prezzo, se puoi aspettare
La seconda leva è ancora più semplice da capire. Invece di mandare le richieste una alla volta e aspettare ogni risposta, le mandi tutte insieme in un “batch” e le ritiri quando sono pronte. In cambio della pazienza, il provider ti fa metà prezzo su tutto, input e output.
| OpenAI | Anthropic | |
|---|---|---|
| Sconto | 50% | 50% su tutto l’uso |
| Tempo massimo | 24 ore | 24 ore, la maggior parte entro un’ora |
| Dimensione massima | 50.000 richieste o 200 MB | 100.000 richieste o 256 MB |
| Note | limiti di velocità separati da quelli normali | risultati scaricabili per 29 giorni |
Il mio batch di prova
Per vedere quanto si aspetta davvero, ho mandato ad Anthropic un batch di 10 richieste a Claude Haiku 4.5: per ognuno dei primi dieci articoli di questo blog, “in una frase di massimo 20 parole, di cosa parla un articolo intitolato…”. Il batch è stato creato alle 14:56:37 ed è risultato completato alle 14:59:06: 2 minuti e mezzo, con tutte e dieci le richieste andate a buon fine.
In tutto 572 token di input e 407 di output: $0,0013 invece di $0,0026. Cifre ridicole, perché la prova era piccola, ma la proporzione vale identica per diecimila richieste. E un dettaglio onesto: una delle dieci risposte è arrivata con un “# Risposta” davanti che non avevo chiesto. Il batch cambia il prezzo e i tempi, non il modello: le sue manie restano le stesse, quindi i risultati vanno controllati come quelli normali.
Due minuti e mezzo sono un caso fortunato, con un batch minuscolo in un momento tranquillo. Per progettare un sistema vero conviene ragionare sul caso peggiore, cioè le 24 ore.
Quando usare la Batch API
Il criterio è uno solo: c’è qualcuno che aspetta la risposta? Se sì, niente batch. Se no, quasi sempre conviene. Qualche esempio:
- classificare o riassumere un arretrato di ticket, mail o documenti;
- generare descrizioni prodotto, meta description o traduzioni per un catalogo intero;
- elaborazioni notturne, come un report o una rassegna da preparare per la mattina dopo;
- test di qualità su centinaia di domande, quando confronti due modelli o due versioni di un prompt.
Cache e batch insieme
Le due leve si possono combinare. Anthropic scrive esplicitamente che gli sconti del prompt caching e quelli della Batch API si sommano: se nel batch tante richieste condividono lo stesso contesto lungo, lo paghi a metà prezzo e in più letto dalla cache. C’è però un limite: le richieste di un batch vengono elaborate in parallelo e in ordine sparso, quindi gli hit della cache sono “al meglio delle possibilità”. La stessa documentazione parla di percentuali tra il 30 e il 98%, a seconda dei casi, e consiglia la cache da un’ora, perché un batch può durare più di cinque minuti.
In sintesi
Prima di cambiare modello per risparmiare, controlla queste due leve. Se mandi spesso lo stesso contesto, il prompt caching ti fa pagare quella parte un decimo, a patto di mettere le parti fisse in cima e di superare la soglia minima del modello. Se non hai fretta, la Batch API dimezza il conto. E se hai entrambe le situazioni, gli sconti si sommano.
Il resto della serie: la guida alle API di intelligenza artificiale per il quadro generale, cosa sono i token per capire cosa stai pagando e il tracker dei modelli IA per i prezzi aggiornati. Il prossimo articolo parla dei rate limit e degli errori 429: cosa fare quando il provider ti dice di no.


Lascia un commento