cache_control
:
cache_control
. Questo consente il riutilizzo di questo testo di grandi dimensioni attraverso più chiamate API senza riprocessarlo ogni volta. Cambiando solo il messaggio dell’utente ti permette di fare varie domande sul libro utilizzando il contenuto memorizzato nella cache, portando a risposte più veloci e maggiore efficienza.
tools
, system
e messages
(in quest’ordine) fino al blocco designato con cache_control
incluso.Model | Base Input Tokens | 5m Cache Writes | 1h Cache Writes | Cache Hits & Refreshes | Output Tokens |
---|---|---|---|---|---|
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 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.7 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
Claude Sonnet 3.5 (deprecated) | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / 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 |
cache_control
.
I prefissi della cache vengono creati nel seguente ordine: tools
, system
, poi messages
. Questo ordine forma una gerarchia dove ogni livello si basa sui precedenti.
cache_control
, il sistema controlla automaticamente i riscontri della cache a tutti i confini dei blocchi di contenuto precedenti (fino a circa 20 blocchi prima del tuo punto di interruzione esplicito)cache_control
. Qualsiasi richiesta di memorizzare nella cache meno di questo numero di token verrà elaborata senza memorizzazione nella cache. Per vedere se un prompt è stato memorizzato nella cache, vedi i campi di utilizzo della risposta.
Per le richieste concorrenti, nota che una voce della cache diventa disponibile solo dopo che inizia la prima risposta. Se hai bisogno di riscontri della cache per richieste parallele, aspetta 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.
cache_control
non aumenta i tuoi costi - paghi ancora la stessa quantità basata su quale contenuto viene effettivamente memorizzato nella cache e letto. I punti di interruzione ti danno semplicemente il controllo su quali sezioni possono essere memorizzate nella cache indipendentemente.
cache_control
. Questo include:
tools
system
messages.content
, per turni sia dell’utente che dell’assistentemessages.content
, nei turni dell’utentemessages.content
, in turni sia dell’utente che dell’assistentecache_control
per abilitare la memorizzazione nella cache per quella porzione della richiesta.
cache_control
. Tuttavia, i blocchi di pensiero POSSONO essere memorizzati nella cache insieme ad altro contenuto quando appaiono nei turni precedenti dell’assistente. Quando memorizzati nella cache in questo modo, CONTANO come token di input quando letti dalla cache.
tools
→ system
→ messages
. I cambiamenti a ogni livello invalidano quel livello e tutti i livelli successivi.
La seguente tabella mostra quali parti della cache vengono invalidate da diversi tipi di cambiamenti. ✘ indica che la cache viene invalidata, mentre ✓ indica che la cache rimane valida.
Cosa cambia | Cache degli strumenti | Cache del sistema | Cache dei messaggi | Impatto |
---|---|---|---|---|
Definizioni degli strumenti | ✘ | ✘ | ✘ | Modificare le definizioni degli strumenti (nomi, descrizioni, parametri) invalida l’intera cache |
Attivazione/disattivazione ricerca web | ✓ | ✘ | ✘ | Abilitare/disabilitare la ricerca web modifica il prompt di sistema |
Attivazione/disattivazione citazioni | ✓ | ✘ | ✘ | Abilitare/disabilitare le citazioni modifica il prompt di sistema |
Scelta dello strumento | ✓ | ✓ | ✘ | I cambiamenti al parametro tool_choice influenzano solo i blocchi dei messaggi |
Immagini | ✓ | ✓ | ✘ | Aggiungere/rimuovere immagini ovunque nel prompt influenza i blocchi dei messaggi |
Parametri di pensiero | ✓ | ✓ | ✘ | I cambiamenti alle impostazioni di pensiero esteso (abilita/disabilita, budget) influenzano i blocchi dei messaggi |
Risultati non-strumento passati alle richieste di pensiero esteso | ✓ | ✓ | ✘ | Quando risultati non-strumento vengono passati nelle richieste mentre il pensiero esteso è abilitato, tutti i blocchi di pensiero precedentemente memorizzati nella cache vengono rimossi dal contesto, e qualsiasi messaggio nel contesto che segue quei blocchi di pensiero viene rimosso dalla cache. Per maggiori dettagli, vedi Memorizzazione nella cache con blocchi di pensiero. |
usage
nella risposta (o evento message_start
se streaming):
cache_creation_input_tokens
: Numero di token scritti nella cache quando si crea 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 dalla cache o utilizzati per creare una cache.tool_choice
e l’uso delle immagini rimangano coerenti tra le chiamatecache_control
aggiuntivi prima nel prompt per garantire che tutto il contenuto possa essere memorizzato nella cachetool_choice
o la presenza/assenza di immagini ovunque nel prompt invalideranno la cache, richiedendo la creazione di una nuova voce della cache. Per maggiori dettagli sull’invalidazione della cache, vedi Cosa invalida la cache.cache_control
, vengono memorizzati nella cache come parte del contenuto della richiesta quando fai chiamate API successive con risultati degli strumenti. Questo accade comunemente durante l’uso degli strumenti quando passi i blocchi di pensiero indietro 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 budget dei token.
Modelli di invalidazione della cache:
cache_control
esplicitittl
nella definizione cache_control
così:
cache_creation_input_tokens
è uguale alla somma dei valori nell’oggetto cache_creation
.
A
: Il conteggio dei token al riscontro della cache più alto (o 0 se non ci sono riscontri).B
: Il conteggio dei token al blocco cache_control
di 1 ora più alto dopo A
(o uguale ad A
se non ne esistono).C
: Il conteggio dei token all’ultimo blocco cache_control
.B
e/o C
sono maggiori di A
, saranno necessariamente mancati riscontri della cache, perché A
è il riscontro della cache più alto.A
.(B - A)
.(C - B)
.Esempio di memorizzazione nella cache di contesto di grandi dimensioni
input_tokens
: Numero di token solo nel messaggio dell’utentecache_creation_input_tokens
: Numero di token nell’intero messaggio di sistema, incluso il documento legalecache_read_input_tokens
: 0 (nessun riscontro della cache alla prima richiesta)input_tokens
: Numero di token solo nel messaggio dell’utentecache_creation_input_tokens
: 0 (nessuna nuova creazione di cache)cache_read_input_tokens
: Numero di token nell’intero messaggio di sistema memorizzato nella cacheMemorizzazione nella cache delle definizioni degli strumenti
cache_control
è posizionato sull’ultimo strumento (get_time
) per designare tutti gli strumenti come parte del prefisso statico.Questo significa che tutte le definizioni degli strumenti, inclusi get_weather
e qualsiasi altro strumento definito prima di get_time
, verranno memorizzate nella cache come un singolo prefisso.Questo approccio è utile quando hai un set coerente di strumenti che vuoi riutilizzare attraverso più richieste senza riprocessarli ogni volta.Per la prima richiesta:input_tokens
: Numero di token nel messaggio dell’utentecache_creation_input_tokens
: Numero di token in tutte le definizioni degli strumenti e prompt di sistemacache_read_input_tokens
: 0 (nessun riscontro della cache alla prima richiesta)input_tokens
: Numero di token nel messaggio dell’utentecache_creation_input_tokens
: 0 (nessuna nuova creazione di cache)cache_read_input_tokens
: Numero di token in tutte le definizioni degli strumenti memorizzate nella cache e prompt di sistemaContinuare una conversazione multi-turno
cache_control
così la conversazione può essere memorizzata nella cache incrementalmente. Il sistema cercherà automaticamente e utilizzerà il prefisso precedentemente memorizzato nella cache più lungo per i messaggi di follow-up. Cioè, i blocchi che erano precedentemente contrassegnati con un blocco cache_control
successivamente non sono contrassegnati con questo, ma saranno comunque considerati un riscontro della cache (e anche un aggiornamento della cache!) se vengono colpiti entro 5 minuti.Inoltre, nota che il parametro cache_control
è posizionato sul messaggio di sistema. Questo è per garantire che se questo viene rimosso dalla cache (dopo non essere stato utilizzato per più di 5 minuti), verrà aggiunto nuovamente alla cache alla richiesta successiva.Questo approccio è utile per mantenere il contesto nelle conversazioni in corso senza elaborare ripetutamente le stesse informazioni.Quando questo è impostato correttamente, dovresti vedere quanto segue nella risposta di utilizzo di ogni richiesta:input_tokens
: Numero di token nel nuovo messaggio dell’utente (sarà minimo)cache_creation_input_tokens
: Numero di token nei nuovi turni dell’assistente e dell’utentecache_read_input_tokens
: Numero di token nella conversazione fino al turno precedenteMettere tutto insieme: Più punti di interruzione della cache
cache_control
sull’ultima definizione dello strumento memorizza nella cache tutte le definizioni degli strumenti.
cache_control
per abilitare la memorizzazione nella cache incrementale della conversazione mentre progredisce.
input_tokens
: Token nel messaggio finale dell’utentecache_creation_input_tokens
: Token in tutti i segmenti memorizzati nella cache (strumenti + istruzioni + documenti RAG + cronologia della conversazione)cache_read_input_tokens
: 0 (nessun riscontro della cache)input_tokens
: Token solo nel nuovo messaggio dell’utentecache_creation_input_tokens
: Qualsiasi nuovo token aggiunto alla cronologia della conversazionecache_read_input_tokens
: Tutti i token precedentemente memorizzati nella cache (strumenti + istruzioni + documenti RAG + conversazione precedente)Ho bisogno di più punti di interruzione della cache o uno alla fine è sufficiente?
I punti di interruzione della cache aggiungono costi extra?
Qual è la durata della cache?
Quanti punti di interruzione della cache posso utilizzare?
cache_control
) nel tuo prompt.Il cache dei prompt è disponibile per tutti i modelli?
Come funziona il cache dei prompt con il pensiero esteso?
Come abilito il cache dei prompt?
cache_control
nella tua richiesta API.Posso utilizzare il cache dei prompt con altre funzionalità dell'API?
Come influisce il cache dei prompt sui prezzi?
Posso cancellare manualmente la cache?
Come posso monitorare l'efficacia della mia strategia di memorizzazione nella cache?
cache_creation_input_tokens
e cache_read_input_tokens
nella risposta dell’API.Cosa può rompere la cache?
Come gestisce il cache dei prompt la privacy e la separazione dei dati?
cache_control
ovunque nei tuoi prompt. Per l’efficienza dei costi, è meglio escludere parti altamente variabili (ad esempio, input arbitrario dell’utente) dalla memorizzazione nella cache.
Posso utilizzare il cache dei prompt con l'API Batches?
Perché vedo l'errore `AttributeError: 'Beta' object has no attribute 'prompt_caching'` in Python?
Perché vedo 'TypeError: Cannot read properties of undefined (reading 'messages')'?