Rendre l' IA accessible à tous

Catégorie : Modèles de langage (Page 3 of 3)

Série d’articles relatifs à la maîtrise de l’utilisation des modèles de langage et conversationnels

Utilisation des modèles conversationnels VII : Réflexions et conclusions

Après ce tour d’horizon de l’utilisation des modèles conversationnels, je voudrais partager avec vous quelques rélexions personnelles, à la fois concernant leur utilisation mais aussi les opportunités et risques qui leur sont propres.

L’utilisation de ces modèles, que ce soit pour la question initiale ou le dialogue ultérieur, s’améliore avec la pratique et le temps. Les articles précédents doivent être vus comme des illustrations de ma propre pratique après quelques mois mais il est possible d’aller plus loin en termes d’utilisation. Un peu comme l’utilisation des engins de recherche que nous avons appris à apprivoiser au fil des années.

Si vous voulez aller plus loin et approfondir vos connaissances, je vous conseille le guide du Prompt Engineering qui est accessible ici.

Il y a aussi une dimension sociale à l’apprentissage de ces outils. De nombreux sites répertorient les meilleures pratiques identifiées par les utilisateurs et il est utile de les parcourir pour se familiariser avec leurs idées, alors qu’ils suivent la même courbe d’apprentissage. Vous trouverez ici un lien vers le site PromptVine qui contient une des plus grandes collections librement accessibles de prompts pour ChatGPT.

Ces modèles ont aussi pour avantage qu’ils peuvent étendre le champ des possibles. Je suis un programmeur assez moyen car c’est une compétence que je n’utilise que de manière assez sporadique. Mais ChatGPT remédie en partie à mes lacunes. Il suffit que je lui explique ce que je veux et je lui demande une première mouture du programme. Elle est en général imparfaite mais suffisante pour que je puisse l’utiliser comme point de départ et l’adapter. Et si j’éprouve d’autres difficultés, je peux toujours demander des éclaircissements ou d’autres blocs de code connexes (routines, fonctions…).

Pour rebondir là-dessus, cela ne se limite pas à la programmation au sens strict. Pour prendre un exemple personnel récent, je voulais utiliser un langage textuel pour décrire et générer les diagrammes de mon blog, mais je ne connaissais pas de langage permettant de le faire. J’ai demandé à ChatGPT non seulement de me proposer des langages de description graphiques mais aussi de générer une première mouture du code correspondant. C’est ainsi que j’ai appris à utiliser GraphViz et Mermaid qui répondent élégamment à mes besoins graphiques et me permettent maintenant de générer les diagrammes dont j’ai besoin par le truchement d’un premier codage via ChatGPT.

Bien utilisés par un esprit alerte, ces modèles poussent à la curiosité et à la découverte. La compétence horizontale et universelle de ces modèles en fait des assistants idéaux, non seulement pour exécuter des tâches précises, mais également pour enrichir et discuter librement d’idées partiellement formées.

Les modèles de langage sont certes assez doués pour générer des volumes importants de texte syntaxiquement corrects. Malheureusement, leur tendance structurelle à halluciner restreint leurs applications pratiques. Il subsiste toutefois un certain nombre de domaines dans lesquels la forme et l’originalité priment sur l’exactitude, et donc sont susceptibles d’être transformés en profondeur par les modèles de langage, comme :

  • Le support à la réalisation d’oeuvres de fiction sous toutes leurs formes : littérature, cinéma etc…, puisque dans ce cas seul le caractère plausible et créatif du texte importe et non son exactitude.
  • Les activités purement rédactionnelles, dans lesquelles l’effort principal est la génération du texte en tant que tel, alors que le contenu est déjà connu de l’utilisateur, qui pourra rapidement adapter le texte si besoin est. Ce champ d’action est assez large, et reprend par exemple de nombreuses activités marketing et promotionelles, la correspondance administrative etc…

Bien sûr, si les hallucinations peuvent être suffisamment réduites voire éliminées des modèles futurs, le champ applicatif s’élargira considérablement.

Pourquoi les Modèles de Langage ont-ils une fâcheuse tendance à halluciner? N’oublions pas que le modèle cherche toujours à prédire le mot le plus probable. En pratique, cela va parfois le pousser à « broder » une réponse là où il n’a pas été exposé à des données pertinentes. Et la pertinence des données est le second point faible. Ces modèles ont été entraînés grosso modo sur l’ensemble d’Internet et, vu la taille, il est pratiquement impossible d’éliminer les informations inexactes avant l’entraînement. Donc le modèle se retrouve parfois exposé à des informations erronées lors de son entraînement. Inexactitudes qu’ils n’hésitera pas à vous exposer fièrement à la première occasion.

Mais il y a pire : comme ces modèles sont utilisés pour générer du nouveau contenu sur internet (blogs, tweets…), qui va à son tour servir à entraîner la prochaine génération de modèles générationnels, on risque de se retrouver dans la situation du serpent qui se mord la queue…

Soit on arrive à mettre en place une réglementation qui permet d’identifier systématiquement le contenu autogénéré (par exemple via le watermarking) et on arrive progressivement à améliorer la pertinence des bases d’entraînement, soit on n’y arrive pas et les modèles divergent progressivement et deviennent de moins en moins fiables.

La régulation arrive toujours en retard, et c’est normal. Le RGPD est arrivé il y a environ cinq ans pour réglementer les réseaux sociaux et a suscité une prise de conscience progressive quant à la désinformation et le caractère confidentiel des données personnelles.

Maintenant il va falloir essayer de faire la même chose avec l’ Artificial Intelligence Act en cours de ratification par l’Union Européenne, loi qui doit d’ailleurs être modifiée pour tenir compte des modèles génératifs qui sont apparus en plein milieu du processus législatif…

Un dernier rappel sur la sécurité : actuellement toutes vos intractions avec ChatGPT sont envoyées à OpenAI et cela pose un sérieux souci de confidentialité. Il en est de même pour les autres modèles. Cela semble difficilement acceptable pour de nombreuses applications en entreprise, sans parler des données personnelles, qui sont allergiques à tout voyage transatlantique…

Utilisation des modèles conversationnels VI : Les alternatives à ChatGPT

L’offre de modèles conversationnels s’est fortement étoffée à la mi-juillet avec la mise à disposition successive de Claude 2 d’Anthropic le 11 juillet de Google Bard le 13 juillet, qui viennent rejoindre ChatGPT et Bing Chat. Je vais tenter dans ce qui suit de comparer les quatre différents produits sur le marché, mais notons d’emblée qu’ils se classent en deux familles d’utilisation :

  • Les assistants de productivité qui vont exceller dans la discussion ouverte et la génération d’idées et de contenu grâce à leurs capacités de raisonnement et de créativité, mais ne sont pas orientés vers la recherche d’informations temps réel sur internet. ChatGPT et Claude 2 font partie de cette catégorie.
  • Les moteurs de recherche conversationnels dans lesquels se rangent Bing Chat et Google Bard. Ils excellent dans la construction d’une réponse argumentée par une recherche sur internet, et répondent donc à une autre besoin.

1. OpenAI ChatGPT

ChatGPT en version 3.5 est accessible à la fois via l’interface web chat.openai.com et via l’app mobile ChatGPT qui est disponible à la fois pour iOS et pour Android. Le modèle ChatGPT v3.5 est accessible gratuitement sans limitation de volume de conversations, moyennant inscription préalable.

