Context Window : la memoire de travail des modeles de langage
Qu’est-ce que le context window ?
Chaque LLM a une limite physique : le nombre de tokens qu’il peut « voir » simultanement. Cette limite, le context window, determine la quantite d’information que vous pouvez envoyer au modele et la longueur maximale de sa reponse.
Imaginez le context window comme un bureau. Tout ce que vous posez dessus (vos instructions, vos documents, la conversation precedente) et tout ce que le modele ecrit (sa reponse) doit tenir sur ce bureau. Si le bureau est petit (4 096 tokens pour GPT-3), vous ne pouvez traiter qu’un court echange. Si le bureau est immense (2 millions de tokens pour Gemini 2.0 Pro), vous pouvez y poser un livre entier.
Le context window est partage entre l’entree (votre prompt) et la sortie (la reponse du modele). Si votre prompt occupe 100 000 tokens sur un modele a 128 000 tokens, il ne reste que 28 000 tokens pour la reponse.
Comparatif des context windows par modele
| Modele | Context window | Equivalent approximatif |
|---|---|---|
| GPT-3 (2020) | 4 096 tokens | ~3 000 mots anglais |
| GPT-3.5 Turbo | 16 385 tokens | ~12 000 mots |
| GPT-4o | 128 000 tokens | ~96 000 mots (~300 pages) |
| GPT-4o mini | 128 000 tokens | ~96 000 mots |
| o1 / o3 | 200 000 tokens | ~150 000 mots |
| Claude 3.5 Sonnet | 200 000 tokens | ~150 000 mots (~500 pages) |
| Claude 3.5 Haiku | 200 000 tokens | ~150 000 mots |
| Gemini 2.0 Flash | 1 000 000 tokens | ~750 000 mots (~2 500 pages) |
| Gemini 2.0 Pro | 2 000 000 tokens | ~1 500 000 mots (~5 000 pages) |
| Mistral Large | 128 000 tokens | ~96 000 mots |
Impact du context window sur la qualite
Un context window plus grand ne signifie pas automatiquement de meilleures reponses. Plusieurs phenomenes limitent l’efficacite des fenetres etendues.
Le probleme « Lost in the Middle »
Des recherches ont montre que les LLM ont tendance a mieux retenir les informations situees au debut et a la fin du contexte. Les informations au milieu d’un long contexte sont souvent « oubliees » ou sous-exploitees. Ce phenomene, nomme « lost in the middle », est un facteur important a prendre en compte dans la conception des prompts longs.
En pratique, cela signifie que si vous injectez 50 documents dans le contexte, le modele sera plus attentif aux premiers et aux derniers qu’a ceux du milieu. Pour les systemes RAG, il est judicieux de placer les chunks les plus pertinents en debut et en fin de contexte.
Degradation de la qualite sur les tres longs contextes
Meme avec un context window de 1 million de tokens, la qualite de comprehension et de raisonnement peut se degrader sur les contextes tres longs. Un modele qui performe parfaitement sur un contexte de 10 000 tokens peut perdre en precision avec 500 000 tokens de contexte. Cette degradation est plus marquee pour les taches de raisonnement complexe que pour les taches de recherche d’information.
Impact sur les couts
Les fournisseurs d’API facturent chaque token d’entree et de sortie. Un context window rempli coute cher, surtout si le meme prompt est envoye a chaque requete dans une conversation.
Prenons un exemple : un chatbot avec un prompt systeme de 2 000 tokens, un historique de conversation de 5 000 tokens, et des documents RAG de 3 000 tokens. Chaque requete envoie 10 000 tokens d’entree. A 100 requetes par jour avec GPT-4o (2,50 $ / 1M tokens d’entree), cela represente 0,025 $ par jour en tokens d’entree seuls. Avec 10 000 utilisateurs, le cout monte a 250 $ par jour.
Les techniques d’optimisation du contexte (prompt caching, compression, resume d’historique) deviennent essentielles a grande echelle.
Techniques d’optimisation du contexte
Prompt caching. OpenAI et Anthropic proposent la mise en cache du prompt : les tokens identiques entre requetes successives ne sont factures qu’une seule fois. Le prompt systeme et les instructions recurrentes beneficient automatiquement de cette optimisation, reduisant les couts de 50 a 90 %.
Resume d’historique. Au lieu de garder l’integralite de l’historique de conversation dans le contexte, resumez periodiquement les echanges precedents. Un resume de 200 tokens peut remplacer 5 000 tokens d’historique tout en preservant les informations essentielles.
RAG plutot que contexte brut. Plutot que d’injecter 100 000 tokens de documentation dans le contexte, utilisez un pipeline RAG pour ne recuperer que les 3 a 5 chunks les plus pertinents (1 000 a 3 000 tokens). Le modele repond mieux avec un petit contexte pertinent qu’avec un enorme contexte bruyant.
Structuration du prompt. Un prompt bien structure (titres, sections, delimiteurs) aide le modele a naviguer dans un long contexte. Utilisez des balises XML ou Markdown pour delimiter les differentes sections du contexte.
Gestion de la sortie (max_tokens). Definissez toujours max_tokens pour limiter la longueur de la reponse. Sans cette limite, le modele peut generer des milliers de tokens inutiles, augmentant les couts et la latence.
L’ere des contextes ultra-longs
Gemini 2.0 de Google a revolutionne les attentes avec son context window de 2 millions de tokens. Cela permet d’ingerer un livre entier, une codebase complete ou des heures de transcription dans une seule requete.
Les cas d’usage des contextes ultra-longs incluent l’analyse de documents juridiques volumineux (contrats, dossiers de conformite), la comprehension de codebases entieres pour le refactoring, l’analyse de transcriptions de reunions sur plusieurs mois, et la synthese de vastes corpus de recherche.
Neanmoins, les limites « lost in the middle » et la degradation de qualite s’appliquent. Pour la plupart des cas d’usage en production, un RAG bien configure sur un contexte modere (10 000 a 50 000 tokens) surpasse souvent un contexte brut de 500 000 tokens en termes de precision et de cout.
FAQ
Le context window inclut-il la reponse du modele ?
Oui. Le context window est partage entre les tokens d’entree (votre prompt, le systeme, l’historique) et les tokens de sortie (la reponse generee). Si un modele a un context window de 128K tokens et que votre prompt fait 120K tokens, la reponse est limitee a 8K tokens. Certains fournisseurs ont des limites separees pour la sortie (GPT-4o limite a 16 384 tokens de sortie par defaut).
Que se passe-t-il si on depasse le context window ?
L’API renvoie une erreur. Vous devez reduire la taille de votre prompt pour rester dans la limite. Les frameworks comme LangChain incluent des mecanismes automatiques de troncation ou de resume pour gerer ce cas. Dans les interfaces chat (ChatGPT, Claude), les messages les plus anciens de la conversation sont automatiquement supprimes quand la limite est atteinte.
Un context window plus grand est-il toujours mieux ?
Pas necessairement. Un contexte trop long augmente les couts, la latence et le risque de « lost in the middle ». Pour la plupart des taches, un contexte de 10 000 a 50 000 tokens bien cible (via RAG) est plus efficace qu’un contexte brut de 500 000 tokens. Les contextes ultra-longs sont utiles pour des taches specifiques (analyse de livres, codebases) mais pas pour l’usage courant.
Comment savoir combien de tokens consomme mon prompt ?
Les API d’OpenAI et Anthropic retournent le decompte exact de tokens dans chaque reponse (champs usage.input_tokens et usage.output_tokens). Pour estimer avant l’envoi, utilisez tiktoken (OpenAI) en Python ou le tokenizer en ligne d’OpenAI. En regle empirique : divisez le nombre de caracteres par 3 pour le francais, par 4 pour l’anglais.
Le prompt caching reduit-il vraiment les couts ?
Oui, significativement. Anthropic facture les tokens caches a 10 % du prix normal. OpenAI offre 50 % de reduction sur les tokens caches. Si votre prompt systeme fait 3 000 tokens et que vous envoyez 1 000 requetes par jour, le caching economise entre 50 et 90 % du cout des tokens d’entree recurrents. C’est l’une des optimisations les plus impactantes en production.