Retour aux guides
Coûts·25 mai 2026·Mis à jour le 30 septembre 2026·11 min de lecture

Optimisation des coûts de l’IA — le guide complet pour réduire de 70 à 90 % votre facture de LLM

Si vous dépensez plus de 1 000 $ par mois pour des API de LLM, ce guide vous en fera économiser au moins la moitié. Chaque technique est publiée avec des économies mesurées et du code exécutable. En combinant 3 à 5 de ces techniques, une réduction de 70 % est réaliste sans compromis sur la qualité.

Dernière vérification le .

Les cinq techniques se cumulent. Chacune réduit une partie différente de la facture — en en combinant trois, on atteint de manière réaliste une réduction de 70 % sans perte de qualité ; les cinq permettent de se rapprocher de 85 à 90 %. Ce guide présente le menu complet, avec des économies mesurées et du code exécutable pour chaque technique. Chaque technique renvoie vers une analyse approfondie dédiée en bas de page.

Les cinq techniques, classées par ROI

#TechniqueCe qu’elle réduitÉconomie réaliste
1Mise en cache des promptsJetons d’entrée dans les prompts répétés60 à 90 % de réduction sur le coût des entrées
2Routage par niveau de modèleTarif par appel pour les tâches simplesEnviron 10 fois moins cher
3Limites de sortieJetons de sortie, principal coût des tâches créativesLa sortie coûte 4 à 5 fois l’entrée
4Parallélisme + traitement par lotsTemps réel, pas le coût par jetonPermet des délais d’attente plus courts et moins de nouvelles tentatives
5Hygiène des nouvelles tentativesDépenses liées aux nouvelles tentatives incontrôléesLimite la traîne, pas la moyenne

1. Mise en cache des prompts — de loin la technique au meilleur ROI

Si votre prompt système dépasse 1 000 jetons et que vous appelez le même prompt plus de deux fois dans une fenêtre de 5 minutes, la mise en cache des prompts est de l’argent facile. Anthropic facture les entrées mises en cache à 10% du tarif des entrées (2,5 % pour Claude Fable 5.1, 5 % pour Claude Opus 5.5) ; OpenAI applique automatiquement l’équivalent à 10%. Un seul champ à ajouter :

cache_control.py
# Prompt caching: 1 extra field = 10% rate on cached input
resp = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=600,
    system=[{
        "type": "text",
        "text": LONG_SYSTEM_PROMPT,
        "cache_control": {"type": "ephemeral"},   # cache this part
    }],
    messages=[{"role": "user", "content": question}],
)

Économies réalistes : 60 à 90 % sur le coût des entrées si votre prompt système est volumineux et stable. Consultez votre tableau de bord /app/usage — si cache_read_input_tokens vaut 0, il vous reste 30 minutes de travail dont le retour sera permanent. Analyse approfondie.

2. Routage par niveau de modèle — utilisez le modèle le moins cher qui soit suffisamment performant

Claude Haiku 4.5 coûte environ 10 % de Claude Opus 4.7. Pour la classification, le formatage, les décisions de routage et les résumés simples, Haiku est largement suffisant. Réservez Opus aux appels nécessitant un raisonnement réellement difficile.

tiering.py
# Pick the cheapest model that's still good enough for the task.
# Escalate by difficulty: cheap (Haiku 4.5 / GPT-5.6 Terra) -> Sonnet 5 -> Opus 4.7
def pick_model(difficulty: int) -> str:
    if difficulty <= 2: return "claude-haiku-4-5"     # ~10x cheaper than Opus
    if difficulty <= 4: return "gpt-5-6-terra"        # a second family, cheap output
    if difficulty <= 7: return "claude-sonnet-5"
    return "claude-opus-4-7"

Comment construire la décision de routage par niveau : commencez par un petit classificateur (Haiku lui-même peut le faire avec 100 jetons d’entrée), puis routez. Mesurez la qualité des sorties avec des évaluations sur des données mises de côté. Ne laissez pas l’intuition décider : mesurez-la.

  • Niveau 0 (Haiku 4.5) : classification, extraction, traduction, résumé d’une entrée <2K — quelques centimes par appel
  • Niveau 1 (GPT-5.6 Terra) : résumés plus longs, complétion de code, utilisation simple d’outils — également quelques centimes, mais meilleur avec les longs contextes
  • Niveau 2 (Sonnet 5) : raisonnement réel, agents en plusieurs étapes, tâches de vision — le modèle de production polyvalent
  • Niveau 3 (Opus 4.7) : uniquement après avoir confirmé que Sonnet ne fournit pas une réponse correcte

3. Limites de sortie — limitez ce qu’ils génèrent, pas seulement ce qu’ils lisent

Les jetons de sortie coûtent généralement 4 à 5 fois plus cher que les jetons d’entrée. Une valeur par défaut max_tokens=4096 peu restrictive incite le modèle à s’étendre. Limitez-la fermement et utilisez des séquences d’arrêt pour couper au marqueur approprié :

caps.py
# Two-layer caps: per-call max_tokens + per-key wallet cap
client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[...],
    max_tokens=800,             # cap each call
    stop=["</answer>"],         # cut at terminator
)
# /app/keys → set "Spending limit" per key:
#   Production: $50/day · Experiment: $5/day · CI: $1/day

Associez la limite max_tokens par appel à un plafond de dépenses du portefeuille par clé dans /app/keys — une boucle incontrôlée ou un bug ne peut ainsi pas dépasser votre plafond quotidien. Deux couches, toutes deux importantes.

4. Parallélisme — pour les charges de travail structurées en lots

