cache_control à un préfixe stable, la première requête crée un cache et les requêtes suivantes peuvent lire ce cache tant qu’il n’a pas expiré.
Avant de commencer, définissez votre clé API :
Les exemples de ce guide utilisent
claude-sonnet-5. Consultez la description des modèles sur la plateforme pour savoir si d’autres modèles prennent en charge le cache de contexte.Cas d’utilisation
Lorsque plusieurs requêtes contiennent de façon répétée le même contenu volumineux, vous pouvez mettre en cache un préfixe stable. Par exemple :- Un long prompt système
- Une base de connaissances ou une documentation produit fixe
- Un historique de conversation à plusieurs tours qui reste inchangé
- Des bases de code, des définitions de tools et des instructions réutilisées
API Claude Messages
Cache de 5 minutes
Ajoutezcache_control au bloc de contenu à mettre en cache :
ttl est omis, la durée de validité du cache est de 5 minutes par défaut.
Cache de 1 heure
Pour utiliser un cache de 1 heure, ajoutez également l’en-tête de requêteanthropic-beta et définissez ttl sur 1h :
Champs d’utilisation dans la réponse
L’API Claude Messages renvoie séparément les tokens d’entrée ordinaires, d’écriture dans le cache et de lecture du cache dansusage :
cache_creation_input_tokens > 0 ; lorsque vous renvoyez le même préfixe stable, cache_read_input_tokens > 0 doit apparaître.
API compatible OpenAI
Exemple de requête
Lorsque vous utilisez le cache avec/v1/chat/completions, la syntaxe de cache_control est similaire à celle de l’API Claude Messages :
Cache de 1 heure
Le format compatible OpenAI prend également en charge le cache de 1 heure. Il suffit d’ajouter l’en-tête de requêteanthropic-beta et de définir ttl: "1h" dans cache_control :
content doit être un tableau
Dans le format compatible OpenAI, cache_control doit se trouver dans un bloc de contenu précis. Il ne peut pas être attaché à un message dont le contenu est une chaîne.
Mise en cache des blocs de contenu user ou assistant
Vous pouvez également placer cache_control dans le bloc de contenu d’un message user ou assistant afin de mettre en cache un long document ou un préfixe de conversation à plusieurs tours :
cache_control uniquement au bloc de contenu stable.
Champs d’utilisation dans la réponse
Le format compatible OpenAI utilise des champs différents pour indiquer l’utilisation du cache :Si
prompt_tokens_details.cache_write_tokens vaut 0, vérifiez tout de même claude_cache_creation_5_m_tokens et claude_cache_creation_1_h_tokens. Lorsque les champs détaillés par TTL sont présents, le volume écrit dans le cache est renvoyé dans le champ correspondant.Dans
claude_cache_creation_5_m_tokens et claude_cache_creation_1_h_tokens, des traits de soulignement séparent le chiffre de l’unité. Utilisez exactement les noms de champs renvoyés dans la réponse.Conditions requises pour lire le cache
Le préfixe atteint la longueur minimale
Pour le modèle utilisé dans les exemples, le préfixe mis en cache doit généralement contenir au moins environ 1024 tokens. Si le préfixe est trop court, le marqueur de cache peut être ignoré sans qu’aucune erreur ne soit renvoyée.Le préfixe reste identique octet par octet
Le texte, les espaces, les sauts de ligne et l’ordre des blocs de contenu du préfixe mis en cache doivent rester identiques. N’ajoutez pas de contenu dynamique, comme un horodatage, un ID aléatoire ou un compteur de requêtes, au préfixe stable.La requête n’a pas déclenché un refus du modèle
Si la requête déclenche un refus du modèle, la réponse peut tout de même indiquer des tokens de création du cache, mais ce cache ne sera pas lu lors de la requête suivante. Lors du diagnostic d’un échec de lecture du cache, vérifiez également sistop_reason vaut refusal.
Le cache n’a pas expiré
La durée de validité du cache est de 5 minutes ou 1 heure et est calculée à partir du dernier accès. Une lecture du cache renouvelle sa durée de validité.Utilisation facturée
L’utilisation liée au cache se répartit en trois catégories :
Ces trois catégories ne se chevauchent pas. L’écriture dans le cache coûte généralement plus cher qu’une entrée ordinaire, tandis que la lecture du cache coûte généralement moins cher. Le cache de contexte convient donc davantage aux préfixes stables réutilisés pendant la durée TTL.
Exemple reproductible minimal
Le script suivant génère d’abord un préfixe stable suffisamment long, puis envoie deux fois la même requête. La seconde réponse doit contenircache_read_input_tokens > 0.
Liste de vérification pour le dépannage
Si le cache n’est pas lu, vérifiez les points suivants dans l’ordre :stop_reasonvaut-ilrefusal?- Le préfixe mis en cache atteint-il le nombre minimal de tokens requis par le modèle ?
- Les préfixes stables des deux requêtes sont-ils identiques octet par octet ?
- Dans le format compatible OpenAI,
contentest-il un tableau ? cache_controlse trouve-t-il dans un bloc de contenu précis ?- Pour le cache de 1 heure,
ttl: "1h"et l’en-têteanthropic-betacorrespondant sont-ils tous les deux définis ? - Le cache a-t-il dépassé sa durée TTL ?
- Lisez-vous les champs d’utilisation du cache correspondant à l’API utilisée ?