Chargement

La mise en cache des prompts en action

Leçon 457 min

La mise en cache des prompts est une fonctionnalité d'optimisation puissante qui rend vos requêtes API à la fois plus rapides et moins coûteuses lorsque vous envoyez de manière répétée le même contenu à Claude. Explorons comment l'implémenter efficacement dans vos applications.

Comment fonctionne la mise en cache des prompts

Lorsque vous activez la mise en cache des prompts, la première requête écrit le contenu dans un cache avec une durée de vie par défaut de 5 minutes, et chaque fois que le contenu mis en cache est utilisé, cette fenêtre se rafraîchit sans coût supplémentaire. Si vous avez besoin d'une fenêtre plus longue, vous pouvez opter pour une durée de cache de 1 heure pour un coût additionnel. Les requêtes suivantes lisent depuis ce cache au lieu de traiter à nouveau le même contenu. Ceci est particulièrement utile lorsque vous envoyez :

  • De grandes invites système (comme une invite d'assistant de codage de 6K tokens)
  • Des schémas d'outils complexes (environ 1,7K tokens pour plusieurs outils)
  • Du contenu de message répété

L'idée clé est que la mise en cache n'aide que si vous envoyez de manière répétée un contenu identique - mais dans de nombreuses applications, cela se produit extrêmement fréquemment.

Configuration de la mise en cache des schémas d'outils

Pour mettre en cache vos schémas d'outils, vous devez ajouter un champ de contrôle de cache au dernier outil de votre liste. Voici la bonne façon de le faire sans modifier vos définitions d'outils originales :

python
if tools:
    tools_clone = tools.copy()
    last_tool = tools_clone[-1].copy()
    last_tool["cache_control"] = {"type": "ephemeral"}
    tools_clone[-1] = last_tool
    params["tools"] = tools_clone

Cette approche crée des copies à la fois de la liste d'outils et du schéma du dernier outil avant d'ajouter le champ de contrôle de cache. Bien que vous puissiez modifier directement tools[-1]["cache_control"], l'approche par copie évite les problèmes si vous réorganisez vos outils ultérieurement.

Mise en cache de l'invite système

Pour les invites système, vous devez les structurer comme un bloc de texte avec un contrôle de cache :

python
if system:
    params["system"] = [
        {
            "type": "text",
            "text": system,
            "cache_control": {"type": "ephemeral"}
        }
    ]

Cela convertit votre invite système d'une simple chaîne de caractères en un format structuré qui prend en charge la mise en cache.

Comprendre le comportement du cache

Lorsque vous exécutez des requêtes avec la mise en cache activée, vous verrez différents modèles d'utilisation dans la réponse :

  • Première requête : cache_creation_input_tokens=1772 - Claude écrit dans le cache
  • Requêtes suivantes : cache_read_input_tokens=1772 - Claude lit depuis le cache
  • Contenu modifié : De nouveaux tokens de création de cache apparaissent

Le cache est extrêmement sensible - changer même un seul caractère dans vos outils ou votre invite système invalide l'ensemble du cache pour ce composant.

Ordre du cache et points de rupture

Vous pouvez définir plusieurs points de rupture de cache dans une seule requête. L'ordre compte :

  1. Outils (si fournis)
  2. Invite système (si fournie)
  3. Messages

Si vous modifiez votre invite système mais conservez les mêmes outils, vous verrez une lecture de cache partielle (pour les outils) et une écriture de cache (pour la nouvelle invite système). Cette mise en cache granulaire signifie que vous ne payez que pour le traitement des parties qui ont réellement changé.

Considérations pratiques

La mise en cache des prompts est la plus efficace lorsque vous avez :

  • Des schémas d'outils cohérents entre les requêtes
  • Des invites système stables
  • Des applications qui effectuent plusieurs requêtes avec un contexte similaire

Rappelez-vous que le cache par défaut dure 5 minutes (rafraîchi à chaque utilisation), avec une option de 1 heure disponible pour un coût additionnel, donc il est conçu pour les applications avec une utilisation relativement fréquente de l'API plutôt que pour un stockage à long terme.