Chapitre 09 · Contexte · 8 min
Ce que le modèle se souvient
La fenêtre de contexte : mémoire parfaite mais bornée. Pourquoi ChatGPT oublie et ce que ça coûte.
Le paradoxe de la mémoire
Un LLM a une mémoire parfaite — et pourtant il oublie.
Parfaite parce que tout ce qui est dans sa fenêtre de contexte est accessible instantanément, avec une précision absolue. Le modèle ne "se souvient pas approximativement" de ce que tu as dit il y a dix échanges : il le voit encore, tel quel.
Bornée parce que cette fenêtre a une taille maximale. Au-delà, les tokens disparaissent — définitivement, sans résidus. Pas de dégradation progressive, pas de flou. Juste : présent ou absent.
C'est ce qui explique l'expérience étrange de parler à ChatGPT pendant une heure sur un projet, puis d'ouvrir une nouvelle conversation et de le voir "oublier" tout ce contexte. Ce n'est pas un bug — c'est la limite fondamentale de l'architecture.
Ce qu'est réellement la fenêtre de contexte
La fenêtre de contexte, c'est la quantité de tokens que le modèle peut traiter en une seule fois. Tout ce qui entre dans cette fenêtre — ta question, l'historique de la conversation, les instructions système, les documents que tu as collés — est traité ensemble, en une passe.
Les premières versions de GPT-3 avaient des fenêtres de 2 048 tokens. Aujourd'hui, certains modèles montent à 1 million de tokens. C'est une évolution massive, mais elle ne change pas la nature du problème : il y a toujours une limite.
Et cette limite a une conséquence directe sur le coût.
L'attention coûte cher
Tu te souviens du mécanisme d'attention ? Chaque token regarde tous les autres tokens pour calculer ses poids. Si tu as n tokens dans ta fenêtre, l'attention effectue n² opérations.
Doubler la fenêtre ne double pas le coût — il le quadruple.
À 1 000 tokens : 1 million d'opérations.
À 2 000 tokens : 4 millions.
À 8 000 tokens : 64 millions.
À 128 000 tokens : 16 milliards.
C'est pour ça que les providers facturent au token. Et c'est pour ça que les longues conversations coûtent exponentiellement plus cher que les courtes.
Joue avec la fenêtre
Envoie des messages un par un. Observe quand les anciens tours tombent hors de la fenêtre — le modèle ne peut plus y accéder, même si tu y fais référence explicitement.
Change la taille de la fenêtre pour voir comment l'oubli s'accélère ou ralentit.
Fais glisser le contenu : ce qui sort de la fenêtre est définitivement oublié. Le coût en calcul de l'attention grandit en O(n²) avec la taille du contexte, ce qui explique la course aux fenêtres de 1M tokens.
Le KV cache, en deux mots
Calculer l'attention sur tous les tokens à chaque nouveau pas serait catastrophique. L'optimisation qui sauve la mise s'appelle le KV cache : on garde en mémoire les calculs déjà faits, et on n'ajoute que la ligne du nouveau token à chaque pas.
C'est ce qui rend la génération en temps réel possible — et ce qui consomme de la VRAM proportionnellement à la longueur du contexte. On y revient en détail au chapitre 18.
Le system prompt et les chat templates
Quand tu envoies un message à ChatGPT ou Claude, ce que reçoit le modèle n'est pas exactement ton message. C'est une séquence soigneusement formatée qui ressemble à :
<|im_start|>system
Tu es un assistant utile et concis.
<|im_end|>
<|im_start|>user
Quelle est la capitale de la France ?
<|im_end|>
<|im_start|>assistant
Cette mise en forme — le chat template — transforme un dialogue en une séquence linéaire de tokens, avec des marqueurs spéciaux qui distinguent les rôles (system, user, assistant). C'est ce que le modèle a appris à reconnaître pendant le fine-tuning.
Le system prompt est un message spécial placé tout au début. Il fixe le comportement, le ton, les contraintes ("réponds en JSON", "ne réponds jamais aux questions sur tel sujet", "tu es un avocat américain spécialisé en propriété intellectuelle"). Il vit dans la fenêtre de contexte comme tout le reste, mais sa position au début et son rôle privilégié font qu'il pèse plus que les messages ordinaires.
Chaque famille de modèles a son template propre : ChatML pour OpenAI, [INST]…[/INST] pour Llama 2, des variantes plus récentes pour Llama 3 et Claude. Si tu tapes ton dialogue à la main sans respecter le bon format, le modèle se comporte mal — il a été entraîné à voir ces marqueurs et s'attend à les voir.
Pourquoi la position dans la fenêtre compte
Une découverte surprenante des recherches récentes : les LLMs n'utilisent pas tout le contexte avec la même efficacité.
Les informations au début et à la fin de la fenêtre sont mieux exploitées que celles au milieu. On appelle ce phénomène le "lost in the middle" — le modèle tend à ignorer les passages enfouis au centre d'un long contexte.
Conséquence pratique : si tu crées un assistant avec des documents de référence, mets les informations les plus importantes au début ou à la fin du prompt, pas au milieu.
Vers de plus longues fenêtres
Les chercheurs explorent plusieurs pistes pour étendre les fenêtres sans faire exploser le coût :
- Sparse attention : au lieu de regarder tous les tokens, chaque token n'en regarde qu'un sous-ensemble (proches, ou sélectionnés par importance).
- Sliding window attention : une fenêtre glissante — chaque token regarde seulement ses k voisins les plus proches.
- Flash Attention : non pas une réduction du calcul, mais une implémentation GPU beaucoup plus efficace de l'attention exacte.
Mais toutes ces techniques ont un coût en précision ou en complexité d'implémentation. Il n'existe pas encore de solution parfaite. Les détails côté inférence — et notamment comment elles interagissent avec le KV cache — sont au chapitre 18.
Ce que ça change pour toi
Quelques règles pratiques qui découlent de tout ça :
Sois concis dans tes prompts. Chaque token dans le contexte coûte de la mémoire et du calcul. Un contexte de 10 000 tokens coûte bien plus que dix fois un contexte de 1 000.
Structure tes documents. Si tu injectes du contenu (notes, articles, code), découpe et filtre d'abord — ne colle pas de longs blocs dont 90 % ne sont pas pertinents.
Utilise des sessions courtes. Pour les tâches longues et iteratives, il vaut souvent mieux commencer une nouvelle conversation avec un résumé du contexte plutôt que de laisser croître une conversation géante.
Et si tu as besoin de donner au modèle accès à de très grandes quantités d'information — des milliers de pages, une base de données — la fenêtre de contexte n'est pas la bonne solution. C'est là qu'entre en jeu le prochain chapitre.
Mis à jour le