• FreeA
  • Posts
  • Comment prompter comme un expert

Comment prompter comme un expert

Partie 2 :)

Hello !

Bienvenue aux 120 personnes qui ont rejoint FreeA depuis la dernière fois, on est maintenant 7291 !

Au programme du jour :

- Ma première vidéo youtube est sortie, premier feedback + Votez pour le prochain sujet

- Comment prompter comme un expert (partie 2)

- Les news dans le monde de l'IA

- Le sujet de la semaine prochaine

La meilleure manière de soutenir mon travail et la newsletter, c'est de la faire découvrir à plus de monde : 

Inscrivez-vous à ma prochaine masterclass gratuite pour développer son business grâce à l'IA : https://www.freea.fr/inscription-masterclass

Pour aller plus loin et vous former sur l'IA, recevoir des news journalières ou encore tester Midjourney gratuitement, rejoignez FreeA, la plus grande communauté francophone sur l'IA : https://discord.gg/freea

J'ai lancé ma première vidéo.

Bilan :

Jeudi à 18 heures, j'ai publié ma première vidéo.

Et j'ai découvert la VF (V2) du montage en même temps.

Voici toutes les stats de cette vidéo :

Et... je suis frustré.

Mais c'est motivant.

Pas à cause des stats : même si j'ai des dizaines d'exemples de chaines qui percent à la première vidéo, je vais continuer de poster jusqu'à percer "par hasard".

Mais à cause de moi : j'aurais pu faire beaucoup mieux.

Qualité du son, de script, de l'interprétation, des lights, du montage, de la minia, etc.

C'est probablement déjà mieux que 90% des youtubers, mais c'est loin d'être assez.

Alors c'est super frustrant, mais surtout motivant pour m'améliorer.

La prochaine vidéo sortira jeudi dans 10 jours :)

Alors abonnez vous pour ne pas la manquer :

https://www.youtube.com/channel/UCWFvtIUcRzgdF4jBlAlNWkw

Prompter dans un expert : 1 an après, toutes les méthodes de prompting

Sommaire :

Promis, ça va bien se passer.

  • Un bref résumé de ce qu'il s'est passé en 1 an

  • Les méthodes basiques

  • Les bases à connaître

  • L'importance du format

  • Zero-shot Prompting

  • Few-shot Prompting

  • Les méthodes moyennes

  • Chain-of-thought

  • Self-Consistency

  • Generate Knowledge Prompting

  • Tree of thoughts

  • Revenons sur les rôles

  • Les méthodes avancées

  • Retrieval Augmented Generation

  • Prompt engineer automatique

  • Prompt Actif

  • Directional Stimulus Prompting

  • PAL (Program-Aided Language Models)

  • React

  • Usages avancés

  • Générer de la data

  • Etude de cas d'une classification de jobs avec les comparaisons des différentes techniques de prompting

  • Quelques bonus

  • Augmenter la fiabilité des réponses

  • Les méthodes de prompt hacking et comment les éviter

  • Pour aller plus loin

La semaine dernière, on a vu les méthodes basiques et moyennes.

Si tu as raté l'édition, tu peux la retrouver juste ici : https://ffreea.substack.com/p/comment-prompter-comme-un-expert

Un grand merci à Lilian Delaveau pour ses réponses à mes questions, qui m'ont grandement aidé dans la rédaction de cette newsletter

Les méthodes avancées

Là, on va rentrer dans une partie plus complexe.

Mais c'est le plus intéressant, car vous n'avez probablement jamais vu ces concepts.

Tiens, faisons un sondage, ça m'intéresse.

Retrieval Augmented Generation

Jusqu'ici, on a pu résoudre des problèmes, détecter des sentiments, rédiger des textes... mais pour des tâches plus complexes, comme déterminer s'il reste un t-shirt bleu en stock dans telle compagnie par exemple, ChatGPT sera incapable de réponse.

On va parler un peu du fonctionnement de ChatGPT, dans la partie plus technique.

On en a déjà parlé, mais ChatGPT combine deux choses :

