La mise en cache des prompts est une fonctionnalité puissante qui optimise votre utilisation de l’API en permettant de reprendre à partir de préfixes spécifiques dans vos prompts. Cette approche réduit considérablement le temps de traitement et les coûts pour les tâches répétitives ou les prompts avec des éléments constants.

Voici un exemple de mise en œuvre de la mise en cache des prompts avec l’API Messages en utilisant un bloc cache_control :

Dans cet exemple, le texte intégral d‘“Orgueil et Préjugés” est mis en cache en utilisant le paramètre cache_control. Cela permet la réutilisation de ce long texte à travers plusieurs appels API sans le retraiter à chaque fois. En ne modifiant que le message utilisateur, vous pouvez poser diverses questions sur le livre tout en utilisant le contenu mis en cache, ce qui conduit à des réponses plus rapides et une meilleure efficacité.

La mise en cache des prompts est en bêta

Nous sommes ravis d’annoncer que la mise en cache des prompts est maintenant en bêta publique ! Pour accéder à cette fonctionnalité, vous devrez inclure l’en-tête anthropic-beta: prompt-caching-2024-07-31 dans vos requêtes API.

Nous continuerons à itérer sur cette bêta ouverte dans les semaines à venir, nous apprécions donc vos retours. Veuillez partager vos idées et suggestions en utilisant ce formulaire.


Comment fonctionne la mise en cache des prompts

Lorsque vous envoyez une requête avec la mise en cache des prompts activée :

  1. Le système vérifie si le préfixe du prompt est déjà mis en cache d’une requête récente.
  2. Si trouvé, il utilise la version mise en cache, réduisant le temps de traitement et les coûts.
  3. Sinon, il traite le prompt complet et met en cache le préfixe pour une utilisation future.

C’est particulièrement utile pour :

  • Les prompts avec de nombreux exemples
  • De grandes quantités de contexte ou d’informations de fond
  • Les tâches répétitives avec des instructions constantes
  • Les longues conversations à plusieurs tours

Le cache a une durée de vie de 5 minutes, renouvelée à chaque utilisation du contenu mis en cache.

La mise en cache des prompts met en cache le préfixe complet

La mise en cache des prompts référence l’intégralité du prompt - tools, system, et messages (dans cet ordre) jusqu’au bloc désigné avec cache_control inclus.


Tarification

La mise en cache des prompts introduit une nouvelle structure tarifaire. Le tableau ci-dessous montre le prix par token pour chaque modèle pris en charge :

ModèleTokens d’entrée de baseÉcritures en cacheAccès au cacheTokens de sortie
Claude 3.5 Sonnet3 $ / MTok3,75 $ / MTok0,30 $ / MTok15 $ / MTok
Claude 3.5 Haiku1 $ / MTok1,25 $ / MTok0,10 $ / MTok5 $ / MTok
Claude 3 Haiku0,25 $ / MTok0,30 $ / MTok0,03 $ / MTok1,25 $ / MTok
Claude 3 Opus15 $ / MTok18,75 $ / MTok1,50 $ / MTok75 $ / MTok

Note :

  • Les tokens d’écriture en cache sont 25 % plus chers que les tokens d’entrée de base
  • Les tokens de lecture en cache sont 90 % moins chers que les tokens d’entrée de base
  • Les tokens d’entrée et de sortie réguliers sont facturés aux tarifs standard

Comment mettre en œuvre la mise en cache des prompts

Modèles pris en charge

La mise en cache des prompts est actuellement prise en charge sur :

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

Structuration de votre prompt

Placez le contenu statique (définitions d’outils, instructions système, contexte, exemples) au début de votre prompt. Marquez la fin du contenu réutilisable pour la mise en cache en utilisant le paramètre cache_control.

Les préfixes de cache sont créés dans l’ordre suivant : tools, system, puis messages.

En utilisant le paramètre cache_control, vous pouvez définir jusqu’à 4 points de rupture de cache, permettant de mettre en cache différentes sections réutilisables séparément.

Limitations du cache

La longueur minimale de prompt pouvant être mise en cache est :

  • 1024 tokens pour Claude 3.5 Sonnet et Claude 3 Opus
  • 2048 tokens pour Claude 3.5 Haiku et Claude 3 Haiku

Les prompts plus courts ne peuvent pas être mis en cache, même s’ils sont marqués avec cache_control. Toute demande de mise en cache de moins de ce nombre de tokens sera traitée sans mise en cache. Pour voir si un prompt a été mis en cache, consultez les champs d’utilisation de la réponse.

Le cache a une durée de vie (TTL) de 5 minutes. Actuellement, “ephemeral” est le seul type de cache pris en charge, qui correspond à cette durée de vie de 5 minutes.

Ce qui peut être mis en cache

