Comment exploiter le prompt caching d'OpenAI pour économiser jusqu'à 50% de coût sur l'API développeur

Comment exploiter le prompt caching d'OpenAI pour économiser jusqu'à 50% de coût sur l'API développeur OpenAI propose depuis peu une fonctionnalité intelligente permettant de stocker des prompts en cache pour les réutiliser plus tard. Explications.

Gagner du temps et de l'argent. C'est en somme ce que propose OpenAI, de manière plus ou moins automatisée dans son API développeur. Déployée depuis le 1er octobre, le prompt caching permet de stocker une partie de votre prompt, s'il est répétitif, pour le redonner par la suite au modèle. Une technique très basique et mise en place de façon semi-automatique qui permet d'économiser jusqu'à 50% de coût et diminuer la latence d'environ 80%. Bonnes pratiques, modèles concernés, conditions… On vous explique tout ce qu'il faut savoir.

Il était une fois le cache

Le prompt caching part d'un constat basique : la majorité des prompts envoyés aux modèles sont répétitifs, voire identiques. Par exemple, les bots mis à disposition des utilisateurs ont souvent des prompts communs pour donner à l'IA des guidelines. Avant le 1er octobre, les systèmes d'OpenAI facturait ces prompts comme un input à part entière avec un prix au token classique. Mais depuis la mise en place du prompt caching, les prompts identiques adressés dans un intervalle réduit sont traités de façon plus efficace et économique. Le système reconnaît les parties répétitives des prompts et les traite différemment.

Lors de la réception d'une requête, le système d'API d'OpenAI va d'abord tokeniser votre prompt. Une fois le prompt tokenisé, le système vérifie si une partie significative de ce prompt (au moins 1024 tokens) correspond à un prompt déjà traité récemment. Si c'est le cas, il peut réutiliser une partie du traitement déjà effectué. Le système réutilise en fait les états internes du modèle préalablement calculés, stockés dans une mémoire à accès rapide. Cette approche optimise l'utilisation du GPU mais également le routage général interne chez OpenAI. En bref, le prompt caching permet à OpenAI d'optimiser du calcul et du temps de latence.

Pour l'heure, le prompt caching est activé par défaut sur les modèles gpt-4o, gpt-4o-mini, o1-preview et o1-mini. Il n'est en revanche pas supporté avec gpt-4o-2024-05-13 and chatgpt-4o-latest.

Maximiser l'efficacité du prompt caching

Pour maximiser l'efficacité du prompt caching, OpenAI recommande de suivre une structure stricte pour chaque prompt adressé via l'API. La longueur du prompt doit être d'au moins 1024 tokens. Il est conseillé d'utiliser une taille totale de prompt qui soit proche d'un multiple de 128. Exemple : 1152, 1280, 1408 ou 1536 tokens. De même les informations fixes et non variables doivent être situées en premier dans le prompt et celles variables à la fin. A noter que les images et les tools d'OpenAI peuvent également être encapsulés dans le cache. Il est donc recommandé de ne pas les modifier entre plusieurs requêtes.

Une image contenant texte, capture d’écran, Police, conceptionDescription générée automatiquement
© OpenAI

Le prompt cache fonctionne chez OpenAI pour les requêtes similaires adressées dans un délai de 5 à 10 minutes.  Pour bénéficier du cache prompt, OpenAI préconise donc de grouper les requêtes sur un temps limité. Difficile à tenir cependant dans le cadre d'un chatbot où les requêtes sont adressées par les utilisateurs de manière plus ou moins aléatoire. Il est possible d'envoyer des requêtes de maintien avec uniquement le prompt fixe pour garder le cache actif.

OpenAI précise également que les caches peuvent parfois persister jusqu'à une heure pendant les périodes creuses. Cette définition, bien que floue, pourrait correspondre aux périodes de moindre sollicitation de l'API, particulièrement aux Etats-Unis. En France cela pourrait correspondre à un créneau de 5 heures du matin à 15 heures (début de l'activité aux Etats-Unis, en Californie).  

Monitorer l'utilisation du cache prompt

Pour laisser les développeurs optimiser au maximum leur prompt dans le cache prompt, OpenAI leur met à disposition des métriques dans le retour de la requête. C'est donc le paramètre "cached_tokens" qu'il faudra scruter, présent dans "usage -> prompt_tokens_details". En surveillant cette valeur à chaque requête, les développeurs peuvent quantifier précisément l'efficacité de leur stratégie de mise en cache. De plus, en comparant le nombre total de tokens du prompt avec le nombre de tokens mis en cache, il est possible de calculer un pourcentage de mise en cache qui donne une bonne idée de l'optimisation.

Une image contenant texte, capture d’écran, logiciel, multimédiaDescription générée automatiquement
© Capture d'écran / JDN

Les tokens réutilisés bénéficient d'une tarification spéciale jusqu'à deux fois moins chère. Par exemple, avec gpt-4o-2024-08-06, les tokens non mis en cache coûtent 2,50 dollars pour 1 000 tokens, tandis que les tokens en cache ne coûtent que 1,25 dollar pour 1 000 tokens. Une réduction appliquée automatiquement.

Modèle

Coût pour 1 000 tokens d'entrée non mis en cache

Coût pour 1 000 tokens d'entrée mis en cache

gpt-4o-2024-08-06

2,50 $

1,25 $

GPT-4o fine-tuning

3,75 $

1,875 $

gpt-4o-mini-2024-07-18

0,15 $

0,075 $

GPT-4o mini fine-tuning

0,30 $

0,15 $

o1-preview

15,00 $

7,50 $

o1 mini

3,00 $

1,50 $

Les économies peuvent être particulièrement importantes pour les modèles plus avancés comme o1-preview, où la différence de prix entre les tokens en cache (7,50 dollars pour 1000 tokens) et non mis en cache (15,00 pour 1000 tokens) est considérable.