Chargement

La mémorisation des requêtes en action

Leçon 488 min

La mémorisation des requêtes est une fonctionnalité d'optimisation puissante qui rend les requêtes moins coûteuses et plus rapides lorsque vous envoyez de manière répétée le même contenu à Claude. La requête initiale écrit dans le cache, et les requêtes suivantes peuvent le lire. Le cache vit pendant 5 minutes et s'avère extrêmement utile, car de nombreuses applications envoient de manière répétée des schémas d'outils, des invites système ou des historiques de messages identiques.

Claude écrit dans le cache le travail effectué sur la requête « Veuillez résumer ceci », puis le lit lors de la requête suivante.

Comment fonctionne la mémorisation des requêtes

Lorsque vous marquez du contenu pour la mise en cache, Claude le traite une seule fois et stocke le résultat. Les requêtes suivantes qui incluent exactement le même contenu peuvent ignorer l'étape de traitement et lire directement depuis le cache. Cela ne fonctionne que si le contenu mis en cache est identique : même un seul caractère modifié invalide le cache.

Vous pouvez définir plusieurs points d'arrêt de cache dans une même requête. L'ordre de mise en cache suit cette séquence :

  • Schémas d'outils
  • Invite système
  • Historique des messages

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

Pour mettre en cache les schémas d'outils, vous devez ajouter un champ cache_control au dernier outil de votre liste. Voici la bonne façon de procéder sans modifier vos schémas d'outils d'origine :

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 dernier schéma d'outil avant d'ajouter le champ de contrôle du cache. Cela évite de modifier accidentellement vos définitions d'outils d'origine, ce qui pourrait poser problème si vous réorganisez les outils par la suite.

Mise en cache de l'invite système

Pour les invites système, vous devez structurer le paramètre system en tant que liste comportant un bloc de texte incluant le champ de contrôle du cache :

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

Comprendre le comportement du cache

Lorsque vous effectuez votre première requête avec du contenu pouvant être mis en cache, vous verrez cache_creation_input_tokens dans le champ usage. Cela indique le nombre de jetons que Claude a écrits dans le cache. Lors des requêtes suivantes avec un contenu identique, vous verrez plutôt cache_read_input_tokens.

Si vous avez à la fois du contenu mis en cache et du nouveau contenu dans la même requête, vous pourriez voir à la fois des lectures et des écritures de cache. Par exemple, si vous conservez les mêmes schémas d'outils mais que vous modifiez l'invite système, vous lirez les outils depuis le cache tout en écrivant la nouvelle invite système dans le cache. Vous n'obtenez cette lecture partielle que lorsque les outils seuls atteignent la longueur minimale, car un point d'arrêt de cache dont le contenu jusqu'à ce point est inférieur au minimum n'écrit rien.

Invalidation du cache

Le cache est extrêmement sensible aux modifications. Modifier ne serait-ce qu'un seul caractère dans la description de votre schéma d'outil, votre invite système, ou tout autre contenu mis en cache invalidera cette entrée de cache. Lorsque cela se produit, Claude le traite comme un contenu entièrement nouveau et crée une nouvelle entrée de cache.

Cette sensibilité signifie que vous devez réfléchir attentivement à ce que vous mettez en cache. Les schémas d'outils et les invites système qui restent stables sur de nombreuses requêtes sont des candidats idéaux. Le contenu dynamique qui change fréquemment ne bénéficiera pas de la mise en cache.

Mise en œuvre pratique

En pratique, vous voudrez intégrer la mise en cache par défaut dans vos fonctions de chat. La plupart des applications utilisent les mêmes schémas d'outils et invites système sur plusieurs requêtes, ce qui en fait des candidats parfaits pour la mise en cache. Les avantages en termes de performance et de coût sont considérables lorsque vous effectuez de nombreuses requêtes avec un contenu similaire.

N'oubliez pas que la mise en cache est la plus utile lorsque vous envoyez de manière répétée le même contenu. Étant donné que cela se produit extrêmement fréquemment dans les applications réelles - en particulier avec les schémas d'outils et les invites système - mettre en œuvre la mise en cache dès le début de votre processus de développement portera ses fruits à mesure que votre application se développe.