Prompt et contexte
Le prompt et le contexte sont des notions fondamentales en ingénierie des prompts pour les grands modèles de langage (LLM).
Le contexte est un composant essentiel du prompt, déterminant la capacité du LLM à générer des réponses précises, pertinentes et utiles. Une ingénierie des prompts efficace repose en grande partie sur l'art de collecter, filtrer, structurer et présenter le bon contexte au modèle au bon moment, tout en surmontant les limitations des LLM actuels.
Définition du Prompt
Le prompt (terme anglais) est l'ensemble complet des données d'entrée fournies à un LLM pour générer une réponse. Il ne s'agit pas simplement d'une question ou d'une commande, mais d'un texte structuré qui peut inclure :
- Instructions : Directives claires données au modèle sur ce qu'il doit faire, dans quel format, style ou ton.
- Requête principale (Query) : La question directe de l'utilisateur ou la description de la tâche principale.
- Contexte : Informations supplémentaires nécessaires pour exécuter correctement la requête.
- Exemples (Few-shot examples) : Démonstrations du format ou du style de réponse souhaité pour des tâches similaires.
La qualité et l'exhaustivité du prompt déterminent directement la pertinence, la précision et l'utilité de la réponse du LLM.
Définition du Contexte
Le contexte dans le cadre de l'ingénierie des prompts est toute information à l'intérieur du prompt qui aide le modèle à mieux comprendre la tâche, les spécificités de la situation ou les attentes de l'utilisateur, mais qui ne fait pas partie de ses données d'entraînement initiales. Le contexte fournit les détails situationnels nécessaires pour générer une réponse adéquate.
Le contexte peut inclure :
- L'historique du dialogue précédent (dans les chatbots).
- Des données extraites de sources externes (documents, bases de données, pages web) — la base de la génération augmentée par récupération (RAG).
- Des informations sur l'utilisateur (profil, préférences).
- Des détails spécifiques à la tâche ou à la situation en cours.
- Des exemples d'exécution de tâches similaires (dans le cadre du few-shot prompting).
Il est important de distinguer le contexte fourni dans le prompt des connaissances générales acquises par le modèle lors de son pré-entraînement. L'ingénierie des prompts se concentre sur la fourniture efficace du contexte situationnel.
Interrelation et Influence
Le prompt et le contexte sont des notions fondamentales dans le fonctionnement des transformeurs, déterminant comment le modèle perçoit les données d'entrée et sur quelle base il génère un résultat. Sur le plan architectural, un transformeur ne distingue pas spécifiquement le « prompt » et le « contexte » – tous deux font partie de la séquence de tokens d'entrée, qui sont transformés en embeddings, enrichis d'informations positionnelles et traités conjointement par les couches d'auto-attention.
Le prompt et le contexte sont indissociables : le contexte est une partie intégrante du prompt.
- Le contexte façonne le prompt : L'ingénieur sélectionne et structure le contexte pertinent à inclure dans le prompt.
- Le contexte guide le modèle : Les informations fournies permettent au LLM de restreindre l'espace des réponses possibles, de se concentrer sur les aspects pertinents et d'éviter les hallucinations.
- La qualité du contexte détermine la qualité de la réponse : Un contexte insuffisant, non pertinent ou contradictoire conduit à des réponses imprécises, générales ou erronées. Un contexte précis et complet améliore la spécificité et l'utilité de la génération.
- Influence sur l'interprétation des instructions : Le contexte peut préciser ou modifier l'interprétation des instructions générales dans le prompt.
L'efficacité d'un prompt dépend en grande partie de la capacité de l'ingénieur à collecter, filtrer et présenter le contexte pertinent au modèle.
Types de Contexte
Le contexte peut être classé selon différents critères :
Par source :
- Fourni par l'utilisateur : Entrée explicite de l'utilisateur, sa question ou la description de la tâche.
- Issu de l'historique du dialogue : Messages précédents de l'utilisateur et de l'assistant (mémoire à court terme).
- Extrait (Retrieved) : Données provenant de sources externes (documents, bases de données, web) via la RAG.
- Issu du profil/de la base de connaissances : Informations à long terme sur l'utilisateur ou le domaine.
- Statique/Instructif : Informations intégrées par l'ingénieur dans le modèle de prompt (instructions, exemples, définitions de rôles).
Par dynamisme :
- Contexte statique : Partie immuable du prompt (instructions, définitions, exemples). Définit la tâche générale.
- Contexte dynamique : Informations qui changent d'une requête à l'autre (données de l'utilisateur, résultats de la RAG, heure actuelle). Fournit des détails spécifiques.
Par durée de conservation (Mémoire) :
- Contexte à court terme : Historique de la session de dialogue en cours.
- Contexte à long terme : Données sauvegardées sur l'utilisateur ou les interactions précédentes, nécessitant des mécanismes de stockage et de récupération.
Gestion du Contexte
La gestion efficace du contexte est une tâche clé de l'ingénierie des prompts, en particulier compte tenu des limitations de la fenêtre de contexte des LLM. Les principales méthodes sont :
- RAG : La méthode la plus courante pour travailler avec de grands volumes d'informations. Elle permet de trouver et d'inclure dynamiquement dans le prompt uniquement les fragments les plus pertinents d'une vaste base de connaissances. Nécessite une base de données vectorielle et des mécanismes de recherche efficaces (lexicaux ou sémantiques).
- Chunking (Segmentation) : Division de grands documents en parties sémantiquement liées ou de taille fixe pour l'indexation et la récupération ultérieure via RAG.
- Résumé (Summarization) : Compression d'un long historique de dialogue ou de documents volumineux pour transmettre l'essentiel dans une fenêtre de contexte limitée.
- Gestion de la Mémoire (Memory Management) : Utilisation de diverses stratégies pour stocker et récupérer l'historique du dialogue dans les chatbots et les agents (par exemple, ConversationBufferMemory, ConversationSummaryBufferMemory dans LangChain).
- Fenêtre glissante (Sliding Window) : Conservation uniquement des N derniers messages du dialogue dans le contexte.
- Filtrage et Priorisation : Sélection des fragments de contexte les plus pertinents en fonction de leur importance (par exemple, à l'aide de scores de pertinence fournis lors de la recherche) avant d'assembler le prompt final.
Rôle du Contexte dans le Prompt Engineering
- Amélioration de la pertinence : Le contexte permet au modèle de générer des réponses qui correspondent précisément à la requête et à la situation de l'utilisateur.
- Réduction des hallucinations : Fournir des informations factuelles (via RAG) oblige le modèle à s'appuyer sur celles-ci plutôt que d'inventer des faits.
- Personnalisation : Le contexte sur l'utilisateur (préférences, historique) permet d'adapter les réponses.
- Gestion de l'état : Dans les dialogues et les processus en plusieurs étapes, le contexte (l'historique) assure la continuité et la conscience du modèle des étapes précédentes.
- Dépassement des limites de connaissance du modèle : La RAG permet au modèle de répondre à des questions sur des événements survenus après son entraînement ou sur des données spécifiques/privées.
Limites
- Limite de la fenêtre de contexte : Bien que celle-ci ait été étendue à 1-2 millions de tokens dans les modèles récents, le traitement de tels volumes peut être coûteux et lent. Cela nécessite des stratégies de compression et de sélection efficaces (RAG, résumé).
- Recherche de contexte pertinent : L'efficacité de la RAG dépend de la qualité de la recherche. Un contexte mal extrait peut induire le modèle en erreur (« déchets en entrée, déchets en sortie »).
- « Vallée de l'indifférence » (Valley of Meh) : Les informations situées au milieu d'un prompt très long peuvent être ignorées par le modèle. Cela nécessite une structuration du prompt (par exemple, la « technique du sandwich »).
- Risque d'injection de contexte : Si le contexte est extrait de sources non fiables (par exemple, des pages web), il peut contenir des instructions malveillantes (injections de prompt).
Bibliographie
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
- Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
- Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
- Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
- Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
- Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
- Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
Voir aussi
- Grands modèles de langage
- Fenêtre de contexte
- Bases de données vectorielles
- LangChain