L’abonnement à ChatGPT+, qui coûte 20 USD par mois, donne en outre accès au modèle ChatGPT4 via la même interface, mais avec une limitation à 50 échanges toutes les 3 heures. Les dialogues avec ChatGPT4 sont en général de qualité nettement supérieure à ceux avec ChatGPT 3.5.

ChatGPT+ donne aussi accès à deux fonctionnalités additionnelles très intéressantes :

  • L’ interpréteur de code qui va permettre à ChatGPT de générer et d’exécuter automatiquement du code dans un environnement sécurisé et de vous renvoyer les résultats. Vous pouvez aussi lui envoyer des fichiers de données pour traitement, ce qui en fait un outil très efficace d’analyse de données.
  • L’ intégration avec une centaine de programmes applicatifs (plug-ins); ces programmes offrent des fonctionnalités variées que ChatGPT peut exploiter pour répondre à la demande de l’utilisateur: commandes de produits, intégration avec d’autres applications….

Malheureusement, ces fonctionnalités avancées nécessitent l’abonnement payant. La figure ci-dessous montre un exemple d’analyse de données automatisé via l’interpréteur de code: j’ai envoyé à ChatGPT une série d’indicateurs macro-économiques par pays et lui ai demandé en retour la corrélation entre la fertilité et le PIB par habitant.

Figure 1 : Analyse de données avec l’interpréteur de code de ChatGPT

ChatGPT est l’outil le plus connu, le plus largement disponible et le plus polyglotte puisqu’il est capable de converser en plus de 80 langues. ChatGPT est également réputé pour l’originalité et la richesse du texte généré, ce qui en fait un assistant idéal pour les activités créatives. Ses capacités de programmation sont également excellentes.

Un point faible de ChatGPT : l’entraînement a eu lieu sur des données datant de septembre 2021 et il n’est (temporairement ?) pas possible d’actualiser les informations via une recherche sur le web.

ChatGPT n’offre à ce jour pas non plus de multimodalité : il n’accepte que du texte en entrée et ne génère que du texte en sortie. Pas moyen de lui demander d’analyser ou de générer directement une image par exemple.

La taille limitée de la fenêtre de contexte à 4.096 tokens ne permet pas l’analyse de documents complexes ou de gros volumes de données. Si c’est ce que voulez faire, regardez plutôt Claude 2 ci-dessous.

Les plans d’OpenAI pour le futur visent à remédier à ces limitations : il est question d’introduire la multimodalité l’année prochaine et d’agrandir la fenêtre de contexte potentiellement jusqu’à un million de tokens, tout en réduisant le coût de la souscription à ChatGPT+.

2. Microsoft Bing Chat

Bing Chat est basé sur OpenAI et accessible sur le web à l’adresse chat.bing.com, à condition de posséder le navigateur Microsoft Edge, ce qui rend l’accès par le web malaisé pour beaucoup d’utilisateurs. Par contre, Bing Chat possède à la fois une application iOS et Android ce qui rend l’accès par mobile très confortable.

Microsoft Bing Chat est fondamentalement un engin de recherche conversationnel : il exécute des recherches internet et les intègre tout en mentionnant les liens. Bing Chat se distingue dans ce domaine.

Figure 2 : Bing Chat comme modèle de recherche conversationnel

Bing Chat est multimodal : il est à la fois capable de générer des images sur base d’une requête textuelle (text-to-image), mais aussi d’accepter des fichiers d’images en entrée pour analyse (image-to-text). Cette multimodalité est un avantage majeur qui offre de nombreuses applications -comme la reconnaissance de caractères ou la détection d’objets

Figure 3: Bing Chat utilisé comme générateur d’images

L’utilisation de Bing Chat est gratuite.

Bing Chat repose en réalité sur la technologie d’OpenAI. Le modèle conversationnel est une version modifiée de GPT4, et le générateur d’image est DALL-E-2.

Les grands atouts de Bing Chat sont l’ intégration du générateur d’images et la capacité à intégrer des recherches web dans la réponse en mentionnant les références. C’est donc un excellent outil de recherche.

3. Google Bard

Google déploie actuellement son interface conversationnelle pays par pays. L’accès web se fait via l’adresse bard.google.com. Les pays de l’Union Européenne – dont la Belgique- peuvent accéder à Google Bard depuis le 13 juillet 2023. Le support multilingue de Bard suit le déploiement géographique et le modèle est actuellement capable de converser en une quarantaine de langues.

Figure 4 : Google Bard et ses capacités d’analyse d’image

L’accès web à Google Bard peut se faire depuis n’importe quel navigateur et demande seulement de posséder un compte Google, ce que la plupart des utilisateurs possèdent déjà. Par contre, aucune app pour iOS ou Android n’existe encore.

L’utilisation de Bard est gratuite. Bard a deux grands atouts.

Son premier atout est un grand confort d’utilisation :

  • Bard génère systématiquement plusieurs réponses possibles, et vous pouvez choisir celle qui vous convient le mieux.
  • Bard permet de modifier la réponse de cinq manières : texte plus long, plus court, plus simple, plus informel, plus professionnel. De nouveau, simple mais très utile.
  • Comme Bing Chat, Bard est capable d’intégrer des résultats de recherches -c’est Google après tout- qui sont en rapport avec la conversation, il est donc en mesure de fournir des réponses à jour.
  • Bard est intégré avec les outils Google comme Google Docs et Google mail, ce qui va vous permettre d’exporter le texte généré très facilement dans ces outils.

Le deuxième atout est son caractère multimodal : Bard est capable d’interpréter une image fournie par l’utilisateur (image-to-text). Bard est également capable de vous montrer des images correspondant à votre demande ou recherche, mais il s’agit d’images existantes trouvées sur internet. Par contre, Bard, n’est pas (encore?) capable de générer des images de synthèse sur base d’une description fournie par l’utilisateur comme le fait Bing Chat.

Au niveau des points faibles, c’est assez subjectif mais je trouve que les dialogues fournis par Bard sont moins formels, moins structurés que ceux des autres modèles, et qu’il fait plus facilement des erreurs de raisonnement.

Pour résumer, je trouve l’offre de Google intéressante. Bard est excellent en termes de multimodalité et de confort d’utilisation. La partie modèle de langage me semble moins robuste mais ce n’est pas insoluble, surtout avec les ressources de Google. C’est pour moi l’outsider à suivre.

4. Anthropic Claude 2

Claude 2, développé par Anthropic est le quatrième acteur. Il est accessible depuis le 11 juillet 2023 au grand public aux USA et en Grande-Bretagne moyennant inscription. Claude 2 n’est pas encore accessible en Belgique mais ceci peut aisément être contourné au moyen d’un VPN. Le lien pour accéder à Claude 2 est : claude.ai.

L’utilisation de Claude 2 est gratuite.

Figure 5 : Utilisation de Claude 2

Claude 2 n’est pas multimodal : il n’accepte et ne génère que du texte. Il ne possède pas non plus d’interface de recherche sur le web pour se tenir à jour, et les données qui ont servi à l’entraînement datent de début 2023, ce qui est plus récent que ChatGPT.

Son grand atout est qu’il est le seul outil capable d’interpréter des textes volumineux (fenêtre de contexte de 100.000 tokens, ce qui correspond à plus ou moins 70.000 mots !). Vous pouvez également lui envoyer plusieurs documents et poser des questions sur l’ensemble.

Claude 2 se distingue aussi par l’importance centrale accordée au cractère éthique des réponses fournies par le modèle. Claude utilise une approche spéciale appelée IA Constitutionnelle pour enseigner au modèle un ensemble de principes moraux dérivés notamment de la Déclaration Universelle des Droits de L’Homme.

