Garder la mémoire active des agents IA peut les rendre moins chers : comment fonctionne la mise en cache des chatbots

Alexis Tremblay
Alexis Tremblay

UN agent d’intelligence artificielle il ne passe pas tout son temps à générer des réponses. Il peut démarrer un programme, consulter un service externe, exécuter un test ou arrêter d’attendre l’autorisation de l’utilisateur. Pendant ces pauses, on risque cependant de perdre un raccourci qui permet aux modèles linguistiques de travailler plus rapidement et à moindre coût : le cache d’invite.

Une étude publiée sur arXiv propose de le maintenir actif grâce à de courts signaux périodiques, appelés rester en vie. Lors de tests réalisés avec les services d’Anthropic, OpenAI, Google et DeepSeek, cette technique a permis de conserver une grande partie du préfixe déjà traité dans le cache du chatbot même lors de pauses suffisamment longues pour normalement provoquer sa suppression. Dans le cas le plus favorable, le coût de la demande unique envoyée après la pause peut être réduit par un facteur maximum de 12,5. Cependant, la commodité globale dépend du temps passé, de la plateforme utilisée et de la fréquence à laquelle les keepalives sont effectués.

Qu’est-ce que la mise en cache rapide et pourquoi rend-elle l’IA plus efficace

Lorsqu’une requête est envoyée à un modèle de langage volumineux, le système doit d’abord analyser le texte reçu. Les instructions, les messages précédents et tous les documents sont divisés en jetons, c’est-à-dire en petites unités, et transformés en un état interne pouvant être utilisé pour produire la réponse. Cette phase initiale est appelée préremplir.

Dans les longues conversations, une grande partie du contenu reste la même d’un appel à l’autre. Pour éviter de répéter à chaque fois les mêmes calculs, les fournisseurs peuvent stocker temporairement les préfixe déjà traitéc’est-à-dire la partie initiale de l’invite qui reste la même entre une requête et la suivante. Le modèle ne doit donc traiter que la partie ajoutée.

Il ne s’agit pas de la mémoire à long terme avec laquelle un chatbot peut mémoriser les préférences ou les informations sur l’utilisateur. Il s’agit d’un mécanisme technique, comparable au fait de laisser sur le bureau des documents qui seront encore nécessaires et tant qu’ils restent disponibles, il n’est pas nécessaire de les préparer à nouveau.

Dans les services examinés dans l’étude, les jetons récupérés du cache peuvent coûter beaucoup moins cher que ceux traités à partir de zéro dans certains cas. environ un dixième. Il faut également moins de temps au système pour commencer à générer la réponse.

Pourquoi les pauses des agents IA peuvent augmenter les coûts

Le problème apparaît surtout dans les systèmes agentiques, dont le cycle de travail peut être résumé en trois phases : réfléchissez, agissez et attendez. Après avoir déterminé l’action à effectuer, l’agent utilise un outil externe. Il pourrait par exemple compiler du code, lancer une série de tests, interroger une base de données ou demander une confirmation avant d’envoyer un email.

Ces tâches peuvent prendre plusieurs minutes. Pendant ce temps, le stockage temporaire associé au préfixe reste inutilisé et le fournisseur peut le supprimer pour libérer des ressources.

Si la copie a été supprimée entre-temps, lorsque la requête suivante arrive, le système il n’est plus en mesure de récupérer les calculs déjà effectuésmême si la chronologie de la conversation est restée presque identique. Le contexte est toujours présent et l’agent n’a pas oublié la tâche à réaliser, mais le pré-remplissage doit être réexécuté.

La conséquence devient pertinente lorsque l’historique comprend des dizaines de milliers de tokens et que la même dynamique se répète plusieurs fois. Chaque suppression du préfixe du cache entraîne un nouvelle phase de préremplissageavec une augmentation des dépenses et du temps nécessaire pour que la réponse commence à apparaître.

Comment fonctionne Keepalive et ce que l’étude a montré

La solution analysée est composée de renvoyer le même préfixe en attendantdemandant au modèle de générer le minimum de nouveau contenu possible. Chaque signal renouvelle la permanence des données dans le cache, empêchant la plateforme d’éliminer l’état interne produit lors du traitement de l’invite. Le principe n’est pas sans rappeler les messages keepalive utilisés dans les connexions réseau pour communiquer qu’une session est toujours active.

Pour tester l’efficacité de la technique, ils ont été utilisés Contextes de 40 000 et 100 000 jetonsen introduisant des pauses de 1, 5 et 10 minutes. Dans une partie des tests, aucun signal n’a été envoyé pendant l’intervalle, tandis que dans les autres, le préfixe a été présenté à nouveau. toutes les 30 secondes.

