Accueil les sujets LangChain Qu’est-ce que LangChain ?
Découvrir watsonx.ai
Illustration d’une chaîne composée de chiffres et de lettres
Qu’est-ce que LangChain ?

LangChain est un cadre d’orchestration open source qui permet de développer des applications à l’aide de grands modèles de langage (LLM). Disponibles dans les bibliothèques Python et Java, les outils et les API de LangChain simplifient la création d’applications alimentées par les LLM, comme les chatbots et les agents conversationnels. 

Interface générique pour la quasi-totalité des LLM, LangChain propose un environnement de développement centralisé qui permet de créer des applications LLM et de les intégrer à des sources de données externes, ainsi qu’à des workflows logiciels. Grâce à l’approche modulaire de LangChain, les développeurs et les data scientists peuvent comparer dynamiquement différents prompts, et même différents modèles de fondation avec une réécriture de code minimale. Cet environnement modulaire accepte également les programmes qui s’appuient sur plusieurs LLM (par exemple, une application qui s’appuie sur un LLM pour interpréter les requêtes utilisateur, et sur un autre LLM pour créer une réponse). 

Lancé par Harrison Chase en octobre 2022, LangChain a connu une ascension fulgurante. En effet, c’est le projet open source qui affichait la croissance la plus rapide sur Github en juin 2023.1 C’était un mois avant la sortie retentissante de ChatGPT d’OpenAI. LangChain a contribué à rendre l’IA générative plus accessible aux passionnés du fait de sa grande popularité. 

LangChain facilite la plupart des cas d’utilisation des LLM et du traitement automatique du langage naturel (TAL) : chatbots, recherche intelligente, réponse aux questions, services de synthèse et agents conversationnels permettant l’automatisation robotisée des processus.

Intégration avec les LLM

Les LLM ne sont pas des applications autonomes. Pour remplir leur vocation, ces modèles statistiques pré-entraînés doivent être associés à une application (et, dans certains cas, à certaines sources de données). 

Par exemple, Chat-GPT n’est pas un LLM, mais une application chatbot qui, selon la version choisie, s’appuie sur les modèles de langage GPT-3.5 ou GPT-4. Alors que le modèle GPT interprète l’entrée de l’utilisateur et compose une réponse en langage naturel, c’est l’application qui (entre autres) fournit une interface permettant à l’utilisateur de saisir et de lire, ainsi que le design UX qui régit l’expérience chatbot. Même en entreprise, Chat-GPT n’est pas la seule application qui s’appuie sur le modèle GPT. En effet, Microsoft exploite GPT-4 pour alimenter Bing Chat. 

En outre, bien que les modèles de fondation (comme ceux qui alimentent les LLM) soient pré-entraînés sur d’immenses jeux de données, ils ne sont pas omniscients. Si une tâche donnée nécessite l’accès à des informations contextuelles bien spécifiques, comme une documentation interne ou des compétences sectorielles, les LLM doivent être connectés à ces sources de données externes. Même si vous souhaitez tout simplement qu’il reflète en temps réel les événements actuels, votre modèle nécessitera des informations externes car ses données internes sont à jour uniquement pendant la période de pré-entraînement. 

De la même manière, si une tâche d’IA générative donnée requiert l’accès à des workflows logiciels externes (par exemple, si vous souhaitez que votre agent conversationnel s’intègre à Slack), le LLM devra être intégré à l’API pour ce logiciel. 

Si ces intégrations peuvent généralement être réalisées manuellement à l’aide d’un code, les cadres d’orchestration comme LangChain et la plateforme IBM watsonx simplifient fortement le processus. Essayer différents LLM pour comparer les résultats devient plus facile également, puisque les différents modèles peuvent être interchangés avec une modification minimale du code. 

Open Source @ IBM

De la blockchain aux conteneurs en passant par l’IA et les systèmes d'exploitation, nos développeurs créent des projets open source qu’ils agrémentent de code, de documentation et de ressources complémentaires pour vous permettre d’innover.

Contenu connexe

Abonnez-vous aux newsletters d'IBM

Comment fonctionne LangChain ?

Au cœur de LangChain se trouve un environnement de développement pensé pour rationaliser la programmation d’applications LLM grâce à l’abstraction. Cette dernière consiste à simplifier le code en représentant un ou plusieurs processus complexes en tant que composant nommé qui englobe toutes ses étapes.

