Accueil / Documentation / Maîtrise des coûts

Maîtrise des coûts

Où vont réellement les tokens dans une charge de travail agentique, et les quatre leviers qui font varier la facture.

Si vous avez utilisé un agent de programmation pendant une journée de travail complète, vous avez vu la facture. Les boucles agentiques consomment des tokens dans des proportions que les conversations ordinaires n’atteignent jamais : chaque fichier lu, chaque résultat d’outil et chaque diff entre dans le contexte et est renvoyé au tour suivant.

Les tokens de sortie sont les plus coûteux

Pour chaque modèle de pointe, la sortie coûte 4–5× plus cher que l’entrée. Un modèle qui raisonne à voix haute dans sa réponse finale dépense plus vite qu’un modèle qui répond de façon concise. Limitez max_tokens de manière délibérée et privilégiez les modèles concis pour les tâches courantes.

Modèle$/M en entrée$/M en sortieRapport
claude-opus-4-8$3$155×
claude-sonnet-4-6$0.90$4.505×
claude-haiku-4-5$0.40$25×
gemini-3-flash$0.20$1.206×

Les quatre leviers

  1. Orientez les requêtes selon la tâche. La classification, l’extraction et le routage ne nécessitent pas Opus : Haiku s’en charge pour environ un septième du prix. Réservez le modèle phare aux tâches exigeant un raisonnement approfondi.
  2. Mise en cache des prompts. Les prompts système stables et les définitions d’outils sont relus depuis le cache pour une fraction du prix de l’entrée. Pour les agents, c’est le levier le plus important : voir Mise en cache des prompts.
  3. Réduisez le contexte à chaque tour. Ne renvoyez pas l’intégralité de la conversation ; conservez les échanges récents et un résumé mis à jour au fil des échanges. C’est la croissance illimitée du contexte qui fait passer une session de 2 $ à 20 $.
  4. Limitez la boucle. Fixez une limite stricte au nombre d’étapes des exécutions autonomes pour qu’un agent bloqué ne puisse pas tourner indéfiniment.

Estimer avant l’exécution

IN_RATE  = {class="s">"claude-opus-4-8": 3.0,  class="s">"claude-sonnet-4-6": 0.9, class="s">"claude-haiku-4-5": 0.4}
OUT_RATE = {class="s">"claude-opus-4-8": 15.0, class="s">"claude-sonnet-4-6": 4.5, class="s">"claude-haiku-4-5": 2.0}

def cost(model, tok_in, tok_out):
    return tok_in / 1e6 * IN_RATE[model] + tok_out / 1e6 * OUT_RATE[model]

print(cost(class="s">"claude-opus-4-8",   20_000, 2_000))   class=class="s">"c"># 0.09
print(cost(class="s">"claude-sonnet-4-6", 20_000, 2_000))   class=class="s">"c"># 0.027
print(cost(class="s">"claude-haiku-4-5",  20_000, 2_000))   class=class="s">"c"># 0.012

Une même tâche avec 20K en entrée et 2K en sortie coûte 7.5× plus cher sur Opus que sur Haiku. Pour une tâche de classification, ce surcoût n’apporte rien.

Mesurer après l’exécution

Chaque réponse contient un usage objet. Consignez-le avec un identifiant de requête et un type de tâche : sans cela, l’optimisation des coûts repose sur des suppositions. Le tableau de bord de la passerelle affiche l’utilisation par modèle, mais seuls vos propres journaux indiquent *pourquoi* une requête a été effectuée.

L’erreur coûteuse la plus fréquente n’est pas le choix du modèle : c’est le renvoi d’une conversation toujours plus longue à chaque tour d’une longue session d’agent. Maîtrisez d’abord la croissance du contexte, puis ajustez le choix des modèles.