Cache de prompts
Le Prompt Caching permet de mettre en cache les préfixes de prompt réutilisés, réduisant la consommation de tokens et la latence de réponse.
Fonctionnement
Lorsque votre requête contient un system prompt long et réutilisé ou des informations de contexte :
- Première requête — Tous les tokens sont traités et le préfixe du prompt est mis en cache
- Requêtes suivantes — En cas de cache hit, les tokens de la partie mise en cache ne sont plus facturés
- Expiration du cache — Le cache a un TTL (généralement 5-10 minutes) ; après expiration, une nouvelle mise en cache est nécessaire
Support du cache
Les ressources de modèles d’OfoxAI sont fournies par des fournisseurs cloud officiels tels que AWS Bedrock, Azure OpenAI, Google Cloud, Alibaba Cloud et Volcengine. Les modèles supportant le Prompt Caching chez ces fournisseurs cloud sont également supportés par OfoxAI.
| Fournisseur cloud | Modèles représentatifs | Mécanisme de cache |
|---|---|---|
| AWS Bedrock | Série Claude | Prompt Caching natif |
| Azure OpenAI | Série GPT-4o | Cache automatique |
| Google Cloud | Série Gemini | Context Caching |
| Alibaba Cloud | Série Qwen | Cache de plateforme |
| Volcengine | Série Doubao | Cache de plateforme |
Le support de cache spécifique de chaque modèle est soumis à la documentation officielle de chaque fournisseur cloud. OfoxAI transmet les paramètres de cache de manière transparente, sans configuration supplémentaire.
Mode d’utilisation
Protocole OpenAI
Le Prompt Caching des modèles OpenAI est automatique — il s’active automatiquement lorsque des préfixes de prompt répétés sont détectés :
# Le system prompt long est automatiquement mis en cache
SYSTEM_PROMPT = """Vous êtes l'assistant de support technique d'OfoxAI.
Voici les informations produit que vous devez connaître :
- OfoxAI est un LLM Gateway supportant plus de 100 modèles
- Supporte les trois protocoles OpenAI / Anthropic / Gemini
- ...
(plus de connaissances produit omises)
"""
# Première requête : mise en cache du system prompt
response1 = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": "Quels modèles OfoxAI supporte-t-il ?"}
]
)
# Deuxième requête : cache hit, plus rapide et moins cher
response2 = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT}, # Cache hit
{"role": "user", "content": "Comment configurer Claude Code ?"}
]
)Protocole Anthropic
Les modèles Anthropic supportent le contrôle de cache explicite :
import anthropic
client = anthropic.Anthropic(
base_url="https://api.ofox.ai/anthropic",
api_key="<votre OFOXAI_API_KEY>"
)
response = client.messages.create(
model="anthropic/claude-sonnet-4.5",
max_tokens=1024,
system=[{
"type": "text",
"text": "Vous êtes un assistant professionnel. Voici la documentation produit...",
"cache_control": {"type": "ephemeral"} # Activer le cache explicitement
}],
messages=[{"role": "user", "content": "Résumez les caractéristiques du produit"}]
)
# Voir l'état du cache hit
print(f"Tokens d'écriture cache : {response.usage.cache_creation_input_tokens}")
print(f"Tokens de lecture cache : {response.usage.cache_read_input_tokens}")Économies de coûts
Après un cache hit, les tokens de la partie mise en cache sont facturés à un tarif réduit. Le pourcentage d’économie varie selon le modèle :
- Série Anthropic Claude — Un cache hit peut économiser environ 90 % des coûts d’entrée
- Série OpenAI GPT — Un cache hit peut économiser environ 50 % des coûts d’entrée
- Série Google Gemini — Un cache hit peut économiser environ 50-75 % des coûts d’entrée
Le pourcentage réel d’économie dépend du taux de cache hit et des politiques de facturation de chaque fournisseur cloud. Consultez les statistiques d’utilisation dans la console OfoxAI pour plus de détails.
Bonnes pratiques
- Placez le texte long en premier — Le system prompt et le contenu de la base de connaissances qui ne change pas doivent être au début des messages
- Maintenez le préfixe cohérent — Seuls les préfixes exactement identiques peuvent déclencher un cache hit
- Concevez la structure du prompt de manière appropriée — Séparez les parties fixes des parties variables
# Bonne conception : contenu fixe en premier, contenu variable ensuite
messages = [
{"role": "system", "content": LONG_STATIC_PROMPT}, # Mise en cache possible
{"role": "user", "content": dynamic_question} # Partie variable
]
# Mauvaise conception : contenu variable intercalé dans le contenu fixe
messages = [
{"role": "system", "content": f"Aujourd'hui c'est le {date}. {LONG_PROMPT}"} # Différent chaque jour, non cacheable
]Les cache hits peuvent être consultés dans le champ usage de la réponse API, ainsi que dans les statistiques d’utilisation de la console OfoxAI.