Des mesures ont également été effectuées jusqu’à 40 minutes, dans le but d’identifier le moment où chaque service avait tendance à supprimer les données conservées.

Avec keepalives activé, une part médiane de au moins 98 % des jetons d’invite.

Lors des tests, le préfixe a été complètement expulsé du cache d’Anthropic après environ 6 minutes, alors que sur DeepSeek, cela s’est produit en 10 minutes. Dans le cas d’OpenAI, il est devenu complètement « froid » au bout d’une demi-heure.

Les résultats pour Google étaient moins simples. La plateforme n’a pas montré de point d’expiration stable, probablement parce que les requêtes pouvaient être acheminées vers différentes machines. Les pings ont augmenté la probabilité de trouver des données, mais une fenêtre de commodité économique n’a pas pu être identifiée avec autant de précision.

Quand garder le cache « au chaud » est vraiment payant

Garder le préfixe actif n’est pas toujours avantageux. En effet, chaque signal consomme des ressources et, s’il est envoyé trop souvent, la dépense supplémentaire peut dépasser les économies obtenues en évitant de nouveaux traitements.

L’étude montre que l’intervalle de 30 secondes utilisé dans les tests était environ huit fois plus cher que nécessaire pour Anthropic. Pour réduire le gaspillage, il faut attendre le plus longtemps possible sans dépasser la durée pendant laquelle le fournisseur conserve les données avec suffisamment de certitude.

Sur la base des mesures, si vous choisissez d’utiliser keepalive, l’intervalle le plus efficace serait environ 4 minutes pour Anthropic et DeepSeek et 8 minutes pour OpenAI. Ces valeurs incluent une marge de sécurité par rapport au délai observé.

La durée globale de la pause joue également un rôle déterminant. Si la pause est très courte, le contenu reste quand même disponible et le keepalive ne représente qu’un coût supplémentaire. Toutefois, si l’attente se prolonge excessivement, la somme des signaux peut devenir plus coûteuse qu’un seul nouveau pré-remplissage.

Il existe donc une plage intermédiaire dans laquelle garder le cache « au chaud » est vraiment pratique. Lors d’une pause de 30 minutes avec un contexte de 100 000 jetons, compte tenu des pings et de la demande de suivi, la technique a réduit les dépenses par un facteur de 1,56 sur Anthropic et jusqu’à 2,45 sur OpenAIen utilisant l’intervalle le plus approprié pour chaque plateforme.

Sur DeepSeek, le prix d’un nouveau traitement était déjà si bas que la série de pings n’était pas pratique. Pour Google, cependant, l’absence d’échéance prévisible ne lui a pas permis de calculer une stratégie aussi précise.

La valeur maximale de 12,5 fois concerne le coût de la prochaine demande et découle de la comparaison entre le cas dans lequel le préfixe est encore disponible et celui dans lequel l’ensemble du contexte doit être traité à partir de zéro. Compte tenu également des signaux envoyés pendant l’attente, l’avantage économique de l’opération complète est plus limité.

Cependant, la technique offre un avantage supplémentaire : dans les services où la copie en cache avait été supprimée, le keepalive réduisait considérablement le temps nécessaire pour commencer à générer la réponse.

Parce que cette solution pourrait ne pas durer éternellement

Préserver l’état interne peut être pratique pour le développeur individuel, mais pourrait devenir plus problématique si la technique se généralise. Les espaces de cache disponibles sont partagés et, si chaque agent envoyait continuellement des signaux, de nombreux préfixes apparaîtraient toujours récents et devraient donc être préservés, augmentant ainsi la pression sur les infrastructures des plateformes.

Pour cela, les fournisseurs pourraient introduire des délais absolus, des quotas pour chaque compte ou des frais spécifiques en fonction du nombre de jetons conservés en mémoire par heure.

L’ouvrage constitue également une pré-publication et a certaines limites. Les mesures décrivent les conditions observées avec un seul système de test. Les tests sur Google ont été réduits en fonction des quotas disponibles, tandis que DeepSeek a été examiné via un service intermédiaire spécifique.

Cependant, les résultats montrent que, dans les activités composées d’actions et de temps morts, la préservation du contexte déjà élaboré peut éviter des calculs répétés. Toutefois, pour réaliser de réelles économies, la fréquence des keepalives doit être adaptée au comportement et aux prix de chaque plateforme.