Nous utilisons des cookies pour vous garantir une expérience optimale. Si vous acceptez, vous êtes en accord avec cette utilisation. Pour plus d'informations, veuillez consulter notre politique de confidentialité.
/

Développement

Exploiter le « chain-of-thought » pour une communication efficace dans différents modèles de language de programmation

Carl Lapierre
Carl Lapierre
11
min read

Il y a un peu plus d'un mois, nous avons organisé notre premier hackathon sur l'IA chez Osedea. Depuis l'événement, nous sommes en quête de dévoiler tout le potentiel de Chat GPT et de l'IA générative. En constatant les capacités de ce vaste modèle linguistique lors du hackathon, nous sommes devenus obsédés par la maîtrise de sa puissance pour fournir les résultats les plus précis et éclairants. Cela nous a entraînés dans le terrain du « Prompt Engineering ».

Cet article partagera certaines des connaissances que nous avons acquises lors de notre Hackathon et notre perspective pour l'avenir. Ainsi, vous pourrez trouver des informations faciles à comprendre et à assimiler sur le sujet en un seul endroit.

Avec la montée en popularité de ChatGPT, l'IA générative gagne en importance en tant que concept prometteur dans le domaine de l'intelligence artificielle, notamment dans le traitement du langage naturel. Cette approche vise à aligner le comportement de l'IA sur l'intention humaine. Les ingénieurs d'incitation «prompt engineers» construisent soigneusement des incitations pour pousser les modèles d'IA générative à leurs limites, ce qui se traduit par une amélioration des performances et de meilleurs résultats pour les outils d'IA générative existants. Avant d'entrer dans certaines des techniques de l'ingénierie d'incitation, permettez-nous de donner d'abord un bref aperçu du fonctionnement des grands modèles de langage (GML).

Alors, comment les modèles de langage fonctionnent-ils réellement?

Les modèles de langage (ML), y compris les grands modèles de langage (GML) qui alimentent des chatbots comme ChatGPT, sont des modèles probabilistes conçus pour identifier et apprendre les schémas statistiques dans le langage naturel. Au cœur de ces ML, on calcule la probabilité qu'un mot apparaisse à la fin d'une phrase donnée en entrée. Ces modèles sont utilisés depuis un certain temps déjà, même dans des applications quotidiennes comme la prédiction de texte sur les smartphones, où des suggestions pour les prochains mots sont fournies en fonction de l'entrée.

