IntermédiaireLLM
16 min de lecture13 vues

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 :

  1. On part de l'alphabet de base (chaque caractère = un token)
  2. On compte toutes les paires de tokens adjacentes dans le corpus
  3. On fusionne la paire la plus fréquente en un nouveau token
  4. 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

PhraseTokensCoût relatif
"Hello, how are you doing today?"81x
"Bonjour, comment allez-vous aujourd'hui ?"111.37x
"こんにちは、今日はいかがですか?" (japonais)141.75x
"مرحباً، كيف حالك اليوم؟" (arabe)162x

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èleContext window~Pages A4
GPT-3 (2020)4 0965
GPT-4 Turbo128 000160
Claude 3.5 Sonnet200 000250
Gemini 2.0 Flash1 048 5761 300
Llama 3.3 (70B)128 000160

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.