1- Un LLM. (GPT-4). C'est ce qui va lui permettre de former des phrases cohérentes et d'avoir une discussion (de prédire le mot suivant, mais c'est pareil).

2- Une base de données (BDD) vectorielle. L'intégralité des informations que possède ChatGPT, où chaque information est vectorisée dans une univers à plusieurs milliers de dimensions. (n'essayez pas de le visualiser, c'est inconcevable pour nous)

Ces informations, c'est les fameux "paramètres".

Lorsqu'on envoie un prompt à ChatGPT, ce prompt passe d'abord par la BDD vectorielle pour récupérer les informations requises à l'aide d'une recherche sémantique (on cherche les similarités dans les sujets).

Ensuite, le prompt et les informations provenant de la base de données sont envoyés au LLM pour qu'il prédise la suite du prompt.

Ce qui fait la différence entre Bard, Claude, ChatGPT, Llama, Falcon, etc, c'est pas seulement le LLM, mais également (et surtout) la base de données, à la fois par sa quantité mais surtout par sa qualité.

Sauf que la base de données ne peut pas être mise à jour en continu, et encore moins avec les données qui vous intéresse, qui sont potentiellement privées.

Par exemple, pour faire des projections sur un secteur en particulier, répondre à un mail de SAV, etc.

(Avant, cette technique ne pouvait vraiment s'appliquer efficacement que sur l'API, mais désormais avec les agents c'est différent :))

On va donc chercher à caler sa propre base de données entre son prompt et le LLM pour qu'il augmente la génération.

A partir des informations qu'il va chercher, le résultat sera meilleur.

D'où le nom "Retrieval Augmented Generation"

En vrai, on peut faire des trucs de ouf avec cette méthode, mais il faut pour ça sortir des interfaces classiques, et commencer à utiliser les API, les agents autonomes, etc.

On en parlera peut-être un jour, mais un peu trop de choses à expliquer pour ça. Donc pas aujourd'hui.

Par contre, ce qu'on peut déjà faire avec ChatGPT, c'est se créer un agent entraîné avec nos données spécifiques pour chaque cas de figure.

Le résultat ne sera pas au même niveau, mais ça augmente déjà grandement la qualité des générations.

Prompt engineer automatique

Attention : cette technique n'est pas faite pour interagir avec un modèle, mais pour créer des prompts de qualité.

Comment ça fonctionne :

On va commencer par donner à son modèle des exemples d'input et d'outputs.

Exemple :

Gentil => méchant

Beau => laid

Grand => petit

Ici, on comprend bien qu'il suffirait de donner comme prompt "donne l'antonyme du mot" par exemple, mais c'est pour servir d'illustration.

Ensuite, on va lui demander de produire une proposition de prompt pour passer de l'input à l'output.

Mais ça, c'est basique.

Alors ce qu'on va faire, c'est augmenter la température du LLM, et lui demande de générer plusieurs dizaines de propositions.

*La température, c'est la créativité du modèle (pour faire simple). Elle se modifie sur l'API ou sur le playground. Mais de toute manière, vu les ordres de grandeur qu'on va utiliser, ce serait bien trop d'utiliser ChatGPT et pas son API*

Une fois qu'on a toutes ces propositions, on va les tester :)

Pour chaque prompt, on va faire plusieurs essais. (D'où la raison d'utiliser une API, sinon ça fait plusieurs centaines de requêtes et... c'est long.)

Par exemple, imaginons qu'une des proposition est "écris l'inverse du mot".

On va demander à un LLM plusieurs fois le prompt "écris l'inverse du mot méchant".

Imaginons que sur 5 essais, il y en a 2 où il répondra "gentil" et 3 où il répondra "tnahcém" (les lettres inversées)

On vient de le tester sur nos données, et on s'est rendu compte que le prompt ne fonctionnait pas très bien.

Ce prompt là aura une note de 0.4 (car réussit 40% du temps)

On va tester chacun des prompts un par un (sur un peu plus d'essais), et prendre celui qui fonctionnera le mieux à la fin.

C'est tout :)

Et ça fonctionne très bien.

Pour aller plus loin : https://www.promptingguide.ai/techniques/ape

Prompt Actif

Le Prompt Actif est un peu similaire dans le sens où ce n'est pas non plus une méthode pour directement obtenir de bons résultats, mais plutôt pour tester et améliorer la qualité de ses exemples.

Car les deux points les plus importants dans un prompt, c'est la manière dont est formulé l'instruction et les exemples.

Avec de mauvais exemples, même avec une très bonne instruction le résultat ne sera pas excellent.

Et comme on ne peut pas savoir intuitivement ce que sont les bons exemples (les LLMs restent des machines qui n'ont pas le même raisonnement que notre cerveau), on va tester :)

Là, ce qu'on va faire, c'est donner des exemples à notre modèle (les exemples qu'on veut tester), et terminer notre prompt par une question sans la réponse, et pas plus d'instructions supplémentaires.

(Question dont on connait la réponse)

Et on veut voir à quel point le LLM est régulier dans la réponse.

Pourquoi ? Je vous explique juste après :)

Ensuite, on teste ce prompt quelques fois, et on vérifie si les LLMs donnent le même résultats à chaque fois (et s'ils ont bons).

Une fois qu'on a testé toute sa base de données d'exemples, on va regarder quels sont les exemples avec les pires résultats.

Donc, là où le LLM s'est trompé, mais surtout là où les réponses sont différentes à chaque essai.

Car comme on a pu le voir plus tôt, le plus important avec les exemples c'est de créer de la consistance.

Même si le LLM se plante, tant qu'il a le bon résultat à chaque fois, les exemples sont bons (le problème vient plus de la question).

Une fois qu'on a fait nos tests et qu'on a scoré les exemples, on va prendre les moins bons et les améliorer manuellement pour augmenter les résultats.

En fait, c'est une technique pour identifier les exemples foireux :)

Pour aller plus loin : https://www.promptingguide.ai/techniques/activeprompt

Directional Stimulus Prompting

Là, on va utiliser une technique qui combine deux LLMs pour obtenir des meilleurs résultats pour des résumés, écriture de contenus, analyses, etc.

Le principe va être d'ajouter des "indices" pour orienter le LLM vers certains éléments, et ainsi améliorer la qualité de la génération.

Prenons un exemple :

J'ai envie de résumer un article.

Je vais d'abord envoyer cet article à un LLM que j'ai prompté pour qu'il identifie les points les plus importants, les "indices".

Ensuite, je vais envoyer l'article à mon deuxième LLM accompagné de la consigne suivante (par exemple) : résume moi l'article suivant en 2-3 phrases basées sur les indices. Indices : {}

Ca va drastiquement améliorer la qualité de la génération.

Et c'est assez simple à mettre en place :)

Petit schéma avec un exemple pour mieux comprendre :

DSP

Un jour, je vous expliquerai les scores, mais pas maintenant.

source : https://arxiv.org/abs/2302.11520

Pour aller plus loin : https://www.promptingguide.ai/techniques/dsp

PAL (Program-Aided Language Models)

Le "problème" des LLMs, c'est qu'ils ont une approche probabiliste, et que c'est ennuyeux pour ce qui demande une approche déterministe (comme des calculs ou problèmes).

Sauf que ChatGPT utiliser une application déterministe.

Python.

Donc, on peut lui demander de convertir les données en python pour qu'il résolve le problème de manière déterministe, et pas uniquement avec une prédiction.

Schéma pour mieux comprendre (c'était prévu avec une API, mais vous pouvez simplement demander à ChatGPT de convertir les données en python) :

PAL

source : https://arxiv.org/abs/2211.10435

Pour aller plus loin : https://www.promptingguide.ai/applications/pal

React

Cette technique est un peu vieille (comme la majorité que j'ai présenté d'ailleurs, le temps que des papiers de recherche soient publiés) mais c'est la base de tous les agents qu'on voit aujourd'hui. Et on peut même la doper aujourd'hui.

Si vous avez déjà joué avec des outils comme AutoGPT ou AgentGPT, vous vous rappelez peut-être de la forme de leur réponse :

"Pensée :

Action :

Observation :

"

La technique ReAct va combiner les facultés de raisonnement et d'action du LLM.

Le principe est de donner un objectif final au LLM, et de le faire réfléchir sur :

- Les étapes à suivre (la pensée)

- L'action à effectuer pour avancer

- Une observation sur le résultat factuel de l'action

A l'époque, on devait arrêter le LLM entre l'action et l'observation pour faire l'action soi-même et lui donner (ou en reliant le LLM à d'autres outils capables de réaliser les actions). Aujourd'hui, avec le multimodal et les fonctions d'OpenAI, on peut quasiment laisser le LLM tout faire.

Et on recommence la boucle jusqu'à ce que l'objectif final soit atteint.

Si vous analysez la manière dont répond ChatGPT aujourd'hui, il suit cette structure (sans dire pensée : {}, action {}, etc).

Donc la comprendre et mieux s'en servir est important.

Le principe, c'est simplement de forcer le LLM à penser et agir d'une certaine manière.

Celle du pensée ; action ; observation est la plus commune, mais on peut l'adapter.

C'est une chaine de pensée augmentée :)

Pour aller plus loin : https://www.promptingguide.ai/techniques/react

Oui, ces techniques ne sont pas révolutionnaires. Mais chacune d'elle peut significativement améliorer la qualité d'un domaine précis de votre prompting, et le cumul transforme totalement la manière dont vous interagissez avec des LLMs, si vous prenez le temps de les mettre en place.

Vous ne voyez pas l'intérêt ?

Ok, il est temps de passer aux applications avancées, et surtout à un cas concret :)

Usages avancés

Vous êtes prêts ?

On va s'amuser xD

D'abord un exemple "basique" de ce qu'on peut faire, puis un cas concret de comment utiliser l'IA pour gagner en efficacité et production.

Générer de la data

Les LLMs sont forts pour générer du texte cohérent (et c'est le principe). Ca tombe bien, c'est ce qu'on cherche pour avoir beaucoup d'exemples.

Alors c'est con, mais c'est pratique.

Exemples qu'on pourrait vouloir générer pour un modèle qui analyserait les sentiments :

Prompt:

Produce 10 exemplars for sentiment analysis. Examples are categorized as either positive or negative. Produce 2 negative examples and 8 positive examples. Use this format for the examples:Q: <sentence>A: <sentiment>

Output:

Q: I just got the best news ever!A: PositiveQ: We just got a raise at work!A: PositiveQ: I'm so proud of what I accomplished today.A: PositiveQ: I'm having the best day ever!A: PositiveQ: I'm really looking forward to the weekend.A: PositiveQ: I just got the best present ever!A: PositiveQ: I'm so happy right now.A: PositiveQ: I'm so blessed to have such an amazing family.A: PositiveQ: The weather outside is so gloomy.A: NegativeQ: I just got some terrible news.A: Negative

Pour aller plus loin : https://www.promptingguide.ai/applications/generating

Cas dont je ne parlerai pas aujourd'hui, mais où toutes ces méthodes vont servir : la génération / écriture de code. Mais je me réserve ce pan de l'IA pour une prochaine fois

Etude de cas d'une classification de jobs avec les comparaisons des différentes techniques de prompting

Une étude de cas a été faite dans un papier de recherche avec tout un processus de comparaison entre les différentes méthodes de prompting pour trouver la meilleure.

Ca illustre aussi comment se servir de ces méthodes.

Source : https://arxiv.org/abs/2303.07142

Voilà comment a fonctionné l'étude de cas :

La tache était de déterminer si une offre d'emploi était adaptée à un débutant.

Ex de cas où on peut adapter cette étude : trouver un emploi adapté à ses compétences avec un tri rapide, faire un premier tri de candidats, cibler uniquement des personnes adaptées pour de la prospection, etc

Pour ça, ils sont partis d'un prompt "basique", où ils donnaient l'offre d'emploi et demandaient simplement si elle correspondait quelqu'un venant d'être diplômé (donc sans expérience).

Ensuite, ils ont testé de nombreuses variations avec différentes techniques.

*Pour plus de détails, vous avez la source juste au-dessus*

Voici les modifications qu'ils ont testé :

Et voici les résultats qu'ils ont obtenu :

Si vous ne comprenez pas le détail de ce que représentent les points, ce n'est pas réellement important, il vous suffit de comprendre que c'est un référentiel de la qualité des réponses du modèle. Je rentrerai peut-être dans le détail un autre jour

Voici quelques points intéressants qu'ils ont relevés :

- Pour les tâches ou aucune connaissance d'expert n'est requise au préalable, la méthode du Few-shot CoT a de moins bonnes performances que celle du Zero-shot.

- L'impact du prompt sur la justesse ou non du raisonnement est massif. Simplement demander au LLM de trier obtient un score de 65.6, alors qu'après l'utilisation des méthodes de prompting on monte à 91.7.

- Des petites modifications ont un impact important sur les résultats : quelque chose d'aussi simple que donner un nom au modèle et s'y référer augmenter le score F1 de 0,6 points.

Pour aller plus loin : https://arxiv.org/abs/2303.07142

Quelques bonus

Quelques bonus supplémentaires pour encore améliorer votre prompting :

Augmenter la fiabilité des réponses

Liste en vrac des techniques pour améliorer la fiabilité des réponses (je ne vais pas m'étendre sur chacune, si jamais c'est un sujet important pour vous j'en ferai peut-être une newsletter détaillée à l'avenir mais... pas aujourd'hui.) :

  • Préciser au modèle de ne pas être biaisé. C'est bête, mais personne lui a dit.

  • Expliquer au modèle de le dire s'il ne sait pas comment faire une action, ou de poser les questions dont il a besoin d'avoir les réponses pour travailler.

  • Appliquer la méthode de self concistency. Le plus possible.

  • Demander au LLM de s'auto-évaluer, ou mieux : demander à un autre LLM de l'évaluer.

Les méthodes de prompt hacking et comment les éviter

Je voulais ajouter une partie, mais je me suis rendu compte que soit je partais pour en faire une newsletter entière, soit je devrais couper beaucoup trop d'informations importantes.

Donc ce sujet sera dans les votes, et ce sera peut-être pour une prochaine fois.

Mais là, j'ai pensé au temps que j'ai et à ma santé mentale 😂 

Pour aller plus loin

Quelques sources dont j'ai pu m'inspirer qui vous permettront d'aller plus loin :

https://www.promptingguide.ai/

https://learnprompting.org/

https://learn.deeplearning.ai/chatgpt-prompt-eng/

https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/

Les news dans le monde de l'IA

Quelques news importantes cette semaine :

  • Sam Altman s'est fait licencié d'OpenAI. Et Greg Brockman, un autre des co-fondateurs, l'a suivi. Pour mieux comprendre, j'ai fait un post sur le sujet : https://www.linkedin.com/posts/th%C3%A9o-leblanc_lemecde17ans-novembre-openai-activity-7131944190313160705-4f1G?utm_source=share&utm_medium=member_desktopOn sait désormais que Sam, Greg et leur clique vont rejoindre Microsoft en interne. Peut-être une vraie séparation à venir entre OpenAI et Microsoft, malgré les 49% d’OpenAI possédés par Microsoft.

  • Depuis le devday d'OpenAI... ChatGPT est surchargé. Ils sont même descendus à un maximum de 40 messages toutes les 3 heures pour les utilisateurs de GPT+.

  • Microsoft a récupéré toutes les technos d'OpenAI pour les mettre dans son Azure. Et Bing Chat est renommé Copilot. Et ils ont annoncés que les GPTs et les plugins allaient bientôt être accessibles sur Copilot. Rappelons que Copilot est gratuit, et qu'il faut normalement payer $20 / mois pour avoir accès à ces features. Voilà le prix d'utiliser bing.

  • Autre annonce de leur part, le Copilot Studio, qui paraît être une version évoluée de ChatGPT et de ses GPTs, particulièrement sur l'UI et la facilité de création. A tester.

  • Une IA de Youtube va permettre à une petite sélection de créateurs de générer des musiques (forcément libres de droit) pour leurs vidéos.

  • Meta a annoncé Emu edit et Emu vidéo pour faire de l'inpainting sur des photos générées avec de l'IA et les animer (un peu comme ce que fait Runway). A voir la qualité réelle, pour l'instant on a que des démos sur leur site.

  • Je pensais en avoir parlé la semaine dernière, mais non. Runway a annoncé une mise à jour permettant de faire de l'animation bien plus précise sur ses vidéos. J'ai fait un post plus complet sur le sujet : https://www.linkedin.com/posts/th%C3%A9o-leblanc_lemecde17ans-novembre-cinaezma-activity-7129849121766592512-cavc?utm_source=share&utm_medium=member_desktop

  • Vous vous rappelez de Deforum ? Mais si, la newsletter il y a quelques mois sur comment générer des vidéos IA. Et bien maintenant, ça va être beaucoup plus simple : ils ont lancé un discord, que vous pouvez rejoindre sur waitlist.

  • LA V6 DE MIDJOURNEY EST ANNONCÉE POUR DÉCEMBRE !!! C'est une dinguerie. On a déjà pas mal d'éléments, mais je me garde ça pour la newsletter comparative entre les modèles.

  • Un nouvel outil de génération d'images avec des modifications possibles grâce à du dessin vient d'être sorti. C'est dur à expliquer 😅, alors regardez directement krea.ai sur internet. Je pense pas que ça devienne votre modèle de génération d'images principal, mais je trouve ça assez fun, et ça peut permettre de faire de l'animation plus facilement.

  • La nouvelle feature de Notion, Q&A, vous permet de poser des questions à l'intégralité de votre database. Je trouve ça assez ouf. J'attends le plugin Obsidian qui me permettra de faire pareil x).

  • Vous l'avez peut-être vu sur les réseaux, mais la CareBox veut être le futur de la médecine. C'est une boite autonome dans laquelle vous rentrez, et qui est capable d'effectuer de nombreuses analyses comme vérifier que vous n'avez pas de cancer, votre pression sanguine, votre génétique, etc. Forward, la boite derrière, vient de lever 100 millions pour commencer la distribution de ces boites.

Pour la semaine prochaine :

Deep Dive dans Miakito, la boite de Lilian Delaveau qui veut créer ton nouvel employé autonome :)

Dans 2 semaines : Comment j’utilise VRAIMENT l’IA dans ma vie, partie 2

Dans 3 semaines : Deep Dive dans les features d'OpenAI annoncées lors du dev day (GPTs, copyright shield, etc)

Dans 4 semaines : Deep Dive dans Adobe, et comment est-ce qu'ils transforment tous les outils avec de l'IA.

Dans 5 semaines : Comparatif entre Midjourney, Dall-E, Leonardo.ai et Stable Diffusion. Ce sera l’occasion de faire un Deep Dive sur les 3 derniers dont je n’ai pas assez parlé :). (Oui, je le repousse, car maintenant que Midjourney a annoncé sa V6… ce serait bête de publier cette édition juste avant)

Dans 6 semaines : Deep Dive : comment se servir de l’IA dans l’éducation ? Gamification, personnalisation de l’enseignement, accessibilité, etc.

Pour… après :

1- Créons un jeu vidéo en un week-end avec les IA. (Mais cette fois, on sera plusieurs sur le projet : je vous fait participer. Donc on va créer une folie :))

2- Deep Dive : comment se servir de l’IA dans la santé ? Où plutôt, comment l’IA va créer une vraie révolution dans nos durées de vie, et poser la question de la barrière de la mort.

3- Deep Dive technique : Comment on entraine une IA ?

4- Comment créer son chatbot pour son usage privé ?

5- Deep Dive dans les méthodes de hacking liées à l’IA

Si cette édition t'as plu, et que tu connais quelqu'un à qui elle peut servir, tu peux la partager juste ici :

Et si ce n'est pas encore fait, tu peux t'abonner :

Reply

or to participate.