Tokenisation : Comment l'IA Lit le Texte
Découvrez comment les LLMs décomposent le texte en tokens, pourquoi le français coûte plus cher que l'anglais, et comment maîtriser vos coûts d'API avec tiktoken.
Les LLMs ne lisent pas des mots
Quand vous envoyez "Bonjour, comment allez-vous ?" à un LLM, il ne reçoit pas des mots. Il reçoit une séquence de nombres entiers, chacun représentant un token. Un token est un fragment de texte : parfois un mot entier, parfois une syllabe, parfois un simple caractère.
Cette distinction impacte directement vos coûts, les limites de contexte, et la qualité des réponses selon la langue.
Un token représente en moyenne 4 caractères en anglais, mais seulement 3 caractères en français. Cette asymétrie a des conséquences concrètes sur votre facture d'API.
BPE : l'algorithme pas à pas
Byte-Pair Encoding (BPE) est utilisé par GPT-4, Llama, Mistral et la plupart des LLMs modernes.
Principe :
- On part de l'alphabet de base (chaque caractère = un token)
- On compte toutes les paires de tokens adjacentes dans le corpus
- On fusionne la paire la plus fréquente en un nouveau token
- On répète jusqu'à atteindre la taille de vocabulaire cible (~100k tokens)
Exemple avec "tokenization" :
Départ : t o k e n i z a t i o n
Étape 1 : tok en iz ation ← fusions des paires fréquentes
Résultat : ["token", "ization"] → 2 tokens seulement
Tiktoken en Python : tokeniser, compter, décoder
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
texte_fr = "Bonjour, comment allez-vous aujourd'hui ?"
texte_en = "Hello, how are you doing today?"
tokens_fr = enc.encode(texte_fr)
tokens_en = enc.encode(texte_en)
print(f"Français : {len(tokens_fr)} tokens")
print(f"Anglais : {len(tokens_en)} tokens")
# Décoder chaque token
for token_id in tokens_fr:
print(f" {token_id} → '{enc.decode([token_id])}'")
Pourquoi le français coûte ~30% plus cher
| Phrase | Tokens | Coût relatif |
|---|---|---|
| "Hello, how are you doing today?" | 8 | 1x |
| "Bonjour, comment allez-vous aujourd'hui ?" | 11 | 1.37x |
| "こんにちは、今日はいかがですか?" (japonais) | 14 | 1.75x |
| "مرحباً، كيف حالك اليوم؟" (arabe) | 16 | 2x |
Les corpus d'entraînement des tokenizers sont majoritairement en anglais. Les mots français avec accents (é, è, ù), les mots composés et les terminaisons verbales correspondent rarement à des tokens complets.
Sur un projet avec 10M de requêtes en français, vous payez 30 à 40% de plus qu'une application équivalente en anglais. Prévoyez ce surcoût dès la conception.
Calculer son budget avant de déployer
import tiktoken
def estimer_cout(texte: str, modele: str = "gpt-4o", role: str = "input") -> dict:
enc = tiktoken.encoding_for_model(modele)
n_tokens = len(enc.encode(texte))
# Tarifs approximatifs ($/1M tokens)
tarifs = {
"gpt-4o": {"input": 2.50, "output": 10.00},
"gpt-4o-mini": {"input": 0.15, "output": 0.60},
}
cout_par_million = tarifs.get(modele, {}).get(role, 0)
cout = (n_tokens / 1_000_000) * cout_par_million
return {
"tokens": n_tokens,
"cout_unitaire_usd": round(cout, 6),
"cout_1000_req_usd": round(cout * 1000, 4)
}
print(estimer_cout("Résume ce document de 500 mots..." * 10, "gpt-4o", "input"))
Context window en tokens : limites des modèles majeurs
| Modèle | Context window | ~Pages A4 |
|---|---|---|
| GPT-3 (2020) | 4 096 | 5 |
| GPT-4 Turbo | 128 000 | 160 |
| Claude 3.5 Sonnet | 200 000 | 250 |
| Gemini 2.0 Flash | 1 048 576 | 1 300 |
| Llama 3.3 (70B) | 128 000 | 160 |
Les cas pièges
Emojis composés : 👨💻 (homme + ZWJ + ordinateur) = 3 tokens. 🏳️🌈 = 4+ tokens.
Code source : L'indentation (espaces/tabs) est tokenisée séquentiellement. Un fichier Python très imbriqué consomme ~20% de tokens supplémentaires.
URLs : https://api.exemple.com/v2/users/123 peut générer 12-15 tokens.
Micro-exercice : Ouvrez le tokenizer playground d'OpenAI et comparez la tokenisation de votre propre nom, d'un terme technique de votre domaine, et d'une URL typique de votre application.
Specialiste IA — Master Intelligence Artificielle
Diplome d'un Master en Intelligence Artificielle, je travaille au quotidien sur des projets IA en entreprise. J'ai cree IwanttolearnAI pour rendre l'apprentissage de l'IA accessible a tous, gratuitement.
Continuer a apprendre
Gérer le Context Window et la Mémoire des LLMs
Comprenez les limites de mémoire des LLMs, le phénomène lost-in-the-middle, et maîtrisez les stratégies pour gérer efficacement de longs contextes en production.
Faire Tourner un LLM en Local avec Ollama
Installez et utilisez des LLMs directement sur votre machine avec Ollama : confidentialité totale, coût zéro, et intégration Python en quelques lignes.
Comprendre les Large Language Models
Comment fonctionnent ChatGPT, Claude et Llama ? Découvrez la tokenisation, la génération de texte et apprenez à bien utiliser les LLMs.