Mise en cache des prompts
Relisez un préfixe stable pour une fraction du prix des tokens d’entrée : quoi mettre en cache, quoi exclure et comment vérifier que cela a fonctionné.
La mise en cache des prompts stocke un préfixe de votre requête afin que les appels ultérieurs qui le partagent soient facturés à un tarif réduit pour les tokens d’entrée. Pour tout contenu comportant un préambule volumineux et stable — un prompt système, des schémas d’outils, un document sur lequel portent des questions — c’est le changement qui offre le meilleur rendement.
Ce qui constitue un bon candidat à la mise en cache
| Adapté | Pourquoi |
|---|---|
| Prompts système | Identique octet pour octet à chaque appel d’une session |
| Définitions d’outils ou de fonctions | Stables pendant toute l’exécution d’un agent, et souvent volumineuses |
| Un document faisant l’objet de questions répétées | Un seul téléversement, de nombreuses questions |
| Exemples few-shot | Fixe, et souvent long |
| Inadapté | Pourquoi |
|---|---|
| Le dernier message de l’utilisateur | Différent à chaque fois — jamais de correspondance dans le cache |
| Tout contenu comportant un horodatage ou un identifiant de requête près du début | Un seul octet modifié au début du préfixe invalide tout ce qui suit |
| Prompts courts | En dessous de la longueur minimale permettant la mise en cache, donc sans gain possible |
Marquer un préfixe
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": [{
"type": "text",
"text": "<long stable instructions...>",
"cache_control": {"type": "ephemeral"}
}],
"messages": [{"role": "user", "content": "Question that changes every call"}]
}
Tout le contenu jusqu’au bloc marqué inclus devient le préfixe mis en cache. L’ordre compte : placez le contenu stable en premier et le contenu variable en dernier.
Vérifier le fonctionnement
Vérifiez usage objet. En cas de correspondance dans le cache, les tokens sont comptabilisés comme lectures du cache plutôt que comme entrées ordinaires. Si les lectures du cache restent à zéro au fil des appels répétés, votre préfixe n’est pas réellement identique : une cause fréquente est un horodatage, un identifiant de session ou un ordre non déterministe des clés JSON dans le préambule.
json.dumps(obj) sans sort_keys=True peut réordonner les clés d’une exécution à l’autre, ce qui modifie les octets et vous fait perdre silencieusement tous les accès au cache.Là où cela compte le plus
Les outils agentiques renvoient le même prompt système et les mêmes schémas d’outils à chaque tour. Dans une session de 50 tours, ce préambule est facturé 50 fois sans mise en cache, et environ une seule fois avec elle.