Ingénierie de prompt
L'ingénierie de prompt (issu de l'anglais prompt engineering) est le processus de structuration d'un prompt, de sorte qu'il soit efficacement interprété et compris par un modèle d'intelligence artificielle générative[1],[2]. Un prompt (aussi appelé requête, ou invite de commande) est une description textuelle de la tâche qu’une IA doit effectuer[1].
Un prompt, pour un modèle de langage produisant du texte, peut être une requête telle que « qu'est-ce que le petit théorème de Fermat ? »[3]. Ou bien une commande comme « écrire un poème sur la chute des feuilles »[4], ou une déclaration plus longue incluant du contexte, des instructions[5], et l'historique des conversations. L'ingénierie de prompt peut impliquer de formuler une requête, de spécifier un style[4], de fournir un contexte pertinent[6], ou d'attribuer un rôle à l'IA. Un prompt peut inclure quelques exemples à partir desquels un modèle doit apprendre, comme demander au modèle de compléter « maison → house, chat → cat, chien → » (la réponse attendue étant dog)[7], une approche appelée apprentissage en quelques coups (few-shot learning)[8].
Lors de la communication avec un modèle générant des images ou du son, un prompt typique est une description d'un résultat souhaité, tel que « une photo de haute qualité d'un astronaute montant un cheval »[9] ou « une musique de fond pour piano dans le style de Gershwin »[10]. Le prompt est écrit (ou dicté) dans une « fenêtre de contexte », qui autorise un texte plus ou moins long selon le LLM et sa version.
Apprentissage en contexte
[modifier | modifier le code]L'ingénierie de prompt est associée à la notion d'apprentissage en contexte (de l'anglais in-context learning), ce qui signifie la capacité d'un modèle à apprendre temporairement des informations à partir du prompt, c'est-à-dire du contexte. L'apprentissage en contexte a l'avantage de fournir des informations spécifiques au modèle sans nécessiter de l'entraîner, ce qui serait plus long et coûteux. Le modèle n'est en effet pas modifié, le prompt faisant simplement partie des « données d'entrée ».
Histoire
[modifier | modifier le code]En 2021, les chercheurs ont affiné un modèle pré-entraîné génératif (T0) sur l'exécution de 12 tâches de traitement automatique des langues (en utilisant 62 ensembles de données, car chaque tâche peut avoir plusieurs ensembles de données). Le modèle a montré de bonnes performances sur de nouvelles tâches, surpassant les modèles entraînés directement sur l'exécution d'une seule tâche (sans pré-entraînement). Pour résoudre une tâche, T0 reçoit la tâche dans un prompt structuré, par exemple If {{premise}} is true, is it also true that {{hypothesis}}?
||| {{entailed}}.
est le prompt utilisé pour que T0 résolve l'implication[11].
En 2022, une technique chain-of-thought (« chaîne de pensée ») a été proposée par des chercheurs de Google[12],[13].
En 2023, plusieurs « bases de données de prompts » pour la génération de texte ou d'images étaient publiquement accessibles[14],[15].
Génération de texte
[modifier | modifier le code]Chaîne de pensée
[modifier | modifier le code]C'est l'une des techniques les plus connues, qui consiste à inciter les grands modèles de langage à aborder un problème « pas à pas », avant de fournir la réponse finale[16]. La chaîne de pensée améliore les capacités de raisonnement d'un modèle, en le poussant à résoudre un problème de façon plus progressive. Il permet aux grands modèles de langage de surmonter les difficultés liées à certaines tâches de raisonnement qui nécessitent une réflexion logique et plusieurs étapes à résoudre, comme les problèmes arithmétiques[17],[18],[19].
Par exemple, étant donné la question « Q : Les cuisiniers de la cafétéria avaient 23 pommes. S'ils en utilisaient 20 pour préparer le déjeuner et en achetaient 6 de plus, combien de pommes ont-ils ? », un prompt pourrait inciter le grand modèle de langage à répondre « A : La cafétéria avaient 23 pommes à l'origine. Ils en utilisaient 20 pour préparer le déjeuner. Ils en avaient donc 23 - 20 = 3. Ils ont acheté 6 pommes de plus, donc ils ont 3 + 6 = 9. La réponse est 9."[12]
La méthode initialement proposée[12] consistait à inclure dans le prompt quelques exemples de questions et de réponses, où les réponses contenaient des détails de raisonnement pour inciter le modèle à faire de même. Cependant, le simple fait d'ajouter les mots Let's think step-by-step (« Réfléchissons étape par étape ») s'est également révélé efficace. Cela rend la méthode plus facile à appliquer, puisqu'il n'y a plus besoin de fournir des exemples spécifiques de questions et de réponses[20].
Réduire ou divulguer l’incertitude
[modifier | modifier le code]Par défaut, un modèle de langage ne produit par d'indice de fiabilité lié à sa réponse à un prompt.
Le modèle peut produire un texte qui inspire confiance, bien que les prédictions sous-jacentes de mots (ou plus exactement de tokens) aient des scores de probabilité faibles. Les grands modèles de langage comme GPT-4 peuvent avoir des scores de vraisemblance calibrés avec précision dans leurs prédictions de mots suivants[21].
Mais si on ne peut pas accéder à ces scores (comme lorsqu’on accède au modèle via une API restrictive), l’incertitude peut toujours être estimée et incorporée dans la sortie du modèle. Une méthode simple consiste à inciter le modèle à utiliser des mots pour estimer l’incertitude. Une autre consiste à inciter le modèle à refuser de répondre de manière standardisée si l’entrée ne satisfait pas certaines conditions.
Génération d'images
[modifier | modifier le code]En 2022, des modèles des modèles de génération d'images comme DALL-E 2, Stable Diffusion et Midjourney ont été rendus public[22]. Ces modèles prennent en entrée des prompts, et les utilisent pour générer des images artistiques IA. Ces modèles n'ont pas forcément la même compréhension de la grammaire et de la structure des phrases que les grands modèles de langage[23].
Une prompt de génération d'images contient généralement une description du sujet souhaité (par exemple, des coquelicots orange vif ), du type de « support » souhaité (comme une une gravure, une peinture ou une photographie numérique ), du style (hyperréalisme, cartoon, pop-art...), l'éclairage (éclairage incident, rayons crépusculaires, ambiance nocturne... ), la couleur et la texture, etc.[24].
La documentation de Midjourney encourage les requêtes courtes et descriptives : au lieu de « Montre-moi une photo de nombreux coquelicots de Californie en fleurs, rend-les orange vif et vibrants, et dessinez-les dans un style illustré avec des crayons de couleur », un prompt efficace pourrait être « Coquelicots orange vif de Californie dessinés aux crayons de couleur »[23].
Génération augmentée par récupération (mode RAG)
[modifier | modifier le code]Traditionnellement, les modèles de langage à grande échelle (LLM) génèrent du contenu en ne s’appuyant que sur les informations apprises durant leur phase d’entraînement. Dans le domaine de l’IA générative, le mode RAG (Retrieval-Augmented Generation) peut éviter cela.
Le mode RAG passe par deux étapes :
- étape de récupération : quand le modèle reçoit une requête, il fait une rapide recherche dans un ensemble prédéfini de documents ou de données pour trouver et incorporer les informations les plus pertinentes par rapport à la requête. Cette phase initiale, aussi dite d'incorporations denses, nécessite que le modèle ait accès à une source qui peut être (selon les cas) une base de données vectorielle, un index de résumés, un index d’arbres, ou un index de table de mots-clés, etc.).
Un récupérateur de documents sélectionne les documents les plus pertinents au vu du prompt. Techniquement, cette pertinence est généralement déterminée en encodant sous forme de vecteur la requête ainsi que les documents, puis en identifiant les documents dont les vecteurs sont les plus proches en distance euclidienne du vecteur de requête ; - étape de génération : le LLM génère alors une sortie qui incorpore à la fois des informations provenant de la requête, des documents pertinents ainsi récupérés, et de ses connaissances internes.
Cette méthode est particulièrement bénéfique pour gérer des informations propriétaires ou dynamiques qui n’étaient pas incluses dans les phases initiales de formation ou de réglage fin du modèle.
RAG est également notable pour son utilisation de l'apprentissage few-shot, où le modèle utilise un petit nombre d’exemples, souvent récupérés automatiquement à partir d’une base de données, pour informer ses sorties. Le modèle peut alors utiliser les informations pertinentes ainsi récupérées, en plus de ses connaissance interne, pour générer une réponse ou un contenu (image, code..) conforme à la requête initiale, mais créé de manière plus informée et précise.
Le RAG invite le modèle d'IA à « consulter » — en temps réel — une base de données ou un corpus de documents externes. Si les données y sont bien indexées, ou si l'IA dispose d'outils perfectionnés de récupération d’informations, ces dernières seront susceptibles d'enrichir la génération de texte ou d'image par l'IA. Ceci améliore significativement la précision, la pertinence et la richesse du contenu généré[25].
Le mode RAG s'avère par exemple utile pour générer des FAQ dynamiques, permettre à un chatbot d'administration ou d'entreprise de mieux répondre, respectivement, aux requêtes des citoyens et des clients (réponses plus personnalisées et précises). Il peut « créer des articles, des billets de blog, des descriptions de produits personnalisés pour le public cible »[25].
Génération de réponse augmentée par récupération de graphes
[modifier | modifier le code]Une variante, dite de génération augmentée par récupération de graphes (GraphRAG ; solution inventé par Microsoft Research), étend le RAG de telle manière qu’au lieu de se fier uniquement à la similarité vectorielle (comme dans la plupart des approches RAG), GraphRAG utilise un graphe de connaissances généré par le LLM. Ce graphe permet au modèle de connecter des morceaux d’information disparates, de synthétiser des idées, et de « comprendre » de manière holistique des concepts sémantiques résumés à partir de grandes collections de données.
Des chercheurs ont montré l’efficacité de GraphRAG en utilisant des corpus de données comme le « Violent Incident Information from News Articles » (VIINA) qui est une base de données créée par le politologue Yuri Zhukov dans le cadre de l’invasion de l'Ukraine par l'armée russe en 2022. C'est un système de collecte, classement et géocodage par une IA d’événements multi-sourcés, réalisé en temps quasi-réel à partir des rapports d'informations des médias ukrainiens et russes, fonctionnant grâce à l’apprentissage automatique[26].VIINA est librement disponible pour les étudiants, les journalistes, les décideurs politiques et les chercheurs. Il se met à jour toutes les les six heures et conserve certaines métadonnées de chaque source (date, heure, URL web)[27]. Dans VIINA, en combinant des graphes de connaissances générés par le LLM avec l’apprentissage automatique de graphes, GraphRAG a amélioré la complétude et la diversité des réponses générées par l'IA.
Semi-automatisation du prompting
[modifier | modifier le code]Il consiste, dans un système qui utilise deux LLM (disons A et B), à demander au LLM A (« LLM de requêtes » ou « expert en prompt », entraîné avec des paires d’entrées-sorties) de générer des prompts qui, s'ils étaient fournis au LLM B, produiraient les réponses attendues.
Le LLM B reçoit le prompt initial, et les instructions générées par le LLM A. Il génère des réponses à partir de ces requêtes. Les log-probabilités (probabilités logarithmiques) des réponses sont calculées et ajoutées pour obtenir le score de l’instruction. Ce processus peut être répété, avec le LLM A qui génère alors de nouvelles variations d’instructions, basées sur les instructions les mieux notées, jusqu’à ce qu’un « critère d’arrêt » soit atteint. Les instructions les mieux notées sont alors sélectionnées et utilisées.
Une option dite auto-CoT est de former « le LLM A » à générer ses propres exemples de Chain of Thought (« chaîne de pensée »). Pour ce faire, une bibliothèque de questions est utilisée, où chaque question est convertie en vecteurs à l'aide d'un modèle comme BERT. Les vecteurs de questions sont ensuite regroupés, et les questions les plus proches des centroïdes de chaque groupe sont sélectionnées. Le LLM A procède alors à un CoT sur chaque question, et les exemples de CoT résultants sont ajoutés à l’ensemble de données. Ainsi, lorsqu’une nouvelle requête est faite au LLM B, des exemples de CoT correspondant aux questions les plus similaires peuvent être récupérés et ajoutés à la requête.
L’algorithme d'ingénierie de prompt du LLM A peut effectuer une recherche en faisceau (beam search) pour optimiser les requêtes. La recherche en faisceau est une technique d'exploration sélective déjà utilisée en traduction automatique, en reconnaissance vocale, et en génération de texte. Elle complexifie l'algorithme, mais limite le périmètre d’exploration à un nombre restreint de « meilleures options » à chaque étape, ce qui permet de trouver plus rapidement les séquences de mots ou d’actions les plus probables, en explorant un espace de possibilités de manière structurée. La recherche en faisceau « consiste, à chaque instant t, à conserver N hypothèses candidates, en choisissant les N chemins les plus probables. La probabilité d'un chemin est donnée comme la probabilité jointe de toute la séquence, depuis la racine (...). Il s’agit donc d’un parcours en largeur de l’arbre de recherche. »[28] Elle est plus efficace que l’exploration exhaustive, car réduisant considérablement le nombre de chemins à considérer. En raison de sa nature fondamentalement heuristique, elle peut parfois ignorer des solutions optimales ; elle est donc utilisée quand le compromis entre efficacité de calcul et niveau de qualité des solutions générées est jugé acceptable.
Injection de prompt
[modifier | modifier le code]L'injection de prompt consiste à manipuler le prompt pour qu'il pousse le modèle à créer un contenu qu'il est censé ne pas produire[29].
Il y a plusieurs types d'injection de prompt, notamment :
- Le jailbreaking (« débridage »), qui désinhibe le modèle. Par exemple avec un prompt qui demande au modèle de jouer le rôle d'un caractère fictif[30].
- Le prompt leaking (« fuite de prompt »), dans lequel un utilisateur persuade le modèle de divulguer son pre-prompt, qui est un texte en général caché des utilisateurs, et automatiquement ajouté au début du prompt pour indiquer au modèle comment se comporter[30].
Références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Prompt engineering » (voir la liste des auteurs).
- Bastien L, « Prompt Engineer : tout savoir sur ce nouveau métier de l’IA, incontournable pour le futur », sur lebigdata.fr, (consulté le )
- (en) Mohamad Diab, Julian Herrera et Bob Chernow, « Stable Diffusion Prompt Book », (consulté le ) : « "Prompt engineering is the process of structuring words that can be interpreted and understood by a text-to-image model. Think of it as the language you need to speak in order to tell an AI model what to draw." »
- (en) « Introducing ChatGPT », sur OpenAI Blog, (consulté le ) : « "what is the fermat's little theorem" »
- (en) Reid Robinson, « How to write an effective GPT-3 or GPT-4 prompt », sur Zapier, (consulté le ) : « "Basic prompt: 'Write a poem about leaves falling.' Better prompt: 'Write a poem in the style of Edgar Allan Poe about leaves falling.' »
- (en) Natasha Gouws-Stewart, « The ultimate guide to prompt engineering your GPT-3.5-Turbo model », sur masterofcode.com,
- (en) Laura Greenberg, J., « How to Prime and Prompt ChatGPT for More Reliable Contract Drafting Support », sur contractnerds.com, (consulté le )
- (en) Shivam Garg, Dimitris Tsipras et Percy Liang, « What Can Transformers Learn In-Context? A Case Study of Simple Function Classes », .
- (en) « Language models are few-shot learners », Advances in Neural Information Processing Systems, (arXiv 2005.14165)
- (en) Will Douglas Heaven, « This horse-riding astronaut is a milestone on AI's long road towards understanding », sur MIT Technology Review, (consulté le )
- (en) Kyle Wiggers, « Meta open sources an AI-powered music generator », sur TechCrunch, (consulté le ) : « Next, I gave a more complicated prompt to attempt to throw MusicGen for a loop: "Lo-fi slow BPM electro chill with organic samples." »
- (en) Victor Sanh, Albert Webson, Colin Raffel, Stephen H. Bach, Lintang Sutawika et al., « Multitask Prompted Training Enables Zero-Shot Task Generalization », .
- (en) Jason Wei et Xuezhi Wang « Chain-of-Thought Prompting Elicits Reasoning in Large Language Models » () (arXiv 2201.11903, lire en ligne)
—Advances in Neural Information Processing Systems (NeurIPS 2022) - (en) Wei et Zhou, « Language Models Perform Reasoning via Chain of Thought », ai.googleblog.com, (consulté le )
- Chen, « How to Turn Your Chatbot Into a Life Coach », The New York Times,
- (en) Brian X. Chen, « Get the Best From ChatGPT With These Golden Prompts », The New York Times, (ISSN 0362-4331, lire en ligne, consulté le )
- (en) McAuliffe, « Google's Latest AI Model Can Be Taught How to Solve Problems », CNET (consulté le ) : « "'Chain-of-thought prompting allows us to describe multistep problems as a series of intermediate steps,' Google CEO Sundar Pichai" »
- Dang, « Harnessing the power of GPT-3 in scientific research », VentureBeat, (consulté le )
- (en) Montti, « Google's Chain of Thought Prompting Can Boost Today's Best Algorithms », Search Engine Journal, (consulté le )
- (en) Ray, « Amazon's Alexa scientists demonstrate bigger AI isn't always better », ZDNET (consulté le )
- Dickson, « LLMs have not learned our language — we're trying to learn theirs », VentureBeat, (consulté le )
- (en) OpenAI, « GPT-4 Technical Report », . [cf. Figure 8]
- (en) Jim Clyde Monge, « Dall-E2 VS Stable Diffusion: Same Prompt, Different Results », sur MLearning.ai, (consulté le )
- « Prompts » (consulté le )
- (en) « Stable Diffusion prompt: a definitive guide », sur Stable Diffusion Art, (consulté le )
- Jérémy Robert, « RAG (Retrieval-Augmented Generation) : l'avenir des LLM et de l'IA générative », sur Formation Data Science, (consulté le ).
- (en-GB) « DemTech », sur demtech.oii.ox.ac.uk (consulté le ).
- « Data on the Russian invasion of Ukraine available in near-real time », sur isr.umich.edu (consulté le ).
- Valentin Pelloin (2024) La compréhension de la parole dans les systèmes de dialogues humain-machine à l'heure des modèles pré-entraînés. Informatique et langage [cs.CL]. Thèse ; Le Mans Université. Français. ⟨NNT : 2024LEMA1002⟩. ⟨tel-04446162⟩, voir pp62-63
- Edward Back, « « Prompt injection » : quelle est cette nouvelle attaque contre les IA ? », sur Futura (consulté le )
- (en) « Learn Prompting: Your Guide to Communicating with AI », sur learnprompting.org (consulté le )