Accueil

Very Sexy Prompt

TL;DR

Il existe de nombreuses façons d’optimiser les prompts, que ce soit pour améliorer la véracité des réponses du chatbot ou maximiser l’utilisation des tokens. Pour la seconde partie, cela peut être réalisé en utilisant principalement le langage Markdown ou en demandant une réponse sous forme de points à puces (bullet points).

Pour ce qui est d’optimiser la véracité des réponses, voici quelques techniques :


Fine-tuning (Ajusté)

Entraîner un modèle sur de nouvelles données. Cela permet d’optimiser les résultats sur un sujet prédéfini, au risque de perdre en performance sur d’autres sujets. Le modèle sera plus performant dans ses réponses concernant le sujet sur lequel il a été “ajusté” (fine-tuning) grâce aux nouvelles données.

Cette étape n’est pas indispensable pour obtenir de bons résultats, en revanche elle l’est lorsque l’on souhaite obtenir des résultats quasi-parfaits sur un sujet précis. Pour effectuer cette technique, il faut dans la plupart des cas avoir accès à l’API ou au modèle directement.


Zero-shot Learning (Question direct)

Il s’agit de la technique la plus simple, une question direct au chatbot.

User:

Assistant:

Cette technique atteint rapidement sa limite lorsqu’elle est posée sur des sujets plus complexe. Le fine-tuning peux améliorer les résultats de cette technique.


Few-shot Learning (Question avec exemples)

On ajoute des exemples lorsque l’on pose des questions au chatbot, ainsi on indique un type/format de réponse souhaité. Ces exemples doivent être le plus évident possible, de qualités et compréhensibles. Ils influeront grandement sur la réponse du chatbot.

User:

Assistant:

Cette technique aussi connait ses limites, notamment sur des questions liées au raisonnement du chatbot.


Chain of Thought (Étape par étape)

Comme un être humain, un chatbot est plus enclins à faire des erreurs s’il lui est demandé de répondre spontanément à une question qui demande réflexion. En revanche, s’il réfléchit avant de répondre ce dernier augmente grandement sa performance. C’est le Chain-of-Thought (CoT) , cela consiste en un few-shot Learning avec un raisonnement par étape, indiqué dans les exemples. Le CoT est particulièrement efficace pour obtenir de meilleures réponses arithmétique ou à des problèmes de raisonnement.

User:

Assistant:

Il est aussi possible d’améliorer les réponses de la technique Zero-shot Learning en ajoutant à la fin de la question: “pense étape par étape” et ainsi faire un Zéro-shot Learning-CoT.


Tree of Thoughts(arbre de pensée)

Comme un arbre de décision, le chatbot créer un arbre avec de multiples possibilités et choisi parmi les réponses possibles. Pour choisir, il utilise un algorithme prédéfini. Cette technique n’est pas nécessaire pour les tâches où le chatbot est deja très bon. En revanche, le Tree of Thoughts (ToT) peut être utile pour réaliser des raisonnements longs et complexes, comme la résolution de certains problèmes.

L’utilisation d’agents peut aussi être utile pour ce même genre de tâche (attention aux prix, car le nombre de token peut monter très rapidement).


RCI (Critique)

Grâce à la “mémoire” des chatbots, il est possible de poser des questions sur de précédentes réponses et/ou d’ajouter du contexte. RCI permet d’améliorer les réponses du chatbot en le faisant s’auto-critiquer et ainsi s’améliorer. Après avoir obtenu une réponse du chatbot, notre second prompt lui demandera de s’auto critiquer et de trouver les erreurs dans sa réponse. Puis à l’aide d’un 3e prompt, il faudra demander au chatbot de s’améliorer et de corriger ses erreurs, pour ainsi nous fournir le bon résultat.

  1. La question
  2. L’auto-critique
  3. La correction en tenant compte de l’auto-critique

L’expert

Il est connu que les Large Language Models donneront de moins bonnes réponses si vous utilisez des prompts qui implicitement indiquent que vous êtes peu qualifié et donc dans l’incapacité de dire si la réponse est juste.1 Cela s’appelle le “sandbagging”.

Pour contrer cela et améliorer les réponses fournies par le LLM, il est recommandé de faire appel à un expert, soit en indiquant le nom/la position de l’expert en question (ex: “Tu es un C-Level en charge du backend chez Google, …” ou bien en le faisant trouver par lui même ( ex: “Donne moi une estimation éclairée des trois experts les plus aptes à résoudre cette question.”’) puis en réutilisant ces experts dans la question. Il convient de noter que bien que les résultats annoncés par le papier cité précédemment soient en train d’être réfutés, l’utilisation judicieuse de cette technique permet d’éviter le sandbagging et de favoriser l’amélioration du code, en particulier dans le contexte de la génération de code.

En combinant ces différentes techniques, on peut rapidement obtenir des réponses satisfaisantes et performantes. Il n’existe pas de “prompt” parfait, qui répond à toutes les demandes. Cependant, en trouvant la combinaison adéquate, il est possible d’atteindre les objectifs visés.