Intrinsèquement liée au langage, l’abstraction fait partie de notre quotidien. Par exemple, « π » nous permet de représenter le rapport de la circonférence d’un cercle à son diamètre sans avoir à écrire son nombre infini de décimales. De même, un thermostat nous permet de contrôler la température dans notre logement sans avoir à comprendre les circuits complexes associés. Il suffit de savoir à quelles températures correspondent ses différents réglages.

LangChain est essentiellement une bibliothèque d’abstractions pour Python et Javascript, représentant les étapes et les notions courantes nécessaires à l’exploitation des modèles de langage. Ces composants modulaires, comme les fonctions et les classes d’objets, constituent les éléments de base des programmes d’IA générative. Ils peuvent être « enchaînés » pour créer des applications, et permettent donc de réduire la quantité de code et les compétences requises pour réaliser des tâches TAL complexes. Si l’approche abstraite de LangChain limite le degré de personnalisation des applications, elle permet tant aux experts qu’aux novices d’expérimenter et d’accélérer le prototypage.

Importation des modèles de langage

Tout LLM, ou presque, peut être utilisé dans LangChain. Les modèles de langage sont faciles à importer dans LangChain, à condition de disposer d’une clé API. La classe LLM fournit une interface standard pour tous les modèles.

La plupart des fournisseurs LLM vous demanderont de créer un compte pour recevoir une clé API. Certaines de ces API, notamment les API destinées aux modèles propriétaires à source fermée, comme celles proposées par OpenAI ou Anthropic, peuvent impliquer des frais.

Bon nombre de modèles open source, comme BLOOM de BigScience, LLaMa de Meta AI et Flan-T5 de Google, sont accessibles par le biais de la plateforme Hugging Face (lien externe à ibm.com). Grâce à son partenariat avec Hugging Face, IBM watsonx propose également une suite de modèles open source rigoureusement sélectionnés. En créant votre compte auprès de l’un de ces deux services, vous pourrez générer une clé API pour le modèle de votre choix.

LangChain ne se limite pas aux modèles de fondation prêts à l’emploi : la classe CustomLLM (lien externe à ibm.com) permet de créer des wrappers LLM personnalisés. Vous pouvez également utiliser les API d’IBM watsonx et le SDK Python, qui comprend une intégration LangChain, pour créer des applications dans LangChain à l’aide de modèles que vous avez déjà entraînés ou finement réglés selon vos besoins, grâce à la classe WatsonxLLM (et l’ID associé au projet).

Explorer la démo « Utiliser watsonx et LangChain pour passer une série d'appels vers un modèle de langage »
Modèles de prompts

Les prompts sont les instructions données à un LLM. L’« art » de rédiger des prompts efficaces, qui fournissent au LLM le contexte nécessaire pour interpréter les entrées et structurer les sorties selon vos besoins, est généralement appelé « prompt engineering ». 

La classe PromptTemplate de LangChain formalise la rédaction de prompts sans qu’il soit nécessaire de manuellement coder en dur le contexte et les requêtes. Les éléments importants du prompt sont également saisis comme des classes formelles telles que input_variables. Un modèle de prompt peut donc contenir et reproduire un contexte, des instructions (comme « ne pas utiliser de termes techniques »), un ensemble d’exemples pour guider ses réponses (dans le cadre de ce que l’on appelle « apprentissage few-shot »), un format de sortie spécifié ou une question standardisée à laquelle il faut répondre.  Ces modèles de prompt efficacement structurés peuvent être enregistrés, nommés et réutilisés selon vos besoins.

Bien que ces éléments puissent tous être codés manuellement, les modules PromptTemplate permettent une intégration fluide avec d’autres fonctionnalités LangChain, comme les chaînes éponymes.

Regarder la vidéo « Prompt engineering et réglage des prompts »
Chaînes

Comme leur nom l’indique, les chaînes sont au cœur des workflows LangChain. Elles relient les LLM aux autres composants pour créer des applications en exécutant une séquence de fonctions. 

La chaîne la plus élémentaire est la LLMChain. Elle permet tout simplement d’appeler un modèle, ainsi que le modèle de prompt associé. Par exemple, supposons que vous ayez enregistré un prompt comme « ExamplePrompt » et que vous vouliez l’exécuter sur Flan-T5. Vous pouvez importer LLMChain à partir de langchain.chains, puis définir chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt). Afin d’exécuter la chaîne pour une entrée donnée, il suffit d’appeler chain_example.run("input").

Pour utiliser la sortie d’une fonction comme entrée pour la fonction suivante, vous pouvez utiliser SimpleSequentialChain. Pour chaque fonction, vous pouvez utiliser différents prompts, outils, paramètres ou même modèles selon vos besoins. 

