← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 2 janv. 2024

Catégorie IA Générative

LangChain : le framework spécialiste des LLM

Depuis longtemps, les chatbots ont toujours été des projets difficiles à développer, car ils nécessitent d'avoir accès à des informations en temps réel contenues dans des documents ou des bases de données. Aujourd'hui, avec les LLM puissants disponibles pour de nombreux projets, il peut être pertinent d'adapter les chatbots pour qu'ils apportent des réponses beaucoup plus précises et détaillées aux utilisateurs.

Mais comment peut-on intégrer efficacement les LLM pour faire de la recherche d'information à notre place ? C'est là que LangChain rentre en jeu : ce framework permet aux développeurs de créer des projets dont le moteur sont les LLM.

Dans cet article, nous allons démystifier LangChain, en présentant son fonctionnement et ses divers composants, ainsi qu'en explorant quelques-unes des applications où il peut être utilisé.

Qu’est-ce que LangChain ?

LangChain est un framework open-source développé en Python et conçu pour faciliter l'utilisation de LLM dans la création d'agents conversationnels, en particulier pour réaliser des tâches automatisées. Ce framework agit principalement comme une solution logicielle dont l'objectif est de standardiser et simplifier le développement d'applications qui utilisent des LLM.

Logo LangChain

LangChain intègre de nombreux composants qui permettent aux développeurs de créer rapidement des applications basées sur le texte, sans nécessairement disposer d'une connaissance approfondie sur les architectures des LLM.

Les agents

Les agents forment la principale composante de LangChain : ils représentent des entités active qui prennent des décisions, exécutent des actions ou répondent à des requêtes formulées par un utilisateur.

Une des puissances de la modélisation par agents de LangChain est la flexibilité dans la spécialisation de ces agents. En effet, un agent peut très bien être un simple assistant virtuel développé spécifiquement pour des tâches bien précises, tout comme il peut être bien plus généraliste pour s'étendre à une palette de fonctionnalités, sans nécessite une personnalisation importante à chaque nouveau contexte.

Cette notion d'agent est essentielle sous LangChain, car elle permet de différencier concrètement du simple LLM : ce dernier peut être vu comme le moteur d'un agent, là où celui-ci prendra des actions en fonction des réponses du LLM.

Les chaînes et les liens

Comme indiqué dans son nom, LangChain utilise une logique de chaînes pour ses agents. Elles représentent des séquences d'opérations orchestrées intelligemment pour répondre à une tâche précise.

Lorsqu'un utilisateur effectue une opération spécifique, comme faire appel à un LLM pour générer du texte, effectuer une requête à une base de données, ou encore requêter une API tierce, LangChain appelle cela un lien.

Lorsque plusieurs liens sont assemblés entre-eux, cela forme ainsi une chaîne. Et c'est là toute la puissance de LangChain : un seul lien peut être utilisé dans plusieurs chaînes, ce qui facilite énormément le développement des applications, en particulier lorsque l'on souhaite intégrer son application avec de nombreux services.

Cette architecture de chaînes et de liens permettent aussi de découper logiquement une application sous forme de diagramme de séquences, beaucoup plus réaliste lorsque l'on doit développer des applications complètes, plutôt que le modèle « question-réponse » des LLM.

Les modèles de prompts

Aujourd'hui, la plupart des LLM fonctionnement par l'intermédiaire de modèles de prompts : ce sont des portions (chunks) de texte que l'on soumet afin que celui-ci nous génère une réponse.

Là-aussi, LangChain intègre la possibilité de créer un catalogue de prompts pour aider à spécialiser un LLM sur un sujet précis, ou même pour récupérer des réponses générées par un LLM.

La mémoire et les callbacks

Un autre aspect intéressant de LangChain et dans la lignée des chaînes, les agents ont la capacité à disposer d'une mémoire. Cette mémoire peut notamment être utilisée pour conserver des informations, et plus particulièrement des résultats lors des interactions précédentes.

En effet, la plupart des agents conversationnels ne se limitent pas à une seule question de l'utilisateur : il s'agit dorénavant de véritables discussions où l'agent peut ré-utiliser ses conversation précédentes avec l'utilisateur pour affiner ses résultats.

enter image description here

Cela offre un avantage considérable dans la prise de décision et dans la contextualisation lorsque les prompts sont formulés, mais cela permet aussi de se rapprocher de la manière dont un interlocuteur humain pourrait se rappeler de ses conversations précédentes pour assurer une communication fluide et pertinente.

Dans cette optique, LangChain propose également des callbacks, qui permettent de déclencher des actions lorsqu'un événement particulier survient en fonction de conditions spécifiques. Ces callbacks offrent une personnalisation presque sans limite, puisqu'elles permettraient de développer des agents capables de communiquer avec ses propres services ou applications internes.

Exemples d'application de LangChain

Par sa capacité à construire des séquences ordonnées d'actions, avec les LLM au cœur du sujet, les applications où LangChain se révèle puissant ne manquant pas. Aujourd'hui, de nombreux projets basés sur le NLP, et ce même sans forcément toujours utiliser des LLM, utilisent l'écosystème de LangChain pour modéliser les différentes briques.

Récupération d'informations

