Coût de mise en cache du prompt pour les agents IA : Anthropic, OpenAI, Gemini
Comment la mise en cache du prompt est facturée sur les API Claude, OpenAI et Gemini, quoi mettre dans le préfixe mis en cache, et un exemple d'exécution d'agent en 12 étapes montrant l'économie avec les calculs détaillés.
Le texte de l'article comporte la date de vérification. Le tableau des tarifs ci-dessous est reconstruit à partir du catalogue en direct à chaque déploiement.
Victoire la plus rapide
Les lectures d'entrée mises en cache coûtent environ 10 % du taux d'entrée catalogue chez Anthropic et OpenAI (environ 25 % chez Gemini). Comme un agent renvoie tout son contexte à chaque étape, cette remise unique réduit la facture d'entrée d'une exécution Claude Sonnet 5 en 12 étapes de 0,35 $ à environ 0,09 $. Placez le prompt système et les définitions d'outils en premier, gardez-les stables en octets, et vérifiez que `cache_read_input_tokens` est non nul avant d'optimiser quoi que ce soit d'autre.
Ce que la mise en cache du prompt économise sur une boucle d'agent
Une exécution d'agent en 12 étapes sur Claude Sonnet 5 coûte environ 0,39 $ sans mise en cache et environ 0,14 $ avec. Sur GPT-5.4, la même exécution coûte environ 0,50 $ sans cache et environ 0,17 $ avec cache. La raison est simple : un agent renvoie tout son contexte à chaque étape, et les lectures d'entrée mises en cache sont facturées à environ 10 % du taux d'entrée catalogue chez Anthropic et OpenAI, environ 25 % chez Gemini. La mise en cache n'affecte pas les jetons de sortie.
Ces chiffres utilisent une trace réaliste : un préfixe de 4 000 jetons (prompt système plus définitions d'outils), une tâche de 500 jetons, et douze étapes où chaque étape renvoie un appel d'outil de 300 jetons et reçoit un résultat d'outil de 1 500 jetons. Les calculs complets sont ci-dessous.
Pourquoi les agents sont la charge de travail idéale pour la mise en cache
Chaque étape d'une boucle d'appels d'outils envoie l'intégralité de la conversation jusqu'à présent : le prompt système, chaque schéma d'outil, la tâche, chaque appel d'outil antérieur et chaque résultat d'outil antérieur. L'étape 1 envoie 4 500 jetons. L'étape 12 envoie 4 500 + 11 × 1 800 = 24 300 jetons. En additionnant les douze étapes, le modèle a lu 172 800 jetons d'entrée pour produire seulement 4 800 jetons de sortie.
Presque tous ces 172 800 jetons sont du texte répété. Le préfixe est identique à chaque appel et la conversation ne croît qu'à la fin. C'est exactement la forme pour laquelle un cache de préfixe est conçu, c'est pourquoi le renvoi par étape qui rend les agents coûteux est aussi ce qui rend la mise en cache si efficace. La forme générale des factures d'agent est abordée dans [combien coûte l'exécution d'un agent IA](/guides/how-much-does-an-ai-agent-cost-to-run) ; cet article ne traite que du cache.
Comment fonctionne le cache de chaque fournisseur
| Fournisseur | Comment l'activer | Prix de lecture (approx.) | Prix d'écriture | Durée de conservation |
|---|---|---|---|---|
| Anthropic (Claude) | Points de rupture explicites cache_control: {"type": "ephemeral"} sur les blocs système, outils ou messages ; jusqu'à 4 par requête | ~10 % du tarif indiqué | ~125 % du tarif indiqué lors de la première écriture | 5 minutes par défaut, actualisées à chaque accès ; option d'une heure avec un supplément à l'écriture |
| OpenAI | Correspondance automatique des préfixes sur les invites dépassant la taille minimale ; clé prompt_cache_key optionnelle pour orienter le routage | ~10 % du tarif indiqué | Aucun supplément | Quelques minutes d'inactivité, plus longues en heures creuses (le fournisseur ne s'engage sur aucun chiffre) |
| Google Gemini | Objet de cache explicite créé via client.caches.create avec une TTL ; certains modèles mettent également en cache implicitement | ~25 % du tarif indiqué | Aucun supplément à l'écriture, mais les tokens mis en cache sont facturés au stockage par heure | La TTL que vous définissez ; le stockage reste facturé jusqu'à expiration |
Anthropic traite la requête dans l'ordre suivant : outils, puis système, puis messages, et le cache effectue une correspondance stricte de préfixe. Un point de rupture met en cache tout ce qui le précède, donc un point sur la dernière définition d'outil et un autre sur le prompt système couvrent la partie stable. Ajoutez-en un troisième sur le dernier message utilisateur et chaque étape lira également la conversation précédente depuis le cache. Le préfixe minimum cachable chez Anthropic dépend du modèle (environ 1 000 tokens ou plus), donc les invites courtes ne sont pas mises en cache silencieusement. Consultez les détails par fournisseur dans [Coût de l'API agent Claude](/guides/claude-agent-api-cost), [Coût de l'API agent OpenAI](/guides/openai-agents-api-cost) et [Coût de l'API agent Gemini](/guides/gemini-agent-api-cost).
Ce qu'il faut inclure dans le préfixe mis en cache
Placez en premier, dans un ordre fixe, les éléments qui ne changent jamais pendant l'exécution :
- Le prompt système, sans date, sans nom d'utilisateur ni ID d'exécution à l'intérieur
- Les définitions d'outils, triées de manière déterministe et jamais ajoutées en cours d'exécution
- Les documents récupérés, guides de style ou schémas consultés par l'agent à chaque étape
- Les exemples few-shot
Placez tout ce qui varie après le dernier point de rupture : la tâche, la question de l'utilisateur, les métadonnées par requête. Chez Anthropic, si vous souhaitez inclure un horodatage ou un ID d'exécution dans le contexte, placez-le dans le premier message utilisateur plutôt que dans le prompt système, afin qu'il se situe après le préfixe mis en cache et non à l'intérieur.
Exemple concret : 12 étapes avec et sans mise en cache
Sans cache, l'exécution lit 172 800 tokens d'entrée et écrit 4 800 tokens de sortie. Avec cache, nous divisons l'entrée en trois catégories. Les nouveaux tokens sont écrits dans le cache une seule fois : 4 500 à l'étape 1 et 1 800 à chacune des onze étapes suivantes, soit 24 300 au total. Tout le reste, 148 500 tokens, correspond à des lectures depuis le cache.
| Modèle | Entrée non mise en cache | Sortie non mise en cache | Total non mis en cache | Total avec cache | Économie |
|---|---|---|---|---|---|
| Claude Sonnet 5 ($2 / $10) | 172,800 × $2 = $0.346 | 4,800 × $10 = $0.048 | $0.394 | 24,300 × $2.50 + 148,500 × $0.20 + $0.048 = $0.138 | 65% |
| GPT-5.4 ($2.50 / $15) | 172,800 × $2.50 = $0.432 | 4,800 × $15 = $0.072 | $0.504 | 24,300 × $2.50 + 148,500 × $0.25 + $0.072 = $0.170 | 66% |
| Gemini 3.8 Flash ($0.75 / $3.75) | 172,800 × $0.75 = $0.130 | 4,800 × $3.75 = $0.018 | $0.148 | 24,300 × $0.75 + 148,500 × $0.19 + $0.018 = $0.064 plus stockage du cache | ~57% |
Tous les tarifs sont exprimés par million de tokens ; les tarifs de cache appliquent la règle « environ 10 % / 25 % » aux listes et le supplément à l'écriture chez Anthropic est d'environ 125 %. Ce supplément est faible car chaque token est écrit une seule fois et peut être lu jusqu'à onze fois. Pour une exécution de 40 étapes, l'économie dépasse les 80 %, car la part de l'entrée répétée augmente à chaque étape. Testez votre propre trace dans le [calculateur](/calculator).
Extraits de code : Anthropic et OpenAI
Anthropic, points de rupture explicites sur le dernier outil et le prompt système, plus un sur le dernier message afin que la conversation soit lue depuis le cache :
from anthropic import Anthropic
client = Anthropic()
tools[-1]["cache_control"] = {"type": "ephemeral"} # caches every tool before it too
messages[-1]["content"][-1]["cache_control"] = {"type": "ephemeral"}
resp = client.messages.create(
model="claude-sonnet-5", max_tokens=2048,
system=[{"type": "text", "text": SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"}}],
tools=tools, messages=messages,
)
u = resp.usage
# Sonnet 5 per 1M: input $2, write ~$2.50, read ~$0.20, output $10
cost = (u.input_tokens * 2 + u.cache_creation_input_tokens * 2.5
+ u.cache_read_input_tokens * 0.2 + u.output_tokens * 10) / 1_000_000OpenAI, où la mise en cache est automatique et où vous devez simplement la vérifier :
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5.4", instructions=SYSTEM_PROMPT, tools=tools,
input=conversation, prompt_cache_key="research-agent-v3",
)
u = resp.usage
cached = u.input_tokens_details.cached_tokens
# GPT-5.4 per 1M: input $2.50, cached read ~$0.25, output $15
cost = ((u.input_tokens - cached) * 2.5 + cached * 0.25
+ u.output_tokens * 15) / 1_000_000Journalisez cost à chaque étape. Si la valeur mise en cache est nulle à l'étape 2, arrêtez-vous et identifiez l'élément qui invalide le cache avant de lancer quoi que ce soit de plus long.
Erreurs qui cassent silencieusement le cache
- Un horodatage, une date ou une ligne "today is" dans le prompt système. Cela change à chaque appel, donc le préfixe ne correspond jamais.
- Changer l'ordre des outils ou l'ensemble d'outils entre les étapes. Les outils sont rendus en premier, donc un outil réordonné invalide le prompt système et toute la conversation derrière.
- Sérialiser les schémas d'outils à partir d'un dict avec un ordre de clés instable. Triez les clés avant d'envoyer.
- Un ID de requête ou de trace dans le prompt système. Mettez-le dans les métadonnées ou le premier message utilisateur.
- Sur Anthropic, modifier un message antérieur (par exemple tronquer un ancien résultat d'outil) plutôt que d'ajouter. Le cache se termine au premier octet modifié.
- Changer de modèle en cours d'exécution. Les caches sont par modèle ; un worker Haiku 5.5 ne peut pas lire un cache Sonnet 5.
- Sur Gemini, oublier de supprimer un cache explicite. Le stockage facture à l'heure que vous l'appeliez ou non.
Le modèle le moins cher capable de gérer cela, et quand payer pour le modèle phare
La mise en cache ne change pas le modèle à utiliser ; elle change le coût du modèle coûteux. Pour une boucle d'outils bien spécifiée, Gemini 3.8 Flash à 0,75 $ / 3,75 $ ou DeepSeek V4.1 Flash à 0,30 $ / 1,20 $ terminent l'exécution de 12 étapes pour 0,15 $ et environ 0,06 $ respectivement avant toute mise en cache. DeepSeek V4.1 Flash, nom API deepseek-flash, a remplacé V4 Flash, que DeepSeek a retiré. Les lignes DeepSeek utilisent les tarifs de pointe ; les heures creuses coûtent la moitié. Tarification DeepSeek vérifiée le 2026-10-27 sur api-docs.deepseek.com. Voir [LLM le moins cher pour les agents IA](/guides/cheapest-llm-for-ai-agents) pour les compromis de fiabilité.
Payez pour Claude Opus 5 (5 $ / 25 $) ou GPT-5.5 (5 $ / 30 $) lorsque la boucle implique de la planification, des instructions ambiguës ou du code qui doit compiler du premier coup, car une nouvelle tentative sur un modèle bon marché renvoie tout le contexte et peut coûter plus cher que de bien faire les choses une fois. Avec la mise en cache, l'exécution Opus non mise en cache de 12 étapes à 0,98 $ devient environ 0,35 $, ce qui est moins que l'exécution non mise en cache de Sonnet 5.
Comment plafonner les dépenses sur une boucle avec cache
La mise en cache abaisse la pente, pas le plafond. Gardez quatre contrôles sur chaque agent :
max_tokenspar appel, dimensionné pour l'appel d'outil légitime le plus long, pas le maximum du modèle- Une limite stricte d'étapes par exécution ; 12 à 25 étapes couvrent la plupart des tâches
- Une condition d'arrêt que le modèle peut atteindre, comme un outil
finish, pour qu'il ne boucle pas sur « laissez-moi vérifier encore une chose » - Un budget en dollars par exécution calculé à partir des champs d'utilisation dans les extraits ci-dessus, interrompant l'exécution lorsque le total cumulé le dépasse
L'article [Token budget guardrails](/guides/ai-agent-token-budget-guardrails) contient un exécuteur de 30 lignes qui gère le dernier point. Si votre agent connecte plusieurs serveurs MCP, lisez [MCP server token cost](/guides/mcp-server-token-cost) ensuite, car une grande liste d'outils est le préfixe qui bénéficie le plus du cache et qui souffre le plus sans lui.
Points clés
- →Les lectures du cache représentent environ 10 % du coût d'entrée de la liste chez Anthropic et OpenAI, environ 25 % chez Gemini ; Anthropic facture environ 125 % du coût de la liste pour l'écriture
- →Une exécution d'agent Sonnet 5 en 12 étapes coûte environ 0,39 $ sans cache et environ 0,14 $ avec cache ; sur GPT-5.4 environ 0,50 $ et 0,17 $
- →L'ordre est : outils, puis système, puis messages ; tout ce qui change avant le point d'arrêt invalide tout ce qui suit
- →Les horodatages, les ID de requête, les outils réordonnés et le JSON non trié sont les tueurs de cache silencieux habituels
- →Le cache par défaut d'Anthropic vit 5 minutes et est rafraîchi à chaque accès ; les boucles d'agent qui appellent plus rapidement que cela restent chaudes gratuitement
- →Vérifiez avec les champs d'utilisation à chaque appel : cache_read_input_tokens (Anthropic) ou input_tokens_details.cached_tokens (OpenAI)
Contexte éditorial
À qui cela s'adresse-t-il ?
Les développeurs qui exécutent des agents avec appel d'outils sur les API Claude, OpenAI ou Gemini et qui renvoient un grand préfixe à chaque étape.
Quand ne pas l'utiliser
Classification unique ou chat avec des prompts courts ; en dessous d'environ 1,000 tokens de préfixe, rien n'est mis en cache chez aucun fournisseur.
Aperçus sur les prix
Les lectures en cache coûtent environ 10% du prix catalogue chez Anthropic et OpenAI et environ 25% chez Gemini. Sur un run de 12 étapes, la facture d'entrée baisse d'environ trois quarts.
Alternatives à considérer
L'API Batch à environ 50% de réduction pour les runs non interactifs, des résultats d'outils plus courts et moins d'outils connectés réduisent tous la même facture d'entrée.
Verdict final
Activez le cache avant de changer de modèle. C'est la plus grande économie individuelle disponible sur une boucle d'agent et cela ne coûte rien lorsque le préfixe est stable.
Questions fréquemment posées
Combien la mise en cache des invites permet-elle d'économiser sur un agent IA ?
Sur une exécution d'agent en 12 étapes avec un préfixe de 4 000 jetons et des résultats d'outils de 1 500 jetons, la mise en cache réduit le coût de Claude Sonnet 5 d'environ 0,39 $ à environ 0,14 $ et celui de GPT-5.4 d'environ 0,50 $ à environ 0,17 $. L'économie est d'environ 65 % de l'exécution, presque entièrement sur les jetons d'entrée. Les exécutions plus longues permettent un pourcentage d'économie plus élevé car le contexte renvoyé croît à chaque étape.
Que facture Anthropic pour une écriture en cache ?
Anthropic facture les jetons écrits dans le cache à environ 125 % du taux d'entrée normal, soit environ 2,50 $ par million sur Claude Sonnet 5 contre un taux de liste de 2 $. Les lectures sont ensuite d'environ 10 % du taux de liste, soit environ 0,20 $ par million. La prime d'écriture est récupérée dès le premier accès au cache, donc elle ne vous coûte de l'argent que si le préfixe est utilisé une seule fois.
La mise en cache des invites d'OpenAI nécessite-t-elle des modifications de code ?
Non. L'API OpenAI met automatiquement en cache les préfixes correspondants une fois que l'invite est suffisamment longue pour être éligible, et la remise apparaît dans input_tokens_details.cached_tokens sur la réponse. Vous pouvez passer un prompt_cache_key pour aider à acheminer les requêtes répétées vers le même cache, mais l'essentiel est de garder le préfixe identique octet par octet entre les appels.
Comment la facturation du cache de contexte Gemini est-elle effectuée ?
Gemini dispose de caches explicites que vous créez avec une TTL, et les jetons en cache sont lus à environ 25 % du taux d'entrée de la liste. Contrairement à Anthropic et OpenAI, Google facture également le stockage des jetons en cache par heure de vie, donc un cache que vous créez et oubliez continue de coûter de l'argent. Consultez la page du fournisseur pour le taux de stockage actuel avant de vous y fier.
Pourquoi mon cache_read_input_tokens est-il toujours à zéro ?
Quelque chose dans le préfixe change entre les appels. Les causes courantes sont un timestamp ou une date dans le prompt système, un identifiant de requête, des définitions d'outils ajoutées ou réordonnées entre les étapes, et du JSON sérialisé avec un ordre des clés instable. Différenciez deux requêtes consécutives octet par octet ; la première différence est là où votre cache se termine.
Dois-je utiliser le cache d'une heure sur Anthropic ?
Uniquement lorsque les appels sont espacés de plus de cinq minutes. Le TTL par défaut de 5 minutes est rafraîchi à chaque accès, donc une boucle d'agent active le maintient à chaud sans coût supplémentaire. L'option d'une heure comporte une prime d'écriture plus élevée, qui est gaspillée si l'étape suivante arrive trente secondes plus tard de toute façon.
Related
Cours gratuits · sans inscription
Vous hésitez encore ? Apprenez d'abord les bases, puis revenez aux prix.