Enfin, des tests comparatifs suggèrent que Claude 2 est comparable à ChatGPT pour la rédaction de code informatique, et il est possible de lui soumettre des fichiers de données pour analyse.

5. Choix du modèle

Si vous cherchez un assistant de productivité, la question est de savoir si votre scénario d’utilisation justifie la dépense pour ChatGPT+. Ce sera notamment le cas si vous devez utiliser les plugins ou l’interpréteur de code, ou encore si la notoriété du produit ou la créativité sont essentiels pour vous. Dans le cas contraire, vous êtes probablement mieux loti avec Claude 2 qu’avec ChatGPT 3.5.

Si vous cherchez un moteur de recherche conversationnel, ma préférence va actuellement à Bing Chat qui est plus correct et plus précis que Bard, mais tout en gardant un oeil sur les progrès de Bard. Tous deux sont gratuits.

Si vous cherchez un analyste d’images, orientez-vous vers Google Bard et Bing Chat, eux seuls sont capables d’interpréter des images fournies par l’utilisateur à ce jour.

Et si vous avez besoin d’ un générateur d’images conversationnel, la seule possibilité parmi les modèles évoqués est Bing Chat. Si cette fonctionnalité est au coeur de vos besoins, vous pouvez aussi vous tourner vers des applications spécialisées en génération d’image comme Stable Diffusion ou Midjourney.

Un dernier mot pour indiquer que des modèles open-source commencent à être accessibles sur le Web, comme Meta LlaMa-2 qui est accessible sur le site de Perplexity.ai. L’ émergence de ces modèles est récente et offre de nouvelles perspectives d’entraînement et d’utilisation mais fait aussi apparaître de nouveaux risques…

Utilisation des modèles conversationnels V : Génération de code

1. Introduction

Un des compétences les plus intéressantes des modèles conversationnels est qu’ ils sont assez doués pour l’écriture de code informatique.

A la base, ceci peut sembler surprenant car ces modèles ont plutôt été développés dans le but de converser naturellement avec nous dans nos propres langues. En réalité, les développeurs de ces modèles ont cherché dès le début à rendre ces modèles capables de coder, et leurs jeux de données d’entraînement comprennent une grande quantité de code informatique.

Ceci transforme en pratique un programme comme ChatGPT en une sorte « programmeur conversationnel », et des modèles similaires sont intégrés dans certains sites web à destination de programmeurs chevronnés comme GitHub (qui offre GitHub Copilot, un assistant de programmation dont l’accès est payant).

Ce texte sera organisé en deux parties. Dans la première partie, nous regarderons comment utiliser ChatGPT dans des tâches de programmation élémentaires. Dans la seconde partie, nous réfléchirons aux cas d’utilisation appropriés, les avantages et les limitations de ces nouveaux assistants de programmation.

2. Quelques cas d’utilisation

Les modèles générationnels ont des compétences suffisantes pour rédiger des codes simples mais leur avantage est surtout qu’ils peuvent assister un programmeur dans la création de programmes élémentaires ou de fonctions et routines bien circonscrites, à condition de bien décrire l’algorithme dans le texte de la question, ainsi que le langage de programmation souhaité.

Ces modèles peuvent aussi servir à automatiser des codes de nature répétitifs dont la rédaction à la main est fastidieuse (par exemple pour les interfaces utilisateur graphiques), ou encore proposer des améliorations à un code préalablement fourni, voire identifier des erreurs dedans. Finalement, si vous expliquez le comportement attendu d’un programme, vous pouvez demander la génération automatisée de code de test unitaires (ce qui tombe en général dans la catégorie « barbant »!). Quoi que vous fassiez, attention de toujours rester critiques quant aux propositions qui vous sont faites.

Nous allons passer ces différents cas en revue, en illustrant avec le langage Python :

2.1. Rédiger du code exécutant un algorithme élémentaire

Il suffit de bien décrire ce que l’on veut, y compris le langage et la forme (programme autonome, fonction avec ses arguments…). Nous allons ici demander à ChatGPT le code pour une fonction Python qui retourne une liste de nombres premiers :

Dialogue 1 : Génération d’une fonction de calcul des nombres premiers

Cela semble bien correct. Le modèle en a profité pour créer une autre fonction qui indique si un nombre est premier ou pas. Très bien. Il ne reste qu’à copier le code et le placer dans un fichier source puis l’exploiter.

2.2. Commenter le code

Vous pouvez utiliser le modèle à la fois pour ajouter des commentaires en ligne dans un code que vous lui fournissez, ou encore pour générer des fichiers de documentation séparés (README, description d’interface..).

Commençons par demander à ChatGPT de commenter le code qui a été généré au point précédent.

Dialogue 2 : Insertion de commentaires dans le code

Et voici le fichier README qui décrit succinctement le code:

Dialogue 3 : Génération d’un fichier README

Pas grand chose à redire, cela semble fonctionner correctement. A noter que le modèle à utilisé un format Markdown sans que cela lui ait été demandé.

2.3. Demander la génération d’une batterie de tests unitaires

La bonne pratique de la programmation veut que chaque fonctionnalité codée se voie accompagnée d’une fonction de test unitaire qui s’intègre dans un environnement de test/validation qui va être exécuté à chaque mise à jour du code afin d’éviter toute régression. Demandons donc à ChatGPT de générer un code de ce type pour nos deux fonctions :

Dialogue 4 : Génération de fichiers de test

Ici encore, cela semble correct. Néanmoins, il serait intéressant d’ajouter des tests pour voir comment le programme se comporte si on lui donne en argument une valeur nulle ou négative, voire non-numérique, pour voir la robustesse de la fonction en cas d’argument incorrect. Bien sûr vous pouvez lui demander interactivement de le faire ou bien l’ajouter vous-même à la main.

2.4. Traduire du code d’un langage à l’autre

A titre d’exemple, nous allons traduire la fonction décrite ci-dessus de Python vers Go.

Dialogue 5 : Traduction du code de Python vers Go

Je n’ai pas testé ce code mais ici encore le code semble tenir la route. Il serait néanmoins judicieux de le tester, éventuellement en demandant au modèle de fournir des fonctions de test comme il le suggère par ailleurs lui-même.

2.5. Faire générer un code fastidieux

Pour garder cet exemple simple, nous allons momentanément quitter le monde du Python pour passer au HTML, qui contient souvent des tas de répétitions pénibles à encoder.

Dialogue 6 : Génération d’un texte HTML fastidieux

Ici aussi, c’est correct. Il suffit de sauvegarder le texte dans un fichier à l’extension .htm ou .html et vous pouvez l’ouvrir dans un navigateur.

2.6. Demander des informations sur les librairies appropriées à un projet

Identifier les librairies disponibles les plus utiles à un projet est souvent une des tâches les plus importantes de la rédaction d’un programme. Supposons que je cherche à faire de l’analyse linguistique en python. Il existe des librairies qui vont offrir une série de fonctions de traitement pour me faciliter la tâche. Demandons à ChatGPT ce qu’il peut proposer :

Dialogue 7 : Recherche de librairies

Cela semble un bon point de départ. Bien sûr, vous pouvez approfondir le dialogue et demander des détails sur l’une ou l’autre librairie afin d’orienter votre choix.

3. Réflexions

Les modèles conversationnels ne sont pas (encore ?) en mesure de remplacer un programmeur. Le code qu’ils rédigent est susceptible de contenir des erreurs et il ne faut pas attendre d’eux la création d’une application complexe à partir de rien. Il ne faut pas oublier que ces modèles sont « dressés » à répéter ce qu’ ils ont vu ailleurs – y compris les erreurs éventuelles -, pas à raisonner de manière abstraite…

