Dans cet article, je vais discuter de “prompt engineering”, ce que c’est et quelques techniques et “phrases magiques” que vous pouvez utiliser pour obtenir de meilleurs résultats des grands modèles de langage (LLM) comme ChatGPT.
Que vous soyez un utilisateur chevronné, un chercheur ou un entrepreneur créant une nouvelle entreprise d’IA, le “prompt engineering” est un sujet que vous devez maîtriser pour obtenir les meilleurs résultats. Cet article vous donnera des bases solides et vous orientera vers d’autres ressources.
Si vous avez déjà interagi avec ChatGPT ou tout autre grand modèle de langage (LLM), vous avez peut-être rencontré des cas où la réponse n’était pas exactement celle que vous attendiez, ni même à la hauteur. Vous avez peut-être reçu des informations incorrectes ou, dans certains cas, inventées.
L’un des problèmes est que les LLM sont devenus si compliqués et que les réseaux neuronaux “boîte noire” qui leur permettent de déduire leurs réponses sont si opaques que les utilisateurs sont encore en train de comprendre comment en tirer les meilleurs résultats.
Tapez votre question ou votre requête dans un LLM comme ChatGPT est également connu sous le nom de “prompt”, et le simple fait de changer la façon dont vous formulez votre requête peut vous donner des résultats très différents.
Par exemple, posons une question simple à ChatGPT qui nous donne une réponse fausse :
Quelle "phrase magique" pouvez-vous ajouter à votre prompt pour qu'il réponde correctement ? Découvrez ci-dessous comment obtenir exactement le bon résultat à chaque fois grâce à un peu de "prompt engineering" (et c'est plutôt simple !).
Quelles sont les techniques à utiliser pour le prompt engineering ?
Le prompt engineering est un processus dynamique qui implique de guider plus efficacement le modèle, parfois prompt par prompt (connu sous le nom de “few-shot learning”, que nous verrons plus loin) ou en créant un modèle finement ajusté avec des paires “prompt-completion” téléchargées à partir d’un fichier (voir plus loin).
Bien que ChatGPT soit basé sur un modèle de génération de langage naturel et ne nécessite pas d’invites spécifiques, il est beaucoup plus performant lorsque vous fournissez plus de contexte et d’exemples spécifiques.
En fait, plus vous fournissez d’informations, mieux ChatGPT et d’autres modèles LLM peuvent comprendre ce que vous demandez et fournir une réponse plus précise en retour.
Dans les modèles de langage développés par OpenAI, deux techniques principales sont utilisées pour activer sa vaste réserve de connaissances et améliorer la précision des réponses aux questions.
Ces techniques sont connues sous le nom de “few-shot learning” et de “fine-tuning”.
L’apprentissage “Few-shot”
L’apprentissage bizarrement appelé “few-shot” consiste à fournir au modèle un certain nombre d’exemples explicites qui sont utilisés pour guider efficacement la génération du modèle afin qu’il produise des réponses pour les tâches souhaitées, telles que la reconnaissance et la classification d’un nouvel objet ou d’un nouveau concept.
En général, moins de 10 exemples sont utilisés, mais ce nombre peut varier. Pour l’apprentissage où il n’y a qu’un seul exemple, vous pouvez aussi entendre parler d’apprentissage “one-shot”.
L’apprentissage à partir d’un seul exemple dans les modèles OpenAI peut être mis en œuvre à la fois dans l’invite de ChatGPT et de manière programmatique en appelant le point de terminaison “completion” de l’API OpenAI.
Par exemple, en utilisant l’apprentissage “few-shot” dans ChatGPT pour classer des films par genre, vous pouvez simplement ajouter une sélection d’exemples à votre message, comme suit :
En fournissant ces exemples comme contexte, ChatGPT classera correctement la description du nouveau film, “Un groupe d’astronautes en mission pour sauver l’humanité de l’extinction en colonisant une nouvelle planète”, dans le genre “Science-fiction”.
Bien sûr, cela n’aurait pas beaucoup de sens de taper tout cela pour obtenir une seule réponse, mais avec l’interface conversationnelle de ChatGPT, vous pouvez continuer à lui poser des questions jusqu’à ce qu’il… n’en peuve plus !
Une approche plus courante pour fournir quelques exemples d’apprentissage est de les encoder dans une API de complétion d’OpenAI, comme nous l’avons vu plus haut, qui vous permet d’adapter les prompts à toutes sortes de cas d’utilisation, d’un chatbot amical à un sommelier expert qui associe le vin à la nourriture.
Le modèle mental “genius in the room”
Jessica Shieh, stratège en IA à l’OpenAI, recommande une approche de lprompt engineering appelée le modèle mental “genius in the room”.
Ce modèle part du principe que le modèle d’IA (le génie) ne sait rien d’autre sur vous que ce que vous écrivez sur un morceau de papier et que vous glissez sous la porte (le prompt).
Une fois que vous avez visualisé ca, vous avez une idée plus réaliste de ce qu’un LLM comme ChatGPT est capable de faire et de ce dont il a besoin pour donner un résultat précis.
Par exemple,
En utilisant ce modèle mental, il devient évident que plus vous fournissez de contexte au “génie”, meilleures seront les réponses qu’il vous donnera. Il en va de même lorsque vous rédigez un prompt pour un modèle d’IA.
Jessica recommande ces trois bonnes pratiques pour écrire un prompt et ainsi obtenir des réponses plus pertinentes de ChatGPT :
- Expliquez le problème que vous voulez que le modèle résolve.
- Articulez le résultat que vous souhaitez – dans quel format (” répondre dans une liste à puces “), dans quel ton/style (” répondre à la question en tant que professeur de mathématiques patient… “).
- Fournissez les connaissances uniques qui sont nécessaires à l’accomplissement de la tâche
Le prompt Zero-Shot Chain of Thought (CoT)
Vous pouvez également entendre parler de l’apprentissage “à partir de zéro”, lorsqu’un modèle est capable de classer de nouveaux concepts ou objets qu’il n’a jamais rencontrés auparavant.
Par exemple, si un modèle d’intelligence artificielle est entraîné à reconnaître les chevaux et qu’on lui présente une image de zèbre, il peut identifier le zèbre comme un type de cheval rayé, même s’il n’en a jamais vu auparavant.
Dans tous les cas, l’objectif du “x-shot” (qu’il s’agisse de “zéro”, “un” ou “quelques”) est d’apprendre à partir de données limitées et de faire des prédictions précises sur de nouveaux exemples inédits.
Dans ChatGPT, il a été noté que pour obtenir des réponses plus précises, vous pouvez utiliser une technique incroyablement simple, un hack même, connue sous le nom de “zero-shot chain of thought”.
Pour utiliser cette technique, il vous suffit d’ajouter les mots : “pensons étape par étape”, ou “réfléchissons à voix haute” à la fin de votre message !
Presque comme par magie, en ajoutant simplement ce texte supplémentaire à l’invite, ChatGPT acquiert le contexte qui l’aide à extraire des réponses plus précises.
(Vous trouverez un exemple d’utilisation plus loin dans l’article).
L’apprentissage “Fine-tuning”
Contrairement aux techniques d’apprentissage “x-shot” mentionnées ci-dessus, qui ne guident le modèle que sur la base d’un nombre limité d’exemples, le “fine-tuning” implique l’entraînement de votre modèle sur un ensemble beaucoup plus large de données, mais l’inconvénient est qu’il nécessite quelques compétences en matière de codage et de programmation pour être mis en œuvre.
Cet entraînement supplémentaire permet généralement au modèle d’être plus performant et d’atteindre une meilleure précision sur un plus grand nombre de tâches spécifiques que les modèles bruts ou entraînés sur un petit nombre d’exemples.
Le fine-tuning est généralement utilisé pour adapter un modèle de base pré-entraîné, comme le puissant modèle davinci d’OpenAI, à un cas d’utilisation spécifique, par exemple le marketing numérique, le droit des contrats ou un autre domaine. Le modèle affiné peut être utilisé soit en interne, soit pour vendre un service d’IA à des clients ou dans le cadre d’une offre SaaS plus large.
Une fois que vous aurez peaufiné votre modèle, vous n’aurez plus à vous soucier de fournir des exemples dans le prompt. Cela permet non seulement de réaliser des économies, car chaque requête coûte de l’argent en fonction du nombre de jetons utilisés, mais aussi de rendre le modèle plus efficace, en réduisant le temps de latence des requêtes. Le modèle est également privé pour vous/votre entreprise et n’est accessible qu’aux personnes possédant la clé secr!te d’API.
Pour obtenir les meilleurs résultats lors de cet apprentissage, il est essentiel de fournir une base solide d’exemples de haute qualité au format de fichier texte JSONL. Plus vous fournissez d’exemples, plus votre modèle sera performant.
Un minimum de quelques centaines d’exemples devrait être votre point de départ, et pour des résultats encore meilleurs, ces exemples devraient être revus et approuvés par des experts du domaine.
La bonne nouvelle, c’est qu’au fur et à mesure que vous ajoutez des exemples, OpenAI affirme que vous constaterez une augmentation linéaire correspondante des performances. Par conséquent, si vous souhaitez tirer le meilleur parti de vos efforts de fine-tuning, plus vous pouvez fournir d’exemples, mieux c’est (notez que la taille maximale du fichier de fine-tuning est comprise entre 80 et 100 Mo).
Revenons à la question à laquelle ChatGPT n’a pas su répondre correctement
Si maintenant nous revenons à cette simple question,
Quel est le 5e mot de la phrase "Tout vient à point à qui sait attendre" ?
En utilisant la chaîne de pensée “zero-shot” qui est décrite plus haut, et en ajoutant simplement “pensons étape par étape” à l’invite, devinez ce que nous obtenons ?
C’est comme si, presque par magie, nous obtenions le bon résultat à chaque fois.
(Note : si vous expérimentez différentes combinaisons d’invites avant d’essayer ceci, assurez-vous de commencer un nouveau chat à chaque fois afin de ne pas influencer la prochaine tentative, car votre conversation précédente avec ChatGPT pourrait modifier les résultats).
En résumé
Le prompt engineering est un domaine des LLM qui évolue et progresse rapidement. Ce qui ne fonctionne pas bien dans un modèle aujourd’hui, comme les mathématiques et la logique, pourrait bien fonctionner demain !
Pour tirer le meilleur parti d’un LLM, comme ceux proposés par OpenAI, et surtout si vous développez vos propres applications basées sur l’IA, que ce soit pour un usage interne ou pour un usage client, vous devrez guider davantage le modèle LLM par le biais d’un apprentissage “few-shot” ou des techniques de r”églage fin”fine-tuning”.
Ce qui est couvert ici n’est que la partie émergée de l’iceberg Prompt Engineering, et je vous encourage à l’explorer davantage si vous êtes intéressé.
Avec les LLM qui progressent en puissance et en sophistication, certains disent qu’ils brisent la loi de Moore en passant d’une puissance doublée tous les deux ans à une puissance doublée tous les six mois, il est certain qu’à un moment donné, ils deviendront si intelligents qu’ils seront capables d’anticiper nos besoins sans avoir recours au prompt engineering !
Seul le temps nous le dira !