La cache delle prompt è una funzionalità potente che ottimizza l’utilizzo delle API permettendo di riprendere da prefissi specifici nelle tue prompt. Questo approccio riduce significativamente il tempo di elaborazione e i costi per attività ripetitive o prompt con elementi costanti.

Ecco un esempio di come implementare la cache delle prompt con l’API Messages utilizzando un blocco cache_control:

In questo esempio, l’intero testo di “Orgoglio e Pregiudizio” viene memorizzato nella cache utilizzando il parametro cache_control. Questo permette il riutilizzo di questo testo lungo attraverso multiple chiamate API senza doverlo rielaborare ogni volta. Modificando solo il messaggio dell’utente è possibile porre varie domande sul libro utilizzando il contenuto in cache, portando a risposte più veloci e una migliore efficienza.

La cache delle prompt è in beta

Siamo entusiasti di annunciare che la cache delle prompt è ora in beta pubblica! Per accedere a questa funzionalità, dovrai includere l’header anthropic-beta: prompt-caching-2024-07-31 nelle tue richieste API.

Continueremo a iterare su questa beta aperta nelle prossime settimane, quindi apprezziamo il tuo feedback. Condividi le tue idee e suggerimenti usando questo modulo.


Come funziona la cache delle prompt

Quando invii una richiesta con la cache delle prompt abilitata:

  1. Il sistema verifica se il prefisso della prompt è già memorizzato nella cache da una query recente.
  2. Se trovato, utilizza la versione in cache, riducendo il tempo di elaborazione e i costi.
  3. Altrimenti, elabora l’intera prompt e memorizza il prefisso per un uso futuro.

Questo è particolarmente utile per:

  • Prompt con molti esempi
  • Grandi quantità di contesto o informazioni di background
  • Attività ripetitive con istruzioni costanti
  • Conversazioni lunghe a più turni

La cache ha una durata di 5 minuti, rinnovata ogni volta che il contenuto in cache viene utilizzato.

La cache delle prompt memorizza l’intero prefisso

La cache delle prompt fa riferimento all’intera prompt - tools, system e messages (in quest’ordine) fino a includere il blocco designato con cache_control.


Prezzi

La cache delle prompt introduce una nuova struttura di prezzi. La tabella seguente mostra il prezzo per token per ogni modello supportato:

ModelloToken di Input BaseScritture CacheHit CacheToken di Output
Claude 3.5 Sonnet$3 / MTok$3.75 / MTok$0.30 / MTok$15 / MTok
Claude 3.5 Haiku$1 / MTok$1.25 / MTok$0.10 / MTok$5 / MTok
Claude 3 Haiku$0.25 / MTok$0.30 / MTok$0.03 / MTok$1.25 / MTok
Claude 3 Opus$15 / MTok$18.75 / MTok$1.50 / MTok$75 / MTok

Nota:

  • I token di scrittura cache costano il 25% in più rispetto ai token di input base
  • I token di lettura cache costano il 90% in meno rispetto ai token di input base
  • I token di input e output regolari sono prezzati alle tariffe standard

Come implementare la cache delle prompt

Modelli supportati

La cache delle prompt è attualmente supportata su:

  • Claude 3.5 Sonnet
  • Claude 3.5 Haiku
  • Claude 3 Haiku
  • Claude 3 Opus

Strutturare la tua prompt

Posiziona il contenuto statico (definizioni degli strumenti, istruzioni di sistema, contesto, esempi) all’inizio della tua prompt. Segna la fine del contenuto riutilizzabile per la cache usando il parametro cache_control.

I prefissi della cache vengono creati nel seguente ordine: tools, system, poi messages.

Usando il parametro cache_control, puoi definire fino a 4 punti di interruzione della cache, permettendo di memorizzare separatamente diverse sezioni riutilizzabili.

Limitazioni della Cache

La lunghezza minima della prompt memorizzabile è:

  • 1024 token per Claude 3.5 Sonnet e Claude 3 Opus
  • 2048 token per Claude 3.5 Haiku e Claude 3 Haiku

Prompt più brevi non possono essere memorizzate nella cache, anche se contrassegnate con cache_control. Qualsiasi richiesta di memorizzare meno di questo numero di token verrà elaborata senza caching. Per vedere se una prompt è stata memorizzata nella cache, consulta i campi di utilizzo della risposta.

La cache ha un tempo di vita (TTL) di 5 minuti. Attualmente, “ephemeral” è l’unico tipo di cache supportato, che corrisponde a questa durata di 5 minuti.

Cosa può essere memorizzato nella cache