Chaque bloc dans la requête peut être désigné pour la mise en cache avec cache_control. Cela inclut :

  • Outils : Définitions d’outils dans le tableau tools
  • Messages système : Blocs de contenu dans le tableau system
  • Messages : Blocs de contenu dans le tableau messages.content, pour les tours utilisateur et assistant
  • Images : Blocs de contenu dans le tableau messages.content, dans les tours utilisateur
  • Utilisation d’outils et résultats d’outils : Blocs de contenu dans le tableau messages.content, dans les tours utilisateur et assistant

Chacun de ces éléments peut être marqué avec cache_control pour activer la mise en cache pour cette partie de la requête.

Suivi des performances du cache

Surveillez les performances du cache en utilisant ces champs de réponse API, dans usage dans la réponse (ou l’événement message_start si streaming) :

  • cache_creation_input_tokens : Nombre de tokens écrits dans le cache lors de la création d’une nouvelle entrée.
  • cache_read_input_tokens : Nombre de tokens récupérés du cache pour cette requête.
  • input_tokens : Nombre de tokens d’entrée qui n’ont pas été lus ou utilisés pour créer un cache.

Meilleures pratiques pour une mise en cache efficace

Pour optimiser les performances de la mise en cache des prompts :

  • Mettez en cache le contenu stable et réutilisable comme les instructions système, les informations de fond, les grands contextes ou les définitions d’outils fréquentes.
  • Placez le contenu mis en cache au début du prompt pour de meilleures performances.
  • Utilisez les points de rupture de cache de manière stratégique pour séparer différentes sections de préfixe pouvant être mises en cache.
  • Analysez régulièrement les taux de succès du cache et ajustez votre stratégie selon les besoins.

Optimisation pour différents cas d’utilisation

Adaptez votre stratégie de mise en cache des prompts à votre scénario :

  • Agents conversationnels : Réduisez le coût et la latence pour les conversations étendues, en particulier celles avec de longues instructions ou des documents téléchargés.
  • Assistants de codage : Améliorez l’autocomplétion et les Q&R sur le code en gardant les sections pertinentes ou une version résumée de la base de code dans le prompt.
  • Traitement de documents volumineux : Incorporez du matériel complet de longue durée, y compris des images dans votre prompt sans augmenter la latence de réponse.
  • Ensembles d’instructions détaillées : Partagez des listes complètes d’instructions, de procédures et d’exemples pour affiner les réponses de Claude. Les développeurs incluent souvent un exemple ou deux dans le prompt, mais avec la mise en cache des prompts, vous pouvez obtenir de meilleures performances en incluant plus de 20 exemples diversifiés de réponses de haute qualité.
  • Utilisation d’outils agentiques : Améliorez les performances pour les scénarios impliquant plusieurs appels d’outils et des changements de code itératifs, où chaque étape nécessite généralement un nouvel appel API.
  • Dialoguez avec des livres, des articles, de la documentation, des transcriptions de podcasts et d’autres contenus de longue durée : Donnez vie à n’importe quelle base de connaissances en intégrant le(s) document(s) entier(s) dans le prompt et en laissant les utilisateurs lui poser des questions.

Résolution des problèmes courants

Si vous rencontrez un comportement inattendu :

  • Assurez-vous que les sections mises en cache sont identiques et marquées avec cache_control aux mêmes endroits entre les appels
  • Vérifiez que les appels sont effectués dans la durée de vie du cache de 5 minutes
  • Vérifiez que tool_choice et l’utilisation d’images restent cohérents entre les appels
  • Validez que vous mettez en cache au moins le nombre minimum de tokens

Notez que les modifications de tool_choice ou la présence/absence d’images n’importe où dans le prompt invalideront le cache, nécessitant la création d’une nouvelle entrée de cache.


Stockage et partage du cache

  • Isolation des organisations : Les caches sont isolés entre les organisations. Différentes organisations ne partagent jamais de caches, même si elles utilisent des prompts identiques.

  • Correspondance exacte : Les accès au cache nécessitent des segments de prompt 100 % identiques, y compris tout le texte et les images jusqu’au bloc marqué avec cache control inclus. Le même bloc doit être marqué avec cache_control pendant les lectures et la création du cache.

  • Génération de tokens de sortie : La mise en cache des prompts n’a aucun effet sur la génération de tokens de sortie. La réponse que vous recevez sera identique à celle que vous obtiendriez si la mise en cache des prompts n’était pas utilisée.


Exemples de mise en cache des prompts

Pour vous aider à démarrer avec la mise en cache des prompts, nous avons préparé un livre de recettes de mise en cache des prompts avec des exemples détaillés et des meilleures pratiques.

Ci-dessous, nous avons inclus plusieurs extraits de code qui montrent différents modèles de mise en cache des prompts. Ces exemples démontrent comment mettre en œuvre la mise en cache dans différents scénarios, vous aidant à comprendre les applications pratiques de cette fonctionnalité :


FAQ