Cela veut aussi dire que les personnes n’ayant aucune expérience en programmation ne pourront pas recourir à ces modèles pour pallier à leur ignorance. Par contre, le programmeur « occasionnel », celui qui connaît les bases du langage sans être plongé dedans quotidiennement, verra le gain le plus important. Le programmeur expert pourra l’utliser pour confronter ses propres idées mais le gain sera probablement moindre.

Leur autre grande valeur ajoutée est qu’ils ont un bon niveau de connaissance des différentes librairies et packages existants qui sont souvent d’une grande aide à la programmation. Et pour cela, il suffit d’entamer un dialogue avec le modèle en lui demandant ce qu’on cherche et dans quel contexte. Comme pour les autres utilisations de ces modèles, il ne faut pas hésiter à remettre en cause ses propositions ou lui demander de changer d’approche.

Et d’ailleurs, quels langages de programmation ces modèles maîtrisent-ils ? Eh bien la plupart d’entre eux, soit non seulement les suspects habituels (Python, Java, C++, Go, PHP…) mais aussi des langages moins répandus comme le Fortran, le Cobol ou le Lisp. Et si vous hésitez sur le choix d’un langage, vous pouvez lui poser la question…

Une dernière remarque pour mentionner le plugin code interpreter qui est disponible si vous avez l’abonnement ChatGPT+. Je ne l’ ai volontairement pas utilisé dans cet article pour rester généraliste. Ce plugin va permettre à ChatGPT d’exécuter automatiquement du code qu’il génère et de vous montrer le résultat, au lieu de devoir le recopier manuellement dans un éditeur puis l’exécuter. C’est un avantage intéressant si vos scénarios d’utilisation sont fortement orientés vers la programmation ou si vous devez souvent analyser des données.

Utilisation des modèles conversationnels IV : Brainstorming et discussion ouverte

Les modèles conversationnels ne peuvent pas entièrement remplacer votre propre créativité mais il est quand même possible de les utiliser pour enrichir vos idées avec de nouveaux concepts et perspectives.

L’ avantage de ces modèles est qu’ils sont disponibles 24h/24 pour discuter et échanger des idées.

Vous pouvez le faire dans pratiquement tous les domaines de la vie privée et professionnelle : lancer une affaire et/ou la promouvoir, chercher une destination de vacances ou faire des rénovations, essayer de maigrir, se lancer dans le jogging, identifier des idées pour un rapport ou un article…

Deux règles sont importantes lorsqu’on désire avoir une discussion ouverte avec un modèle : définir et circonscrire clairement le sujet de départ et poser des questions ouvertes.

A titre d’exemple, nous allons nous mettre dans la peau d’un jeune de 18 ans qui hésite sur son choix d’études universitaires et désire en parler avec un modèle. Vous allez voir que le modèle fournit des idées constructives et permet au jeune de s’orienter vers un domaine dont j’ignorais jusqu’à l’existence…

Commençons par le contexte et la question initiale :

Dialogue 1 : Ouverture de la discussion

Le modèle fournit des pistes d’étude assez génériques. Certaines le tentent plus que d’autres, qui lui semblent trop austères et rébarbatives. Il veut un travail qui laisse un certain champ pour la créativité.

Dialogue 2 : Progrès de la discussion

Le jeune est intéressé par le journalisme mais cela semble très générique. Comment marier cela avec son intérêt pour les mathématiques et les nouvelles technologies ?

Screenshot
Dialogue 3 : Orientation de la discussion

Le modèle propose une piste intéressante : le data journalisme, mais ce terme est assez obscur. Demandons plus au modèle sur cette filière :

Dialogue 4 : Finalisation de la discussion

Et voilà. Il est bien sûr possible de continuer à questionner jusqu’à épuisement de la fenêtre de contexte mais cela n’ajouterait pas grand’chose à l’idée que je voulais faire passer.

Quand on voit l’échange ci-dessus, le modèle répond de manière tout à fait pertinente et raisonnable, je ne dis pas que c’est systématiquement le cas mais cela reste un outil précieux, surtout si l’on y ajoute la disponibilité à toute heure. Vous pouvez aussi toujours reprendre une conversation là où vous l’avez laissée, même des mois plus tard. Difficile d’obtenir une telle flexibilité d’une personne.

Ceci me pousse à digresser un peu. Notre société accorde une forte prime à la connaissance, la formation et la capacité de les synthétiser vers un but cohérent (appelons cela l’intelligence). Obtenir cette intelligence et cette connaissance requièrent une prédisposition personnelle, de nombreuses années d’études, le support de la famille et d’autres choses auxquelles tout le monde ne peut automatiquement prétendre avoir accès.

Qu’on le veuille ou non, l’intelligence et la connaissance restent un facteur d’inégalité, voire un privilège si l’on étend le raisonnement aux pays en voie de développement. Et je suis convaincu qu’un des avantages de ces technologies c’est qu’elles mettent potentiellement à la disposition de tout le monde un assistant intelligent et cultivé quoique parfois mythomane; et donc elles devraient rendre possible – au moins en théorie- un mécanisme de mitigation de cette inégalité.

Bien sûr, on peut argumenter qu’un recherche Google permet d’obtenir les mêmes informations, mais cela demande un effort cognitif de l’utilisateur nettement plus important. C’est pourquoi, je pense que l’impact de des modèles conversationnels sera significatif, surtout dans les régions où l’accès à la connaissance est le plus difficile.

Utilisation des modèles conversationnels III : Génération de textes

Nous allons maintenant nous amuser un peu et exploiter les capacités créatives des modèles conversationnels. Celles-ci sont très diverses et je vais montrer à travers quatre exemples d’utilisation de ChatGPT à quel point ces outils peuvent s’avérer précieux, surtout lorsqu’on est en manque d’inspiration…

Nous allons successivement demander l’aide de ChatGPT pour écrire une lettre de motivation pour un stage étudiant, rédiger un email promotionnel, proposer la trame d’un roman et enfin écrire les paroles d’une chanson.

1. Création d’une lettre de motivation

Vous êtes comme moi et trouvez aussi qu’il n’y a rien de plus barbant que d’écrire une lettre de motivation pleine de lieux communs ? Ca tombe bien, les modèles conversationnels peuvent nous aider. Essayons avec une lettre de motivation pour un stage en entreprise pour un étudiant en école d’ingénieur.

Il est intéressant de voir que je n’ai pas donné beaucoup de détails sur le parcours de demandeur et notre ami informatique n’a pas pu s’empêcher d’inventer une université de toutes pièces ! C’est un exemple d’hallucination: le modèle n’hésite pas à combler les blances pour que le texte soit plus plausible.

Par contre, sa connaissance générale lui a permis d’inférer correctement que la protonthérapie était destinée au traitement du cancer.

Personnellement, je trouve le texte tout à fait utilisable moyennnant quelques aménagements. Et cela peut être adapté pratiquement à toutes les sauces, moyennant fourniture de suffisamment d’éléments de contexte : une toiture qui fuit, une demande d’informations à la commune, une lettre de résiliation….

2. Création d’un email promotionnel

Cet exemple est assez proche du précédent mais il est intéressant car les sociétés font souvent appel à des rédacteurs professionnels qui réalisent des textes à la demande, notamment pour les activités de marketing et promotions, communication sur les réseaux sociaux, descriptions de produits, articles de blogs….

Je vais prendre l’exemple d’un email promotionnel pour une magasin de chaussures de sport qui offre une réduction de 15% pendant le weekend de l’Ascension.