Une des principales applications de LangChain concerne le retrieval, c'est-à-dire la récupération d'informations contenues dans diverses sources de données, qu'elles soient dans des fichiers ou des bases de données.

Retrieval LangChain

Ce mécanisme de récupération d'informations est à la base du RAG, pour Retrieval-Augmented Generation, un méthode qui intègre un mécanisme de recherche d'informations pour permettre à un LLM de disposer d'une base de connaissance spécifique à un domaine précise ou pour une entreprise donnée.

En effet, la création de cette base de connaissance nécessite d'effectuer des opérations d'encodage sur les informations (car les sources de données peuvent être très diverses), mais aussi de stockage, puisqu'une fois les données encodées, celles-ci doivent être stockés dans un format numérique facilement lisible pour les agents.

LangChain dispose d'un vaste catalogue de connecteurs prêts à l'emploi, qui simplifient grandement toutes ces opérations de chargement, d'encodage et de stockage, que ce soit pour des fichiers (PDF, Excel, Word), ou des bases de données (SQL, Data Warehouse) ou même depuis des services Web (S3, Google Drive).

Agents conversationnels

Couplés avec la recherche d'informations énoncée précédemment, l'origine de LangChain était de développer facilement des agents conversationnels à partir des LLM.

LangChain propose ainsi une architecture de Model I/O (Model Input Output) qui permet de standardiser les communications entre les utilisateurs et les agents, et plus spécifiquement les LLM sous-jacent. Cela permet notamment d'avoir un format de réponse consistant entre les agents, non seulement pour faciliter l'intégration entre les différentes parties des chaînes, mais également pour uniformiser les communications au fur et à mesure que le projet se développe.

LangChain Model

Choisir un format de données adapté en réponse d'un agent est important : en effet, lorsque l'on souhaite intégrer différents services dans son application, la réponse d'un agent ne peut pas être uniquement sous forme de texte. Comment pourrions-nous savoir s'il faut créer un nouveau fichier, ou effectuer une requête sur un service externe ?

Avec un format de données bien choisi, il est possible de déterminer exactement l'action qui doit être effectuée, que ce soit une réponse à apporter à l'utilisateur, ou bien un service externe à contacter.

Avantages et alternatives de LangChain

En résumant tout ce que nous avons évoqué jusqu'à maintenant, LangChain présente de nombreux avantages.

  • La modularité et la flexibilité induites par les chaînes font de LangChain un avantage considérable par rapport à d'autres alternatives, car cette structure modulaire permet aux développeurs d'assembler des composants individuels de manière flexible. Cette modularité permet d'ajouter de nouvelles fonctionnalités ou d'intégrer d'autres services très rapidement, sans modifier ce qui est déjà en place.
  • La facilité d'utilisation et la rapidité de développement forment également un avantage important pour LangChain. En effet, il dispose de nombreuses abstractions de haut niveau pour réduire la complexité liée au LLM, notamment pour que les développeurs puissent plus facilement les utiliser.
  • L'écosystème de LangChain est également l'un des plus fournis : de nombreux intégrations sont déjà proposées pour que les développeurs puissent commencer à intégrer des LLM dans leur propre infrastructure, sans avoir besoin de développer des composants spécifiques.

À ce jour, la principale alternative à LangChain est Haystack : ce dernier utilise des concepts similaires mais sous différentes appellations. Bien que Haystack soit moins fourni que LangChain en termes de services et de connecteurs, il permet tout de même plus de personnalisations sur les pipelines qui sont créées, notamment pour intégrer ses propres outils.

Conclusion

Dans le paysage des LLM, LangChain est devenu incontournable pour tous les développeurs qui souhaitent créer des projets où les LLM sont au cœur du sujet. Avec ses nombreuses intégrations existantes et ses capacités de modélisation de chaînes, LangChain est dorénavant un framework de choix pour développer des applications LLM.

Néanmoins, le framework est encore relativement jeune, et de nombreuses améliorations voient le jour chaque semaine. Mais à pour l'instant, il n'y a aucun doute sur le fait que LangChain se soit bel et bien imposé comme une référence pour toutes les applications d'IA Générative.

Articles similaires

Blog

13 févr. 2024

IA Générative

Avec l'explosion de l'IA Générative appliquée à la génération de texte ces dernières années, de nombreuses entreprises ont souhaité pouvoir déployer en interne leur propres LLM. Elles disposent ainsi de deux possibilités : utiliser directement des modèles disponibles en version SaaS comme ChatGPT ou Cohere, ou déployer dans leur propre SI un LLM open source adaptés à leurs propres besoins.
Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

2 févr. 2024

IA Générative

Un des plus gros atouts des LLM concerne indéniablement leur grande connaissance sur de nombreux sujets, ainsi que leur forte capacité de généralisation. Pour de nombreuses entreprises, une des applications les plus importantes concerne la documentation interne.
Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

30 janv. 2024

IA Générative

Le prompting est une discipline qui a vu le jour avec l'explosion des LLM. En effet, il y a de nombreuses manières de poser des questions à un modèle, et puisqu'ils sont aujourd'hui très généralistes, il est important d'être précis dans ses propositions.
Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

© 2024 Blent.ai | Tous droits réservés