Index

Pour accomplir certaines tâches, les LLM doivent pouvoir accéder à des sources de données externes non incluses dans son jeu de données d’entraînement (documents internes, e-mails ou jeux de données). LangChain désigne collectivement ces documents externes par le terme « index ».

Chargeurs de documents 
LangChain propose un large éventail de chargeurs de documents pour applications tierces (lien externe à ibm.com). Cela permet d’importer facilement des données à partir de sources telles que les services de stockage de fichiers (Dropbox, Google Drive ou Microsoft OneDrive), le contenu Web (YouTube, PubMed ou URL spécifiées), les outils de collaboration (Airtable, Trello, Figma ou Notion), ou encore les bases de données (Pandas, MongoDB ou Microsoft). 

Bases de données vectorielles 
Contrairement aux bases de données structurées « traditionnelles », les bases de données vectorielles convertissent les points de données en représentations vectorielles. Ces représentations numériques, ou vecteurs, comportent un nombre fixe de dimensions et regroupent généralement les points de données apparentés grâce aux méthodes d’apprentissage non supervisé. Cela permet d’exécuter des requêtes à faible latence, même sur les jeux de données volumineux, ce qui représente un gain d’efficacité considérable. Qui plus est, les représentations vectorielles stockent les métadonnées de chaque vecteur, optimisant ainsi les recherches.

LangChain propose des intégrations pour plus de 25 méthodes de représentation vectorielle différentes, ainsi que pour plus de 50 magasins de vecteurs (hébergés dans le cloud, mais aussi locaux). 

Séparateurs de texte 
Pour augmenter la vitesse et réduire les demandes de calcul, il est souvent préférable de diviser les documents texte volumineux en petits morceaux. Les séparateurs TextSplitters de LangChain découpent le texte en blocs sémantiques, que vous pouvez ensuite combiner à l’aide des méthodes et des paramètres de votre choix.

Récupération 
Une fois les sources externes de connaissances connectées, le modèle doit être capable de récupérer et d’intégrer rapidement les informations pertinentes pour vos besoins. Tout comme watsonx, LangChain propose des fonctionnalités de génération augmentée par récupération (RAG) : ses modules de récupération acceptent une requête sous forme de chaîne en entrée et renvoient une liste de documents comme sortie.

Mémoire

Par défaut, les LLM ne conservent pas les conversations antérieures dans leur mémoire à long terme (sauf si l’historique de chat concerné est utilisé comme entrée pour une requête). LangChain résout ce problème grâce à des fonctionnalités simples qui permettent d’ajouter de la capacité de mémoire à un système. Il dispose de différentes options : conserver les conversations dans leur intégralité, conserver un résumé de la conversation à ce jour, ou encore conserver les n échanges les plus récents.

Agents

Les agents LangChain peuvent utiliser un modèle de langage donné comme « moteur de raisonnement » pour déterminer les mesures à prendre. Voici les entrées incluses lors de la création de chaîne pour agents :

  • la liste des outils disponibles à exploiter ;
  • les entrées utilisateur (comme les prompts et les requêtes) ;
  • toutes les étapes pertinentes précédemment exécutées.
En savoir plus sur les agents LangChain
Outils

Malgré leur puissance et leur polyvalence reconnues, les LLM ont leurs limites non négligeables, à savoir un manque d'informations actualisées et de compétences sectorielles, ainsi que des difficultés en mathématiques. 

Les outils LangChain (lien externe à ibm.com) constituent un ensemble de fonctions conçues pour permettre aux agents LangChain d’interagir avec les informations du monde réel, afin d’étendre ou d’améliorer les services proposés. Voici les principaux outils LangChain :

  • Wolfram Alpha : associant fonctions de calcul et de visualisation des données puissantes, cet outil propose des capacités mathématiques avancées.

  • Google Search : accès à la recherche Google pour fournir aux applications et aux agents des informations en temps réel.

  • OpenWeatherMap : récupération de données météorologiques.

  • Wikipedia : accès facilité aux informations contenues dans les articles Wikipedia.

LangSmith

Lancée à l’automne 2023, la plateforme LangSmith permet de passer plus facilement du prototypage (fonctionnalités accessibles ayant rendu LangChain célèbre), à la production d’applications LLM de qualité.

LangSmith propose des outils pour surveiller, évaluer et déboguer les applications, notamment le suivi automatique des appels de modèles pour détecter les erreurs et tester la performance dans différentes configurations. Cette visibilité vise à rendre les applications plus robustes et plus rentables.

