Par Maxime Jumelle
CTO & Co-Founder
Publié le 30 janv. 2024
Catégorie IA Générative
Le prompting est une discipline qui a vu le jour avec l'explosion des LLM. En effet, il y a de nombreuses manières de poser des questions à un modèle, et puisqu'ils sont aujourd'hui très généralistes, il est important d'être précis dans ses propositions.
C'est justement ce que cherche à faire le prompting : donner toutes les bonnes pratiques pour interagir avec des LLM afin d'obtenir une réponse optimale, en fonction d'un contexte spécifique ou d'un besoin précis. Il existe aujourd'hui de nombreuses techniques, dont certaines peuvent être directement utilisées sur des LLM publics comme ChatGPT.
Nous allons énumérer les principales techniques de prompting en distillant des exemples tout au long de l'article, mais également présenter les différents paramètres qui permettent d'agit sur les réponses apportées par un LLM.
Il existe de nombreuses techniques de prompting qui permettent d'indiquer à un LLM : beaucoup ont été développées il y a moins de deux ans. Certaines techniques de prompting permettent d'améliorer fortement la qualité des réponses obtenues, car il faut garder à l'esprit qu'un LLM reste un modèle probabiliste : il cherche donc à fournir des réponses qui sont les plus probables par rapport à la demande formulée par un utilisateur.
En utilisant des techniques de prompting bien particulières, il est possible de contraindre le modèle pour qu'il génère une réponse adaptée. Voyons justement quelles sont ces différentes techniques.
La tâche de prompting dite zero-shot est la plus facile d'accès pour les utilisateurs. En effet, comme son nom l'indique, le zero-shot consiste à soumettre un prompt sans aucune autre indication particulière. Autrement dit, on se repose uniquement sur les connaissances du modèle, c'est-à-dire sur ce qu'il a appris pendant la phase d'entraînement.
Prompt : > Quelle est la capitale de la France ? --- Réponse : > La capitale de la France est Paris.
Comme nous pouvons le voir ici, nous n'avons mentionné aucune référence à des documents indiquant au modèle quelle est la capitale de la France. Pour répondre, le LLM s'est uniquement basé sur le jeu de données utilisé lors de l'apprentissage, ce qui est suffisant ici puisqu'il s'agit d'une information publique et suffisamment générale.
Le zero-shot est donc utile pour des tâches qui ne nécessitent pas de spécialisation particulière, comme trouver des informations publiques, effectuer des opérations sur du texte comme des résumés ou de l'extraction d'information.
Dans certaines situation, le zero-shot ne fonctionne plus correctement : il est alors conseillé de fournir quelques exemples ou des démonstrations dans le prompt, afin de donner une sorte de référence ou d'exemple pour que le modèle puisse retranscrire à sa manière.
À lire : découvrez notre formation IA Générative
C'est notamment la méthode de few-shot qui peut être utilisée ici. Elle consiste à proposer des exemples en amont sur lequel le modèle peut se reposer pour apporter une réponse plus spécialisée que dans le cas du zero-shot.
Source : Cohere
Prenons l'exemple suivant où l'on indique à un LLM (ici ChatGPT) les formations disponibles sur la plateforme Blent, pour ensuite lui demander quelle formation serait la plus adaptée pour apprendre un outil particulier.
Prompt : > La plateforme ELearning Blent propose les formations suivantes : - Data Scientist - Data Engineer - MLOps - Cloud et DevOps Je souhaite me former à GitLab. Quelle formation serait la plus adaptée ? --- Réponse : > Pour vous former à GitLab, la formation la plus adaptée parmi les options proposées par la plateforme ELearning Blent serait probablement la formation Cloud et DevOps. GitLab est un outil de gestion de versions et de collaboration très utilisé dans les pratiques DevOps
Comme nous le voyons ici, le LLM propose GitLab car il s'agit d'un outil DevOps. En utilisant ses connaissances et en catégorisant efficacement parmi les quatre propositions de formations disponibles, le modèle en déduit que la formation Cloud et DevOps est celle qui serait la plus adaptée.
Ce qui est important ici, c'est qu'a priori, le modèle ne connait pas les formations dispensées sur la plateforme Blent. Ici, avec un exemple de few-shot (1-shot en l'occurrence), il va donc être en mesure de faire le lien entre ses connaissances acquises lors de la phase d'entraînement, et du contexte proposé ici avant la question.
Nous nous sommes limités à un seul exemple ici, mais on pourrait tout à faire en proposer plusieurs si un seul n'est pas suffisant. En revanche, si de nombreux exemples sous forme de documents doivent être utilisés par le modèle, alors d'autres techniques plus efficaces comme le Retrieval Augmented Generation peuvent être utilisées.
La méthode de prompting Chain-of-Thought a été introduite il y a peu de temps dans le but d'apporter des capacités de raisonnement complexes par l'intermédiaire d'étapes. Plutôt destinée aux grands LLM (plusieurs dizaines de milliards de paramètres), cette technique consister à fournir un guide au LLM pour lui indiquer comment il peut obtenir la réponse.
Au même titre que l'on pourrait se baser sur une recette de cuisine pour réaliser un plat particulier, la méthode CoT va fournir un ou plusieurs exemples de question/réponses afin d'indiquer au modèle la manière dont il doit traiter certaines demandes.
Source : Cohere
Prenons l'exemple suivant où l'on demande au modèle de faire des calcul d'espace disponible sur des disques durs.
Prompt : > J'ai 100 Go d'espace disque sur mon PC. J'ajoute un deuxième disque dur de 200 Go. Dans chacun > des disques durs, je consomme 50% d'espace disque. Combien de Go de libre y a-t-il en tout ? --- Réponse : > Si vous avez un disque dur de 100 Go et vous en utilisez 50%, cela signifie que vous avez utilisé 100 Go * 0,5 = 50 Go de cet espace. De même, si vous ajoutez un deuxième disque dur de 200 Go et vous en utilisez 50%, cela signifie que vous avez utilisé 200 Go * 0,5 = 100 Go de cet espace. En ajoutant les deux quantités d'espace utilisées, vous avez utilisé un total de 50 Go + 100 Go = 150 Go d'espace entre les deux disques durs. Donc, vous avez encore 300 Go d'espace libre au total (100 Go du premier disque + 200 Go du deuxième disque) - 150 Go utilisés = 300 Go.
Comme nous pouvons le constater, le raisonnement au début est logique. Mais à la fin, le calcul n'est pas bon, car il devrait rester uniquement 300 Go - 150 Go = 150 Go d'espace disque. L'idée est d'alors de lui montrer comment il peut chercher par lui-même la bonne réponse et surtout, quelle est la démarche qu'il doit entreprendre pour dérouler son raisonnement.
Ainsi, nous pouvons lui proposer un exemple de calcul similaire appliquée à une autre situation : il sera alors en mesure de comprendre comment effectuer le calcul car il pourra faire le lien avec ce qu'il vient de voir comment exemple de question/réponse.
Prompt : > Question : J'ai 20 kg de vêtement dans ma penderie. J'ai également 5 kg de vêtement dans un placard. Je revends ou recycle 8 kg de vêtements : quel est le poids total restant de vêtements ? Réponse : Vous avez 20 kg + 5 kg = 25 kg au total de vêtements. Si vous en vendez ou recyclez 8 kg, il vous en reste 25 kg - 8 kg = 17 kg. Question : J'ai 100 Go d'espace disque sur mon PC. J'ajoute un deuxième disque dur de 200 Go. Dans chacun des disques durs, je consomme 50% d'espace disque. Combien de Go de libre y a-t-il en tout ? --- Réponse : > Vous avez ajouté un deuxième disque dur de 200 Go, donc en tout vous avez maintenant 100 Go + 200 Go = 300 Go d'espace disque. Si vous consommez 50% d'espace disque dans chacun des disques durs, cela signifie que vous avez utilisé 0.5 * 100 Go = 50 Go sur le premier disque dur et 0.5 * 200 Go = 100 Go sur le deuxième disque dur. Pour trouver le nombre de Go de libre en tout, vous pouvez soustraire la somme de l'espace utilisé sur les deux disques durs de l'espace total : 300 Go (espace total) - 50 Go (premier disque) - 100 Go (deuxième disque) = 150 Go d'espace libre au total.
En ayant fourni un guide sur la manière dont la réponse doit être articulée, le modèle est ainsi capable d'appliquer un même raisonnement dans un contexte analogue, et donc en mesure de proposer une réponse adaptée.
À découvrir : notre formation IA Générative
Cette technique CoT se révèle particulièrement utile dans les situations qui nécessitent d'utiliser une logique mathématique, ou lorsqu'on attend un cheminement de pensée différent de ce que peut produire usuellement le modèle.
En pratique, lors de l'inférence (c'est-à-dire la génération de la réponse), le modèle à tendance à générer le mot ayant la probabilité la plus élevée d'apparaître à chaque étape, en se basant sur les mots précédents. Ainsi, un LLM réutilise les mots qu'il a généré précédemment pour déterminer le mot suivant à générer.
Le problème de ce fonctionnement, qui est d'ailleurs connu depuis longtemps, est que cela peut entraîner des répétitions indésirables. En effet, en cherchant à proposer toujours le mots ayant la probabilité la plus élevée d'apparaître, on termine par avoir un modèle presque robotisé et un texte que n'est plus du tout naturel. C'est d'ailleurs pour cette raison que certains modèles peuvent être prévisibles, et que des algorithmes sont capables de détecter si un texte est généré par un LLM ou non.
Pour pallier à cette répétitivité, il est possible d'apporter plus de contrôles sur un LLM en utilisant des paramètres lors de l'inférence. Ces paramètres permettent de contrôler un échantillonnage aléatoire, qui va introduire un aléa, une variabilité dans les mots générés.
Ainsi, plutôt que de choisir le mot le plus probable à chaque itération, l'échantillonnage aléatoire va permettre de sélectionner aléatoirement un mot de manière aléatoire parmi une distribution de probabilité.
Source : Cohere
Prenons comme exemple la génération suivante où l'on demande au LLM quel est le mois de l'année où il est le plus susceptible de neiger.
Le plus souvent, il neige au mois de ______
Afin de générer ce prochain mot, le LLM dispose va alors avoir à disposition une liste de mot, avec pour chacune une probabilité d'apparition.
janvier (26%) février (24%) décembre (23%) mars (11%) novembre (5%) avril (4%) octobre (3%) ...
Même si cela est peu probable, rien n'empêche en théorie le LLM ne sélectionner aléatoirement le mois novembre
, même s'il n'a qu'une probabilité de 5% par rapport aux autres.
En spécifiant le paramètre top-\(k\), on limite le choix au modèle des \(k\) mots les plus probables. Ainsi, en spécifiant \(k=3\), les seuls mots possibles seraient janvier
, février
et décembre
.
À l'inverse, il est également possible de se baser uniquement sur les probabilités cumulées avec top-\(p\) : par exemple, si \(p=0.75\), alors on ne sélectionnera que les mots dont les probabilités cumulées sont inférieures à \(0.75\).
janvier (26%) - Proba cumulée : 26% février (24%) - Proba cumulée : 50% décembre (23%) - Proba cumulée : 73% mars (11%) - Proba cumulée : 84% novembre (5%) - Proba cumulée : 89% avril (4%) - Proba cumulée : 93% octobre (3%) - Proba cumulée : 96% ...
Dans le même exemple, nous voyons que le top-\(p\) est dépassé dès que l'on atteint le mot mars
: on ne sélectionnera ici que les trois premiers mots janvier
, février
et décembre
, car on serait ensuite au-dessus de la valeur de \(p\) pour les distributions cumulées.
La particularité de top-\(p\) est qu'il s'avère utile lorsque qu'un coude est présent dans la distribution. Nous pouvons voir une forte chute de la probabilité entre décembre
et mars
, ce qui indique que les trois premiers mots devraient être régulièrement ceux choisis. Avec un top-\(p\), on peut donc privilégier les réponses plus que probables dans les situations comme celle-ci.
Un autre paramètre qui peut être utilisé pour contrôler l'échantillonnage aléatoire est la température. Lorsque la température est élevée, cela augmente la variabilité dans les mots qui sont générés, ce qui donne un côté plus créatif et moins linéaire aux réponses générées.
À l'inverse, lorsque la température baisse, on concentre la probabilité sur un nombre restreint de mots, ce qui entraîne des réponses moins créatives mais plus déterministes.
Source : Cohere
En pratique, si l'on souhaite donc avoir des réponses le plus factuel possible, il est donc conseiller de baisser la température (usuellement entre 0
et 0.1
) pour avoir le moins d'aléas possibles.
Comme nous avons pu le constater, le prompting est une discipline à part entière qui nécessite de bien formaliser en amont le format des réponses attendues.
Avec les techniques de Few-Shot, il est possible d'apporter du contexte à la question que l'on pose au modèle, lui permettant ainsi d'être beaucoup plus précis dans ses réponses. D'autres techniques, comme le Chain-of-Thought ou ReAct, vise à étendre les capacités de réponses du modèle en proposant des schémas de pensées, ou en permettant de prendre des actions plus élaborées.
Il faut néanmoins toujours garder en tête que les LLM sont des modèles probabilistes : il est donc important de contrôler les réponses avec des paramètres comme le top-\(p\) ou la température pour s'assurer de la cohérence des réponses fournies.
Vous souhaitez vous former à l'IA Générative ?
Articles similaires
13 févr. 2024
Avec l'explosion de l'IA Générative appliquée à la génération de texte ces dernières années, de nombreuses entreprises ont souhaité pouvoir déployer en interne leur propres LLM. Elles disposent ainsi de deux possibilités : utiliser directement des modèles disponibles en version SaaS comme ChatGPT ou Cohere, ou déployer dans leur propre SI un LLM open source adaptés à leurs propres besoins.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
2 févr. 2024
Un des plus gros atouts des LLM concerne indéniablement leur grande connaissance sur de nombreux sujets, ainsi que leur forte capacité de généralisation. Pour de nombreuses entreprises, une des applications les plus importantes concerne la documentation interne.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
19 janv. 2024
Avec les développements récents sur les LLM, et plus particulièrement sur les derniers modèles proposés en open source ou propriétaires, de plus en plus d'entreprises ont désormais la capacité de pouvoir les intégrer dans leurs propres projets.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés