Aller au contenu principal

Tokenisation : comprendre comment le modèle voit votre prompt

Tokenisation : comprendre comment le modèle voit votre prompt

Le modèle ne lit pas du texte — il traite des tokens. Comprendre la tokenisation vous permettra d’optimiser vos prompts, de maîtriser vos coûts et d’éviter des comportements inattendus liés au découpage du texte.

Qu’est-ce qu’un token ?

Un token est l’unité de base que le modèle manipule. Ce n’est ni un mot, ni un caractère, mais un fragment de texte issu d’un algorithme d’encodage (BPE — Byte Pair Encoding). En moyenne, un token représente environ 4 caractères en anglais, mais ce ratio varie selon la langue.

import tiktoken

# Tokenizer utilisé par GPT-5.4 et GPT-5.3
enc = tiktoken.get_encoding("o200k_base")

texte_en = "Hello, how are you today?"
texte_fr = "Bonjour, comment allez-vous aujourd'hui ?"

tokens_en = enc.encode(texte_en)
tokens_fr = enc.encode(texte_fr)

print(f"Anglais : {len(tokens_en)} tokens pour {len(texte_en)} caractères")
print(f"Français : {len(tokens_fr)} tokens pour {len(texte_fr)} caractères")

# Visualiser le découpage
for t in tokens_fr:
    print(f"  Token {t}: '{enc.decode([t])}'")

L’impact de la langue sur le coût

Le français utilise en moyenne 20 à 30 % de tokens en plus que l’anglais pour exprimer la même idée. Cela a un impact direct sur :

  • Le coût : vous payez par token d’entrée et de sortie
  • La fenêtre de contexte : un document français consomme plus de tokens
  • La latence : plus de tokens à générer = temps de réponse plus long
~4
Caractères par token (EN)
~3
Caractères par token (FR)
1M
Contexte max GPT-5.4
200K
Encodage BPE o200k

Pièges courants liés à la tokenisation

Mots rares et néologismes

Les mots peu fréquents dans le corpus d’entraînement sont découpés en sous-tokens, ce qui peut dégrader la compréhension du modèle :

# "Anticonstitutionnellement" sera découpé en plusieurs tokens
tokens = enc.encode("Anticonstitutionnellement")
print(f"{len(tokens)} tokens")
for t in tokens:
    print(f"  '{enc.decode([t])}'")

JSON et code structuré

Les accolades, crochets et guillemets consomment chacun un token. Un JSON verbeux peut coûter beaucoup plus cher qu’une version minifiée :

json_verbose = '''{
    "nom": "Dupont",
    "prenom": "Jean",
    "age": 42
}'''

json_compact = '{"nom":"Dupont","prenom":"Jean","age":42}'

print(f"Verbose : {len(enc.encode(json_verbose))} tokens")
print(f"Compact : {len(enc.encode(json_compact))} tokens")

Espaces et formatage

Les espaces en début de ligne, les lignes vides et l’indentation consomment des tokens. Un system prompt bien indenté pour la lisibilité coûte plus cher qu’un prompt compact.

Optimiser vos prompts

  1. Mesurez avant d’optimiser : utilisez tiktoken pour compter les tokens de vos prompts
  2. Privilégiez les instructions concises : “Réponds en JSON” plutôt que “Je voudrais que tu me répondes en utilisant le format JSON”
  3. Utilisez des abréviations dans le contexte : le modèle comprend “Q:” et “R:” aussi bien que “Question :” et “Réponse :”
  4. Compressez le contexte métier : résumez les documents longs avant de les injecter

Calcul de coût

def estimer_cout(prompt: str, reponse_estimee: int = 500,
                 model: str = "gpt-5.3") -> dict:
    """Estime le coût d'un appel API."""
    enc = tiktoken.get_encoding("o200k_base")
    tokens_in = len(enc.encode(prompt))

    # Prix indicatifs GPT-5.3 (vérifier la grille actuelle)
    prix_input = 2.50 / 1_000_000   # par token
    prix_output = 10.00 / 1_000_000  # par token

    cout = (tokens_in * prix_input) + (reponse_estimee * prix_output)

    return {
        "tokens_input": tokens_in,
        "tokens_output_estime": reponse_estimee,
        "cout_estime_usd": round(cout, 6)
    }

Mise en pratique

  1. Installez tiktoken : pip install tiktoken
  2. Tokenisez votre system prompt le plus complexe
  3. Identifiez les segments les plus coûteux
  4. Réécrivez-le en réduisant le nombre de tokens de 20 % sans perdre d’information

Points clés à retenir

  • Un token n’est pas un mot : c’est un fragment issu du BPE
  • Le français coûte 20-30 % de tokens en plus que l’anglais
  • Mesurez systématiquement vos prompts avec tiktoken
  • Optimisez le JSON et le formatage pour réduire les coûts
  • La fenêtre de contexte se mesure en tokens, pas en mots