Franchement, j’ai obtenu ce résultat du premier coup et je trouve cela tout à fait honorable, avec mention spéciale pour le *post-scriptum*

3. Ecrire les paroles d’une chanson

Passons maintenant à une activité plus créative : la rédaction des paroles d’une chanson. Dans l’exemple suivant, je demande au modèle de proposer les paroles d’une chanson, tout en spécifiant quelques éléments de contexte.

Il est intéressant de constater que le modèle propose un refrain répété trois fois, et que les phrases riment sans que je l’aie explicitement demandé.

Et si ça ne convient pas, il suffit de demander au modèle de regénérer la réponse jusqu’à obtenir satisfaction…

Voici le résultat :

Ici encore, le résultat au premier essai est tout à fait honorable.

Note : Je me suis inspiré de Tarde em Itapua de Vinicius de Moraes, et vous pouvez écouter ici ce chef d’oeuvre. Bien sûr, le texte original est en Portugais.

4. Proposer une trame de roman

Nous allons maintenant chercher l’inspiration auprès du modèle pour une histoire de fiction, puis demander une organisation du livre en chapitres. Le grand avantage de ce genre de démarche c’est que la tendance du modèle à halluciner n’est plus un problème, bien au contraire !

Commençons par demander au modèle d’enrichir la trame de départ. Si vous n’avez vraiement aucune idée, vous pouvez demander au modèle de proposer des idées mais c’est un peu facile….autant avoir quand même un minimum de valeur ajoutée !

Et maintenant, laissons le modèle proposer une structuration en chapitres :

Et vous ne devez pas vous arrêter là. Vous pouvez demander au modèle d’approfondir le contexte et la personnalité des personnages, puis demander des idées de trame pour chacun des chapitres….et au passage demander que ce soit fait au format markdown comme présenté au chapitre précédent…

Remarque : il est possible de rendre les modèles conversationnels plus aléatoires (et donc en principe plus créatifs) en modifiant certains de leurs paramètres comme la température du modèle. Je reviendrai sur cette technique avancée dans un article ultérieur de la série.

Utilisation des modèles conversationnels II : transformation de documents

Dans cet article, je couvre la transformation de documents, à travers trois cas d’utilisation courants : édition et réécriture, traduction et reformatage.

1. Edition et réécriture de texte

Avec les modèles conversationnels, il est facile de demander une correction orthographique ou une réécriture du texte. Rien d’extraordinaire à cela. Ce qui est intéressant c’est qu’il est également possible de modifier le style du texte pour le faire mieux convenir aux besoins. Suivant les circonstances, vous pouvez demander la réécriture d’un exte dans un style plus formel, plus solennel, plus humoristique, plus romantique… et il est même possible de demander au système de réécrire le texte dans le style d’un auteur particulier. Tout ceci offre de nombreuses perspectives, dont il serait tentant d’abuser comme je le fais ci-dessous :

Dialogue 1 : Modification du style d’un texte

De manière moins innocente, il est possible de demander la réécriture d’un texte afin de l’orienter dans une direction particulière, ou d’inflencer le message qu’il porte dans une certaine direction. Cette capabilité présente un risque important d’exploitation à des fins de manipulation ou de désinformation et constitue un des risques principaux liés au déploiement de ces modèles généralistes.

2. Traduction

Les modèles conversationnels étant multilingues, il est possible de demander des traductions, voire de combiner une traduction avec une autre demande afin de gagner du temps.

Cette fonctionnalité étant déjà largement répandue sur internet, les modèles conversationnels n’offrent pas de gain majeur, si ce n’est la possibilité de combiner éventuellement deux étapes en une. Je ne m’étendrai donc pas plus sur ce sujet, si ce n’est pour dire que, selon les quelques études comparatives que j’ai pu voir, ChatGPT semble traduire avec un style plus fluide mais moins précis que les programmes plus spécialisés tels que Deepl ou Google Translate.

3. Reformatage de texte

Cette capacité est semblable à la réécriture de texte, sauf qu’au lieu de vouloir modifier le contenu du texte, nous allone cette fois tenter d’en modifier la présentation.

Je vais utiliser le format Markdown pour illustrer cette possibilité. Le format Markdown dont vous pourrez trouver une description ici, se prête particulièrement bien à ce genre d’activité, puisqu’il est lui-même de nature textuelle et que ChatGPT le maîtrise convenablement.

Beaucoup plus simple à utiliser que le HTML, Le format Markdown est très populaire sur le web pour la rédaction de blogs, d’articles…et c’est d’ailleurs le format que j’utilise pour la rédaction de mes articles, qui sont ensuite convertis en HTML par WordPress. Markdown va vous permettre de créer par le truchement de ChatGPT un texte proprement formaté (chapitres, liste numérotée, puces, souligné/italique, hyperliens…). Markdown est très facile à apprendre et différent éditeurs sont disponibles sur le web.

Le Markdown doit être considéré comme un format source qui va pouvoir être ensuite être transformé automatiquement vers des formats de publication comme PDF, LaTeX, EPUB, DOCX, RTF, ODT… par l’intermédiaire de programmes comme Pandoc.

Dialogue 2 : Formatage d’un texte

Il vous suffit alors de cliquer sur Copy code pour obtenir le texte avec ses élements de formatage que vous pouvez ensuite copier dans un traitement de texte capable d’interpréter le format Markdown (par exemple en sauvegardant dans un fichier d’extension .md).

Si vous combinez cette capabilité avec celle de génération de contenu original que nous verrons dans le prochain article, le champ des possibles, tant en termes de création que d’inspiration, devient vraiment très large.

4. Formatage de données

Il est possible de faire quelque chose d’équivalent en structurant des données désorganisées, rendant possible leur traitement ultérieur par des programmes spécialisés (Excel, python…). Il s’agit ici d’une activité différente mais apparentée à la génération de programmes informatiques, qui sera traitée dans un article séparé.

Il est important de demander au modèle de traduire dans un format précis, et qui est lui-même un format textuel tel que CSV, XML ou JSON.

Dialogue 3 : Structuration de données et exportation au format CSV

Il ne vous reste alors qu’à appuyer sur Copy code et sauvegarder dans un fichier CSV. Vous êtrs alors libres de contoinuer le traitement comme bon vous semble (Excel, programme Python…).

Une remarque : gardez en mémoire que le texte généré fait partie de la fenêtre de contexte et donc le volume de données qui peut être traité reste limité.

Utilisation des modèles conversationnels I : analyse de texte et demande d’ informations

Cet article est le premier d’une série qui vont couvrir les utilisations possibles de ChatGPT dans la vie de tous les jours. Aujourd’hui, nous commençons par les applications analytiques sur un texte, qui sont ici regroupées en trois cas concrets : demande de résumé, extraction d’informations, exploitation des connaissances propres du modèle. La possibilité assez fascinante de dialoguer avec un document est également évoquée.

Dans les prochains articles, je couvrirai successivement les applications transformatives (traduction, réécriture), puis les applications génératives (création). Ensuite, je couvrirai la création automatisée de programmes informatiques, pour terminer sur quelques réflexions sur l’exploitation pratique de ces modèles.

1. Demander le résumé d’un texte

Résumer un texte est une tâche tout à fait à la mesure des modèles génératifs, qui se débrouillent en général assez bien dans ce genre d’exercise. Afin d’obtenir les résultats désirés, il est vivement conseillé de bien circonscrire le texte à résumer au moyen de délimiteurs (« … » ou autres), puis de bien qualifier le type de résumé que vous désirez.

