Accueil / Documentation / Mise en cache des prompts

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èmeIdentique octet pour octet à chaque appel d’une session
Définitions d’outils ou de fonctionsStables pendant toute l’exécution d’un agent, et souvent volumineuses
Un document faisant l’objet de questions répétéesUn seul téléversement, de nombreuses questions
Exemples few-shotFixe, et souvent long
InadaptéPourquoi
Le dernier message de l’utilisateurDifférent à chaque fois — jamais de correspondance dans le cache
Tout contenu comportant un horodatage ou un identifiant de requête près du débutUn seul octet modifié au début du préfixe invalide tout ce qui suit
Prompts courtsEn 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.

Sérialisez le contenu mis en cache de manière déterministe. 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.