Le prompt caching consiste à éviter qu’un fournisseur de modèle retraite entièrement un long contexte déjà vu. Pour en bénéficier, il faut généralement placer le contenu stable au début de la requête et le contenu variable à la fin, puis vérifier les métriques de cache renvoyées par l’API. Le gain ne vient pas d’un prompt plus court : il vient de la réutilisation d’un préfixe identique ou d’une ressource de contexte explicitement mise en cache.
Un cache mal conçu produit l’effet inverse. Une date, un identifiant ou un document variable placé trop tôt invalide le préfixe. Une version non suivie peut réutiliser un contexte périmé. Un cache partagé sans frontière de tenant peut créer un risque de confidentialité. La bonne unité de travail est donc un contrat de contexte versionné, testé à froid, à chaud et après invalidation.
Réponse en bref
Pour mettre en place un prompt caching IA :
- mesurez d’abord le coût et la latence sans cache sur un scénario stable ;
- séparez le préfixe réutilisable de la demande propre à chaque exécution ;
- placez instructions, outils et contexte stables avant les données variables ;
- choisissez le mécanisme réellement supporté par le modèle et le fournisseur ;
- donnez une version explicite au préfixe et à ses dépendances ;
- isolez les caches par environnement, tenant et politique de données ;
- testez une requête froide, une répétition chaude et une requête volontairement invalidée ;
- observez les jetons écrits, lus ou reconnus en cache, pas seulement la facture ;
- prévoyez expiration, suppression et retour sans cache ;
- conservez le cache uniquement si le gain reste réel au niveau de la tâche acceptée.
La prochaine action est simple : prenez le parcours le plus répétitif de votre application et imprimez la longueur de chaque bloc de contexte dans son ordre d’envoi. Si le contenu stable n’est pas clairement séparé du contenu variable, ne configurez pas encore le cache.
Ce que le prompt caching réutilise réellement
Un modèle reçoit souvent un ensemble ordonné : définition des outils, instructions système, politique métier, corpus documentaire, historique puis demande courante. Le cache peut éviter une partie du traitement du début de cet ensemble lorsque ce début correspond à un contenu déjà préparé.
Le schéma cible ressemble à ceci :
préfixe stable
version du contrat
instructions système
schémas des outils
politique et exemples durables
long document commun
suffixe variable
identité de session autorisée
données propres à la tâche
message courant
contrainte ponctuelle
Le mot « identique » est essentiel. Déplacer un outil, changer un espace dans une instruction ou insérer une date au début peut modifier la correspondance selon le mécanisme du fournisseur. Un cache sémantique, qui retrouverait des demandes proches, est un autre système avec d’autres risques. Le prompt caching documenté par les grandes API repose d’abord sur la stabilité d’un contexte ou d’un préfixe, pas sur une ressemblance approximative entre questions.
Le résultat final n’est pas automatiquement mis en cache. Le modèle continue à générer une réponse propre à la demande. Le gain porte sur une partie des jetons d’entrée et, selon l’offre, sur le temps nécessaire avant la génération. Il faut donc séparer dans la mesure les entrées non mises en cache, les écritures de cache, les lectures de cache et les sorties.
Distinguer trois mécanismes de cache
Les fournisseurs n’exposent pas tous le même contrat. Leur documentation actuelle décrit trois familles qui peuvent parfois coexister.
| Mécanisme | Déclenchement | Contrôle de l’application | Risque principal |
|---|---|---|---|
| Cache implicite | Le service reconnaît un préfixe répété | Faible à moyen | Supposer un hit sans le mesurer |
| Point de rupture explicite | L’appel marque la fin du contenu réutilisable | Moyen | Placer la frontière après une donnée variable |
| Ressource de contexte | L’application crée et référence un cache nommé | Élevé | Oublier durée de vie, suppression ou version |
OpenAI documente une mise en cache fondée sur des préfixes identiques, des clés de routage et, pour certains modèles actuels, des points de rupture explicites. Anthropic documente des modes automatique et explicite avec des métriques distinctes de création et de lecture. Google distingue un cache implicite et un cache explicite associé à une ressource de contexte.
Ces détails sont valables à la date de vérification de l’article. Les modèles admissibles, tailles minimales, durées de vie, tarifs et noms de champs peuvent changer. Le code de production doit lire la documentation correspondant au modèle effectivement déployé et traiter l’absence de cache comme un fonctionnement normal.
Le meilleur mécanisme n’est pas toujours le plus explicite. Une ressource nommée convient à un très long corpus commun réutilisé pendant une période connue. Un cache implicite peut suffire à une instruction répétée à fort volume. Un point de rupture apporte un contrôle utile lorsque l’appel contient plusieurs blocs dont la stabilité est maîtrisée.
Construire un contrat de préfixe stable
Le préfixe ne doit pas être un collage invisible généré par plusieurs fonctions. Donnez-lui une structure, un propriétaire et une version. Par exemple :
{
"prompt_contract": "support-summary/v3",
"tool_schema_version": "2026-08-10",
"policy_version": "privacy-fr/v2",
"knowledge_snapshot": "kb-2026-08-12",
"tenant_scope": "tenant-opaque-id",
"model_family": "configured-at-runtime"
}
Ces métadonnées ne doivent pas nécessairement être envoyées telles quelles au modèle. Elles servent à calculer une identité de cache, retrouver la configuration d’un run et expliquer une invalidation. Une empreinte déterministe des composants stables peut compléter la version lisible.
Le contrat doit répondre à six questions :
- quels blocs composent le préfixe et dans quel ordre ;
- quelle modification change sa version ;
- qui autorise la publication de cette version ;
- pendant combien de temps elle peut être réutilisée ;
- dans quel périmètre de données et d’utilisateurs ;
- comment revenir à une exécution sans cache.
Cette discipline rejoint le versionnement d’une base de connaissances IA. Si le document source change mais que l’identité du contexte reste la même, l’application ne peut plus savoir quelle connaissance a produit la réponse. Le cache révèle alors un défaut de traçabilité qui existait déjà.
Placer le contenu stable avant le contenu variable
Commencez par les éléments les plus partagés entre requêtes : définitions d’outils, règles générales, format de sortie et documentation commune. Placez ensuite les éléments propres à un groupe ou à un tenant. Terminez par les données de session et la demande courante.
Un mauvais ordre ressemble à ceci :
date et heure courantes
identifiant aléatoire de la requête
question de l’utilisateur
instructions système communes
schémas d’outils communs
manuel de référence commun
Chaque appel modifie les premières lignes. Le service ne retrouve donc pas le long contenu commun qui suit. L’ordre corrigé devient :
instructions système communes
schémas d’outils communs
manuel de référence commun et versionné
date utile à la tâche
question de l’utilisateur
identifiant de corrélation conservé hors prompt
Ne déplacez pas mécaniquement toutes les variables hors du début. Certaines informations déterminent les permissions ou le comportement et doivent rester visibles au modèle. La sécurité prime sur le taux de cache. Le but est de stabiliser ce qui peut l’être, pas de masquer un contexte nécessaire.
Les schémas d’outils méritent une attention particulière. Un générateur qui réordonne des propriétés ou ajoute une description variable peut casser la correspondance. Sérialisez-les de manière déterministe et versionnez le résultat. Faites de même pour les listes d’exemples et les documents assemblés à partir de plusieurs sources.
Définir une politique d’invalidation
Un cache utile doit pouvoir devenir invalide. La politique associe chaque cause à une action plutôt que de s’en remettre uniquement à l’expiration temporelle.
| Événement | Action recommandée |
|---|---|
| Changement d’instruction métier | Nouvelle version du contrat |
| Modification d’un schéma d’outil | Nouvelle version et test de compatibilité |
| Mise à jour du corpus | Nouvel instantané de connaissance |
| Changement de droits | Invalidation immédiate du périmètre concerné |
| Incident de données | Désactivation, suppression si disponible et enquête |
| Migration de modèle | Nouveau test froid-chaud-invalidation |
| Expiration normale | Recréation contrôlée ou retour sans cache |
Une durée de vie courte limite l’ancienneté mais ne garantit pas qu’une permission révoquée cessera immédiatement d’influencer un contexte déjà préparé. Pour les événements de sécurité, prévoyez un chemin d’invalidation explicite lorsque l’API le permet et, sinon, changez l’identité du cache tout en suivant la conservation résiduelle prévue par le fournisseur.
Pendant une migration de modèle IA, ne supposez pas que le cache garde le même comportement. Le seuil d’éligibilité, la comptabilisation, l’ordre des blocs et la latence peuvent différer. Rejouez le protocole complet et comparez la qualité, car réordonner le contexte pour le cache peut aussi modifier les réponses.
Isoler tenants, données et environnements
La performance ne justifie jamais un mélange de périmètres. Une clé ou une ressource de cache doit tenir compte de la frontière d’autorisation réelle. Deux organisations utilisant le même modèle et les mêmes instructions ne doivent pas partager un contexte contenant leurs documents respectifs.
Construisez l’identité logique à partir d’éléments non secrets : environnement, tenant opaque, version du contrat, version du corpus et famille de modèle. N’utilisez pas une adresse électronique, un nom de client ou une donnée personnelle comme nom lisible du cache. Ne consignez pas non plus tout le prompt dans les journaux pour prouver un hit.
Avant activation, documentez :
- ce que le fournisseur conserve pour servir le cache ;
- où et combien de temps cette donnée est conservée ;
- si le mode est compatible avec la politique contractuelle choisie ;
- qui peut créer, lire ou supprimer une ressource explicite ;
- quelles métadonnées apparaissent dans les journaux ;
- comment une demande de suppression est propagée.
La documentation de Google, par exemple, distingue les implications de stockage entre mécanismes implicites et explicites. Cette observation ne peut pas être généralisée à tous les fournisseurs ni à toutes les offres. Vérifiez le contrat, la documentation et la configuration applicables au compte utilisé.
Mesurer trois états au lieu d’un seul benchmark
Un benchmark qui lance dix appels identiques en boucle peut montrer un gain spectaculaire mais peu représentatif. Il faut au minimum trois états contrôlés.
État 1 : à froid
Lancez une version jamais utilisée du préfixe ou attendez les conditions documentées d’absence de cache. Mesurez le temps total, le temps avant le premier jeton si disponible, les jetons d’entrée, les jetons écrits en cache, les jetons lus et le coût.
État 2 : à chaud
Répétez le même préfixe avec un suffixe différent mais comparable. Vérifiez que la métrique officielle signale réellement une lecture ou des jetons mis en cache. Une latence plus faible ne suffit pas à prouver un hit, car la charge du service et la longueur de sortie varient.
État 3 : après invalidation
Changez volontairement un composant versionné, par exemple le schéma d’outil ou l’instantané de connaissance. L’appel doit se comporter comme une nouvelle version. Vérifiez ensuite qu’une seconde requête sur cette version devient chaude.
Un tableau d’essai minimal contient :
| Champ | Exemple de sens |
|---|---|
contract_version | Version logique du préfixe |
test_state | cold, warm ou invalidated |
input_tokens | Entrée totale rapportée |
cache_write_tokens | Partie préparée ou écrite selon l’API |
cache_read_tokens | Partie réutilisée selon l’API |
output_tokens | Sortie générée |
ttft_ms | Temps avant le premier jeton si mesurable |
total_ms | Durée complète de l’appel |
accepted | Sortie acceptée selon la grille métier |
estimated_cost | Coût calculé avec le tarif daté |
Normalisez les noms dans votre télémétrie, puis conservez aussi la réponse brute du fournisseur dans une zone technique maîtrisée. Les API n’emploient pas toutes les mêmes champs. OpenAI expose notamment des informations de jetons mis en cache dans les détails d’usage ; Anthropic sépare création et lecture ; Google expose des informations de jetons de contexte mis en cache. La normalisation ne doit pas effacer cette différence.
Calculer le gain réel
Le taux de cache peut être calculé comme une proportion des jetons d’entrée réutilisés, mais il ne suffit pas. Mesurez :
taux de lecture du cache = jetons lus en cache / jetons d’entrée totaux
gain de latence = latence froide comparable - latence chaude comparable
gain par tâche acceptée = coût sans cache - coût avec cache
Comparez des distributions, pas une seule moyenne. Regardez la médiane et un percentile élevé sur des sorties de longueur comparable. Séparez les requêtes éligibles des requêtes trop courtes ou trop rares. Un parcours à faible répétition peut avoir un taux de cache faible sans anomalie.
Rattachez ensuite le gain au coût complet par tâche acceptée. Une optimisation de jetons ne crée pas de valeur si elle dégrade la réponse et augmente les corrections humaines. Conservez dans le tableau le verdict métier ainsi que la consommation technique.
Le calcul doit aussi intégrer les écritures de cache, le stockage éventuel d’une ressource explicite, les expirations et la surconsommation produite par un contexte artificiellement allongé. Un cache n’est pas une invitation à envoyer tous les documents disponibles.
Diagnostiquer les échecs courants
Le hit reste proche de zéro
Inspectez les premiers blocs sérialisés, caractère par caractère si nécessaire. Cherchez une date, un identifiant, un ordre instable, une version injectée automatiquement ou un suffixe placé avant le contenu commun. Vérifiez aussi l’éligibilité du modèle et la taille minimale actuelle dans la documentation.
Le cache fonctionne en test mais pas en production
Le trafic réel est peut-être réparti entre trop de préfixes, environnements ou versions. Une clé de routage mal choisie peut disperser les requêtes. Mesurez le nombre de variantes uniques et leur fréquence au lieu de conclure à un défaut du fournisseur.
La latence ne baisse pas
La génération de sortie, un outil externe ou une file d’attente peut dominer la durée totale. Regardez le temps avant le premier jeton et les segments du workflow. Le cache de prompt ne réduit ni la durée d’une recherche tierce ni celle d’une validation humaine.
Une réponse semble utiliser une ancienne règle
Désactivez le cache pour reproduire le cas, comparez les versions du contrat et vérifiez l’instantané de connaissance. Traitez l’événement comme un défaut de traçabilité jusqu’à preuve du contraire. Une expiration trop longue, une clé incomplète ou un déploiement partiel peuvent être en cause.
Le coût augmente
Vérifiez les frais de création, les durées de vie, la réutilisation réelle et la longueur ajoutée au préfixe. Une ressource créée puis utilisée une seule fois peut coûter davantage qu’un appel direct. Segmentez les parcours : le cache peut rester utile pour quelques flux à fort volume et inutile ailleurs.
Décider avec un pilote borné
Choisissez un parcours dont le préfixe représente une part importante de l’entrée et dont le volume crée plusieurs réutilisations pendant la durée de vie prévue. Définissez avant le test :
- une référence sans cache ;
- un seuil minimal de lecture du cache ;
- un gain attendu de coût ou de latence ;
- une tolérance nulle pour le mélange de périmètres ;
- un seuil de qualité inchangé ;
- une date de réexamen après changement de modèle ou de tarif.
Activez ensuite le mécanisme derrière une configuration réversible. Gardez une voie sans cache, observez les trois états et simulez au moins une révocation de droits ou une mise à jour du corpus. Ce test d’invalidation est aussi important que le meilleur résultat à chaud.
Pour un workflow plus large, la page automatisation IA et Python présente le cadre d’intégration. Le cache doit rester un composant observable de ce système, pas une optimisation dispersée dans chaque appel.
Limites
Les mécanismes, modèles compatibles, tailles minimales, durées de vie, champs d’usage et prix cités par les fournisseurs évoluent. Cet article donne une méthode de conception et de mesure, pas une table tarifaire permanente. Vérifiez la documentation officielle et l’offre contractuelle au moment du déploiement.
Le prompt caching ne remplace ni une réduction raisonnée du contexte, ni la recherche documentaire, ni la mémoire applicative, ni une base de résultats calculés. Il n’améliore pas automatiquement la qualité d’une réponse. Pour des données sensibles ou des exigences particulières de conservation, faites valider le mécanisme et sa configuration avant de l’activer.
Articles liés
Sources vérifiées
- Prompt caching , consultée le 13 août 2026
- Prompt caching , consultée le 13 août 2026
- Context caching , consultée le 13 août 2026
- Context caching with the Gemini API , consultée le 13 août 2026
- Zero Data Retention , consultée le 13 août 2026