Cette qualification peut se faire de nombreuses manières, dont voici quelques exemples :

  • limiter la longueur de la réponse, par exemple : ‘résumer en 200 mots maximum’
  • orienter le résumé, par exemple: ‘résumer le projet de manière positive et favorable à son extension ‘
  • spécifier un style particulier, par exemple : ‘résumer dans le style d’un enfant de huit ans’
  • changer la langue : « résumer en Anglais »
Dialogue 1 : Résumé d’un texte

Attention cependant que ceci ne fonctionne pour des textes de taille inférieure à celle de la fenêtre de contexte, réponse comprise. En pratique, nous sommes limités à des textes d’ environ une dizaine de pages et un long article ou un livre sont encore hors d’ atteinte. Je vous renvoie au texte précédent qui traite plus en détail des fenêtres de contexte.

2. Analyse d’un texte

Il s’agit ici de demander au modèle une ou plusieurs questions spécifiques relatives à un texte fourni. Ceci va faire appel aux capacités de raisonnement et d’analyse du modèle. Attention que les résultats ne sont pas toujours fiables. Si le système semble confus, n’hésitez pas à lui demander d’expliquer son raisonnement étape par étape et/ou à lui montrer des exemples de problèmes similaires résolus.

Dialogue 2 : Analyse d’un texte

Une chose assez merveilleuse est que vous pouvez dialoguer interactivement avec le système au sujet du texte et poser de multiples questions. Cette capacité laisse entrevoir d’énormes potentialités, notamment en termes d’éducation (imaginez que vous pouvez poser interactivement des question à un syllabus de cours !).

Il existe aujourd’hui des sites web comme celui-ci sur lequel vous pouvez télécharger un fichier pdf puis dialoguer avec. Si vous possédez l’abonnement ChatGPT Plus, le plugin AskYourPDF permet d’en faire autant.

3. Extraction de la connaissance propre du modèle

Les Grands Modèles de Langage ont été entraînés sur un volume de données gigantesque qui dépasse de très loin ce qu’un être humain peut lire au cours d’une vie entière. Le modèle possède donc une base de connaissances extrêmement large qui en fait une sorte de Pic de la Mirandole sans qu’il soit nécessaire de lui fournir un quelconque texte en entrée, et qui est ouverte à vos questions et dialogues.

Attention cependant que la véracité de la réponse n’est pas garantie, il vous revient donc vérifier l’exactitude de la réponse avant toute exploitation du résultat !

Dialogue 3 : Exploitation des connaissances propres du modèle

Une autre limitation de ces modèles est liée au fait que les bases de données d’entraînement ont été collectées à un moment précis dans le temps, et le système ignore tout ce qui s’est déroulé ensuite. Sa connaissance des événements récents est donc sujette à caution. Les nouveaux modèles comme ChatGPT4 et Bing Chat permettent de pallier à cet inconvénient en lançant automatiquement des recherches sur le Web pour s’assurer que leur réponse est à jour (ils indiquent d’ailleurs dans le dialogue les recherches qu’ ils lancent).

Bases des modèles conversationnels III : multilinguisme, fenêtre de contexte, tokens…

Dans cet article, vous trouverez quelques compléments d’information utiles sur les modèles de langage conversationnels, bons à savoir avant de se lancer dans les cas d’utilisation proprement dits.

1. Multilinguisme

ChatGPT est capable de converser dans 95 langages différents, et ce dans leur alphabet natif (latin, cyrillique, mandarin…). Il est également capable de combiner les langages au cours d’une même conversation, comme par exemple dans le cas d’une demande de traduction.

Cependant, le degré d’expertise dans chaque langage varie en fonction du volume de données d’entraînement. En pratique, la compétence est maximale en Anglais, suivi par l’ Allemand, le Russe, le Français, le Chinois et l’Espagnol…pour vous donner une idée, vous trouverez sur ce lien la répartition linguistique de la base de données Common Crawl qui est une des principales sources de données d’entraînement. L’ Anglais à lui seul représente 45% du volume total, le second étant l’Allemand avec….6%.

La capacité à combiner les langues au sein d’un même dialogue offre des perspectives tout à fait originales: il est possible de demander à un modèle de langage de jouer le rôle de professeur de langues, et vous pouvez laisser parler votre créativité….regardez plutôt ceci :

Figure 1 – Dialogue avec ChatGP4 : un poème d’amour multilingue

Pour remédier à l’asymétrie des compétences linguistiques, certains Grands Modèles de Langage comme Bloom visent à une représentation plus égalitaire entre les langages d’entraînement. Si vous intéressés, je vous invite à en lire plus sur cet intéressant projet ici.

Enfin, les Modèles de Langage sont également entraînés sur différents langages de programmation, qu’ils « parlent » donc avec une éloquence variable. C’est un sujet passionnant, au potentiel applicatif énorme, sur lequel je reviendrai ultérieurement.

2. Fenêtre de contexte et tokens

Contrairement à ce que vous pourriez croire, les Modèles de Langage sont amnésiques. Après chaque réponse, ils oublient tout! Mais direz-vous, ceci n’est pas possible, puisqu’ ils sont capables de soutenir un dialogue…

Eh bien en fait il y a un truc : a chaque fois que vous posez une question au modèle, le programme réinjecte au modèle la totalité du dialogue depuis le début, avec les questions-réponses précédentes, et ce jusqu’à la dernière question.

Peu importe, direz-vous, c’est un détail invisible pour l’utilisateur. Eh bien pas tout à fait, cela joue un rôle important à cause de la limitation de taille des fenêtres de contexte.

Tous les modèles de langage actuels fonctionnent avec une fenêtre de contexte limitée, c’ est une contrainte de leur architecture technique. Cela veut dire que la totalité du texte qui est analysé par le modèle, à la fois dans la question (qui reprend les questions-réponses passées) et dans la réponse qui va être générée, ne peut dépasser la taille de la fenêtre de contexte sous peine de résultats fantaisistes.

Et ces fenêtes de contexte ne sont pas énormes. 4096 tokens pour chatGPT v3.5, 8192 tokens pour chatGPT4. Ces tailles excluent l’analyse d’un livre ou d’un long article. Elles signifient aussi que vous devez viser une certaine efficacité dans vos dialogues avec le système (le prompt engineering – sujet pour un article futur), et qu’il vaut mieux entamer un nouveau dialogue si vous décidez de changer de sujet en cours de conversation.

C’est un peu regrettable, mais les interfaces utilisateurs web disponibles (chatGPT, Bing) n’affichent pas le nombre de tokens soumis et générés, ce qui signifie que vous naviguez en aveugle sur ce point.

Mais que sont donc ces tokens (jetons en anglais) ? Il s’agit de groupes de lettres qui ressemblent à des syllabes. Vous pouvez jouer ici avec le générateur de tokens d’OpenAI : tapez un texte et il vous montrera la découpe de votre texte en tokens multicolores, comme ceci :

Figure 2 : Découpe d’une phrase en tokens

Il y a 50.257 tokens possibles au total, et c’est en réalité l’identifiant du token qui est passé au générateur, soit un nombre entier. Le modèle de langage se base sur la suite des nombre entiers correspondants aux tokens précédents pour prédire le l’identifiant du prochain token. Un générateur de langage effectue en réalité une opération purement mathématique : il prolonge une suite donnée de nombre entiers. C’est tout de suite moins romantique…

Figure 3 : La séquence correspondante d’identifiants des tokens

Tokens et multilinguisme

