L’essentiel sur LangChain
Quand il est question d’IA générative, LangChain revient souvent sur le devant de la scène. Qu’est-ce que c’est ? Comment cela fonctionne-t-il ? Ce conseil éclaircit les capacités principales de ce framework et ses cas d’usage.
LangChain est un framework open source qui permet aux développeurs de logiciels de combiner de grands modèles de langage avec d’autres composants externes pour développer des applications alimentées par de grands modèles de langage (LLM). L’outil est compatible avec 65 modèles et plateformes d’IA générative.
Les développeurs, ingénieurs logiciels et data scientists ayant une expérience des langages de programmation Python, JavaScript ou TypeScript peuvent utiliser les packages LangChain disponibles. LangChain est d’abord un projet open source lancé par Harrison Chase et Ankush Gola en 2022 ; la version initiale a été publiée la même année.
Pourquoi LangChain est-il important ?
LangChain doit simplifier le processus de création d’interfaces d’application d’IA générative. Les développeurs qui travaillent sur ces types d’interfaces utilisent divers outils pour créer des applications NLP avancées. LangChain doit rationaliser ce processus.
En outre, les modèles GPT (Generative Pre-trained Transformer) sont généralement entraînés sur des données antérieures à leur publication. Par exemple, ChatGPT a été rendu public vers la fin de l’année 2022, mais sa base de connaissances s’arrêtait en septembre 2021 (techniquement, c’est toujours le cas, mais les processus de raffinement ont introduit des données produites ultérieurement). LangChain peut connecter les modèles d’IA à des sources de données pour « actualiser » leurs connaissances ou « aligner leurs réponses avec les préférences humaines ».
LangChain doit permettre de concevoir des applications « data aware », c’est-à-dire qui peuvent s’appuyer sur un contexte comme une base de données de connaissances. Elles peuvent aussi servir « d’agents », donc prendre des actions. Généralement, les développeurs exploitent le framework pour associer le déclenchement d’un processus automatique après la génération d’une sortie par un grand modèle de langage.
Quelles sont les caractéristiques de LangChain ?
LangChain comporte plusieurs modules. Ils doivent garantir le bon fonctionnement des multiples composants nécessaires à la création d’applications NLP :
- Interaction avec le modèle. Également appelé « model I/O », ce module permet à LangChain d’interagir avec n’importe quel modèle de langage et d’effectuer des tâches telles que la gestion des entrées dans le modèle et l’extraction d’informations à partir de ses sorties.
- Connexion et récupération des données. Les données auxquelles les LLM accèdent peuvent être transformées, stockées dans des bases de données et extraites par le biais de requêtes avec ce module.
- Chaînes. Ce module relie plusieurs LLM à d’autres composants. C’est ce que l’on appelle une chaîne LLM.
- Agents. Le module d’agent permet aux LLM de décider des meilleures étapes ou actions à entreprendre pour résoudre les problèmes. Pour ce faire, il orchestre une série de commandes complexes destinées aux grands modèles de langage et à d’autres outils, afin qu’ils répondent à des demandes spécifiques.
- Mémoire. Le module de mémoire aide un LLM à se souvenir du contexte de ses interactions avec les utilisateurs. La mémoire à court terme et la mémoire à long terme, toutes deux dépendantes d’une base de données persistante qui accueille l’historique d’une conversation, peuvent être ajoutées à un modèle, en fonction de l’usage spécifique.
Quelles sont les intégrations de LangChain ?
Comme le framework est une sorte de passerelle entre les grands modèles de langage et des sources et des outils tiers, il est avant tout une boîte à outils d’intégration. Par exemple, LangChain peut se connecter à des services d’IA comme ceux de HuggingFace, Cohere et OpenAI – avec des sources de données ou des magasins tels que Apify Actors, Google Search et Wikipedia.
D’autres intégrations potentielles incluent les plateformes de stockage cloud, telles qu’Amazon Web Services, Google Cloud et Microsoft Azure, ainsi que les bases de données vectorielles. Une base de données vectorielle permet de stocker de grands volumes de données à haute dimension, telles que des vidéos, des images et des textes longs, sous la forme de représentations mathématiques (des vecteurs) qui facilitent le stockage et la recherche de ces éléments de données par une application. Outre des connecteurs vers des bases de données vectorielles spécialisées, LangChain offre plus de 50 intégrations avec des SGBD capables de stocker des vecteurs.
Comment créer des prompts dans LangChain
Les invites servent d’entrée au LLM pour lui demander de renvoyer une réponse, qui est souvent une réponse à une requête. Cette réponse est également appelée sortie. Un prompt doit être conçu et exécuté correctement pour augmenter la probabilité que la réponse soit pertinente de la part d’un modèle de langage. C’est pourquoi la maîtrise du prompt engineering sera un plus à l’avenir.
Les prompts peuvent être générés facilement dans les implémentations LangChain à l’aide d’un modèle (template), qui sera utilisé comme instructions pour le LLM sous-jacent. Les modèles de prompts peuvent être plus ou moins spécifiques. Ils peuvent être conçus pour poser des questions simples à un modèle de langage. Ils peuvent également être utilisés pour fournir un ensemble d’instructions explicites à un modèle de langage, avec suffisamment de détails et d’exemples pour obtenir une réponse de haute qualité.
Avec la programmation Python, LangChain dispose d’un modèle d’invite prédéfini qui prend la forme d’un texte structuré. Les étapes suivantes sont nécessaires pour l’utiliser :
- Installer Python. Une version récente de Python doit être installée. Une fois le terminal Python ouvert, entrez la commande suivante pour installer le strict minimum de LangChain pour les besoins de cet exemple.
pip install langchain
- Ajouter des intégrations. LangChain nécessite généralement au moins une intégration. OpenAI en est un excellent exemple. Pour utiliser les interfaces de programmation d’applications LLM d’OpenAI, un développeur doit créer un compte sur le site Web d’OpenAI et récupérer la clé d’accès à l’API. Ensuite, à l’aide de l’extrait de code suivant, il doit installer le paquet Python d’OpenAI et saisir la clé d’accès aux API.
pip install openai
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
- Importer un modèle de prompt. Une fois ces étapes de base terminées, la méthode du template de prompt de LangChain doit être importée. C’est ce que fait l’extrait de code ci-dessous.
from langchain import PromptTemplate
prompt_template = PromptTemplate.from_template(
"Tell me an {adjective} fact about {content}."
)
prompt_template.format(adjective="interesting", content="zebras")
"Tell me an interesting fact about zebras."
Comment développer des applications dans LangChain
LangChain est un framework, mais il n’est pas magique. Comme outil de développement, c’est aux ingénieurs et aux développeurs de connecter les bons composants et de définir la logique applicative. Voici les principales étapes.
- Définir l’application. Un développeur doit d’abord définir un cas d’usage spécifique pour une application. Cela signifie également qu’il faut déterminer son périmètre, y compris les exigences telles que les intégrations, les composants et les LLM nécessaires.
- Construire les fonctionnalités. Les développeurs combinent les templates de prompts, les chaînes et les agents pour bâtir les fonctionnalités souhaitées. Ces chaînes s’appuient sur un protocole permettant d’effectuer des appels vers le modèle. Il est ainsi possible d’utiliser des modes synchrones, asynchrones et en batch, mais aussi un mode parallèle pour obtenir simultanément des réponses à plusieurs requêtes différentes.
- Personnaliser les fonctionnalités. LangChain permet aux développeurs de modifier son code pour créer des fonctionnalités personnalisées qui répondent aux cas d’usage spécifiques et façonnent le comportement de l’application.
- Affiner les LLM. Il est important de choisir le LLM approprié pour le travail à effectuer et de l’ajuster pour qu’il réponde correctement aux besoins exprimés.
- Nettoyage des données. L’utilisation de techniques de nettoyage des données garantit des ensembles de données propres et exacts. Des mesures de sécurité doivent également être mises en œuvre pour protéger les données sensibles.
- Tests. En testant régulièrement les applications LangChain, on s’assure qu’elles continuent à fonctionner et que le LLM ne dérive pas des instructions qui lui ont été transmises par les utilisateurs.
Exemples de cas d’usage de LangChain
Originellement, LangChain a été pensé pour bâtir une interface permettant de relier un LLM et une base de connaissances. Le cas d’usage le plus commun consiste donc à s’en servir comme d’un service pour interroger en langage naturel une collection de documents et en extraire une réponse. Mais les différents composants ouvrent le champ des possibles afin d’exploiter ce framework et répondre à de multiple cas d’usage :
- Chatbots. Le cas d’usage le plus évident est celui des chatbots d’assistance à la clientèle. LangChain permet de créer des applications de chat suffisamment avancées pour traiter les questions complexes et même les transactions des utilisateurs. Ces applications sont capables de comprendre et de maintenir le contexte d’un usager tout au long d’une conversation, à l’instar de ChatGPT. L’IA est déjà largement utilisée pour améliorer l’expérience et le service client.
- Assistant à la programmation. En combinant LangChain et l’API d’OpenAI, les développeurs peuvent créer un outil pour aider les personnes travaillant dans le secteur IT à améliorer leurs compétences en matière de programmation et à accroître leur productivité.
- Assistance administrative. Les LLM peuvent automatiser les tâches administratives répétitives, telles que la prise de rendez-vous, la rédaction de courriel suivant des modèles préétablis, la recherche documentaire, la production de résumés, etc.
- Marketing et e-commerce. Les entreprises du e-commerce peuvent bâtir des applications propulsées par des LLM pour tenter de mieux conseiller leur clientèle et l’élargir. Une application capable de comprendre les habitudes d’achat des consommateurs et les descriptions de produits peut générer des recommandations d’achat. Il est également possible de créer une architecture pour générer des fiches produit, voire les personnaliser en fonction des données clients.