Maîtriser le prompt engineering 🤖
Article écrit par Julien Gourdon
ancien journaliste et consultant SEO depuis 2015
Dernière modification :
- Qu'est-ce que le prompt engineering ?
- Différences entre prompt engineering, prompt design et prompt tuning
- Comprendre le rôle du prompt engineering dans l'entraînement des grands modèles de langage LLM
- Méthodologies et bonnes pratiques en ingénierie de requêtes
- Les compétences nécessaires pour devenir un prompt engineer de haut vol
- Maîtriser le zero-shot prompting et few-shot prompting pour améliorer les résultats des LLM
- Quelques ressources utiles pour améliorer vos connaissances en ingénierie de prompt
Les intelligences artificielles génératives telles que Bard, ChatGPT ou Midjourney (pour ne citer qu'elles) sont en passe de révolutionner notre manière de travailler (si ce n'est déjà fait) et notre façon d'interagir avec les machines boostées à l'IA. Mais pour exploiter pleinement le potentiel de ces outils de machine learning, encore faut-il savoir les caresser dans le sens du poil (c'est une image). L'idée ici est de savoir leur donner les bonnes instructions pour obtenir les bonnes réponses. Et c'est là qu'intervient l'art du "prompting", c'est à dire de la formulation de la requête que nous faisons à la machine. Les différences entre les résultats obtenus peuvent être énormes, et il est donc essentiel de maîtriser cet art, que nous appelons ici "prompt engineering", pour en tirer le meilleur parti. Mais voyons tout ceci dans le détail.
Qu'est-ce que le prompt engineering ? 🤔
Le Prompt Engineering consiste à concevoir des prompts (que nous appellerons indifféremment dans cet article "invites", "invites de commande", "instructions", "requêtes") pour les modèles d'intelligence artificielle générative. Un prompt est une séquence de mots et/ou d'instructions qui vise à guider l'IA pour produire le meilleur résultat possible pour une tâche spécifique. Or, l'ingénierie de prompt a justement pour objectif de créer une architecture de requêtes de haute qualité, c'est à dire parfaitement compréhensible par l'IA en termes de contexte dans lequel elle se trouve, de tâche qu'elle doit accomplir et d'objectif qu'elle doit atteindre, pour obtenir le résultat souhaité.
Différences entre prompt engineering, prompt design et prompt tuning 🧐
Rendons à César ce qui appartient à César. Google introduit une différence entre prompt engineering et prompt design dans son cours en ligne consacré à une introduction aux Large Language Models. Je me base donc sur ce cours pour définir ces deux termes, auxquel j'ai ajouté le prompt tuning, concept qu'on retrouve souvent dans la littérature sur le sujet des intelligences artificielles génératives.
- Prompt engineering : pratique qui consiste à développer et optimiser les requêtes données aux modèles de langage (ici, les IA génératives) afin de les utiliser efficacement pour une variété d'applications.
- Prompt design : pratique qui implique des instructions et un contexte transmis à un modèle linguistique pour réaliser une tâche souhaitée.
- Prompt tuning ou ajustement du prompt : processus itératif qui consiste à tester différentes requêtes pour un modèle de langage donné afin de trouver la meilleure requête possible pour une tâche spécifique. L'ajustement des invites est surtout une alternative économe en énergie et en coût au fine-tuning, qui va permettre à une entreprise d'adapter un grand modèle linguistique pré-entraîné à une tâche spécifique sur ses données propres sans avoir besoin de le réentraîner
En clair, l'ingénierie de prompt c'est la réflexion que nous menons pour développer la meilleure requête possible pour une tâche spécifique, tandis que le prompt design c'est la manière dont nous allons rédiger notre requête une fois que nous avons réfléchi au résultat que nous souhaitions obtenir. Le prompt tuning, quant à lui, est méthode alternative au prompt tuning, et sera laissé de côté dans cet article.
Comprendre le rôle du prompt engineering dans l'entraînement des grands modèles de langage LLM 🎓
Le rôle de l'ingénierie de prompt dans l'entraînement des grands modèles de langage est d'optimiser leurs performances en guidant efficacement les requêtes, c'est à dire en saisissant les commandes ou les questions qui seront les plus à même d'obtenir de la part du modèle les réponses les plus précises et pertinentes possibles.
C'est important pour plusieurs raisons :
- Amélioration de la qualité des réponses : une bonne invite de commande permet d'obtenir des réponses plus précises, cohérentes et pertinentes, ce qui aide l'utilisateur final à mieux exploiter le modèle de langage.
- Meilleure compréhension des capacités du modèle : les bons ingénieurs d'invites savent comment interagir avec les modèles de langage pour extraire le meilleur de leur potentiel, en s'appuyant sur leurs connaissances du système et des domaines concernés pour affiner la formulation des questions.
- Personnalisation des réponses : le prompt engineering peut aider à adapter les réponses du modèle de langage aux besoins spécifiques des utilisateurs et des domaines d'application, en évitant les réponses trop génériques ou vaguement liées à la question posée.
- Economie de temps et d'effort : la capacité à poser les bonnes questions et à obtenir rapidement des réponses précises permet de gagner du temps et d'améliorer l'efficacité des utilisateurs et des équipes travaillant avec des modèles de langage.
Méthodologies et bonnes pratiques en ingénierie de requêtes 📝
Il existe plusieurs méthodologies et bonnes pratiques pour optimiser les performances des modèles linguistiques et garantir une utilisation éthique de ces technologies. Nous allons en détailler quelques-unes ici.
- Concevoir des instructions claires, concises et informatives : une fois encore, je me base sur ce que dit Google dans son cours en ligne gratuit. On lit beaucoup de choses sur le web sur l'art du prompt, et de nombreux gourous nous font croire qu'ils ont trouvé la requête ultime pour obtenir des réponses infaillibles et de très haute qualité de la part de ChatGPT notamment. Ces prompts, qu'ils sont éventuellement prêts à nous livrer moyennant finance, like, follow, adresse mail, etc. sont souvent extrêmement verbeux, car contenant de multiples détails, et par conséquent difficiles à comprendre pour l'IA. Pourquoi ? Parce que les IA génératives disposent d'une fenêtre de contexte limitée (context window). C'est à dire qu'elles ne peuvent prendre en compte qu'un certain nombre de mots (transformés en tokens par la machine, c'est à dire en représentation numérique, qui est la seule façon pour elle de comprendre le langage grâce à des opérations statistiques qui lui permettent de prédire le mot suivant, qui sont là encore des tokens mais re-transformés en mots grâce à un système de décodage) avant de produire une réponse. Ainsi, si la requête est trop longue, l'IA ne pourra pas la saisir dans son entièreté et aura toutes les chances de produire une réponse incohérente (appelée hallucination dans le jargon des intelligences artificielles génératives). Donc, restons simple avec la machine, elle nous le rendra bien !
- Donner du contexte à l'IA : comme il n'existe pas de requête miracle, contrairement à ce que vous pourrez lire ici ou là, le but est d'adapter nos instructions à l'IA en fonction du type de tâche que nous souhaitons qu'elle réalise. Pour cela, commençons par lui donner un rôle (par exemple, "tu es une intelligence artificielle spécialisée dans le marketing digital avec une expérience mondialement reconnue dans le domaine du SEO"). Le but ici est de lui donner suffisamment de contexte pour qu'elle puisse puiser dans son immense base de connaissance le comportement le plus souvent adopter pour réaliser la tâche que nous allons lui demander.
- Formuler un objectif clair et précis : une fois que nous avons donné un rôle à l'IA, nous allons lui donner un objectif (par exemple, "tu dois me donner des idées de campagnes marketing pour un produit donné"). L'objectif est de formuler en des termes clairs et précis ce que nous attendons de l'outil.
- Donner des instructions sur le format de la réponse attendue : une fois que nous avons donné un rôle à l'IA et un objectif, nous allons lui donner des instructions pour qu'elle puisse réaliser sa tâche du mieux possible. Dans le cadre d'un article de blog optimisé sur le SEO, il s'agira par exemple de lui donner des directives sur la structure de l'article, sur les mots-clés à utiliser, sur le ton à adopter, etc.
- Donner des directives sur les étapes à suivre pour atteindre son objectif : enfin, pour assister la machine du mieux possible et obtenir le résultat souhaité, nous allons lui demander de procéder étape par étape. C'est ce que nous appelons le chain of thought reasoning ou raisonnement par chaîne de pensée en français. C'est encore une fois Google qui le dit, mais il a été prouvé que les grands modèles de langage obtiennent plus facilement la bonne réponse lorsqu'on les incite à produire d'abord un texte qui explique le raisonnement par lequel ils sont passés par obtenir la réponse. Ainsi, dans notre exemple de l'article de blog optimisé sur le SEO, nous allons demander à l'IA de nous expliquer comment elle a procédé pour rédiger l'article, en lui demandant par exemple de nous expliquer comment elle a choisi les mots-clés, pourquoi elle a structuré l'article de cette façon, etc.
Tout ceci étant dit, je vous invite cependant vivement à tester par vous-même et à ajuster vos instructions en fonction des résultats perçus. En matière d'ingénierie d'invite de commande, il est primordial de mener un processus itératif de test et d'amélioration. Il y a toujours moyen d'obtenir de meilleure réponse et aucune vérité n'est définitive (un peu comme en SEO finalement). Surtout, comme les modèles de langage qui alimentent les outils d'intelligence artificielle générative sont sans cesse ajustés, un modèle de prompt qui marchait bien à une période donnée peut s'avérer beaucoup moins performant par la suite (un peu comme une stratégie SEO, j'y reviens, qui s'avère efficace dans une thématique donnée, mais qui se révèle désastreuse pour un autre sujet).
Mon mantra concernant l'ingénierie de requêtes données aux IA tient donc en 3 mots :
Test, test, test !
Les compétences nécessaires pour devenir un prompt engineer de haut vol 🚀
Comme il n'existe pas de vérité absolue en matière de rédaction de prompt, il s'agit tout d'abord d'être curieux, d'avoir envie de rentrer dans les détails, de tester, de creuser et de progresser (comme en SEO, décidemment). On reste humble face à ses soit-disant connaissances puisqu'on sait que plus on sait, et plus on sait qu'on ne sait rien. On se documente, on lit beaucoup sur le sujet, on suit les bonnes personnes sur Twitter (je vous conseille par exemple le compte de Brian Roemmele)et sur les autres réseaux sociaux, et on se méfie de ceux qui disent qu'ils ont trouvé la formule magique.
Une bonne compréhension des concepts fondamentaux de l'intelligence artificielle, des réseaux de neurones et du traitement automatique du langage me semble également nécessaire. Voire, une certaine maîtrise de l'architecture des Transformers, sur laquelle se base tous ces outils. Le but est de comprendre un minimum comment des outils comme Bard, ChatGPT, Llama 2 ou encore Claude 2 fonctionnent. Rentrer dans le cerveaux de l'IA générative, c'est pouvoir mieux la manipuler par la suite (au sens noble du terme).
Si vous maîtrisez un ou plusieurs langages de programmation couramment utilisés dans le domaine, tels que Python et JavaScript, c'est un plus indéniable. Non seulement parce qu'un outil comme ChatGPT version GPT-4 va vous assister dans la programmation de vos applications (personnellement, je me sers au quotidien de ChatGPT+ pour m'aider à développer et déboguer des applications streamlit et son aide a fait de moi un développeur incroyablement plus productif et talentueux, c'est indéniable). Mais également parce qu'avoir des compétences en programmation va vous permettre de développer vos propres outils d'intelligence artificielle en utilisant les API mises à disposition par OpenAI par exemple, ou Google dans Vertex AI, son jardin de modèles de langage mises à disposition du public en échange de quelques sous.
Enfin, une veille constante sur les dernières avancées scientifiques et techniques dans le domaine du prompt engineering et de l'IA en général est primordiale pour rester à jour et intégrer les meilleures pratiques à son travail. Ecouter des conférences, suivre des formation en ligne et lire des articles de recherche sont autant de moyens d'acquérir les compétences et les connaissances nécessaires pour exceller dans l'art des invites de commande données aux IA génératives.
Maîtriser le zero-shot prompting et few-shot prompting pour améliorer les résultats des LLM 🎯
Le zéro-shot prompting et le few-shot prompting sont deux méthodes d'ingénierie de prompt qui permettent d'obtenir des résultats de haute qualité avec un minimum d'effort. Ces deux méthodes sont particulièrement utiles pour les entreprises qui souhaitent utiliser des modèles de langage pré-entraînés pour des tâches spécifiques sans avoir à les réentraîner sur leurs propres données.
Zéro-shot prompting
Avec le zéro-shot, on va demander à l'IA de réaliser une tâche sans lui fournir d'exemples spécifiques de la tâche à accomplir. Cela est possible parce que les grands modèles de langage sont pré-entraînés sur des milliards de données et ont donc une connaissance approfondie du langage. On pourra, par exemple, demander à ChatGPT de catégoriser une liste de mots-clés en laissant la machine choisir elle-même les catégories. C'est, pour ce cas précis, ce qu'on appelle le zéro-shot classification. On considère que la machine a suffisamment de connaissances pour réaliser la tâche par elle-même, sans avoir besoin de lui fournir des exemples spécifiques.
Few-shot prompting
Avec le few-shot, on va cette fois-ci demander à l'IA de réaliser une tâche en lui fournissant quelques exemples spécifiques de la tâche à accomplir. Pour reprendre l'exemple précédent, on va demander à chatGPT de catégoriser une liste de mots-clés, en lui donnant les catégories en amont et, pourquoi pas, en lui fournissant quelques exemples de mots-clés pour chaque catégorie.
Pour ma part, je considère qu'on obtient de meilleurs résultats de la part de ChatGPT (ou de l'API GPT-4) avec le few-shot prompting. En effet, en fournissant quelques exemples à l'IA, on lui permet de mieux comprendre ce qu'on attend d'elle et de nous fournir des réponses plus précises.
Quelques ressources utiles pour améliorer vos connaissances en ingénierie de prompt 📚
Parce qu'un seul article ne suffira pas à faire de vous des experts des invites de commande à l'usage des IA génératives, voici quelques ressources complémentaires, mais non exhaustives, que j'ai trouvé particulièrement utiles dans mon exploration du sujet. Bonne lecture 🙂
- Introduction aux Large Language Models
- Un guide pratique de l'art du prompt avec ChatGPT et GPT-3
- Libérez la puissance de ChatGPT-4 et optimisez votre workflow
- Techniques de prompt engineering données par Microsoft
- Rapide cours d'ingénierie de prompt donné par OpenAI
- Exemples de prompts dédiés au marketing digital et au SEO par Aleyda Solis
- Les 8 techniques de prompts que vous avez besoin de connaître, par Sam Ramaswami