Il caching dei prompt è una funzionalità potente che ottimizza l’utilizzo delle API consentendo di riprendere da prefissi specifici nei tuoi 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 il caching dei 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.


Come funziona il caching dei prompt

Quando invii una richiesta con il caching dei prompt abilitato:

  1. Il sistema verifica se un prefisso del prompt, fino a un punto di interruzione della cache specificato, è già memorizzato da una query recente.
  2. Se trovato, utilizza la versione in cache, riducendo il tempo di elaborazione e i costi.
  3. Altrimenti, elabora l’intero prompt e memorizza nella cache 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
  • Lunghe conversazioni a più turni

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

Il caching dei prompt memorizza l’intero prefisso

Il caching dei prompt fa riferimento all’intero prompt - tools, system e messages (in quest’ordine) fino a includere il blocco designato con cache_control.


Prezzi

Il caching dei 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 il caching dei prompt

Modelli supportati

Il caching dei prompt è attualmente supportato su:

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

Strutturare il tuo prompt

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

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

Utilizzando 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 del 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 memorizzati nella cache, anche se contrassegnati con cache_control. Qualsiasi richiesta di memorizzare meno di questo numero di token verrà elaborata senza caching. Per vedere se un prompt è stato memorizzato 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 il caching 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

Ciascuno di questi elementi può essere contrassegnato con cache_control per abilitare il caching per quella porzione della richiesta.

Monitorare le prestazioni della cache

Monitora le prestazioni della cache utilizzando 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 un caching efficace

Per ottimizzare le prestazioni del caching dei 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 del 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 caching dei 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 nel prompt.
  • Elaborazione di documenti lunghi: Incorpora materiale completo di forma lunga incluse immagini nel tuo prompt senza aumentare la latenza di risposta.
  • Set di istruzioni dettagliati: Condividi ampie liste di istruzioni, procedure ed esempi per ottimizzare le risposte di Claude. Gli sviluppatori spesso includono uno o due esempi nel prompt, ma con il caching dei 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 nel 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 del 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 cache, anche se utilizzano prompt identici.

  • 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: 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.


Esempi di caching dei prompt

Per aiutarti a iniziare con il caching dei prompt, abbiamo preparato un ricettario sul caching dei prompt con esempi dettagliati e migliori pratiche.

Di seguito, abbiamo incluso diversi frammenti di codice che mostrano vari modelli di caching dei prompt. Questi esempi dimostrano come implementare il caching in diversi scenari, aiutandoti a comprendere le applicazioni pratiche di questa funzionalità:


FAQ