← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 30 janv. 2024

Catégorie IA Générative

Techniques de prompting des LLM

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.

Techniques de prompting

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.

Zero-Shot Prompting

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.

Few-Shot Prompting

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.

Few-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.

Chain-of-Thought Prompting (CoT)

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.

CoT

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.

Paramétrage des réponses du LLM

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.

Top-p et Top-k

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é.

Top-K

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.

Température

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.

Température

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.

Conclusion

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.

Articles similaires

Blog

13 févr. 2024

IA Générative

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

2 févr. 2024

IA Générative

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

19 janv. 2024

IA Générative

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article