Contrôle des coûts LLM pour les agents : 5 garde-fous pour limiter les dépenses
Cinq garde-fous qui empêchent un agent IA de dépenser le budget de votre mois en un après-midi, un exemple chiffré d'une boucle incontrôlée de 200 étapes sur chaque modèle phare, et un exécuteur Python de 30 lignes qui s'arrête à un plafond de dollars.
Le texte de l'article comporte la date de vérification. Le tableau des tarifs ci-dessous est reconstruit à partir du catalogue en direct à chaque déploiement.
Victoire la plus rapide
Le coût de l'agent croît avec le carré du nombre d'étapes, car chaque étape renvoie tout ce qui la précède. Une exécution saine de 12 étapes sur Claude Sonnet 5 coûte environ $0.39 ; le même agent coincé dans une boucle de 200 étapes lit 36.7 millions de tokens d'entrée et coûte environ $74, et $185 sur Claude Opus 5. Un budget en dollars par exécution calculé à partir des champs d'utilisation sur chaque réponse, avec un plafond d'étapes strict, est le seul garde-fou qui s'adapte aux dégâts.
La réponse courte sur la limitation des dépenses des agents
Un agent sain de 12 étapes exécuté sur Claude Sonnet 5 coûte environ 0,39 $. Le même agent bloqué dans une boucle de 200 étapes coûte environ 74 $, car son contexte croît de 1 800 tokens par étape et chaque étape renvoie tout ce contexte : 36,7 millions de tokens d'entrée au total. Sur Claude Opus 5 ou GPT-5.5, la même boucle coûte environ 185 $. Cinq garde-fous l'arrêtent : max_tokens par appel, un plafond d'étapes par exécution, une condition d'arrêt explicite, un budget en dollars par exécution calculé à partir des champs usage de chaque réponse, et un plafond quotidien dans la console du fournisseur.
Les trois premiers tiennent en une ligne chacun. Le quatrième est l'exécuteur de 30 lignes ci-dessous. Le cinquième est un paramètre de console. Appliquez les cinq, car chacun rattrape une défaillance que les autres manquent.
Comment les boucles incontrôlées se produisent
Les agents ne tombent généralement pas en panne en produisant une seule réponse énorme. Ils tombent en panne en répétant une petite étape, apparemment raisonnable, encore et encore. Les modes de défaillance que nous voyons le plus souvent :
- Un outil qui renvoie un message d'erreur que le modèle traite comme une invite à réessayer, avec les mêmes arguments, indéfiniment
- Une instruction « vérifiez votre travail » que le modèle satisfait en réexécutant toute la tâche
- Un outil de recherche qui renvoie des résultats légèrement différents à chaque appel, de sorte que le modèle n'a jamais l'impression d'avoir terminé
- Deux agents qui se renvoient une tâche, chacun croyant que l'autre est responsable de la terminer
- Un
stop_reasondemax_tokensque le code de la boucle traite comme « rappeler » au lieu de « quelque chose ne va pas »
Aucun de ces scénarios ne semble coûteux à l'étape 5. Ils le deviennent à l'étape 80, lorsque le contexte atteint 147 000 tokens et que chaque étape coûte plus que les vingt premières réunies. Les mécanismes de cette croissance sont détaillés dans [combien coûte l'exécution d'un agent IA](/guides/how-much-does-an-ai-agent-cost-to-run).
Ce que coûte une boucle de 200 étapes sur chaque modèle phare
Trace de référence : préfixe de 4 000 tokens, tâche de 500 tokens, chaque étape ajoute un appel d’outil de 300 tokens et un résultat de 1 500 tokens. Entrée à l’étape k : 4 500 + 1 800 × (k − 1). Somme sur 200 étapes : 200 × 4 500 + 1 800 × 19 900 = 36 720 000 tokens d’entrée. Sortie : 200 × 300 = 60 000 tokens. Contexte à l’étape 200 : 362 700 tokens, ce qui tient dans une fenêtre de 1M ; un modèle à 200K comme l’ancien Claude Haiku 4.5 échouerait autour de l’étape 109, ce qui est une barrière accidentelle, pas un plan.
| Modèle ($/1M entrée / sortie) | Coût entrée | Coût sortie | Total 200 étapes | Exécution saine de 12 étapes |
|---|---|---|---|---|
| Claude Sonnet 5 (2 $ / 10 $) | 36,72M × 2 $ = 73,44 $ | 60 000 × 10 $ = 0,60 $ | 74,04 $ | 0,39 $ |
| Claude Opus 5 (5 $ / 25 $) | 36,72M × 5 $ = 183,60 $ | 60 000 × 25 $ = 1,50 $ | 185,10 $ | 0,98 $ |
| GPT-5.4 (2,50 $ / 15 $) | 36,72M × 2,50 $ = 91,80 $ | 60 000 × 15 $ = 0,90 $ | 92,70 $ | 0,50 $ |
| GPT-5.5 (5 $ / 30 $) | 36,72M × 5 $ = 183,60 $ | 60 000 × 30 $ = 1,80 $ | 185,40 $ | 1,01 $ |
| Gemini 3.1 Pro (2 $ / 12 $) | 36,72M × 2 $ = 73,44 $ | 60 000 × 12 $ = 0,72 $ | 74,16 $ | 0,40 $ |
| Gemini 3.8 Flash (0,75 $ / 3,75 $) | 36,72M × 0,75 $ = 27,54 $ | 60 000 × 3,75 $ = 0,23 $ | 27,77 $ | 0,15 $ |
| DeepSeek V4.1 Flash (0,30 $ / 1,20 $) | 36,72M × 0,30 $ = 11,02 $ | 60 000 × 1,20 $ = 0,07 $ | 11,09 $ | 0,058 $ |
Dix-sept fois les étapes, environ 190 fois le coût. Avec la mise en cache des prompts (lectures de cache à environ 10 % du prix catalogue, écritures à environ 125 % chez Anthropic), la boucle Sonnet 5 devient 362 700 × 2,50 $ + 36 357 300 × 0,20 $ + 0,60 $ = environ 8,78 $. La mise en cache vaut la peine, comme le montre [la mise en cache des prompts pour les agents IA](/guides/prompt-caching-for-ai-agents), mais 22 fois une exécution saine reste une facture qui se remarque. DeepSeek V4.1 Flash, nom d’API deepseek-flash, a remplacé V4 Flash, que DeepSeek a retiré. Les lignes DeepSeek utilisent les tarifs de pointe ; les heures creuses coûtent moitié moins. Tarifs DeepSeek vérifiés le 2026-10-27 sur api-docs.deepseek.com.
Les cinq garde-fous
1. max_tokens par appel. Dimensionnez-le pour l'étape, pas pour le plafond du modèle. Une étape d'appel d'outil a besoin de 512 à 2 048 tokens ; un rapport final peut nécessiter 4 000. Une seule réponse incontrôlée de 32 000 tokens sur Opus 5 coûte 32 000 × 25 $ = 0,80 $ à elle seule, et elle reste ensuite dans le contexte pour chaque étape ultérieure.
2. Nombre maximal d'étapes par exécution. Choisissez un nombre à partir de vos traces : le p95 des exécutions réussies plus une marge. Pour la plupart des boucles d'outils, cela se situe entre 15 et 30. Une exécution qui atteint le plafond doit échouer bruyamment, pas renvoyer silencieusement ce qu'elle avait.
3. Une condition d'arrêt explicite. Donnez au modèle un outil finish ou report et terminez la boucle lorsqu'il est appelé ou lorsque stop_reason est end_turn. Détectez également les progrès dégénérés : le même outil appelé avec les mêmes arguments deux fois de suite est une boucle, et l'exécution doit être interrompue.
4. Un budget en USD par exécution à partir de usage. Chaque réponse signale les tokens d'entrée, mis en cache et de sortie. Multipliez par les tarifs du modèle, accumulez et interrompez lorsque le total dépasse le plafond. C'est le seul garde-fou dont le seuil est dans l'unité qui vous importe réellement.
5. Un plafond de compte quotidien dans la console du fournisseur. Anthropic et OpenAI vous permettent de définir des limites de dépenses par espace de travail ou projet avec des alertes ; les budgets Google Cloud alertent et peuvent être configurés pour arrêter les dépenses. C'est la sécurité ultime pour le bug auquel vous n'avez pas encore pensé.
Ce que coûtent les tentatives et le backoff
Les SDK clients réessayent les limites de débit et les erreurs serveur par défaut, généralement deux ou trois tentatives avec backoff exponentiel. Une requête rejetée n'est généralement pas facturée, mais une requête qui expire après le début de la génération l'est souvent, et une nouvelle tentative au niveau de l'application d'une étape renvoie tout le contexte à nouveau.
À l'étape 100 de la boucle de référence, le contexte est de 4 500 + 99 × 1 800 = 182 700 tokens. Une tentative sur Sonnet 5 sans cache coûte 182 700 × 2 $ = 0,37 $ ; trois tentatives coûtent 1,10 $ pour zéro progrès. Avec cache, chaque tentative coûte environ 0,04 $. Deux règles s'ensuivent : conservez le nombre de tentatives du SDK, ne l'enveloppez jamais dans votre propre boucle de tentatives, et si vous devez réessayer une exécution échouée depuis le début, comptez-la dans le même budget par exécution plutôt que d'en démarrer une nouvelle.
Un BudgetedRunner en 30 lignes
Ce runner Python pilote une boucle d'outils Claude et s'arrête lorsque le plafond en dollars ou le nombre d'étapes est atteint. La même structure fonctionne sur OpenAI avec responses.create et usage.input_tokens_details.cached_tokens.
from anthropic import Anthropic
PRICES = {"claude-sonnet-5": (2.0, 2.5, 0.2, 10.0)} # $/1M : entrée, écriture cache, lecture cache, sortie
class BudgetedRunner:
def __init__(self, model, system, tools, budget_usd, max_steps=25):
self.client, self.model, self.system, self.tools = Anthropic(), model, system, tools
self.budget, self.max_steps, self.spent = budget_usd, max_steps, 0.0
def cost(self, u):
i, w, r, o = PRICES[self.model]
return (u.input_tokens * i + (u.cache_creation_input_tokens or 0) * w
+ (u.cache_read_input_tokens or 0) * r + u.output_tokens * o) / 1e6
def run(self, messages, execute_tool):
for step in range(1, self.max_steps + 1):
resp = self.client.messages.create(model=self.model, max_tokens=1024,
system=self.system, tools=self.tools, messages=messages)
self.spent += self.cost(resp.usage) # ex. 24 300 entrées × 2 $ + 300 sorties × 10 $ = 0,052 $
if self.spent > self.budget:
raise RuntimeError(f"budget ${self.budget} dépassé à l'étape {step} : ${self.spent:.3f}")
messages.append({"role": "assistant", "content": resp.content})
if resp.stop_reason != "tool_use":
return resp, self.spent
results = [{"type": "tool_result", "tool_use_id": b.id,
"content": execute_tool(b.name, b.input)}
for b in resp.content if b.type == "tool_use"]
messages.append({"role": "user", "content": results})
raise RuntimeError(f"limite d'étapes {self.max_steps} atteinte après ${self.spent:.3f}")Définissez budget_usd à partir de vos traces : trois fois la médiane des exécutions réussies est un bon point de départ. Pour l'exécution de référence Sonnet 5, cela représente environ 1,20 $, que la boucle de 200 étapes atteindrait à l'étape 24, soit environ 73 $ avant que la console ne s'en aperçoive.
Comment alerter avant l'arrivée de la facture
Un budget arrête une exécution. L'alerte vous indique que les exécutions ont commencé à en avoir besoin.
- Enregistrez le coût par exécution, pas par appel, avec le modèle, le nombre d'étapes et la raison d'arrêt
- Étiquetez chaque exécution avec la fonctionnalité ou le client qui l'a déclenchée, afin qu'un pic ait un propriétaire
- Alertez sur le coût p99 par exécution et sur la proportion d'exécutions qui atteignent la limite d'étapes ou le budget ; les deux qui augmentent ensemble signifient un nouveau mode de défaillance, pas une journée chargée
- Reconciliez chaque semaine avec le rapport d'utilisation du fournisseur, car un bug du runner qui sous-compte les tokens est lui-même une fuite
Si vous passez par OpenRouter, les limites de crédit par clé vous donnent un second plafond indépendant du fournisseur ; les compromis sont dans [OpenRouter vs API directe](/compare/openrouter-vs-direct-api).
Le modèle le moins cher qui fait encore cela, et quand payer pour le flagship
Les garde-fous limitent les dégâts ; le choix du modèle définit la pente. Pour une boucle bien spécifiée, DeepSeek V4.1 Flash ($0.30 / $1.20) transforme le désastre de 200 étapes en une annoyance de $11 et Gemini 3.8 Flash ($0.75 / $3.75) en $28. D'après notre expérience, les deux sont fiables pour les appels d'outils structurés lorsque la tâche est claire, et l'article [Gemini agent API cost](/guides/gemini-agent-api-cost) couvre le côté Gemini.
Payez pour Claude Sonnet 5, GPT-5.4 ou un modèle phare lorsque la tâche est ambiguë ou la boucle longue, car ce sont les exécutions où un modèle bon marché est le plus susceptible de divaguer, et la divagation est ce que le tableau ci-dessus tarifie. Quel que soit votre choix, l'exécuteur ci-dessus fonctionne inchangé ; seule la ligne PRICES diffère. Tarifez votre propre trace dans le [calculateur](/calculator) et consultez [Claude agent API cost](/guides/claude-agent-api-cost) pour les champs d'utilisation par fournisseur.
Points clés
- →Une boucle de 200 étapes représente 36.7M de jetons d'entrée : $74 sur Claud Sonnet 5, $93 sur GPT-5.4, $185 sur Opus 5 et GPT-5.5, $28 sur Gemini 3.8 Flash, $11 sur DeepSeek V4.1 Flash
- →C'est environ 190 fois le coût de l'exécution saine de 12 étapes, pour 17 fois le nombre d'étapes ; le coût est quadratique par rapport aux étapes
- →Cinq garde-fous : max_tokens par appel, nombre d'étapes max par exécution, une condition d'arrêt explicite, un budget en USD par exécution basé sur l'utilisation, et un plafond quotidien dans la console du fournisseur
- →Une nouvelle tentative à l'étape 100 renvoie environ 183 K tokens : 0,37 $ par tentative sur Sonnet 5 non mis en cache, environ 0,04 $ en cache
- →La mise en cache des prompts réduit le désastre de 200 étapes à environ 8,78 $ sur Sonnet 5, soit encore 22 fois une exécution saine
- →Enregistrez le coût par exécution et étiquetez les exécutions par fonctionnalité ; un p99 qui grimpe est votre premier avertissement
Contexte éditorial
À qui cela s'adresse-t-il ?
Développeurs et équipes de plateforme exécutant des agents appelant des outils en production qui ont besoin d'un plafond de dépenses qui tienne lorsqu'une exécution tourne mal.
Quand ne pas l'utiliser
Scripts ponctuels et notebooks où un humain surveille chaque étape ; les barrières de sécurité aident toujours, mais le budget par exécution est excessif.
Aperçus sur les prix
Le même agent coûte 0,39 $ pour 12 étapes et 74 $ pour 200 étapes sur Claude Sonnet 5, car chaque étape renvoie le contexte croissant.
Alternatives à considérer
Les limites d'espace de travail côté fournisseur, les limites de crédit par clé OpenRouter et un modèle de boucle moins cher réduisent tous l'exposition, mais aucun ne remplace un budget par exécution.
Verdict final
Mettez un plafond en dollars sur chaque exécution avant de mettre l'agent devant les utilisateurs. C'est 30 lignes de code et c'est la différence entre une exécution à 0,39 $ et une à 74 $.
Questions fréquemment posées
Comment limiter les dépenses d'un agent IA ?
Utilisez cinq contrôles ensemble : max_tokens sur chaque appel, un nombre d'étapes maximum par exécution, une condition d'arrêt explicite que le modèle peut déclencher, un budget en dollars par exécution calculé à partir de l'objet d'utilisation sur chaque réponse, et un plafond quotidien ou mensuel dans la console du fournisseur. Le budget par exécution est celui qui suit réellement les dégâts, car le coût de l'agent croît avec le carré du nombre d'étapes.
Que coûte une boucle d'agent incontrôlée ?
Une boucle de 200 étapes avec un contexte de départ de 4 500 jetons qui croît de 1 800 jetons par étape lit environ 36.7 millions de jetons d'entrée. Cela coûte environ $74 sur Claude Sonnet 5, $93 sur GPT-5.4, $185 sur Claude Opus 5 ou GPT-5.5, $28 sur Gemini 3.8 Flash et $11 sur DeepSeek V4.1 Flash aux taux de pointe. Une exécution saine de 12 étapes du même agent coûte environ $0.39 sur Sonnet 5.
Comment calculer le coût par exécution à partir de la réponse API ?
Chaque réponse contient un objet d'utilisation. Chez Anthropic, multipliez input_tokens, cache_creation_input_tokens, cache_read_input_tokens et output_tokens par leurs taux par million ; chez OpenAI, utilisez input_tokens, input_tokens_details.cached_tokens et output_tokens ; chez Gemini, utilisez usage_metadata. Faites la somme sur la boucle et arrêtez-vous lorsque le total dépasse votre limite.
Les tentatives coûtent-elles de l'argent ?
Une requête rejetée avec une erreur de limite de débit n'est généralement pas facturée, mais une requête qui expire après que le modèle a commencé à générer l'est généralement, et une nouvelle tentative au niveau de l'application d'une étape entière renvoie l'intégralité du contexte. À l'étape 100 de la boucle de référence, cela représente environ 183 000 tokens, soit environ 0,37 $ par tentative sur Claude Sonnet 5 sans cache. Définissez délibérément le nombre de tentatives du SDK et ne l'enveloppez jamais dans une autre boucle de tentatives.
Puis-je définir une limite de dépenses ferme dans la console du fournisseur ?
Oui, avec des différences. Anthropic et OpenAI permettent tous deux de définir des limites de dépenses par espace de travail ou projet avec des seuils d'alerte, et les requêtes échouent une fois qu'une limite ferme est atteinte. Les budgets Google Cloud alertent par défaut et nécessitent une configuration supplémentaire pour arrêter les dépenses. Considérez la limite de la console comme la dernière ligne, pas la première, car elle arrête toutes les exécutions, pas celle qui se comporte mal.
La mise en cache du prompt me protège-t-elle des boucles incontrôlées ?
Elle les atténue. Avec des lectures de cache à environ 10 % du prix catalogue, la boucle de 200 étapes de Claude Sonnet 5 passe d'environ 74 $ à environ 8,78 $. C'est encore 22 fois une exécution saine, donc la mise en cache est une optimisation des coûts, pas une barrière de sécurité. Gardez la limite d'étapes et le budget en dollars quoi qu'il arrive.
Related
Cours gratuits · sans inscription
Vous hésitez encore ? Apprenez d'abord les bases, puis revenez aux prix.