Les tokens ont été choisis pour avoir une efficacité maximale en Anglais; selon OpenAI il faut en moyenne 100 tokens pour encoder 75 mots. Les autres langues utilisant l’alphabet latin (comme le Français) seront encodées de manière encore assez efficace, quoique moindre que l’ Anglais. Par contre, l’encodage est peu efficace pour les langues utilisant un autre alphabet.

Je me suis amusé à extraire le texte du préambule de la Déclaration Universelle des Droits de l’Homme – qui est le texte le plus traduit au monde et accessible ici – dans 16 langues différentes pour voir l’efficacité du tokenizer sur ce texte. Voici les résultats :

Figure 4 – Performance du tokenizer d’OpenAI pour 16 langages

On voit bien que le nombre de tokens nécessaire par mot est minimal pour l’ Anglais (1,17 token/mot), suivi par les autres langues utilisant l’alphabet latin (2 à 3 tokens/mot), jusqu’à l’ Indonésien. Ensuite viennent les langues utilisant d’autres alphabets (Arabe, Grec, Cyrillique) pour terminer par les langages asiatiques. Pour ces dernières, il vaut mieux se baser sur le nombre d’ idéogrammes on voit qu’il faut environ 2 tokens pour encoder un idéogramme.

Différents encodeurs de tokens existent. La description ci-dessus utilise le générateur de tokens d’OpenAI mais les autres tokenizers ont des caractéristiques similaires.

3. Détecteurs de texte généré par un modèle

Depuis l’ apparition des modèles générationnels grand public, un certain nombre d’acteurs utilisent ces derniers pour générer du contenu sans nécessairement le déclarer, ce qui peut poser des problèmes de véracité de contenu, de paternité ou de droits d’auteur. Pensez aux dissertations rédigées par ChatGPT pour vous faire une idée du problème…

Et comme il est en principe nettement plus facile d’auto-générer du texte que de le rédiger à la main, ces manipulations se prêtent à des actions à grande échelle, visant par exemple à donner une visibilité artificielle à une marque ou à une information (vraie ou fausse). Dans un monde où la désinformation est répandue, il y a manifestement un potentiel d’utilisation nuisible des modèles.

Un autre problème est que, les modèles de langage étant eux-même entraînés sur des bases de donnée extraites d’Internet, on court le risque d’aboutir à un cercle vicieux dans lequel du contenu auto-généré sert à entraîner la génération suivantes de modèles de langage qui se déconnectent progressivement de la réalité humaine…

Tout ceci réclame une capacité à détecter automatiquement si un texte a été rédigé par un modèle de langage ou non. Et les premiers outils permettant de le faire sont disponibles, mais ils sont encore de nature expérimentale et les recherches pour améliorer ces détecteurs vont bon train. Un raffinement possible est de modifier le générateur lui-même pour qu’il modifie sont algorithme de génération de texte mot à mot pour rendre ce dernier plus aisément identifiable par la suite.

Vous pouvez essayer le détecteur fourni par OpenAI ici mais ses limitations sont clairement exposées, et il n’est pas d’une grande fiabilité. C’est une technique potentiellement promise à un grand avenir mais encore en phase d’émergence et il sera intéressant de suivre à la fois ses progrès techniques futurs et son exploitation dans le cadre du futur cadre réglementaire qui ne manquera pas d’apparaître.

4. Modèles de langage locaux ou dans le cloud

Les modèles conversationnels disponibles au grand public comme ChatGPT, Bing Chat, Google Bard… sont tous exécutés dans le cloud. La raison en est que les besoins en puissance de calcul et en mémoire pour l’exécution dépassent de loin les capacités des ordinateurs personnels ou des smartphones. L’ exécution se fait donc sur des serveurs surpuissants situés dans des datacenters.

Mais cela veut aussi dire que ces derniers constituent un sérieux goulet d’étranglement. Que ce soit à cause d’une demande trop forte ou d’une perte de connectivité, vous restez tributaire à tout instant de la santé de l’ infrastructure du fournisseur et de la connectivité qui vous y lie. Pas moyen de travailler de manière autonome.

C’est pourquoi de nombreuses recherches actuelles ont pour but de rendre des modèles moins gourmands pour leur permettre de fonctionner de manière autonome sur un ordinateur de bureau. L’utilisateur averti pourra installer l’application faraday.dev, qui permet de télécharger certains modèles et de les faire tourner localement. Attention, il vaut mieux posséder une machine puissante…

Bases des modèles conversationnels II : comment structurer le dialogue

Dans cet article, nous parlerons des techniques de base pour obtenir les meilleurs résultats lors de dialogues avec un modèle conversationnel type ChatGPT.

Il est possible d’obtenir des résultats satisfaisants avec des prompts spontanés mais la qualité des résultats sera impactée par la structure de la demande et son contenu. Nous allons donc passer successivement en revue les élements constitutifs d’une demande bien construite ainsi que les mécanismes les plus efficaces pour mettre interactivement le modèle conversationnel sur la voie de la réponse souhaitée.

Cet article ne décrit que des techniques générales à garder en mémoire lors de toute interaction avec ces modèles; il est souhaitable de les parcourir avant de présenter des cas d’utilisation concrets comme nous le ferons dans les prochains articles.

1. Eléments constitutifs de la question

Les éléments constitutifs d’une question adressée à un modèle conversationnel sont les suivants :

  • Instruction : ce que vous demandez au modèle;
  • Contexte : information externe ou circonstancielle qui va aider le modèle à comprendre correctement la demande;
  • Données en entrée : informations fournies au modèle en entrée pour le traitement. Les données en entrée s’apparentent au contexte mais sont en général de nature plus précise et spécifique;
  • Format de la réponse : vous pouvez ici spécifier un modèle de réponse désirée, par exemple en termes de longueur, de langue, de style ou de format de fichier. De même vous désirez une simple réponse binaire de type oui/non ou vrai/faux, dites-le.

Ces éléments ne sont pas tous systématiquement présents, mais il est bon de parcourir mentalement cette liste lors de chaque question initiale afin d’être sûr de ne rien oublier. bien sûr, il est possible d’apporter des précisions dans la suite du dialogue, mais cela est moins optimal.

2. Principes de bases du questionnement

Voici quelques principes de base pour vous aider à élaborer une question pertinente et susceptible d’être traitée efficacement par le modèle :

Premier principe : Soyez directif. Vous ne vous adressez pas à un être humain. Pas besoin de salutation ou de forme de politesse interrogative. Utilisez l’indicatif ou l’impératif, pas le conditionnel. Dites « fais ceci » ou « je veux cela » et pas « est-ce que tu pourrais ? » ni « pardon de vous importuner » ? Inutile de dire bonjour ou merci. Si votre sentiment anthropomorphique est trop fort, imaginez que vous êtes un général qui donne un ordre à un soldat.

Dialogue 1 : Une question simple

Second principe : Ecrivez des instructions claires et précises. Cela ne signifie pas que les instructions doivent être courtes, au contraire. Il vaut mieux être explicite que de laisser le modèle devoir deviner quelque chose d’implicite. Décrivez le contexte de la demande. Expliquez ce que vous attendez et sous quelle forme. Il est préférable que la question initiale fournisse directement l’emsemble es éléments plutôt que de devoir les fournir pièce par pièce lors de dialogues ultérieurs.

N’hésitez pas à utiliser des délimiteurs pour isoler un texte à traiter (par exemple pour une demande de résumé), et n’hésitez pas non plus à être très précis dans le format de la réponse, par exemple en spécifiant un gabarit de phrase dont les champs devront être complétés en fonction de la réponse.