Si vous traitez 1 000 éléments indépendants (classification de commentaires, notation de prospects, génération de descriptions), les appels séquentiels prennent une heure. L’exécution asynchrone avec AsyncOpenAI et une limite de concurrence vous permet d’y parvenir en moins d’une minute — et des délais d’attente plus courts permettent d’échouer rapidement face aux services amont lents. Le parallélisme ne réduit pas le coût par jeton, mais il permet des architectures (traitement idempotent, budgets de nouvelles tentatives plus stricts) qui le font.

5. Hygiène des nouvelles tentatives — ne payez pas pour des tentatives incontrôlées

Un code naïf réessaie après chaque erreur, y compris les erreurs 400. Vous payez alors pour des échecs (les requêtes 4xx ne sont pas facturées sur Kunavo, mais consomment tout de même le budget de limitation de débit et le temps réel). Politique correcte : réessayer uniquement pour 408/429/5xx, avec un délai exponentiel et une temporisation aléatoire, au maximum 5 tentatives et 30 secondes d’attente totale. Pour tout le reste, échouez rapidement et exposez l’erreur.

À quoi ressemblent les économies en pratique

Économies réalistes mesurées sur un SaaS utilisant Kunavo et dépensant 5 000 $/mois :

  • Ajout de la mise en cache des prompts : 2 000 $ économisés (−40 %)
  • Routage vers Haiku pour la classification : 800 $ économisés (−16 %)
  • Limite max_tokens plus stricte : 400 $ économisés (−8 %)
  • Total : 3 200 $ économisés par mois, 1 800 $ dépensés (−64 % au total)

Ces économies se cumulent — chaque technique suivante s’applique à la base déjà réduite. Sans appliquer d’abord la mise en cache, les autres économies sont moindres. L’ordre compte : commencez par la n° 1, puis la n° 2, puis la n° 3.

Ce qui ne fonctionne pas comme annoncé

  • « Des embeddings pour tout » — les embeddings permettent d’économiser sur la recherche textuelle, pas sur la génération. Ils sont peu coûteux, mais ne réduisent pas le coût des appels LLM
  • « Des fine-tunings locaux pour réduire les coûts » — justifiables uniquement si vous traitez plus de 10M jetons/jour sur une tâche étroite. Pour la plupart des équipes, la mise en cache des prompts et le routage vers Haiku sont préférables à la complexité opérationnelle de l’auto-hébergement
  • « Des agrégateurs moins chers » — Kunavo propose déjà la plupart des modèles à un tarif inférieur au tarif officiel du fournisseur. Les agrégateurs moins chers gagnent généralement en remplaçant discrètement le modèle demandé par un modèle moins cher

Étapes suivantes

Appliquez d’abord la mise en cache : c’est le meilleur ROI par heure investie. Instrumentez ensuite la ventilation de votre tableau de bord /app/usage par modèle et par niveau. Puis mettez en place le routage par niveau. Suivez le coût mensuel par utilisateur actif comme indicateur principal — s’il reste stable ou diminue tandis que l’engagement progresse, vous êtes sur la bonne voie.

Questions fréquentes

Dans quelle mesure la mise en cache des prompts peut-elle réduire une facture LLM ?

Anthropic facture les entrées mises en cache à 10% du tarif normal des entrées (2,5 % pour Claude Fable 5.1, 5 % pour Claude Opus 5.5), et OpenAI applique automatiquement l’équivalent à 10%. Pour une charge de travail comportant un prompt système volumineux et stable, cela représente 60 à 90 % d’économie sur le coût des entrées. Appliquez cette technique en premier : toutes les suivantes s’appuieront alors sur cette base réduite. Consultez l’analyse approfondie de la mise en cache des prompts pour connaître le format exact de la requête.

Dans quelle mesure Claude Haiku est-il moins cher que Claude Opus ?

Claude Haiku 4.5 coûte environ 10 % de Claude Opus 4.7, soit environ 10 fois moins cher. Pour la classification, l’extraction, la traduction et les résumés courts, Haiku suffit ; réservez Opus aux raisonnements dont vous avez confirmé que Claude Sonnet 5 les traite incorrectement. Les tarifs actuels par modèle figurent dans le guide de tarification de l’API Claude.

Les jetons de sortie sont-ils plus chers que les jetons d’entrée ?

Oui : les jetons de sortie coûtent généralement 4 à 5 fois plus cher que les jetons d’entrée. C’est pourquoi une valeur par défaut max_tokens=4096 peu restrictive est coûteuse : elle incite le modèle à s’étendre sur la ligne la plus chère de la facture. Limitez max_tokens pour chaque appel et utilisez des séquences d’arrêt pour couper au marqueur approprié.

Dans quelle mesure peut-on réellement réduire une facture LLM au total ?

En combinant trois des cinq techniques, on atteint de manière réaliste une réduction de 70 % sans perte de qualité, et les cinq techniques permettent de se rapprocher de 85 à 90 %. Pour une charge mesurée de 5 000 $/mois : la mise en cache des prompts a économisé 2 000 $ (−40 %), le routage vers Haiku pour la classification 800 $ (−16 %), et une limite max_tokens plus stricte 400 $ (−8 %) — soit 3 200 $ économisés, 1 800 $ dépensés et une réduction totale de 64 %.

Quelle est la politique correcte de nouvelle tentative pour les appels à l’API LLM ?

Réessayez uniquement les réponses 408, 429 et 5xx, avec un délai exponentiel et une temporisation aléatoire, plafonné à 5 tentatives et 30 secondes d’attente totale. Échouez rapidement pour tout le reste. Réessayer une erreur 400 ne réussit jamais — et même si les requêtes 4xx échouées ne sont pas facturées sur Kunavo, elles consomment tout de même le budget de limitation de débit et le temps réel.