La principale distinction entre les ML et les GML réside dans la taille du modèle. Avec les avancées récentes dans les architectures d'apprentissage automatique et l'entraînement distribué, les développeurs peuvent désormais entraîner des GML à une échelle beaucoup plus grande. Cette augmentation de la taille améliore la précision statistique du modèle. (Bien que cela soit une simplification du fonctionnement des GML, il est important de noter qu'il y a d'autres facteurs en jeu, tels que le réglage fin et l'apprentissage par renforcement).

       

Grands modèles de langage (GML)

   

Absence de raisonnement dans les GML

Bien que les GML excellent dans la prédiction, il est essentiel de comprendre qu'ils ne possèdent pas une véritable intelligence ni des capacités de raisonnement. Les GML sont essentiellement de grandes machines à prédiction et ils sont dépourvus de la capacité de penser ou de raisonner derrière leurs résultats. Par exemple, si je lui demandais de générer une phrase se terminant par le même mot avec lequel elle a commencé, un GML comme GPT-3 aurait du mal à répondre à cette demande.

       

 Absence de raisonnement dans les GML

   

L'exemple ci-dessus démontre que les GML, y compris ChatGPT, s'appuient fortement sur les schémas statistiques qu'ils ont appris et manquent d'une véritable compréhension ou d'un raisonnement.

Hallucinations

Ce que nous voyons dans la réponse exemple ci-dessus est également connu sous le nom d'hallucination. Les hallucinations font référence à des réponses confiantes générées par un modèle qui ne sont pas étayées par ses données d'entraînement. Aussi appelées confabulation ou délire, ces hallucinations surviennent lorsque qu'un algorithme classe une réponse avec une grande confiance, même si elle est sans rapport ou incorrecte. Ce phénomène découle des limitations du GML et n'est pas contextualisé comme une faiblesse du modèle. Les hallucinations mettent en évidence l'importance de la prudence lors de la dépendance envers les modèles d'IA pour des réponses factuelles nécessitant du raisonnement, car elles peuvent fournir des informations trompeuses ou inexactes.

Capacités émergentes

       

Capacités émergentes

   

Dans l'exemple ci-dessus, on a posé la même question à GPT-4, mais cette fois-ci, il a répondu correctement à l'incitation contrairement à GPT-3. Les capacités émergentes sont un phénomène intrigant observé dans les Grands Modèles de Langage (GML), alors qu'ils grandissent en taille et en complexité. Les chercheurs ont remarqué que lorsque les GML, comme GPT-4, sont entraînés sur de plus grandes quantités de données avec plus de paramètres, ils commencent à manifester de nouveaux comportements qui vont au-delà de leurs capacités attendues. Le développement de nouvelles capacités peut être comparé au déblocage de super pouvoirs, tels que la traduction, la programmation, voire même la compréhension des blagues.

C'est à la fois fascinant et quelque peu préoccupant, car ces capacités émergentes ne sont pas explicitement programmées dans les modèles, mais émergent plutôt grâce au processus d'apprentissage à partir de vastes quantités de données textuelles. L'article d'OpenAI sur GPT-4, intitulé "Étincelles d'AGI", explore les détails de ces nouvelles capacités et les signes d'intelligence générale qu'elles présentent. Cependant, malgré ces capacités émergentes, le défi fondamental du raisonnement dans les GML persiste toujours. À mesure que nous continuons à développer des modèles de langage, nous pouvons nous attendre à ce que des effets et des capacités plus inattendus émergent, façonnant le paysage de l'IA de manière passionnante et imprévisible.

Maintenant que nous avons compris les bases des GML, penchons-nous sur l'ingénierie d'incitation.

Qu'est-ce que le « prompt engineering »?

Le « prompt engineering » est une discipline émergente qui se concentre sur le développement et l'optimisation d'incitations pour une utilisation efficace des modèles de langage (ML). Il constitue une approche cruciale pour comprendre les capacités et les limites des grands modèles de langage et améliorer leur performance dans diverses tâches, telles que la réponse à des questions et le raisonnement arithmétique. Grâce au « prompt engineering », les chercheurs et les développeurs utilisent diverses techniques pour concevoir des incitations efficaces et robustes qui interagissent avec les GML et d'autres outils.

Cette discipline joue un rôle essentiel dans l'expansion de la capacité et de l'applicabilité des GML dans diverses applications et sujets de recherche. Certaines techniques d'incitation notables comprennent l'incitation à zéro-shot, l'incitation à quelques tirs, l'incitation en chaîne de pensée, l'auto-consistance, l'incitation à générer des connaissances, l'ingénieur d'incitation automatique, l'incitation active, l'incitation à stimulus directionnel, l'incitation ReAct, l'incitation multimodale en chaîne de pensée, l'incitation arborescente de pensées et l'incitation graphique. À mesure que le « prompt engineering » continue d'évoluer, de nouvelles techniques sont régulièrement développées, témoignant des efforts continus dans ce domaine. Passons en revue quelques-unes de ces techniques en détail.

« Zero-shot prompting »

Le « zero-shot prompting » est une technique simple dans le cadre du « prompt engineering » qui exploite les capacités inhérentes des GML. Avec le « zero-shot prompting », il est possible d'obtenir des résultats précis sans fournir explicitement des instructions détaillées. Par exemple, lorsqu'on lui demande une analyse de sentiment sans définir explicitement ce qu'est le sentiment, GPT démontre sa compréhension en générant une réponse précise pour l'analyse de sentiment. Cela met en évidence la capacité de GPT à répondre correctement d'emblée en se basant sur sa compréhension intégrée du sentiment.

« Few-shot prompting »

Le « few-shot prompting » pousse l'ingénierie d'incitation un peu plus loin en incorporant des résultats d'exemples aux côtés de l'incitation. Cette approche permet un apprentissage en contexte et guide le modèle vers une meilleure performance. Dans l'exemple fourni, nous observons une approche à un seul exemple où le modèle apprend à effectuer la tâche en se basant sur un seul exemple. Cependant, nous pouvons améliorer l'incitation en l'enrichissant avec plus d'exemples, ce qui conduit à des réponses plus précises du modèle. En ajustant l'incitation et en utilisant ces techniques, nous pouvons clairement observer les effets sur la sortie désirée. Il est à noter que pour des tâches plus complexes, augmenter le nombre de démonstrations, comme 3 exemples, 5 exemples, 10 exemples, etc., peut être expérimenté pour améliorer davantage la performance du modèle.

       

Few-shot prompting

   

« Chain-of-thought prompting » (CoT)

Le « Chain-of-thought prompting » est une technique utilisée pour améliorer les capacités de raisonnement des grands modèles de langage (GML). L'idée derrière cette approche est de guider les GML en leur montrant les étapes impliquées dans la résolution d'un problème spécifique, similaire à l'enseignement à un jeune enfant comment faire des mathématiques. Au lieu d'attendre des réponses directes, les GML voient le processus pour arriver à la solution. En fournissant une chaîne de pensée comme exemple, les GML apprennent à générer leur propre processus de raisonnement, ce qui conduit à des sorties plus précises.

       

Chain-of-thought prompting (CoT)

   


En 2022, des chercheurs de Google ont publié un article sur le chain-of-thought prompting, mettant en évidence son impact sur les résultats d'incitation. Ils ont mené des expériences en utilisant des références pour les capacités de raisonnement arithmétique dans les GML et ont observé des améliorations significatives lors de l'utilisation du chain-of-thought prompting. Les résultats ont montré des scores plus élevés pour les tâches de raisonnement par rapport aux méthodes d'incitation standard. Il a également été noté que le chain-of-thought prompting est une capacité émergente dans les grands modèles de langage, ce qui indique la nature évolutive des techniques d'incitation et leur dépendance à la taille du modèle.

       

result of experiments using benchmarks for arithmetic reasoning abilities in LLMs

   

Auto-consistance avec le « chain-of-thought »

Bien que le « chain-of-thought » ait démontré des résultats positifs, il n'est pas sans limites. Certaines tâches peuvent encore poser des défis aux GML, et des améliorations supplémentaires sont nécessaires pour améliorer leurs performances. Cependant, les gains empiriques obtenus grâce au « chain-of-thought » prompting ont mis en évidence son potentiel pour améliorer les capacités de raisonnement des GML, surpassant même les modèles fins. À mesure que le domaine de l'ingénierie d'incitation continue d'évoluer, on s'attend à ce que de nouvelles approches et techniques affinent davantage les capacités des modèles de langage à l'avenir.

       

Auto-consistance avec le « chain-of-thought »

   

En plus du « CoT », nous pouvons ajouter une technique appelée auto-consistance qui fait référence à une méthode consistant à créer une moyenne des résultats obtenus à partir de plusieurs itérations d'une incitation en chaîne de pensée. Contrairement aux autres techniques mentionnées précédemment, cette approche ne se concentre pas sur l'incitation elle-même, mais plutôt sur la génération de réponses diverses en répétant la même incitation en chaîne de pensée à un seul exemple plusieurs fois.

ans l'exemple ci-dessus, en examinant la réponse la plus cohérente parmi les trois itérations, vous pouvez arriver à un résultat valide, qui dans ce cas est 9.

« Tree-of-thought »

Une technique récemment apparue appelée le « Tree of Thoughts»a gagné en importance dans l'auto-consistance avec le « chain-of-thought ». Le ToT aborde les limites des modèles de langage dans les tâches de résolution de problèmes. Étant donné que les modèles prennent des décisions en se basant sur des jetons individuels de manière de gauche à droite, cela restreint leur efficacité dans les tâches impliquant l'exploration et la planification stratégique.

       

Three of thoughts (ToT)

   

Pour surmonter ces limitations, le cadre ToT étend l'approche du « Chain of Thought ». Il permet aux modèles de langage de considérer des unités cohérentes de texte appelées « pensées » comme des étapes intermédiaires dans la résolution de problèmes. Avec ToT, les modèles peuvent prendre des décisions délibérées en explorant différents chemins de raisonnement, en évaluant des choix et en déterminant la meilleure démarche à suivre. Ils peuvent également anticiper ou revenir en arrière au besoin pour prendre des décisions plus éclairées.

ReAct (Raisonner + Agir)

Et enfin, nous avons ReAct, qui signifie « Raisonner et Agir ». C'est une technique populaire qui exploite les modèles de langage pour générer à la fois des traces de raisonnement et des actions spécifiques à la tâche. Elle permet aux GML de non seulement fournir leurs réflexions et leurs idées, mais aussi d'effectuer des actions qui interagissent avec des sources externes telles que des bases de données, des environnements ou des API.

Avec ReAct, les GML ont accès à des outils tels que des navigateurs Web avec Puppeteer, des systèmes de fichiers ou toute API souhaitée. Cet accès leur permet d'utiliser des ressources externes pour des tâches telles que la recherche Web ou la récupération d'informations à partir de bases de connaissances. Les traces de raisonnement générées aident les GML à induire, suivre et mettre à jour des plans d'action tout en gérant les exceptions.

En incorporant des outils externes et en générant des actions spécifiques à la tâche, ReAct améliore la compréhension des GML de la tâche en cours et facilite la récupération d'informations précises et fiables.

Que pouvons-nous faire avec le « prompt engineering » ?

Êtes-vous enthousiaste? Maintenant que nous avons appris ces techniques de « prompt engineering » fascinantes, explorons comment nous pouvons en tirer le meilleur parti. La bonne nouvelle, c'est que vous n'avez pas besoin de devenir un expert dans ces techniques. Comprendre les bases est suffisant, car il existe des outils puissants disponibles qui mettent en œuvre ces techniques de manière transparente. L'un des principaux cadres de travail dans le domaine du « prompt engineering » est appelé Langchain.

       

LangChain

   

Langchain, un cadre Python et TypeScript lancé en octobre dernier, fournit tous les éléments essentiels pour exploiter efficacement les capacités des grands modèles de langage. Langchain s'intègre à un large éventail de principaux fournisseurs de modèles, dont OpenAI, HuggingFace, Google et d'autres. Ces intégrations sont incroyablement pratiques car elles permettent de facilement échanger des modèles de langage, vous permettant ainsi de tester différents comportements auprès de divers fournisseurs. De plus, Langchain offre un support pour une liste étendue d'outils avec lesquels les agents peuvent interagir. Des moteurs de recherche aux fonctions AWS Lambda et Twilio, vous pouvez également intégrer vos propres outils et modèles en toute simplicité en utilisant la même interface.

Le cadre propose également une variété d'agents d'outils prêts à l'emploi, répondant à différentes finalités. Par exemple, les agents SQL et JSON gèrent les données structurées de manière indépendante, permettant à plusieurs agents d'interagir entre eux de manière transparente.

Langchain est divisé en sept modules : modèles, incitations, mémoire, index, chaîne, agents et rappels. En tirant parti de ces modules, vous pouvez rapidement construire des applications puissantes. Par exemple, avec seulement quelques lignes de code, vous pouvez créer un outil qui consomme des PDF et résume leur contenu. Langchain vous permet de construire des applications personnalisées, sans être limité à un modèle de langage spécifique comme GPT-4.

Mot de la fin

Alors que nous concluons notre exploration de l'ingénierie d'incitation et de son rôle dans l'avancement des modèles de langage, nous sommes rappelés de la nature en constante évolution du paysage de l'IA. Chez Osedea, nous nous engageons à rester à la pointe de ce domaine dynamique, et nous favorisons activement un environnement d'apprentissage continu, de collaboration et d'innovation.

Que ce soit en organisant des hackathons IA, en animant des ateliers ou en participant régulièrement à des discussions autour de l'IA, ces initiatives servent d'opportunités pour notre équipe et d'autres personnes partageant les mêmes idées de se réunir, de se mettre au défi et d'échanger des idées. En participant activement à ces activités, nous améliorons non seulement nos propres capacités, mais contribuons également à la croissance collective et au développement de l'IA.

Dans cet environnement en constante évolution, la collaboration, le partage des connaissances et l'apprentissage continu sont essentiels. En favorisant un environnement qui encourage l'exploration et l'innovation, nous pouvons collectivement naviguer dans le paysage de l'IA en évolution et débloquer de nouvelles frontières de possibilité.

Alors que nous anticipons des avancées significatives dans les technologies de l'IA dans les mois et les années à venir, il est important de rester adaptables. La disponibilité des outils et des cadres aujourd'hui témoigne du potentiel et des possibilités qui nous attendent. Embrassons la nature dynamique de l'IA et soyons prêts à exploiter les avancées qui façonneront notre avenir.

Crédit photo : Mojahid Mottakin

Did this article start to give you some ideas? We’d love to work with you! Get in touch and let’s discover what we can do together.

Get in touch
Button Arrow

Further Reading

Développement

Huit incontournables pour un magicien du CSS

Alexandre Lotte
Alexandre Lotte
3
min read
Développement

L'innovation à l'œuvre pendant notre Hackathon IA de 16 heures

Carl Lapierre
Carl Lapierre
7
min read
Développement

Approche minimaliste de DataOps et MLOps avec DVC et CML

Nicholas Nadeau
Nicholas Nadeau
11
min read
Développement

Repousser les limites de l'IA pour produire de nouveaux produits à une vitesse vertigineuse

Joseph Tanner
Joseph Tanner
8
min read
Développement

Comment détecter « les angles morts » de votre application TypeScript

Nicolas Carlo
Nicolas Carlo
9
min read
Développement

Astuces et meilleures pratiques pour Flutter

Polina Rolich
Polina Rolich
4
min read