Cela fait plus d’un an que la terre entière s’essaie au prompting (ou presque)… Alors comment cet art du prompt engineering a-t-il évolué depuis sa massification en novembre 2022 ? Comment faut-il prompter une IA en 2024 ?
Ce nouvel article vise à proposer un guide avec des instructions détaillées pour améliorer la qualité des prompts destinées aux Modèles de Langage à Grande Échelle (LLMs). Il se base sur le papier de Bsharat & al. (2023), disponible sur Arxiv et intitulé « Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4« .
Les résultats de cette étude montrent que les modèles plus vastes simulent mieux les consignes, et que clairement la précision des directives améliore la performance des LLMs. Assigner un rôle spécifique aux LLMs s’avère donc utile pour obtenir des résultats en adéquation avec nos attentes. Autrement dit : « Garbage in, garbage out« … alors soignez vos prompts ! Quelques astuces plus exotiques (comme le pourboire, l’obligation ou l’absence de politesse) aident aussi à améliorer les réponses.
Plus précisément, le papier montre, avec le test de référence ATLAS conçu manuellement, qui comprend des questions multiples pour chaque principe, que les prompts proposés selon le guide ont amélioré la qualité et la précision des réponses LLM d’une moyenne de 57,7 % et de 67,3 %, respectivement, lorsqu’elles sont appliquées à GPT-4 (voir le repository GitHub d’Atlas).
1. Rappel de quelques techniques avancées de prompting pour les LLM
Très tôt sur ce blog j’avais aborder le sujet de l’art du prompting ou prompt engineering. Avant de parler des principes à respecter dans le prompting, il est bon de se rappeler quelques techniques générales de prompting. Voici les principales à ce jour :
1.1 Guidage de type Ask-Me-Anything (AMA) – maillage de questions
Ce guidage implique l’utilisation de plusieurs invites imparfaites et l’agrégation de leurs réponses. Cette technique est particulièrement efficace dans les formats de questions-réponses. Ainsi, si vous cherchez une réponse à une question historique complexe, au lieu d’un seul prompt, vous pourriez poser plusieurs questions liées mais légèrement différentes. Par exemple : « Quelles étaient les principales causes de la Première Guerre mondiale ? », « Comment les alliances ont-elles contribué au début de la Première Guerre mondiale ? », « En quoi la Première Guerre mondial était unique ? », etc. En agrégeant les réponses de ces différents prompts, vous obtenez une compréhension plus complète et plus précise.
1.2 La méthode Chain-of Thought (CoT) – décomposition en étapes
Cette méthode demande au modèle de générer une série d’étapes de raisonnement intermédiaires, aidant à la performance dans des tâches nécessitant une résolution de problèmes complexe. C’est en quelque sorte le principe de la décomposition de la pensée appliquée aux LLMs. Dans ce cas, pour un problème mathématique comme « Si un train parcourt 60 km en 80 minutes, à quelle vitesse va-t-il en km par heure ? », la méthode Chain-of-Thought impliquera que l’on aide le modèle en décomposant la solution en étapes. Ainsi on demandera de calculer la vitesse par minute puis de la convertir en km par heure.
1.3 Guidage de type Least-to-Most – technique de l’entonnoir
Cette stratégie consiste à décomposer des problèmes complexes en sous-problèmes plus simples, en abordant chacun séquentiellement pour résoudre le problème plus large. Alors, dans un problème scientifique comme expliquer la photosynthèse, le guidage least-to-most pourrait commencer par des questions de base telles que « Qu’est-ce que la photosynthèse ? » et « Quels sont les composants impliqués dans la photosynthèse ? » avant de passer à des aspects plus complexes du processus comme les réactions chimiques en jeu, etc. C’est un peu la technique de l’entonnoir : on démarre volontairement assez large dans l’échange, avant de converger vers LA question à résoudre.
Des recherches ont montré que l’intégration d’explications progressives dans les prompts peut améliorer les capacités d’apprentissage et de résolution de problèmes d’un LLM, en particulier pour des tâches complexes. Ainsi lorsque vous demandez au modèle de classer des animaux dans différentes catégories, fournir une explication avec la question, comme « Classifiez ces animaux en fonction de leur habitat et de leur régime alimentaire » peut donner des réponses plus précises et détaillées.
1.4 La technique de few-shot prompting – apprentissage par l’exemple
Le few-shot prompting est une technique pour améliorer la performance des modèles de langage de grande taille (LLMs). C’est l’apprentissage par l’exemple. En effet, elle consiste à fournir quelques exemples dans le prompt pour guider le modèle dans son apprentissage contextuel. Ces exemples conditionnent le modèle pour qu’il réponde de manière plus adéquate aux requêtes suivantes. Cette méthode s’est avérée efficace pour des tâches complexes, et la recherche suggère que l’efficacité augmente avec le nombre d’exemples fournis. La structuration des prompts et la distribution des exemples sont cruciales.
L’exemple de few-shot prompting dans l’apprentissage des LLMs pourrait être le suivant : si l’on souhaite que le modèle apprenne à classer des commentaires comme positifs ou négatifs, on lui présente quelques exemples annotés. Ainsi, on pourrait lui montrer :
- « J’adore ce restaurant ! » // Positif
- « C’était une expérience terrible. » // Négatif
Ensuite, on demande au modèle de classer un nouveau commentaire sans annotation :
« Le service était exceptionnel… »
Le modèle, s’étant conditionné sur les exemples fournis, serait alors plus à même de prédire correctement que le commentaire est positif. Cet exercice peut être itéré avec un nombre croissant d’exemples pour renforcer l’apprentissage.
1.5 Guidage par stimulus directionnel (Directional Stimulus Prompting) – conseils et indices
Ce cadre appelé Directional Stimulus Prompting (DSP) introduit un nouveau composant appelé « stimulus directionnel » dans le prompt afin de fournir une orientation et un contrôle nuancés et spécifiques à l’instance sur les LLM. Plus précisément, le stimulus directionnel agit comme des « conseils » et des « indices » pour la requête d’entrée afin de guider les LLM vers la sortie souhaitée. Le stimulus directionnel est généré uniquement sur la base de la requête d’entrée. Cette approche incorpore des mots-clés dans le prompt comme stimulus directionnel pour indiquer les points clés que la réponse souhaitée doit couvrir. Cela améliore considérablement la qualité de sortie. Pour plus d’information sur le DSP, voir l’article ArXiv Guiding Large Language Models via Directional Stimulus Prompting.
2. Les grands principes de prompting pour améliorer ses prompts
Il y a cinq catégories de principes pour améliorer les interactions avec les modèles de langage à grande échelle (LLM) comme ChatGPT. J’y ajoute parfois des commentaires personnels issus de ma propre pratique du prompting de LLM. En gras les techniques que j’utilise le plus dans mes prompts.
1. Structure et clarté du prompt
Cette catégorie de techniques concerne la manière dont l’invite est formulée pour être claire et structurée. L’article recommande alors les principes suivants (nous avons gardé les numéros d’origine pour faciliter votre lecture plus complète dans l’article d’origine) :
- Intégrer le public visé dans l’invite. (2) – c’est fondamental pour améliorer rapidement la qualité de la réponse
- Utiliser des directives affirmatives telles que « faites » tout en évitant les termes négatifs tels que « ne faites pas ». (4) – c’est un moyen aussi très clair de donner des indications (presque un mélange de few-shots et de CoT), idéal pour intégrer ou éviter certains types de réponses.
- Utiliser des mots-clés comme « penser étape par étape ». (12) – clairement inspiré de CoT et très efficace pour des sujets complexes
- Utilisez des amorces de sortie, qui consistent à conclure votre message par le début de la sortie souhaitée en terminant le prompt par le début de la réponse attendue. (20) – là on est sur du cadrage de la réponse attendue et cela fonctionne remarquablement bien. A tester !
- Utilisez des délimiteurs. (17) – ça c’est très pratique pour la structuration de données et la programmation.
- Lors de la mise en forme de votre invite, commencez par « ###Instruction### », suivi de « ###Exemple### » ou « ###Question### le cas échéant. Présentez ensuite votre contenu. Utilisez un ou plusieurs sauts de ligne pour séparer les instructions, les exemples, les questions, le contexte et les données d’entrée. (8) – inspiré de la programmation, cette technique permet d’améliorer aussi assez nettement la qualité des réponses du LLM.
2. Spécificité et information
Il s’agit d’ajouter des éléments spécifiques à l’invite pour guider la réponse du modèle. Cela va conférer des spécificité de style et/ou de contenu à la réponse générée par le LLM. Dans ces techniques on retrouve :
- Mettre en place un système de prompt par l’exemple (few-shot prompting). (7) – la technique de l’exemple pour le LLM est très efficace. Elle peut prendre de multiple forme, mais un must à avoir en tête. Pas très différent de l’humain sur cette approche.
- Lorsque vous avez besoin de clarté ou d’une compréhension plus approfondie d’un sujet, d’une idée ou de tout autre élément d’information, utilisez les invites suivantes suivantes :
- Expliquez-moi [insérer un sujet spécifique] en termes simples.
- Expliquez-moi comme si j’avais XX ans (XX peut varier, mais en gros 5 ans, 10 ans, 15 ans et 25 ans sont bien)
- Expliquez-moi comme si j’étais un débutant en [domaine ]
- « Rédigez [l’essai/le texte/le paragraphe] en utilisant un anglais simple comme si vous expliquiez quelque chose à un enfant de XX ans » (XX peut varier, cf au-dessus). (5)
- Ajoutez à votre message la phrase suivante : « Veillez à ce que votre réponse soit impartiale et ne repose pas sur des stéréotypes. » (13) – Cela limite en effet plutôt bien les biais dans les réponses. Attention cela ne les élimine pas non plus ! Il faut rester vigilant sur la réponse fournie.
- Pour rédiger un texte censé être similaire à un échantillon fourni, il convient d’inclure des instructions spécifiques :
- « Veuillez utiliser la même langue en vous basant sur le paragraphe fourni [/titre/texte/essai/réponse] ». (26)
- Lorsque vous souhaitez commencer ou poursuivre un texte en utilisant des mots, des expressions ou des phrases spécifiques, utilisez la structure d’invite suivante :
- o Je vous présente le début [des paroles de chanson/de l’histoire/du paragraphe/de l’essai…] : [Insérer les paroles/mots/phrases].
- Terminez en vous basant sur les mots fournis. Veillez à ce que le flux soit cohérent. (24)
- Énoncer clairement les exigences du modèle que celui-ci doit respecter pour produire du contenu, sous la forme de mots-clés, de règles, de conseils ou d’instructions. (25) – Comme d’habitude plus vous êtes précis dans le prompt sur ce qu’il faut intégrer, meilleure est la réponse. Certaine de ces exigences peuvent passer en « custom instructions » par exemple.
- Pour s’enquérir d’un sujet ou d’une idée spécifique et tester votre compréhension, vous pouvez utiliser la phrase suivante :
- « Enseignez-moi le [nom d’un théorème/sujet/règle] et incluez un test à la fin, mais ne me donnez pas les réponses. Et dites-moi si j’ai trouvé la bonne réponse lorsque je réponds » (15)
- Rédiger un essai/texte/paragraphe/article ou tout autre type de texte qui doit être détaillé :
- « Rédigez pour moi un [essai/texte/paragraphe] détaillé sur [sujet] en ajoutant toutes les informations nécessaires ». (21)
3. Interaction utilisateur et engagement
Cette catégorie de techniques favorise une interaction dynamique entre l’utilisateur et le modèle. Ce sont des approches qui vont permettre d’interagir avec l’utilisateur pour converger petit à petit vers une réponse utilisable.
- Permettez au modèle d’obtenir des détails et des exigences précises en vous posant des questions jusqu’à ce qu’il ait suffisamment d’informations pour fournir les résultats nécessaires.
- « À partir de maintenant, j’aimerais que vous me posiez des questions pour… ». (14)
- Rédiger un essai/texte/paragraphe/article ou tout autre type de texte qui doit être détaillé :
- « Rédigez pour moi un [essai/texte/paragraphe] détaillé sur [sujet] en ajoutant toutes les informations nécessaires ». (21)
4. Contenu et style de langage
Ce panel d’approche concerne la façon dont le langage est utilisé dans l’invite. Toutefois ces quelques astuces boostent la qualité des réponses. Certaines techniques sont étonnantes comme celle du pourboire ou de la pénalité. Toutefois, il s’avère que cela fonctionne plutôt bien. Je vous recommande donc de les tester :
- Corriger/modifier un texte spécifique sans en changer le style : « Essayez de réviser chaque paragraphe envoyé par les utilisateurs. Vous ne devez qu’améliorer la grammaire et le vocabulaire de l’utilisateur et veiller à ce que le texte soit naturel. Vous ne devez pas changer le style d’écriture, par exemple en rendant un paragraphe formel plus décontracté ». (22)
- Incorporez les phrases suivantes : « Votre tâche est » et « Vous DEVEZ ». (9) – cela aide le LLM à converger vers des réponses plus qualitatives. Probablement un côté « directement au but » qui est appréciable dans le modèle de données.
- Incorporer les phrases suivantes : « Vous serez pénalisé ». (10)
- Attribuer un rôle au modèle linguistique. (16)
- Utilisez la phrase « Répondez à une question en langage naturel » dans vos prompts. (11)
- Il n’est pas nécessaire d’être poli avec LLM et il n’est donc pas nécessaire d’ajouter des phrases telles que « s’il vous plaît », « si cela ne vous dérange pas », « merci », « Je voudrais », etc., et d’aller droit au but. (1) – cela fait longtemps que je ne suis plus poli avec le LLM… c’est la faute du débutant, mais cela brouille surtout la réponse inutilement.
- Répétez un mot ou une phrase spécifique plusieurs fois dans un prompt. (8) – j’utilise cette technique aussi pour les IA génératrice d’images ! Un must… même si le prompt ne ressemble plus à grand chose.
- Ajoutez « Je vais donner un pourboire de xxxx $ pour une meilleure solution ! » (6) – découverte récente mais efficace… donner un (faux) pourboire à l’IA ! Je n’ai pas vu d’explication claire sur la raison, mais cela fonctionne !
5. Tâches complexes et prompts de codage
Ces techniques permettent de décomposer des tâches complexes en une série d’invites plus simples dans une conversation interactive. Très utile dans de la programmation informatique.
- Décomposer des tâches complexes en une séquence d’invites plus simples dans le cadre d’une conversation interactive. (3)
- Lorsque vous avez une demande de codage complexe qui peut se trouver dans différents fichiers :
- « À partir de maintenant, chaque fois que vous générez du code qui s’étend sur plus d’un fichier, générez un script [langage de programmation ] qui peut être exécuté pour créer automatiquement les fichiers spécifiés ou apporter des modifications aux fichiers existants afin d’y insérer le code généré. [votre question]. » (23)
- Combinez la chaîne de pensée (CoT) avec des prompts exemples (few-shot prompting). (19)
Conclusion : un bon prompt en 2024
L’art de formuler des prompts pour les modèles de langage à grande échelle (LLM) tend vers un art en constante évolution, caractérisé par une quête incessante de précision, de pertinence et de créativité. Les principes directeurs établis dans par ces chercheurs soulignent l’importance cruciale de la concision, de la clarté, de la pertinence contextuelle, de l’alignement avec la tâche, de la démonstration par l’exemple, de l’évitement des biais et de l’approche incrémentale dans la conception des prompts.
Concis et clairs, les prompts doivent éviter toute ambiguïté qui pourrait induire le modèle en erreur ou conduire à des réponses hors sujet. La pertinence contextuelle est un pilier, guidant le modèle à comprendre le domaine et le contexte de la tâche à accomplir. L’alignement des tâches exige une adéquation parfaite entre le prompts et la nature de la tâche, en utilisant un langage et une structure qui le reflètent clairement. Inclure des exemples au sein des prompts s’avère particulièrement utile pour des tâches complexes, illustrant le format ou le type de réponse attendu.
La conception de prompts doit également tenir compte de la minimisation des biais inhérents aux modèles, en raison de leurs données d’entraînement. Cela implique l’utilisation d’un langage neutre et une prise en compte des implications éthiques, surtout pour les sujets sensibles. L’approche incrémentale, décomposant les tâches en étapes progressives, guide le modèle à travers le processus, permettant une adaptation basée sur la performance du modèle et les retours itératifs.
Enfin, pour des tâches complexes, les prompts peuvent intégrer une logique de programmation, telle que l’utilisation de déclarations conditionnelles, d’opérateurs logiques, voire de pseudo-code, pour orienter le processus de raisonnement du modèle.
Ce domaine de l’ingénierie des prompts est en pleine maturation, en particulier à mesure que les LLM deviennent plus sophistiqués. Alors que les chercheurs continuent d’explorer les limites de ce qui peut être réalisé par le biais de l’ingénierie des prompts, ces principes seront probablement affinés et élargis, ouvrant ainsi de nouvelles avenues pour maximiser l’efficacité et la pertinence des interactions homme-machine dans un avenir numérique en constante évolution.
6 réflexions sur « Prompting en 2024 ? – Il n’est pas nécessaire d’être poli avec l’IA, mais de savoir lui « parler » »