Contexte et mémoire
- Leçon 5
- 40 min
- Module 2 : Capacités et limites
Leçon 5 sur 16 · Les LLM : comment ils fonctionnent et comment en choisir unContexte et mémoire
1. Le modèle mental d'un modèle de langage
2. Capacités et limites
3. Comment les modèles sont fournis
4. Évaluer pour votre tâche
5. Prendre une décision et la maintenir
Ce que vous saurez faire
Découvrez ce qu’un modèle peut utiliser pour répondre à une requête et ce que votre application doit conserver pour lui. Voyez pourquoi une très grande fenêtre de contexte ne signifie pas que le modèle utilise tout son contenu.
Avant de commencerCe qu’il faut savoir et avoir sous la main
Ce que vous devez savoir
- Les jetons (tokens) et pourquoi leur nombre diffère selon le modèle, dans Du texte aux jetons.
- Comment un modèle écrit une réponse un jeton à la fois, dans Prédire la suite.
- Ce que l’entraînement met dans un modèle, dans Les étapes de l’entraînement.
- Les pourcentages et les moyennes, dans Décrire un jeu de données, du cours Mathématiques et statistiques essentielles pour l’IA.
Ce qu’il vous faut
- Un navigateur. Rien à installer.
Les modèles hébergés changent souvent : vos résultats seront différents.
L’expert au téléphone
Section intitulée « L’expert au téléphone »Imaginez que Larkfield peut appeler un expert au téléphone. Cet expert a lu des milliers de livres et connaît bien les jardins, les magasins et les clients. Mais il a deux limites étranges. D’abord, il oublie chaque appel dès qu’il raccroche. Ensuite, pendant un appel, il peut seulement consulter les papiers sur un petit bureau.
Avant chaque appel, quelqu’un chez Larkfield doit donc mettre les bons papiers sur le bureau. Il s’agit de la politique, du message du client et d’une note sur le dernier appel. Si un papier manque sur le bureau, l’expert ne peut pas l’utiliser, peu importe son intelligence. Et si le bureau contient mille pages, l’expert risque de ne pas trouver la seule ligne importante.
Un modèle de langage fonctionne de la même façon. Cette leçon distingue les quatre endroits où la « mémoire » peut se trouver. Elle montre lesquels appartiennent au modèle et lesquels appartiennent à votre application.
Le problème : le deuxième message
Section intitulée « Le problème : le deuxième message »Camille teste l’assistant avec une courte conversation, comme un vrai client l’écrirait. Amira envoie les trois messages à Claude Haiku 5.5. La première version de son application envoie seulement le message le plus récent chaque fois.
- « Ma commande L-20431 a 7 jours ouvrables de retard. Que pouvez-vous faire? »
- « D’accord. Et si elle n’arrive toujours pas la semaine prochaine, est-ce que je peux plutôt me faire rembourser? »
- « Merci. Envoyez ce remboursement sur ma nouvelle carte, s’il vous plaît. L’ancienne est expirée. »
La première réponse est bonne : livraison gratuite, car la commande a plus de 5 jours ouvrables de retard. La deuxième réponse révèle le problème. Le modèle répond :
"If you tell us your order number, we can check how late it is."Le client a donné le numéro de commande dans le message précédent. Le modèle ne l’a pas « oublié ». Il ne l’a jamais reçu, car l’application ne l’a pas envoyé de nouveau. « Mais la conversation à l’écran montre tous les messages », dit Omar. Oui, parce que l’application les affiche. Le modèle voit seulement ce que contient la requête actuelle.
L’idée : quatre types de mémoire
Section intitulée « L’idée : quatre types de mémoire »Les gens parlent de la « mémoire du modèle » pour désigner quatre choses différentes. Une seule se trouve à l’intérieur du modèle.
- Les poids. Dans Les étapes de l’entraînement, vous avez vu que l’entraînement définit des millions ou des milliards de nombres dans le modèle. Ce sont ses poids, aussi appelés paramètres. Ils contiennent, sous forme de motifs, ce que le modèle a appris des textes d’entraînement. Après l’entraînement, ils ne changent pas. Quand vous envoyez un billet de soutien, les poids n’en tirent aucun apprentissage. Ce sont les connaissances que l’expert a acquises pendant des années de lecture.
- La fenêtre de contexte. C’est le bureau. La fenêtre de contexte représente le nombre maximal de jetons que le modèle peut traiter dans une seule requête. Elle compte les jetons que vous envoyez et ceux qu’il écrit. En dehors de ses poids, le modèle peut seulement utiliser ce qui se trouve dans cette fenêtre.
- L’historique de l’application. C’est la note sur le dernier appel. Pour poursuivre une conversation, votre application conserve les messages et les réponses précédents. Elle les renvoie avec chaque nouvelle requête. Le modèle les relit chaque fois.
- La récupération. C’est un collègue qui trouve la bonne page dans les dossiers. Votre application cherche dans ses propres documents, comme la politique ou un guide des produits. Elle colle la partie pertinente dans la requête. Un cours ultérieur, RAG : créer une IA qui utilise vos données, vous apprend à construire ce système. Ici, vous avez seulement besoin de comprendre l’idée.
Description textuelle du diagramme
Le schéma comporte trois zones. À gauche, votre application contient deux stockages : l’historique de conversation (les échanges précédents) et la politique et le guide. Une flèche nommée « renvoie » va de l’historique à un générateur de requêtes (du code que vous écrivez). Une flèche nommée « récupération : trouve et colle » va des documents au générateur de requêtes.
Au milieu, le générateur envoie une seule requête dans la fenêtre de contexte, qui sert uniquement à cette requête. De haut en bas, la fenêtre contient les instructions, un extrait de la politique, les échanges précédents et le nouveau billet. Un cadre pointillé contient la réponse (sortie) que le modèle écrira.
À droite, le modèle possède ses poids, appris pendant l’entraînement et fixes ensuite. Les poids lisent la fenêtre et écrivent la réponse, jeton par jeton, dans cette même fenêtre. Une note indique que le modèle ne conserve rien entre les requêtes.
La ligne entre les deux côtés est l’élément important. Tout ce qui est à gauche appartient à votre code et à vos données. Vous décidez donc quoi inclure. Tout ce qui est à droite reste fixe pour chaque requête. Si une réponse nécessite un fait, ce fait doit se trouver dans les poids appris pendant l’entraînement. Sinon, votre application doit le mettre dans la fenêtre.
Un petit exemple détaillé : la fenêtre grandit avec l’historique
Section intitulée « Un petit exemple détaillé : la fenêtre grandit avec l’historique »Amira envoie de nouveau les trois mêmes messages. Cette fois, son application renvoie les messages et les réponses précédents. Voici le nombre de jetons d’entrée que Claude Haiku 5.5 a indiqué pour chaque requête. La première requête contient les instructions, la politique et le message 1 : elle compte 776 jetons. (Un billet de test dans d’autres leçons compte environ 796 jetons sur Claude. Il contient les mêmes instructions et la même politique, mais un billet remplace ce message.)
| Requête | Ce que l’application envoie | Jetons d’entrée |
|---|---|---|
| 1 | Instructions et politique, message 1 | 776 |
| 2 | Le même contenu, plus la réponse 1 et le message 2 | 938 |
| 3 | Le même contenu, plus la réponse 2 et le message 3 | 1 082 |
Avec l’historique, la deuxième réponse est correcte. Elle nomme la commande L-20431. À propos de la règle des 15 jours pour les commandes perdues, elle dit : « Votre commande a actuellement 7 jours ouvrables de retard. Elle n’atteint donc pas encore ce seuil. »
Le tableau montre aussi le coût de la mémoire. L’application renvoie chaque message précédent dans chaque nouvelle requête, et vous payez de nouveau pour ces messages. Dans une conversation de 30 messages, l’application envoie le premier message 30 fois. La fenêtre a aussi une limite. L’application doit donc couper ou résumer une très longue conversation. Le modèle ne peut pas le faire pour vous entre les requêtes.
Quelle est la taille de la fenêtre?
Section intitulée « Quelle est la taille de la fenêtre? »Les modèles hébergés actuels ont de grandes fenêtres. La page de présentation des modèles d’Anthropic indique une fenêtre de 1 million de jetons pour Claude Haiku, Sonnet et Opus 5.5. Au plus 128 000 de ces jetons peuvent servir à la sortie. La page de Google pour Gemini 3.5 Flash indique 1 048 576 jetons d’entrée. Elle indique aussi 65 536 jetons de sortie. La bibliothèque d’Ollama indique 128 000 jetons pour Gemma 3 4B.
Les modèles changent vite. Chaque nombre de ce module décrit la situation à un moment précis. Ce qui reste utile, c’est la méthode de chaque test.
Rappelez-vous, dans Du texte aux jetons, qu’un même texte donne un nombre de jetons différent selon le modèle. Ainsi, « 1 million de jetons » contient une quantité de texte différente pour chacun.
L’exemple suivi : mettre tout le guide dans la fenêtre?
Section intitulée « L’exemple suivi : mettre tout le guide dans la fenêtre? »Larkfield possède aussi un guide des produits. Il contient une courte fiche par produit, avec sa garantie, son entrepôt et ses consignes d’entretien. Tomás a une idée. « La fenêtre fait 1 million de jetons. Pourquoi construire un système de récupération? Collez tout le guide dans chaque requête. Comme ça, le modèle sait tout. »
Grace demande à Amira de tester l’idée avant de construire quoi que ce soit. Amira écrit un guide synthétique pour le test : jusqu’à 3 000 fiches de produits qui se ressemblent. Par exemple : « Produit LF-27611 : bac à compost en terre cuite. Garantie : 12 mois. Expédié de Winnipeg. » Dans chaque requête, elle demande la garantie de 10 produits. Les 10 fiches sont réparties dans le guide, du début à la fin. Une réponse compte seulement si le nombre de mois est exact.
Les mêmes 800 fiches donnent 28 600 jetons avec le segmenteur en jetons o200k d’OpenAI, 32 100 sur Gemini et 47 400 sur Claude. Le graphique compte donc les fiches, pas les jetons.
Faites d’abord une prédiction : un modèle qui accepte 128 000 jetons trouvera-t-il 10 faits dans un guide de 16 000 jetons?
- Claude Haiku 5.5
- Gemini 3.5 Flash
- Gemma 3 4B (local)
- Mistral 7B (local)
Description textuelle du graphique
L’axe des x représente le nombre de fiches de produits dans le guide, sur une échelle logarithmique de 10 à environ 4 000. L’axe des y représente la proportion de recherches ayant reçu une réponse exacte, de 0 % à 100 %.
Claude Haiku 5.5 a trouvé chaque information à toutes les tailles : 25, 100, 200, 400, 800 et 3 000 fiches. Sur Claude, 3 000 fiches donnent 177 400 jetons. Gemini 3.5 Flash a aussi trouvé chaque information à 100, 400, 800 et 3 000 fiches (120 100 jetons sur Gemini).
Gemma 3 4B fonctionnait sur l’ordinateur de bureau de Larkfield, un Mac mini M4 avec 16 Go de mémoire. Il a trouvé 100 % des informations à 25 fiches (1 200 jetons) et 87 % à 100 fiches (4 200 jetons). Il en a trouvé 50 % à 200 fiches (8 200 jetons), 25 % à 400 fiches (16 200 jetons) et 0 % à 800 fiches (32 100 jetons).
Mistral 7B, utilisé de la même façon, a trouvé 100 % des informations à 25 et 100 fiches, et 90 % à 200 fiches. À 400 fiches (19 100 jetons sur Mistral), il en a trouvé 100 %.
La réponse à la prédiction est non. Gemma 3 4B accepte 128 000 jetons, mais à 16 200 jetons, il a trouvé seulement un fait sur quatre. Et il n’a jamais dit « Je ne suis pas certain ». À 32 100 jetons, il a quand même renvoyé 10 nombres dans un JSON bien formé. Les 10 étaient faux.
Comparez maintenant Mistral 7B. La bibliothèque d’Ollama lui attribue une fenêtre de seulement 32 000 jetons, le quart de celle de Gemma. Pourtant, il a trouvé 39 des 40 informations recherchées jusqu’à 19 100 jetons. La taille annoncée de la fenêtre ne permettait pas de prédire quel modèle lit bien une longue entrée. Seul le test l’a montré.
La limite du modèle n’est pas toujours celle que vous obtenez. Pour le graphique, Amira a réglé la taille de la fenêtre dans Ollama pour qu’elle suffise à chaque requête. Lors d’un essai supplémentaire, elle a envoyé le guide de 200 fiches (environ 8 200 jetons) à Gemma 3 4B sans ce réglage. Ollama a utilisé sa valeur par défaut, plus petite, et conservé seulement les 2 051 derniers jetons de la requête. Il n’a signalé aucune erreur. Le modèle a quand même répondu aux 10 recherches. Seules les réponses pour les 2 produits près de la fin étaient correctes. Vérifiez donc la fenêtre que votre outil utilise vraiment, pas seulement le nombre sur la page du modèle.
Les deux modèles hébergés ont fait beaucoup mieux : chaque recherche était correcte, jusqu’à 177 400 jetons. Tomás devrait-il donc coller le guide dans Claude? Amira essaie une question plus difficile sur les mêmes guides : « Combien de produits sont expédiés de Halifax et ont une garantie de 48 mois? » Pour répondre, le modèle doit vérifier chaque fiche, pas trouver une seule ligne.
| Modèle | Guide | Décomptes corrects | Réponses du modèle |
|---|---|---|---|
| Claude Haiku 5.5 | 100 fiches | 2, 3, 2 | 2, 3, 2 |
| Claude Haiku 5.5 | 800 fiches | 14, 21, 11 | 14, 21, 11, après 5 100 à 14 100 jetons de sortie consacrés à la réflexion |
| Claude Haiku 5.5 | 3 000 fiches | 50, 63 | aucune réponse : il a utilisé les 16 000 jetons de sortie et s’est arrêté |
| Gemini 3.5 Flash | 800 fiches | 14, 21 | 14; puis aucune réponse (16 000 jetons utilisés) |
| Gemini 3.5 Flash | 3 000 fiches | 50 | aucune réponse (16 000 jetons utilisés) |
La fenêtre contenait tout le guide chaque fois. Mais une question qui nécessite tout son contenu peut quand même échouer. Elle peut aussi consommer tellement de jetons de sortie qu’aucune réponse n’arrive.
Omar pose une question sur les coûts. Un billet normal compte environ 800 jetons. Avec le guide de 3 000 fiches, chaque requête à Claude Haiku 5.5 compte 177 400 jetons d’entrée. Au-delà de 100 000 jetons d’entrée, Haiku 5.5 coûte 0,50 $ US par million de jetons d’entrée plutôt que 0,10 $ US (page des tarifs d’Anthropic). L’entrée de chaque billet coûte donc environ 0,089 $ US. C’est plus de 1 000 fois les 0,00008 $ US d’un billet normal. Sur Gemini 3.5 Flash, à 1,50 $ US par million de jetons d’entrée, les 120 100 jetons coûtent 0,18 $ US par billet. La récupération envoie seulement les 2 ou 3 fiches dont le billet a besoin.
Erreur courante
Confondre la taille de la fenêtre de contexte avec un rappel fiable
Symptôme : Tomás lit « fenêtre de contexte de 128 K » pour Gemma 3 4B. Il prévoit d’envoyer tout le guide de 400 fiches (16 200 jetons) avec chaque billet. Le modèle accepte la requête et les réponses semblent complètes. Dans le test, 15 des 20 recherches de garantie donnent une réponse fausse. Rien dans la sortie n’indique lesquelles.
Cause : la taille de la fenêtre indique le maximum que le modèle accepte, pas la quantité qu’il utilise bien. Les recherches montrent la même tendance. Liu et ses collègues (Lost in the Middle, 2023) ont écrit que « la performance est souvent meilleure quand l’information pertinente se trouve au début ou à la fin du contexte d’entrée. Elle diminue nettement quand les modèles doivent accéder à l’information pertinente au milieu de longs contextes. » L’étude RULER (Hsieh et ses collègues, NVIDIA, 2024) a testé des modèles qui annoncent 32 000 jetons ou plus. Elle a constaté que « seulement la moitié peuvent maintenir une performance satisfaisante à une longueur de 32 K ».
Solution : envoyez moins de contenu et testez. Utilisez la récupération pour coller seulement les fiches dont le billet a besoin. Avant de compter sur une longue fenêtre, faites un petit test de rappel comme celui d’Amira. Utilisez vos documents, votre longueur et votre type de question. Chercher une information et faire un décompte sont des tâches différentes. Placez les instructions et les faits les plus importants près du début ou de la fin de la requête.
Ce que cela signifie pour un vrai service d’IA : la fenêtre de contexte est une limite, comme la taille d’un bureau. Elle ne vous dit pas à quel point le modèle lit bien ce qui se trouve sur le bureau.
Quel type de mémoire pour quelle tâche
Section intitulée « Quel type de mémoire pour quelle tâche »Les quatre types de mémoire ne sont pas en concurrence. Chacun a une tâche, un responsable et un coût.
| Type | Qui le contrôle | Combien de temps il dure | Ce qu’il coûte | À quoi il sert |
|---|---|---|---|---|
| Poids | Le fournisseur du modèle, pendant l’entraînement | Jusqu’à la prochaine version du modèle | Rien par requête | La langue et les connaissances générales. Jamais les règles de Larkfield : elles ne figurent pas dans les textes d’entraînement, et elles changent. |
| Fenêtre de contexte | Vous, dans chaque requête | Une requête | Chaque jeton, chaque fois | Les instructions, le billet de soutien et les faits nécessaires à cette réponse |
| Historique de l’application | Votre application | Aussi longtemps que vous le conservez | Renvoyé et payé à chaque requête | Les conversations. Raccourcissez ou résumez celles qui sont longues. |
| Récupération | Votre application | Aussi longtemps que vos documents | Une recherche, plus les jetons ajoutés | Les politiques, les guides, tout contenu volumineux ou souvent modifié (le cours RAG : créer une IA qui utilise vos données) |
« Alors, pourquoi ne pas entraîner le modèle sur notre politique pour qu’elle soit dans les poids? » demande Omar. L’entraînement est lent et coûteux, et la politique change. Un modèle entraîné en juin connaît encore la politique de juin en octobre. La fenêtre contient toujours la version que vous envoyez aujourd’hui.
Vérifiez votre compréhension
Un client écrit à l'assistant lundi. Mardi, le même client écrit encore : comme je vous l'ai dit hier. Expliquez ce que le modèle sait de lundi et ce que l'application doit faire.
Afficher la réponse
Le modèle ne sait rien de lundi. Ses poids n’ont pas changé après l’entraînement, et la requête de lundi n’est plus là. Le modèle voit seulement la requête de mardi. Si les messages de lundi comptent, l’application doit les conserver et les renvoyer, ou renvoyer leur résumé, dans la requête de mardi. C’est l’historique de l’application, et il coûte des jetons d’entrée à chaque requête.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Faites une prédiction : Amira envoie le guide de 200 fiches (environ 8 200 jetons) à Gemma 3 4B. Elle pose toutefois une question sur un seul produit, qui figure dans les premières lignes. Prévoyez-vous une réponse plus fiable ou moins fiable que dans le test? Pourquoi la tester quand même?
Afficher la réponse
Probablement plus fiable. Dans le test, Gemma 3 4B a trouvé le produit le plus près du début à chaque essai, jusqu’à 400 fiches. Et une question est plus facile que dix. Des recherches comme Lost in the Middle montrent aussi que le début et la fin sont les endroits les plus faciles. Mais c’est une supposition tirée d’un petit test, pas une règle. Les vrais billets portent sur des produits situés n’importe où dans le guide. Testez la vraie question avec la vraie longueur de texte avant de vous y fier.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Le 1er novembre, Larkfield fait passer son délai de retour de 30 à 45 jours. Quel type de mémoire devrait transmettre la nouvelle règle à l'assistant, et quel type ne peut pas le faire?
Afficher la réponse
La fenêtre de contexte devrait la transmettre : ajoutez la nouvelle politique à chaque requête, par récupération ou dans les instructions. Les poids ne peuvent pas le faire. Ils contiennent seulement ce que le modèle a vu pendant l’entraînement et ne changent pas quand vous envoyez une requête. La nouvelle règle n’existait pas quand le fournisseur a entraîné le modèle.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Récapitulatif
- Les poids contiennent ce que le modèle a appris pendant l’entraînement. Rien ne les change après l’entraînement, et le modèle ne garde rien entre les requêtes.
- La fenêtre de contexte est le nombre maximal de jetons qu’une requête peut contenir, en entrée et en sortie. Les modèles Claude 5.5 et Gemini 3.5 Flash acceptent environ 1 million de jetons; Gemma 3 4B en accepte 128 000.
- L’historique de l’application, c’est votre code qui renvoie les échanges précédents. Dans le test d’Amira, l’entrée est passée de 776 à 938, puis à 1 082 jetons sur trois messages.
- La récupération, c’est votre code qui trouve les documents pertinents et les ajoute à la requête.
- La taille de la fenêtre ne garantit pas un rappel fiable. Gemma 3 4B (fenêtre de 128 000 jetons) a trouvé 50 % des faits à 8 200 jetons, et aucun à 32 100. Mistral 7B (fenêtre de 32 000 jetons) en a trouvé 39 sur 40 jusqu’à 19 100 jetons. Deux modèles hébergés ont trouvé tous les faits entre 120 000 et 177 000 jetons. Mais ils n’ont donné aucune réponse à une question de dénombrement portant sur le même guide. Testez votre propre tâche avec votre propre longueur de texte.
Ensuite, vous verrez comment certains modèles utilisent des jetons supplémentaires pour réfléchir avant de répondre. Vous verrez aussi ce qui change quand l’entrée est une photo.
Leçon suivante : Raisonnement et multimodalité