Mise en cache des invites : comment réduire les coûts des appels répétés
Si votre application envoie le même gros morceau de texte au début de chaque requête, une longue invite système, un document, un ensemble d'exemples, vous payez le prix fort pour le retraiter à chaque fois. La mise en cache rapide permet au fournisseur de stocker cette partie répétée et de vous facturer beaucoup moins pour la réutiliser. Bien utilisé, il peut réduire considérablement les coûts d’entrée sur les charges de travail répétitives.
Ce que fait réellement la mise en cache des invites
Lorsqu'un modèle traite votre entrée, la majeure partie du travail s'effectue sur les jetons d'entrée avant de générer un seul mot de sortie. La mise en cache des invites enregistre l'état traité d'un préfixe de votre invite afin qu'un préfixe identique n'ait pas besoin d'être traité à nouveau lors du prochain appel.
Le mot clé est préfixe. La mise en cache fonctionne au début de votre invite, jusqu'au point où le contenu commence à différer. Si les 5 000 premiers jetons de chaque requête sont identiques (par exemple, un bloc d'instructions fixe plus un document de référence), ces jetons peuvent être mis en cache, tandis que la question unique de l'utilisateur à la fin est traitée normalement.
Pourquoi cela permet d'économiser de l'argent
Les fournisseurs facturent beaucoup moins pour les jetons lus à partir du cache que pour les jetons nouvellement traités. Une structure courante est que les jetons d'entrée mis en cache coûtent une petite fraction du taux d'entrée normal, souvent autour d'un dixième, bien que la remise exacte varie selon le fournisseur.
Voici un exemple illustratif (tarifs inventés pour plus de clarté). Supposons que l'entrée coûte normalement 3 $ par million de jetons et que les lectures en cache coûtent 0,30 $ par million. Si vous envoyez une invite fixe de 10 000 jetons sur 1 000 appels, son traitement à chaque fois coûte 10 000 x 1 000 = 10 millions de jetons x 3 $ = 30 $. Avec la mise en cache, le premier appel paie le plein tarif et le reste est lu à partir du cache : environ 10 000 x 3 $/million + 9,99 millions x 0,30 $/million, soit près de 3 $. C'est l'ampleur de la sauvegarde des préfixes répétitifs rendue possible.
Il y a généralement un coût d'écriture et une limite de temps
La mise en cache n’est pas purement gratuite. La plupart des fournisseurs facturent une petite prime pour écrire contenu dans le cache la première fois, parfois environ 25 % au-dessus du taux d'entrée normal pour ces jetons. Vous récupérez cela lors des lectures ultérieures, donc la mise en cache n'est payante que lorsque le même préfixe est réutilisé suffisamment de fois.
Les caches expirent également. Une durée de vie typique est de quelques minutes d'inactivité, certains fournisseurs proposant une rétention plus longue moyennant un coût supplémentaire. Si vos appels sont très espacés dans le temps, le cache peut expirer entre eux et vous en perdez l'avantage. La mise en cache récompense la réutilisation massive et à haute fréquence du même contenu.
La mise en cache permet d'économiser de l'argent, pas de l'espace contextuel
Une idée fausse courante est qu'un préfixe mis en cache est d'une manière ou d'une autre exclu de la fenêtre contextuelle du modèle, laissant plus de place à d'autres contenus. Ce n’est pas le cas. Les jetons mis en cache font toujours partie de la demande et sont toujours pris en compte dans la limite de contexte totale du modèle. Le fournisseur les lit à partir d'un état stocké au lieu de les retraiter, mais ils occupent le même budget de contexte que s'ils avaient été traités à nouveau.
La mise en cache réduit ce que vous payez et combien de temps vous attendez que ces jetons soient traités. Cela n'indique pas la quantité de texte que le modèle peut voir en même temps. Si vous atteignez une limite de fenêtre contextuelle, la mise en cache ne résoudra pas le problème, vous devez toujours réduire l'historique, le résumer ou passer à un modèle avec une fenêtre plus grande. La mise en cache n'est utile que lorsque votre invite est déjà adaptée.
Il en va de même pour les limites de débit de jetons par minute chez la plupart des fournisseurs : les jetons mis en cache sont généralement toujours pris en compte dans votre quota de jetons par minute, même au prix réduit. Une charge de travail mise en cache à volume élevé peut toujours être limitée en débit même si la facture est faible, car le limiteur surveille le nombre de jetons, pas les dollars.
Quand la mise en cache en vaut la peine
La mise en cache rapide présente des modèles spécifiques :
- Invites système longues et fixes réutilisé par de nombreux utilisateurs ou demandes.
- Questions et réponses sur les documents où un document volumineux est interrogé plusieurs fois au cours d'une session.
- Invite à quelques tirs avec un gros bloc d'exemples qui ne change jamais.
- Chatbots où les premiers tours de conversation restent constants tandis que de nouveaux tours sont ajoutés.
Cela n'en vaut pas la peine lorsque chaque requête est unique, lorsque votre préfixe fixe est petit (quelques centaines de jetons) ou lorsque les appels sont rares et éloignés les uns des autres et que le cache continue d'expirer.
Comment structurer les invites pour la mise en cache
La règle d'or est la suivante : mettre le contenu stable en premier, le contenu variable en dernier. Organisez votre invite de manière à ce que les instructions système, les documents de référence et les exemples inchangés se trouvent en haut et que la question spécifique de l'utilisateur soit en bas. Étant donné que la mise en cache fonctionne sur le préfixe partagé, toute variation proche du début interrompt le cache pour tout ce qui suit.
Évitez de saupoudrer de valeurs dynamiques (horodatages, noms d'utilisateur, identifiants aléatoires) dans la première partie de l'invite. Même un seul caractère modifié au début peut invalider le cache. Conservez ces bits dynamiques dans la queue de la requête à leur place.
Estimation du gain
Pour décider si la mise en cache est utile, comparez deux nombres : la taille de votre préfixe fixe en jetons et le nombre de fois que vous le réutilisez dans la fenêtre de cache. Plus il y a de jetons dans le préfixe et plus vous le réutilisez, plus le gain est important. Un petit préfixe réutilisé deux fois ne sauve presque rien ; un préfixe de 20 000 jetons réutilisé des centaines de fois par heure est l'endroit où la mise en cache transforme votre facture.
Vous pouvez modéliser les deux scénarios dans le calculateur de coût LLM en comparant une exécution entièrement tarifée au taux d'entrée standard à une exécution dans laquelle la plupart des jetons d'entrée sont tarifés au taux mis en cache. Voir les deux totaux côte à côte rend la décision évidente, et les pages de comparaison de modèles montrent quels fournisseurs publient les prix des jetons mis en cache.
Continuer à apprendre
Outils associés
Questions fréquemment posées
La mise en cache des invites modifie-t-elle la sortie du modèle ?
Non. La mise en cache réutilise uniquement l’état d’entrée traité pour réduire les coûts et la latence. Le modèle produit le même résultat qu’il aurait sans mise en cache, car les jetons sous-jacents sont identiques.
Combien de temps une invite mise en cache reste-t-elle valide ?
Cela varie selon le fournisseur, mais une valeur par défaut courante est quelques minutes d'inactivité avant l'expiration du cache. Certains fournisseurs proposent une rétention prolongée moyennant des frais supplémentaires. Une réutilisation fréquente maintient le cache au chaud.
Y a-t-il un risque à mettre en cache des données sensibles ?
Le contenu mis en cache est lié à votre compte et utilisé uniquement pour répondre à vos propres demandes répétées, mais vous devez toujours suivre les politiques de données de votre fournisseur et éviter de mettre en cache tout ce que vous n'êtes pas autorisé à stocker.
La mise en cache des invites me permet-elle d'insérer davantage de contenu dans la fenêtre contextuelle ?
Non. Les jetons mis en cache sont toujours pris en compte dans la limite de contexte totale du modèle et sont généralement toujours pris en compte dans votre limite de débit de jetons par minute. La mise en cache réduit le coût et la latence des jetons qui correspondent déjà à votre budget contextuel, mais n'augmente pas ce budget.
Uniquement éducatif – pas de conseils financiers.