Intelligence artificielle

Compter les tokens d’un prompt et estimer ce que coûte un appel à un modèle de langage

Pourquoi les modèles facturent au token, comment compter exactement pour GPT et approximativement pour Claude, et comment réduire le coût de chaque appel.

Les modèles de langage facturent et limitent en tokens, pas en mots ni en caractères. Un token est le fragment de texte avec lequel le modèle travaille : en anglais, il représente environ 4 caractères en moyenne, et en prose courante dans les autres langues européennes le chiffre est voisin, même si les phrases courtes, la ponctuation et les mots rares se découpent en plus de morceaux. Pour savoir ce que coûte un appel, il faut compter les tokens de l’entrée (votre prompt plus le contexte) et ceux de la sortie (la réponse), qui ont généralement des prix différents, et les multiplier par le tarif du modèle par million de tokens.

Cet article explique comment compter les tokens, exactement ou approximativement selon le modèle, à quels chiffres s’attendre, où se cachent les tokens que vous ne voyez pas et comment réduire la facture.

Pourquoi des tokens et pas des mots

Comme expliqué dans comment fonctionne un modèle de langage, le modèle ne voit ni lettres ni mots, mais des tokens issus d’un vocabulaire fixe construit à l’entraînement. Le coût de calcul du traitement d’un texte dépend du nombre de tokens : prix et limites (fenêtre de contexte, longueur maximale de réponse) s’expriment donc dans cette unité.

Conséquence pratique : le même texte coûte différemment selon la langue et selon le modèle, car chaque famille a son propre tokenizer.

Comment compter les tokens

Modèles OpenAI : décompte exact

OpenAI publie ses tokenizers. o200k_base est celui de GPT-4o et des modèles suivants ; cl100k_base celui de GPT-4 et GPT-3.5. Vous pouvez compter en local avec tiktoken (Python) ou gpt-tokenizer (JavaScript) :

import { encode } from 'gpt-tokenizer'; // o200k_base par défaut
const tokens = encode('La indexación no está garantizada.');
console.log(tokens.length); // 8
import tiktoken
enc = tiktoken.get_encoding("o200k_base")
len(enc.encode("La indexación no está garantizada."))  # 8

Le compteur de tokens d’AIMRAN Tools utilise ces mêmes tokenizers dans le navigateur et affiche le décompte pour o200k et cl100k, les caractères par token du texte collé et le coût estimé si vous saisissez le tarif du modèle par million de tokens. Le texte ne quitte pas votre machine.

Claude et autres modèles : estimation ou API

Anthropic ne publie pas le tokenizer de Claude ; pour un décompte exact, il faut appeler son point de terminaison de comptage de tokens, qui ne consomme pas de tokens de génération. Pour estimer sans appeler l’API, l’usage est de partir du décompte cl100k et d’appliquer un facteur de correction ; c’est ce que fait le compteur d’AIMRAN Tools, qui marque ce chiffre comme approximatif. Suffisant pour budgéter ; pour facturer, utilisez l’API.

Combien de tokens contient un texte

À titre indicatif, mesuré avec o200k_base pendant la rédaction de cet article :

Texte Caractères Tokens Caractères par token
« Hola, ¿qué tal? » (espagnol) 15 6 2,5
« Hello, how are you? » (anglais) 19 6 3,2
Le premier paragraphe de la version espagnole de cet article 590 127 4,6

Les phrases courtes reviennent cher en proportion (la ponctuation et les signes d’ouverture comptent comme des tokens à part entière) ; en prose longue, la moyenne approche 4 à 4,5 caractères par token, en anglais comme en espagnol. Ce paragraphe espagnol compte 105 mots pour 127 tokens, soit environ 1,2 token par mot. Le code JSON et les URL sont nettement plus chers, car chaque signe de ponctuation est souvent un token.

Les tokens que vous ne voyez pas

En estimant le coût d’un appel, on oublie facilement que l’entrée n’est pas seulement votre question :

  • Le system prompt et les instructions fixes de l’application, envoyés à chaque requête.
  • L’historique de la conversation, renvoyé en entier (ou résumé) à chaque tour. Une longue conversation peut coûter plus par son historique que par la nouvelle question.
  • Les descriptions d’outils dans les agents et les résultats qu’ils renvoient.
  • Les documents joints (RAG) : un PDF de vingt pages, ce sont des milliers de tokens par appel si vous l’incluez en entier.
  • Les tokens de formatage ajoutés par le fournisseur à chaque message (quelques-uns par tour).
  • La sortie, presque toujours facturée plus cher au token que l’entrée, et que vous pouvez plafonner avec le paramètre de nombre maximal de tokens.

Les réponses de l’API renvoient l’usage réel (usage avec tokens d’entrée et de sortie) : journalisez ces valeurs pour ne pas dépendre d’estimations.

Comment calculer le coût

coût = (tokens_entrée / 1 000 000) × prix_entrée + (tokens_sortie / 1 000 000) × prix_sortie

Les prix varient d’un modèle à l’autre de plus d’un ordre de grandeur et changent tous les quelques mois : prenez-les toujours sur la page de tarifs du fournisseur au moment du calcul. Beaucoup de fournisseurs proposent aussi la mise en cache du prompt : la partie répétée (system prompt, documents) est facturée bien moins cher quand elle est réutilisée dans des appels rapprochés, ce qui change sensiblement le calcul pour les applications à grand contexte fixe.

Réduire les tokens sans perdre en qualité

  1. Élaguez le system prompt : supprimez les répétitions et les exemples dont le modèle n’a plus besoin.
  2. Résumez l’historique à partir d’un certain nombre de tours au lieu de le renvoyer en entier.
  3. Découpez les documents et n’envoyez que les fragments pertinents (recherche préalable) plutôt que le document complet.
  4. Demandez des sorties concises et fixez un maximum raisonnable de tokens de réponse.
  5. Utilisez le bon modèle : classer ou extraire des données ne nécessite pas le modèle le plus cher.
  6. Exploitez le cache de prompt en plaçant la partie stable au début.
  7. Mesurez avant d’optimiser : collez le prompt réel dans un compteur et regardez où partent les tokens ; c’est souvent un long exemple ou un JSON non minifié.

Conclusion

Compter les tokens est le seul moyen de savoir ce que coûte un appel et ce qui y tient. Pour les modèles OpenAI, le décompte est exact grâce à leurs tokenizers publics ; pour Claude, approximatif sauf à utiliser son API de comptage. Comptez environ 4 caractères par token en prose, rappelez-vous que l’historique et le system prompt comptent aussi, et journalisez l’usage réel renvoyé par chaque réponse : c’est le chiffre qui finit sur la facture.

Sources et références

  1. OpenAI Help : What are tokens and how to count them? help.openai.com
  2. OpenAI : Tokenizer platform.openai.com
  3. tiktoken (OpenAI, GitHub) github.com
  4. Anthropic : Token counting docs.anthropic.com
  5. gpt-tokenizer (npm) npmjs.com

Outils associés

Herramientas gratuitas de AIMRAN Tools que funcionan en tu navegador, sin registro.

Ver todas las herramientas
  • Compteur de tokens

    Compte les tokens d’un texte avec les tokenizers GPT, estime ceux de Claude et calcule le coût par million de tokens.