Dialogue 2 : Question élémentaire avec spécification du format de réponse

Troisième principe : Fournissez des exemples. Si cela est possible, fournissez des exemples de question-réponse corrects dans la question initiale, en expliquant qu’il s’agit d’exemples à imiter. Un format « Question : / Réponse :  » est suffisant. Cette technique est appelée en Anglais few-shot learning, alors que le zero-shot learning signifie que l’on demande au modèle de répondre directement à la question sans fourniture d’exemples.

Dialogue 3 : Fourniture d’exemples pour illustrer la demande

Quatrième principe : Encouragez le système à détailler son raisonnement. Si question posée demande au modèle d’effectuer un raisonnement comportant plusieurs étapes successives avec éventuellement des choix intermédiaires, vous pouvez lui ordonner de réfléchir étape par étape et d’ exposer les étapes intermédiaires de son raisonnement. Si le raisonnement s’avère incorrect, vous pourrez alors le remettre sur le droit chemin en lui indiquant l’erreur et lui demandant de reprendre le raisonnement sur cette base.

Une variante qui combine les deux derniers principes consiste à fournir un ou plusieurs exemples de raisonnements avant de poser la vraie question, comme ceci :

Dialogue 4 : fourniture d’un exemple de raisonnement pour faciliter l’analyse

3. Persévérer et recommencer

Obtenir une bonne réponse du système doit être vu comme un processus itératif. Si le dialogue ne vous satisfait pas, relisez les principes ci-dessus et changez d’approche. Formalisez votre demande autrement, n’ hésitez pas à réutiliser certains éléments du dialogue précédent comme contexte pour un nouveau dialogue.

Vous voilà maintenant armé pour aborder des cas concrets de résolution de problèmes, que nous aborderons dans les prochains articles.

Bases des modèles conversationnels I : principes de fonctionnement

1. Modèles de Langage

Les Modèles de Langage se focalisent sur le traitement des langages humains. On parle aujourd’hui de « Grands » Modèles de Langage (GML) vu la taille énorme tant des jeux de données d’entraînement (des copies de l’ensemble de l’Internet!) que du nombre de paramètres internes du modèle. Ils peuvent être unilingues ou multilingues en fonction des données d’entraînement fournies mais la tendance actuelle est au multilinguisme: ChatGPT « converse » en 95 langues.

Les (Grands) Modèles de Langage fonctionnent de la manière suivante :

  • ils ont pour principe de chercher à prédire le prochain mot d’une séquence de mots fournie par l’utilisateur.
  • Cette prédiction se fait sous la forme d’une distribution de probabilité qui couvre l’ensemble des mots possibles (disons le dictionnaire).
  • Plusieurs mécanismes sont possibles pour choisir le mot gagnant. Une approche déterministe consiste à choisir systématiquement le mot avec la probabilité la plus élevée. Une approche stochastique constituera à tirer au hasard dans la distribution de probabilité. Le type d’approche dépend du modèle et peut parfois être modifié par l’utilisateur.
  • le mot prédit est alors ajouté à la séquence et le modèle est exécuté à nouveau avec la séquence complétée avec le mot généré, pour prédire le mot suivant.
  • Ce mécanisme est exécuté répétitivement autant de fois que nécessaire jusqu’à l’occurence d’un mot spécial qui signifie la fin du texte (pensez au « STOP » des télégrammes).

Vous trouverez ci-dessous une illustration simple de ce mécanisme pour la séquence initiale « J’ai une voiture… » que le modèle complétera en trois étapes en « J’ai une voiture depuis hier. ».

Figure 1 – Première étape
Figure 2 : Deuxième étape
Figure 3 : Troisième et dernière étape

L’ explication ci-dessus est conceptuellement correcte, mais les modèles actuels contiennent une astuce supplémentaire : ils ne prédisent pas des mots mais des tokens qui sont des parties de mots. Ils ressemblent plutôt à des syllabes que des mots. C’est notamment ce qui permet le multilinguisme. Nous y reviendrons dans un article ultérieur. Mais c’est un detail technique qui ne doit pas nous distraire du principe expliqué ci-dessus.

Les grands modèles de langage sont aussi des généralistes au niveau du type de narration; ils ne privilégient pas le dialogue sur d’autres formes discursives. En d’autres termes, ils ne répondront pas nécessairement à une question par une réponse. Ils sont donc tout à fait capables de ne pas répondre à la question voire de répondre par une autre question si cela leur semble plus plausible.

Tournons-nous maintenant vers les modèles de langage spécialisés en question-réponse et conversationnels, qui adressent précisément ce point.

2. Modèles de langages question/réponse et conversationnels

Les modèles Question/réponse sont des modèles dérivés ayant reçu un entraînement complémentaire qui les pousse à fournir une réponse lorsqu’une question est posée, en utilisant la base de connaissance intégrée dans le modèle lors de l’entraînement généraliste. Ceci rend ce genre de modèle beaucoup plus approprié pour une interaction avec des êtres humains.

Les modèles conversationnels sont un raffinement supplémentaire consiste à entraîner le modèle à tenir compte de l’ensemble d’un dialogue passé avec l’utilisateur -soit potentiellement plusieurs questions-réponses- lors de l’élaboration de la réponse.

Pour prendre le cas concret d’OpenAI, Les modèles GPT2,3 et 4 sont des modèles généralistes de puissance expressive croissante; InstructGPT est un modèle Question/Réponse dérive de GPT et ChatGPT est un modèle conversationnel dérivé d’ InstructGPT.

3. Véracité et hallucinations

Lors de l’entraînement complémentaire, les développeurs du système vont également tenter de privilégier les réponses véridiques, honnêtes et inoffensives. Mais ce n’est pas si simple que cela en a l’air. Le but du système est de compléter la séquence de la manière la plus plausible selon son propre modèle, ce comportement se rapproche plus du baratin que de l’honnêteté.

Ces modèles sont donc de brillants baratineurs et l’utilisateur sera bien averti de TOUJOURS revalider et vérifier le texte généré. Ne faites pas comme cet avocat aux USA qui a remis une plaidoierie générée par ChatGPT sans la relire, qui contenait toute une jurisprudence inventée de toutes pièces par notre espiègle serviteur informatique.

On dit dans le jargon de l’IA que le modèle hallucine. Une hallucination est une déclaration du modèle qui semble plausible mais s’avère être fausse.

4. Apprentissage spécialisé

Les modèles de langage étant à la base entraînés sur un corpus de texte généraliste, il peut être intéressant de leur fournir un entraînement complémentaire dans un domaine spécifique si vous avez une application précise en tête. Par exemple un entraînement sur les codes de loi pour une application juridique ou des ouvrage médicaux de référence pour une application dans le secteur de la santé, afin d’enrichir la puissance expressive du modèle dans la direction recherchée.

Cela reste un exercice relativement complexe qui va demander de faire appel à des experts : un corpus spécialisé de texte va devoir être identifié, prétraité puis les paramètres du modèle modifiés sur base de l’entraînement sur ce jeu de données, suivi d’une phase de test et de validation. L’ avantage de cette approche est que la connaissance du modèle est définitivement enrichie. Les interactions futures entre un utilisateur et le modèle sur le sujet seront plus fructueuses.

Une solution plus rudimentaire consiste à fournir un petit nombre d’exemples (de questions et réponses correctes) dans le texte de la question initiale afin d’ orienter le modèle dans la bonne direction pendant l’exécution. On appelle cela l’apprentissage dans le contexte (in-context learning). Il s’agit d’une des techniques de prompting que nous verrons dans le prochain article.

Newer posts »