Ogni blocco nella richiesta può essere designato per la memorizzazione nella cache con cache_control. Questo include:

  • Tools: Definizioni degli strumenti nell’array tools
  • Messaggi di sistema: Blocchi di contenuto nell’array system
  • Messaggi: Blocchi di contenuto nell’array messages.content, sia per i turni dell’utente che dell’assistente
  • Immagini: Blocchi di contenuto nell’array messages.content, nei turni dell’utente
  • Uso degli strumenti e risultati degli strumenti: Blocchi di contenuto nell’array messages.content, sia nei turni dell’utente che dell’assistente

Ognuno di questi elementi può essere contrassegnato con cache_control per abilitare la memorizzazione nella cache per quella porzione della richiesta.

Monitorare le prestazioni della cache

Monitora le prestazioni della cache usando questi campi di risposta API, all’interno di usage nella risposta (o evento message_start se in 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 dalla cache o utilizzati per creare una cache.

Migliori pratiche per una cache efficace

Per ottimizzare le prestazioni della cache delle prompt:

  • Memorizza nella cache contenuti stabili e riutilizzabili come istruzioni di sistema, informazioni di background, contesti ampi o definizioni frequenti degli strumenti.
  • Posiziona il contenuto in cache all’inizio della prompt per le migliori prestazioni.
  • Usa i punti di interruzione della cache strategicamente per separare diverse sezioni di prefisso memorizzabili.
  • Analizza regolarmente i tassi di hit della cache e adatta la tua strategia secondo necessità.

Ottimizzazione per diversi casi d’uso

Adatta la tua strategia di cache delle prompt al tuo scenario:

  • Agenti conversazionali: Riduci costi e latenza per conversazioni estese, specialmente quelle con lunghe istruzioni o documenti caricati.
  • Assistenti di codifica: Migliora l’autocompletamento e le domande sulla base di codice mantenendo sezioni rilevanti o una versione riassunta della base di codice nella prompt.
  • Elaborazione di documenti lunghi: Incorpora materiale completo di forma lunga incluse immagini nella tua prompt senza aumentare la latenza di risposta.
  • Set di istruzioni dettagliati: Condividi liste estese di istruzioni, procedure ed esempi per ottimizzare le risposte di Claude. Gli sviluppatori spesso includono uno o due esempi nella prompt, ma con la cache delle prompt puoi ottenere prestazioni ancora migliori includendo 20+ esempi diversi di risposte di alta qualità.
  • Uso di strumenti agentici: Migliora le prestazioni per scenari che coinvolgono multiple chiamate agli strumenti e modifiche iterative del codice, dove ogni passo tipicamente richiede una nuova chiamata API.
  • Parla con libri, articoli, documentazione, trascrizioni di podcast e altri contenuti di forma lunga: Porta in vita qualsiasi base di conoscenza incorporando l’intero documento/i nella prompt e permettendo agli utenti di fargli domande.

Risoluzione dei problemi comuni

Se si verificano comportamenti inaspettati:

  • Assicurati che le sezioni in cache siano identiche e contrassegnate con cache_control nelle stesse posizioni tra le chiamate
  • Verifica che le chiamate siano effettuate entro la durata della cache di 5 minuti
  • Verifica che tool_choice e l’uso delle immagini rimangano coerenti tra le chiamate
  • Valida che stai memorizzando nella cache almeno il numero minimo di token

Nota che le modifiche a tool_choice o la presenza/assenza di immagini in qualsiasi punto della prompt invalideranno la cache, richiedendo la creazione di una nuova voce nella cache.


Archiviazione e Condivisione della Cache

  • Isolamento dell’Organizzazione: Le cache sono isolate tra le organizzazioni. Organizzazioni diverse non condividono mai le cache, anche se utilizzano prompt identiche.

  • Corrispondenza Esatta: Gli hit della cache richiedono segmenti di prompt identici al 100%, inclusi tutti i testi e le immagini fino a includere il blocco contrassegnato con cache control. Lo stesso blocco deve essere contrassegnato con cache_control durante le letture e la creazione della cache.

  • Generazione di Token di Output: La cache delle prompt non ha effetto sulla generazione di token di output. La risposta che ricevi sarà identica a quella che otterresti se la cache delle prompt non fosse utilizzata.


Esempi di cache delle prompt

Per aiutarti a iniziare con la cache delle prompt, abbiamo preparato un ricettario della cache delle prompt con esempi dettagliati e migliori pratiche.

Di seguito, abbiamo incluso diversi frammenti di codice che mostrano vari pattern di cache delle prompt. Questi esempi dimostrano come implementare la cache in diversi scenari, aiutandoti a comprendere le applicazioni pratiche di questa funzionalità:


FAQ