Premiers pas avec LangChain

LangChain est open source et libre d’accès : le code source est disponible en téléchargement sur Github (lien externe à ibm.com). 

LangChain peut également être installé sur Python à l’aide d’une simple commande pip : pip install langchain.  Pour installer toutes les dépendances de LangChain (et non seulement celles que vous jugez nécessaires), il suffit d’exécuter la commande pip install langchain[all].

Une multitude de tutoriels détaillés sont proposés par l’écosystème de la communauté LangChain et la documentation officielle disponible à l’adresse docs.langchain.com (lien externe à ibm.com).

Cas d’utilisation de LangChain

Les cas d’utilisation des applications conçues avec LangChain sont nombreux, allant des tâches les plus simples, comme celles de répondre à des questions ou de générer des textes, aux solutions plus complexes qui emploient un LLM comme « moteur de raisonnement ».

  • Chatbots : les chatbots font partie des utilisations les plus intuitives des LLM. LangChain peut être utilisé pour fournir un contexte pertinent selon la vocation des chatbots, mais aussi pour intégrer les chatbots dans les workflows et les canaux de communication existants, et ce avec leur propre API.
  • Synthèse : les modèles de langage sont capables de résumer différents types de textes, des articles scientifiques complexes aux e-mails entrants en passant par les transcriptions.
  • Réponses aux questions : les LLM explorent documents spécifiques et bases de connaissances spécialisées (comme Wolfram, arXiv ou PubMed) pour récupérer des informations pertinentes et formuler des réponses utiles. S’ils sont finement réglés ou guidés par les prompts appropriés, certains LLM peuvent même répondre à bon nombre de questions sans informations externes.
  • Augmentation de données : les LLM permettent de générer des données synthétiques utilisables à des fins de machine learning. Par exemple, on peut entraîner un LLM pour générer des échantillons supplémentaires qui imitent les points de données contenus dans un jeu de données d’entraînement.
  • Agents conversationnels: intégrés aux workflows appropriés, les modules Agent de LangChain peuvent exploiter un LLM pour identifier de façon autonome les prochaines étapes et prendre des mesures grâce à l’automatisation robotisée des processus (RPA).
Solutions connexes
watsonx.ai

Entraînez, validez, ajustez et déployez IA générative, modèles de fondation et de machine learning ; créez des applications d’IA en un clin d’œil, avec moins de données.

Découvrez watsonx.ai

Services de conseil en IA

Repensez votre façon d’exploiter l’IA : pour votre sérénité, notre équipe internationale diverse de plus de 20 000 experts en IA vous accompagnera dans la création et la mise à l’échelle de vos projets d’IA et d’automatisation. Alliant rapidité, éthique et fiabilité, vous vous appuierez sur notre technologie IBM watsonx et sur un écosystème de partenaires ouvert, pour assurer la livraison du modèle d’IA de votre choix, quel que soit le cloud utilisé.

Découvrir les services de conseil en IA proposés par IBM

watsonx.data

Mettez les workloads d’analyse et d’IA à l’échelle pour toutes vos données, partout, grâce à watsonx.data, le seul et unique entrepôt de données ouvert, hybride et gouverné du secteur.

Découvrez watsonx.data
Ressources LangChain

Outils, conseils et exemples de code pour créer des applications avec LangChain et watsonx.

Conseils pour rédiger des prompts pour modèles de fondation

À la fois art et science, le prompt engineering consiste à élaborer des textes d’invite pour un modèle et des paramètres donnés, afin d'en tirer le meilleur parti. Ces conseils vous aideront à rédiger des prompts efficaces pour la plupart des modèles de fondation générateurs de texte.

Utiliser watsonx et LangChain pour appeler un modèle de langage

Ce notebook décrit les étapes et le code permettant d’illustrer une chaîne séquentielle simple grâce à l’intégration LangChain avec les modèles watsonx. Une connaissance basique de Python est souhaitable.

Guide Python pour les débutants

Nous vous présenterons les notions de base nécessaires pour utiliser ce langage de programmation simple, qu’il s’agisse d’exécuter des calculs algébriques ou de générer une sortie graphique à partir de vos données.

Passez à l’étape suivante

Entraînez, validez, ajustez et déployez IA générative, modèles de fondation et de machine learning ; créez des applications d’IA en un clin d’œil, avec moins de données. Le tout grâce à IBM watsonx.ai, le studio de développement d’IA nouvelle génération destiné aux entreprises.

Commencer votre essai gratuit Réserver une démo live