Il caching dei prompt è una funzionalità potente che ottimizza l'utilizzo dell'API consentendo di riprendere da prefissi specifici nei tuoi prompt. Questo approccio riduce significativamente i tempi di elaborazione e i costi per attività ripetitive o prompt con elementi coerenti.
Il caching dei prompt memorizza le rappresentazioni della cache KV e gli hash crittografici del contenuto memorizzato nella cache, ma non memorizza il testo grezzo dei prompt o delle risposte. Questo potrebbe essere adatto per i clienti che richiedono impegni di conservazione dei dati di tipo ZDR. Vedi durata della cache per i dettagli.
Ecco un esempio di come implementare il caching dei prompt con l'API Messages utilizzando un blocco cache_control:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.\n"
},
{
"type": "text",
"text": "<the entire contents of Pride and Prejudice>",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [
{
"role": "user",
"content": "Analyze the major themes in Pride and Prejudice."
}
]
}'
# Call the model again with the same inputs up to the cache checkpoint
curl https://api.anthropic.com/v1/messages # rest of input{"cache_creation_input_tokens":188086,"cache_read_input_tokens":0,"input_tokens":21,"output_tokens":393}
{"cache_creation_input_tokens":0,"cache_read_input_tokens":188086,"input_tokens":21,"output_tokens":393}In questo esempio, l'intero testo di "Pride and Prejudice" viene memorizzato nella cache utilizzando il parametro cache_control. Questo consente il riutilizzo di questo testo di grandi dimensioni su più chiamate API senza rielaborarlo ogni volta. Modificando solo il messaggio dell'utente puoi fare varie domande sul libro mentre utilizzi il contenuto memorizzato nella cache, portando a risposte più veloci e a una maggiore efficienza.
Quando invii una richiesta con il caching dei prompt abilitato:
Questo è particolarmente utile per:
Per impostazione predefinita, la cache ha una durata di 5 minuti. La cache viene aggiornata senza costi aggiuntivi ogni volta che il contenuto memorizzato nella cache viene utilizzato.
Se ritieni che 5 minuti sia troppo breve, Anthropic offre anche una durata della cache di 1 ora a costo aggiuntivo.
Per ulteriori informazioni, vedi durata della cache di 1 ora.
Il caching dei prompt memorizza nella cache l'intero prefisso
Il caching dei prompt fa riferimento all'intero prompt - tools, system e messages (in quell'ordine) fino a e includendo il blocco designato con cache_control.
Il caching dei prompt introduce una nuova struttura di prezzi. La tabella seguente mostra il prezzo per milione di token per ogni modello supportato:
| Model | Base Input Tokens | 5m Cache Writes | 1h Cache Writes | Cache Hits & Refreshes | Output Tokens |
|---|---|---|---|---|---|
| Claude Opus 4.6 | $5 / MTok | $6.25 / MTok | $10 / MTok | $0.50 / MTok | $25 / MTok |
| Claude Opus 4.5 | $5 / MTok | $6.25 / MTok | $10 / MTok | $0.50 / MTok | $25 / MTok |
| Claude Opus 4.1 | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Opus 4 | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Sonnet 4.6 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 4.5 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 4 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 3.7 (deprecated) | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Haiku 4.5 | $1 / MTok | $1.25 / MTok | $2 / MTok | $0.10 / MTok | $5 / MTok |
| Claude Haiku 3.5 | $0.80 / MTok | $1 / MTok | $1.6 / MTok | $0.08 / MTok | $4 / MTok |
| Claude Opus 3 (deprecated) | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Haiku 3 | $0.25 / MTok | $0.30 / MTok | $0.50 / MTok | $0.03 / MTok | $1.25 / MTok |
La tabella sopra riflette i seguenti moltiplicatori di prezzo per il caching dei prompt:
Questi moltiplicatori si accumulano con altri modificatori di prezzo come lo sconto dell'API Batch, i prezzi del contesto lungo e la residenza dei dati. Vedi prezzi per i dettagli completi.
Il caching dei prompt è attualmente supportato su:
Posiziona il contenuto statico (definizioni di strumenti, istruzioni di sistema, contesto, esempi) all'inizio del tuo prompt. Contrassegna la fine del contenuto riutilizzabile per il caching utilizzando il parametro cache_control.
I prefissi della cache vengono creati nel seguente ordine: tools, system, quindi messages. Questo ordine forma una gerarchia in cui ogni livello si basa su quelli precedenti.
Puoi utilizzare un solo punto di interruzione della cache alla fine del tuo contenuto statico, e il sistema troverà automaticamente la sequenza più lunga di blocchi memorizzati nella cache corrispondenti. Comprendere come funziona questo ti aiuta a ottimizzare la tua strategia di caching.
Tre principi fondamentali:
Le chiavi della cache sono cumulative: Quando memorizzi esplicitamente un blocco nella cache con cache_control, la chiave hash della cache viene generata eseguendo l'hash di tutti i blocchi precedenti nella conversazione in sequenza. Ciò significa che la cache per ogni blocco dipende da tutto il contenuto che lo precede.
Controllo sequenziale all'indietro: Il sistema verifica i hit della cache lavorando all'indietro dal tuo punto di interruzione esplicito, controllando ogni blocco precedente in ordine inverso. Questo assicura che tu ottenga il hit della cache più lungo possibile.
Finestra di lookback di 20 blocchi: Il sistema controlla solo fino a 20 blocchi prima di ogni punto di interruzione cache_control esplicito. Dopo aver controllato 20 blocchi senza una corrispondenza, smette di controllare e passa al punto di interruzione esplicito successivo (se presente).
Esempio: Comprendere la finestra di lookback
Considera una conversazione con 30 blocchi di contenuto in cui imposti cache_control solo sul blocco 30:
Se invii il blocco 31 senza modifiche ai blocchi precedenti: Il sistema controlla il blocco 30 (corrispondenza!). Ottieni un hit della cache al blocco 30 e solo il blocco 31 necessita di elaborazione.
Se modifichi il blocco 25 e invii il blocco 31: Il sistema controlla all'indietro dal blocco 30 → 29 → 28... → 25 (nessuna corrispondenza) → 24 (corrispondenza!). Poiché il blocco 24 non è cambiato, ottieni un hit della cache al blocco 24 e solo i blocchi 25-30 necessitano di rielaborazione.
Se modifichi il blocco 5 e invii il blocco 31: Il sistema controlla all'indietro dal blocco 30 → 29 → 28... → 11 (controllo #20). Dopo 20 controlli senza trovare una corrispondenza, smette di cercare. Poiché il blocco 5 è oltre la finestra di 20 blocchi, non si verifica alcun hit della cache e tutti i blocchi necessitano di rielaborazione. Tuttavia, se avessi impostato un punto di interruzione cache_control esplicito sul blocco 5, il sistema continuerebbe a controllare da quel punto di interruzione: blocco 5 (nessuna corrispondenza) → blocco 4 (corrispondenza!). Questo consente un hit della cache al blocco 4, dimostrando perché dovresti posizionare i punti di interruzione prima del contenuto modificabile.
Punto chiave: Imposta sempre un punto di interruzione della cache esplicito alla fine della tua conversazione per massimizzare le tue possibilità di hit della cache. Inoltre, imposta i punti di interruzione appena prima dei blocchi di contenuto che potrebbero essere modificabili per assicurare che quelle sezioni possano essere memorizzate nella cache in modo indipendente.
Puoi definire fino a 4 punti di interruzione della cache se desideri:
Limitazione importante: Se il tuo prompt ha più di 20 blocchi di contenuto prima del tuo punto di interruzione della cache e modifichi il contenuto prima di quei 20 blocchi, non otterrai un hit della cache a meno che non aggiunga punti di interruzione espliciti aggiuntivi più vicini a quel contenuto.
La lunghezza minima del prompt memorizzabile nella cache è:
I prompt più brevi non possono essere memorizzati nella cache, anche se contrassegnati con cache_control. Qualsiasi richiesta di memorizzare nella cache meno di questo numero di token verrà elaborata senza caching. Per vedere se un prompt è stato memorizzato nella cache, vedi i campi di utilizzo della risposta.
Per le richieste simultanee, nota che una voce della cache diventa disponibile solo dopo l'inizio della prima risposta. Se hai bisogno di hit della cache per richieste parallele, attendi la prima risposta prima di inviare le richieste successive.
Attualmente, "ephemeral" è l'unico tipo di cache supportato, che per impostazione predefinita ha una durata di 5 minuti.
I punti di interruzione della cache stessi non aggiungono alcun costo. Sei addebitato solo per:
L'aggiunta di più punti di interruzione cache_control non aumenta i tuoi costi - paghi comunque lo stesso importo in base al contenuto effettivamente memorizzato nella cache e letto. I punti di interruzione ti danno semplicemente il controllo su quali sezioni possono essere memorizzate nella cache in modo indipendente.
La maggior parte dei blocchi nella richiesta può essere designata per il caching con cache_control. Questo include:
toolssystemmessages.content, sia per i turni dell'utente che dell'assistentemessages.content, nei turni dell'utentemessages.content, sia per i turni dell'utente che dell'assistenteOgnuno di questi elementi può essere contrassegnato con cache_control per abilitare il caching per quella parte della richiesta.
Mentre la maggior parte dei blocchi di richiesta può essere memorizzata nella cache, ci sono alcune eccezioni:
I blocchi di pensiero non possono essere memorizzati nella cache direttamente con cache_control. Tuttavia, i blocchi di pensiero POSSONO essere memorizzati nella cache insieme ad altro contenuto quando appaiono nei turni dell'assistente precedenti. Quando memorizzati nella cache in questo modo, CONTANO come token di input quando letti dalla cache.
I blocchi di sub-contenuto (come le citazioni) stessi non possono essere memorizzati nella cache direttamente. Invece, memorizza nella cache il blocco di livello superiore.
Nel caso delle citazioni, i blocchi di contenuto del documento di livello superiore che servono come materiale di origine per le citazioni possono essere memorizzati nella cache. Questo ti consente di utilizzare il caching dei prompt con le citazioni in modo efficace memorizzando nella cache i documenti a cui le citazioni faranno riferimento.
I blocchi di testo vuoti non possono essere memorizzati nella cache.
Le modifiche al contenuto memorizzato nella cache possono invalidare parte o tutta la cache.
Come descritto in Strutturare il tuo prompt, la cache segue la gerarchia: tools → system → messages. Le modifiche a ogni livello invalidano quel livello e tutti i livelli successivi.
La tabella seguente mostra quali parti della cache vengono invalidate da diversi tipi di modifiche. ✘ indica che la cache viene invalidata, mentre ✓ indica che la cache rimane valida.
| Cosa cambia | Cache degli strumenti | Cache di sistema | Cache dei messaggi | Impatto |
|---|---|---|---|---|
| Definizioni di strumenti | ✘ | ✘ | ✘ | La modifica delle definizioni di strumenti (nomi, descrizioni, parametri) invalida l'intera cache |
| Attivazione/disattivazione della ricerca web | ✓ | ✘ | ✘ | L'abilitazione/disabilitazione della ricerca web modifica il prompt di sistema |
| Attivazione/disattivazione delle citazioni | ✓ | ✘ | ✘ | L'abilitazione/disabilitazione delle citazioni modifica il prompt di sistema |
| Impostazione della velocità | ✓ | ✘ | ✘ | Il passaggio tra speed: "fast" e velocità standard invalida le cache di sistema e messaggi |
| Scelta dello strumento | ✓ | ✓ | ✘ | Le modifiche al parametro tool_choice influiscono solo sui blocchi di messaggi |
| Immagini | ✓ | ✓ | ✘ | L'aggiunta/rimozione di immagini in qualsiasi punto del prompt influisce sui blocchi di messaggi |
| Parametri di pensiero | ✓ | ✓ | ✘ | Le modifiche alle impostazioni di pensiero esteso (abilitazione/disabilitazione, budget) influiscono sui blocchi di messaggi |
| Risultati non di strumenti passati alle richieste di pensiero esteso | ✓ | ✓ | ✘ | Quando i risultati non di strumenti vengono passati nelle richieste mentre il pensiero esteso è abilitato, tutti i blocchi di pensiero precedentemente memorizzati nella cache vengono rimossi dal contesto e tutti i messaggi nel contesto che seguono quei blocchi di pensiero vengono rimossi dalla cache. Per ulteriori dettagli, vedi Caching con blocchi di pensiero. |
Monitora le prestazioni della cache utilizzando questi campi di risposta dell'API, all'interno di usage nella risposta (o evento message_start se streaming):
cache_creation_input_tokens: Numero di token scritti nella cache durante la creazione di una nuova voce.cache_read_input_tokens: Numero di token recuperati dalla cache per questa richiesta.input_tokens: Numero di token di input che non sono stati letti da o utilizzati per creare una cache (cioè, token dopo l'ultimo punto di interruzione della cache).Comprendere la suddivisione dei token
Il campo input_tokens rappresenta solo i token che vengono dopo l'ultimo punto di interruzione della cache nella tua richiesta - non tutti i token di input che hai inviato.
Per calcolare il totale dei token di input:
total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokensSpiegazione spaziale:
cache_read_input_tokens = token prima del punto di interruzione già memorizzati nella cache (letture)cache_creation_input_tokens = token prima del punto di interruzione memorizzati nella cache ora (scritture)input_tokens = token dopo il tuo ultimo punto di interruzione (non idonei per la cache)Esempio: Se hai una richiesta con 100.000 token di contenuto memorizzato nella cache (letto dalla cache), 0 token di nuovo contenuto memorizzato nella cache e 50 token nel tuo messaggio utente (dopo il punto di interruzione della cache):
cache_read_input_tokens: 100.000cache_creation_input_tokens: 0input_tokens: 50Questo è importante per comprendere sia i costi che i limiti di velocità, poiché input_tokens sarà tipicamente molto più piccolo del tuo input totale quando utilizzi il caching in modo efficace.
Per ottimizzare le prestazioni del caching dei prompt:
Personalizza la tua strategia di caching dei prompt al tuo scenario:
Se riscontri comportamenti inaspettati:
tool_choice e l'utilizzo delle immagini rimangono coerenti tra le chiamatecache_control aggiuntivi più all'inizio del prompt per assicurare che tutto il contenuto possa essere memorizzato nella cachetool_use abbiano un ordine stabile poiché alcuni linguaggi (ad esempio, Swift, Go) randomizzano l'ordine delle chiavi durante la conversione JSON, interrompendo le cacheLe modifiche a tool_choice o la presenza/assenza di immagini in qualsiasi punto del prompt invalideranno la cache, richiedendo la creazione di una nuova voce della cache. Per ulteriori dettagli sull'invalidazione della cache, vedi Cosa invalida la cache.
Quando si utilizza il pensiero esteso con il caching dei prompt, i blocchi di pensiero hanno un comportamento speciale:
Caching automatico insieme ad altro contenuto: Mentre i blocchi di pensiero non possono essere esplicitamente contrassegnati con cache_control, vengono memorizzati nella cache come parte del contenuto della richiesta quando effettui le successive chiamate API con risultati di strumenti. Questo accade comunemente durante l'utilizzo di strumenti quando passi i blocchi di pensiero per continuare la conversazione.
Conteggio dei token di input: Quando i blocchi di pensiero vengono letti dalla cache, contano come token di input nelle tue metriche di utilizzo. Questo è importante per il calcolo dei costi e il budgeting dei token.
Modelli di invalidazione della cache:
cache_control esplicitiPer ulteriori dettagli sull'invalidazione della cache, vedi Cosa invalida la cache.
Esempio con utilizzo di strumenti:
Richiesta 1: Utente: "Qual è il meteo a Parigi?"
Risposta: [thinking_block_1] + [tool_use block 1]
Richiesta 2:
Utente: ["Qual è il meteo a Parigi?"],
Assistente: [thinking_block_1] + [tool_use block 1],
Utente: [tool_result_1, cache=True]
Risposta: [thinking_block_2] + [text block 2]
# La richiesta 2 memorizza nella cache il suo contenuto di richiesta (non la risposta)
# La cache include: messaggio utente, thinking_block_1, tool_use block 1 e tool_result_1
Richiesta 3:
Utente: ["Qual è il meteo a Parigi?"],
Assistente: [thinking_block_1] + [tool_use block 1],
Utente: [tool_result_1, cache=True],
Assistente: [thinking_block_2] + [text block 2],
Utente: [Text response, cache=True]
# Il blocco utente non di risultati di strumenti designa un nuovo ciclo dell'assistente e tutti i blocchi di pensiero precedenti vengono rimossi dal contesto
# Questa richiesta viene elaborata come se i blocchi di pensiero non fossero mai stati presentiQuando viene incluso un blocco utente non di risultati di strumenti, designa un nuovo ciclo dell'assistente e tutti i blocchi di pensiero precedenti vengono rimossi dal contesto.
Per informazioni più dettagliate, vedi la documentazione del pensiero esteso.
A partire dal 5 febbraio 2026, il caching dei prompt utilizzerà l'isolamento a livello di workspace invece dell'isolamento a livello di organizzazione. Le cache saranno isolate per workspace, assicurando la separazione dei dati tra i workspace all'interno della stessa organizzazione. Questo cambiamento si applica all'API Claude e ad Azure; Amazon Bedrock e Google Vertex AI manterranno l'isolamento della cache a livello di organizzazione. Se utilizzi più workspace, rivedi la tua strategia di caching per tenere conto di questo cambiamento.
Isolamento dell'organizzazione: Le cache sono isolate tra le organizzazioni. Diverse organizzazioni non condividono mai le cache, anche se utilizzano prompt identici.
Corrispondenza esatta: I hit della cache richiedono segmenti di prompt identici al 100%, inclusi tutto il testo e le immagini fino a e includendo il blocco contrassegnato con il controllo della cache.
Generazione di token di output: Il caching dei prompt non ha effetto sulla generazione di token di output. La risposta che ricevi sarà identica a quella che otterresti se il caching dei prompt non fosse utilizzato.
Se ritieni che 5 minuti sia troppo breve, Anthropic offre anche una durata della cache di 1 ora a costo aggiuntivo.
Per utilizzare la cache estesa, includi ttl nella definizione di cache_control come questo:
"cache_control": {
"type": "ephemeral",
"ttl": "5m" | "1h"
}La risposta includerà informazioni dettagliate sulla cache come la seguente:
{
"usage": {
"input_tokens": ...,
"cache_read_input_tokens": ...,
"cache_creation_input_tokens": ...,
"output_tokens": ...,
"cache_creation": {
"ephemeral_5m_input_tokens": 456,
"ephemeral_1h_input_tokens": 100,
}
}
}Nota che il campo cache_creation_input_tokens attuale è uguale alla somma dei valori nell'oggetto cache_creation.
Se hai prompt che vengono utilizzati a una cadenza regolare (cioè, prompt di sistema che vengono utilizzati più frequentemente di ogni 5 minuti), continua a utilizzare la cache di 5 minuti, poiché questa continuerà a essere aggiornata senza costi aggiuntivi.
La cache di 1 ora è meglio utilizzata nei seguenti scenari:
La cache di 5 minuti e 1 ora si comportano allo stesso modo rispetto alla latenza. Generalmente vedrai un tempo migliorato al primo token per documenti lunghi.
Puoi utilizzare sia i controlli della cache di 1 ora che di 5 minuti nella stessa richiesta, ma con un vincolo importante: Le voci della cache con TTL più lungo devono apparire prima di quelle più brevi (cioè, una voce della cache di 1 ora deve apparire prima di qualsiasi voce della cache di 5 minuti).
Quando si mescolano i TTL, determiniamo tre posizioni di fatturazione nel tuo prompt:
A: Il conteggio dei token al hit della cache più alto (o 0 se nessun hit).B: Il conteggio dei token al blocco cache_control di 1 ora più alto dopo A (o uguale a A se nessuno esiste).C: Il conteggio dei token all'ultimo blocco cache_control.Se B e/o C sono più grandi di A, saranno necessariamente cache miss, perché A è il hit della cache più alto.
Ti verrà addebitato per:
A.(B - A).(C - B).Ecco 3 esempi. Questo raffigura i token di input di 3 richieste, ognuna delle quali ha diversi hit della cache e cache miss. Ognuno ha un prezzo calcolato diverso, mostrato nelle caselle colorate, come risultato.
Per aiutarti a iniziare con il prompt caching, abbiamo preparato un cookbook sul prompt caching con esempi dettagliati e best practice.
Di seguito, abbiamo incluso diversi frammenti di codice che mostrano vari modelli di prompt caching. Questi esempi dimostrano come implementare il caching in diversi scenari, aiutandoti a comprendere le applicazioni pratiche di questa funzione:
Was this page helpful?