Comment construire des applications LLM avec LangChain Tutoriel
Les capacités des grands modèles de langage (LLM) tels que le GPT-3 d'OpenAI, le BERT de Google et le LLaMA de Meta transforment diverses industries en permettant la génération de divers types de textes, allant du contenu marketing et du code de science des données à la poésie. Bien que le ChatGPT ait suscité beaucoup d'intérêt en raison de son interface de chat conviviale, il existe de nombreuses possibilités inexploitées d'exploiter les LLM en les intégrant dans différentes applications logicielles.
Développer des applications d'IA
Si vous êtes captivé par les pouvoirs de transformation de l'IA générative et des LLM, ce tutoriel est fait pour vous. Ici, nous explorons LangChain - un framework Python open-source pour construire des applications basées sur de grands modèles de langage tels que Python.
Pour en savoir plus sur la création d'applications d'IA avec LangChain, consultez le cours Building Multimodal AI Applications with LangChain & the OpenAI API AI Code Along (Créer des applications d'IA multimodales avec LangChain et le code d'IA de l'API OpenAI ). Vous y découvrirez comment transcrire le contenu d'une vidéo YouTube avec l'IA parole-texte Whisper, puis comment utiliser GPT pour poser des questions sur le contenu.
Que sont les grands modèles linguistiques (LLM) ?
Les grands modèles de langage (LLM) sont des systèmes d'intelligence artificielle avancés conçus pour comprendre et générer des textes de type humain. Ces modèles sont formés à partir de grandes quantités de données, ce qui leur permet d'appréhender des modèles complexes, de comprendre les nuances de la langue et de générer des réponses cohérentes. Les LLM ont la capacité d'effectuer diverses tâches liées à la langue, notamment la traduction, l'achèvement de textes, le résumé et même l'engagement dans des interactions conversationnelles. Le GPT est un exemple de LLM.
Le LLM est un type d'IA générative. Si vous souhaitez en savoir plus sur l'IA générative et sur la manière dont elle peut stimuler votre créativité, consultez nos blogs sur l'utilisation de l'IA générative pour stimuler votre créativité et notre podcast intitulé " Inside the Generative AI Revolution" (La révolution de l'IA générative). Vous pouvez également vous inscrire à notre prochain cours sur les concepts des grands modèles linguistiques.
Introduction à LangChain
LangChain est un cadre open-source conçu pour faciliter le développement d'applications basées sur de grands modèles de langage (LLM). Il offre une suite d'outils, de composants et d'interfaces qui simplifient la construction d'applications centrées sur le LLM. Avec LangChain, il devient facile de gérer les interactions avec les modèles linguistiques, de relier de manière transparente différents composants et d'intégrer des ressources telles que des API et des bases de données. Vous pouvez en savoir plus sur LangChain pour l'ingénierie des données et les applications de données dans un autre article.
La plateforme LangChain s'accompagne d'une série d'API que les développeurs peuvent intégrer dans leurs applications, ce qui leur permet d'intégrer des capacités de traitement des langues sans avoir à tout construire à partir de zéro. Par conséquent, LangChain simplifie efficacement le processus de création d'applications basées sur le LLM, ce qui le rend adapté aux développeurs de tous les domaines d'expertise.
Les applications telles que les chatbots, les assistants virtuels, les utilitaires de traduction linguistique et les outils d'analyse des sentiments sont autant d'exemples d'applications alimentées par des LLM. Les développeurs s'appuient sur LangChain pour créer des applications sur mesure basées sur des modèles linguistiques qui répondent à des besoins spécifiques.
Avec les progrès continus et l'adoption plus large du traitement du langage naturel, les applications potentielles de cette technologie devraient être pratiquement illimitées. Voici quelques caractéristiques remarquables de LangChain :
1. Des invites personnalisables pour répondre à vos besoins spécifiques
2. Construction de composants de maillons de chaîne pour des scénarios d'utilisation avancés
3. Intégration de modèles pour l'augmentation des données et accès à des capacités de modèles linguistiques de premier ordre, tels que GPT et HuggingFace Hub.
4. Des composants polyvalents qui permettent de les combiner pour répondre à des besoins spécifiques
5. Manipuler le contexte pour établir et guider le contexte afin d'améliorer la précision et la satisfaction de l'utilisateur
Mise en place de LangChain dans Python
L'installation de LangChain dans Python est assez simple. Vous pouvez l'installer avec pip ou conda.
Installer avec pip
pip install langchain
Installer avec conda
install langchain -c conda-forge
Cela permet de mettre en place les éléments de base de LangChain. Une grande partie de l'utilité de LangChain est réalisée lorsqu'il est intégré à divers fournisseurs de modèles, magasins de données, etc.
Par défaut, les dépendances nécessaires à ces intégrations ne sont PAS incluses dans l'installation. Pour installer toutes les dépendances, vous pouvez exécuter la commande suivante :
pip install langchain[all]
La dernière option consiste à construire la bibliothèque à partir des sources. Dans ce cas, vous pouvez cloner le projet à partir de son dépôt GitHub.
Configuration de l'environnement
L'utilisation de LangChain nécessite généralement des intégrations avec divers fournisseurs de modèles, magasins de données, API et autres composants similaires. Comme pour toute intégration, nous devons fournir des clés API appropriées et pertinentes pour que LangChain fonctionne. Il y a deux façons d'y parvenir :
1. Définir la clé comme variable d'environnement
OPENAI_API_KEY="..."
Si vous préférez ne pas définir de variable d'environnement, vous pouvez passer la clé directement via le paramètre nommé openai_api_key lorsque vous lancez la classe OpenAI LLM :
2. Configurer directement la clé dans la classe concernée
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
Composants clés de LangChain
LangChain se distingue par l'importance qu'il accorde à la flexibilité et à la modularité. Il démonte le pipeline de traitement du langage naturel en composants distincts, ce qui permet aux développeurs d'adapter les flux de travail à leurs besoins. Cette adaptabilité fait de LangChain la solution idéale pour construire des applications d'IA dans différents scénarios et secteurs.
Composants et chaînes
Dans LangChain, les composants sont des modules qui remplissent des fonctions spécifiques dans le pipeline de traitement des langues. Ces composants peuvent être reliés en "chaînes" pour des flux de travail personnalisés, comme une chaîne de chatbot de service à la clientèle avec des modules d'analyse des sentiments, de reconnaissance des intentions et de génération de réponses.
Modèles d'invites
Les modèles d'invites sont des invites prédéfinies réutilisables d'une chaîne à l'autre. Ces modèles peuvent devenir dynamiques et adaptables en insérant des "valeurs" spécifiques. Par exemple, une invite demandant le nom d'un utilisateur peut être personnalisée en insérant une valeur spécifique. Cette fonction est utile pour générer des invites basées sur des ressources dynamiques.
Magasins vectoriels
Ils sont utilisés pour stocker et rechercher des informations par le biais d'encastrements, c'est-à-dire en analysant les représentations numériques de la signification des documents. VectorStore sert d'outil de stockage pour ces encastrements, permettant une recherche efficace basée sur la similarité sémantique.
Index et extracteurs
Les index agissent comme des bases de données stockant des détails et des métadonnées sur les données d'apprentissage du modèle, tandis que les extracteurs recherchent rapidement des informations spécifiques dans cet index. Cela permet d'améliorer les réponses du modèle en fournissant un contexte et des informations connexes.
Analyseurs de sortie
Les analyseurs de sortie entrent en jeu pour gérer et affiner les réponses générées par le modèle. Ils peuvent éliminer le contenu indésirable, adapter le format de sortie ou ajouter des données supplémentaires à la réponse. Ainsi, les analyseurs de sortie permettent d'extraire des résultats structurés, tels que des objets JSON, à partir des réponses du modèle de langage.
Exemples de sélecteurs
Les sélecteurs d'exemples de LangChain servent à identifier les instances appropriées à partir des données d'apprentissage du modèle, améliorant ainsi la précision et la pertinence des réponses générées. Ces sélecteurs peuvent être ajustés pour favoriser certains types d'exemples ou filtrer ceux qui n'ont rien à voir, ce qui permet d'obtenir une réponse personnalisée de l'IA en fonction des données fournies par l'utilisateur.
Agents
Les agents sont des instances LangChain uniques, chacune ayant des invites, une mémoire et une chaîne spécifiques pour un cas d'utilisation particulier. Ils peuvent être déployés sur différentes plateformes, y compris le web, le mobile et les chatbots, pour répondre aux besoins d'un large public.
Comment construire une application de modèle de langue dans LangChain
LangChain fournit une classe LLM conçue pour s'interfacer avec divers fournisseurs de modèles de langage, tels que OpenAI, Cohere et Hugging Face. La fonctionnalité la plus élémentaire d'un LLM est la génération de texte. Il est très simple de créer une application avec LangChain qui prend une chaîne de caractères en guise d'invite et renvoie le résultat.
API_KEY ="..."
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-ada-001", openai_api_key=API_KEY)
print(llm("Tell me a joke about data scientist"))
Sortie:
>>> "Qu'obtient-on lorsqu'on bricole avec des données ? Un scientifique des données !"
Dans l'exemple ci-dessus, nous utilisons le modèle text-ada-001 d'OpenAI. Si vous souhaitez remplacer ce modèle par un modèle open-source de HuggingFace, le changement est simple :
API_KEY ="..."
from langchain import HuggingFaceHub
llm = HuggingFaceHub(repo_id = "google/flan-t5-xl", huggingfacehub_api_token = API_KEY)
print(llm("Tell me a joke about data scientist"))
Vous pouvez obtenir l'identifiant du hub Hugging Face à partir de votre compte HF.
Si vous avez plusieurs invites, vous pouvez envoyer une liste d'invites en une seule fois à l'aide de la méthode generate
:
llm_response = llm.generate(['Tell me a joke about data scientist',
'Tell me a joke about recruiter',
'Tell me a joke about psychologist'])
Sortie:
Il s'agit de l'application la plus simple que vous puissiez créer avec LangChain. Il prend une invite, l'envoie à un modèle linguistique de votre choix et renvoie la réponse. Vous pouvez contrôler de nombreux paramètres, tels que la température. Le paramètre de température ajuste le caractère aléatoire de la sortie, et il est fixé à 0,7 par défaut.
Gestion des modèles d'invites pour les LLM dans LangChain
Les LLM ont des API particulières. Bien qu'il puisse sembler intuitif de saisir des invites en langage naturel, il faut en fait ajuster l'invite pour obtenir le résultat souhaité de la part d'un mécanisme d'apprentissage tout au long de la vie. Ce processus d'ajustement est connu sous le nom d'ingénierie rapide. Une fois que vous avez trouvé un bon message, vous pouvez l'utiliser comme modèle à d'autres fins.
Une page PromptTemplate
dans LangChain vous permet d'utiliser le templating pour générer une invite. Cette fonction est utile lorsque vous souhaitez utiliser le même schéma d'invite à plusieurs endroits, mais en modifiant certaines valeurs.
USER_INPUT = 'Paris'
from langchain.llms import OpenAI
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
template = """ I am travelling to {location}. What are the top 3 things I can do while I am there. Be very specific and respond as three bullet points """
prompt = PromptTemplate(
input_variables=["location"],
template=template,
)
final_prompt = prompt.format(location=USER_INPUT )
print(f"LLM Output: {llm(final_prompt)}")
Sortie:
1. Montez à la Tour Eiffel et admirez la vue imprenable sur la ville.
2. Profitez d'une croisière romantique le long de la Seine et admirez l'architecture magnifique le long des berges.
3. Explorez le Louvre et admirez les œuvres d'art de renommée mondiale qui y sont exposées.
Si vous souhaitez maintenant réutiliser cette invite pour une autre ville, il vous suffit de modifier la variable USER_INPUT
. Je l'ai changé de Paris
à Cancun, Mexico
. Voyez comment la sortie a été modifiée :
Sortie:
1. Détendez-vous sur la plage : Profitez des plages de sable blanc et des eaux cristallines de la mer des Caraïbes.
2. Explorez les ruines mayas : Visitez d'anciens sites archéologiques tels que Chichen Itza, Tulum et Coba pour découvrir l'histoire et la culture des Mayas.
3. Faites une visite guidée de la cuisine : Goûtez aux saveurs traditionnelles et découvrez la cuisine locale en faisant une visite guidée de Cancun.
Combinaison de LLM et d'invites dans des flux de travail à plusieurs étapes
Le chaînage dans le contexte LangChain fait référence à l'acte d'intégration des LLM avec d'autres éléments pour construire une application. En voici quelques exemples :
- Combinaison séquentielle de plusieurs LLM en utilisant la sortie du premier LLM comme entrée pour le second LLM (voir cette section)
- Intégrer les LLM dans les modèles d'invite
- Fusionner les LLM avec des données externes, par exemple pour répondre à des questions
- Incorporer les LLM avec la mémoire à long terme, comme l'historique des chats
Voyons un exemple du premier scénario dans lequel nous utiliserons la sortie du premier LLM comme entrée du second LLM.
from langchain.llms import OpenAI
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
# first step in chain
template = "What is the most popular city in {country} for tourists? Just return the name of the city"
first_prompt = PromptTemplate(
input_variables=["country"],
template=template)
chain_one = LLMChain(llm = llm, prompt = first_prompt)
# second step in chain
second_prompt = PromptTemplate(
input_variables=["city"],
template="What are the top three things to do in this: {city} for tourists. Just return the answer as three bullet points.",)
chain_two = LLMChain(llm=llm, prompt=second_prompt)
# Combine the first and the second chain
overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)
final_answer = overall_chain.run("Canada")
Sortie:
Dans cet exemple particulier, nous créons une chaîne avec deux composants. La première composante est chargée d'identifier la ville la plus populaire correspondant à un pays donné, tel qu'indiqué par l'utilisateur. En revanche, le deuxième volet vise à fournir des informations sur les trois principales activités ou attractions proposées aux touristes qui visitent la ville en question.
Si vous souhaitez apprendre des concepts plus avancés de la construction d'applications dans LangChain, consultez ce cours en direct sur la construction d'applications d'IA avec LangChain et GPT sur DataCamp.
Conclusion et formation complémentaire
Il y a peu, nous avons tous été très impressionnés par les capacités impressionnantes du ChatGPT. Cependant, le paysage a rapidement évolué et nous avons désormais accès à de nouveaux outils de développement tels que LangChain, qui nous permettent de créer des prototypes tout aussi remarquables sur nos ordinateurs portables personnels en quelques heures seulement.
LangChain, un framework Python open-source, permet aux particuliers de créer des applications alimentées par des LLM (Language Model Models). Ce cadre offre une interface polyvalente à de nombreux modèles fondamentaux, facilitant la gestion des messages et servant de plaque tournante pour d'autres composants tels que des modèles de messages, des MLD supplémentaires, des données externes et d'autres outils par l'intermédiaire d'agents (au moment de la rédaction du présent document).
Si vous essayez de suivre toutes les avancées en matière d'IA générative et de LLM, consultez notre webinaire Building AI Applications with LangChain and GPT (Construire des applications d'IA avec LangChain et GPT). Vous y apprendrez les bases de l'utilisation de LangChain pour développer des applications d'IA, ainsi que la manière de structurer une application d'IA et d'intégrer des données textuelles pour obtenir des performances élevées. Vous pouvez également consulter notre cheat sheet sur le paysage des outils d'IA générative pour explorer les différentes catégories d'outils d'IA générative, leurs applications et leur influence dans divers secteurs. Enfin, consultez notre liste des meilleurs LLM open-source pour découvrir d'autres outils puissants.
Obtenez une certification de haut niveau en matière d'IA
FAQ
Qu'est-ce que LangChain ?
LangChain est un cadre open-source conçu pour faciliter le développement d'applications basées sur de grands modèles de langage (LLM). Il simplifie la construction d'applications centrées sur le LLM en fournissant des outils, des composants et des interfaces.
L'utilisation de LangChain est-elle gratuite ?
Oui, LangChain est un cadre libre et gratuit, mais l'utilisation de certains LLM peut nécessiter un abonnement.
LangChain peut-il travailler avec différents fournisseurs de modèles ?
Oui, LangChain est compatible avec divers fournisseurs de modèles de langage comme OpenAI, Cohere et Hugging Face, ce qui permet une certaine flexibilité dans le développement des applications.
Comment utiliser LangChain avec les modèles OpenAI ?
Après avoir installé LangChain, vous pouvez l'intégrer aux modèles OpenAI en configurant votre clé API OpenAI et en utilisant les interfaces fournies pour l'interaction avec les modèles.
Comment gérer les modèles d'invite dans LangChain ?
LangChain utilise PromptTemplate
pour gérer les modèles d'invites, ce qui permet de créer des invites dynamiques et réutilisables qui peuvent être adaptées à des cas d'utilisation spécifiques en modifiant les variables d'entrée.
Qu'est-ce que le chaînage dans LangChain ?
Le chaînage fait référence à l'intégration des LLM avec d'autres éléments pour construire une application, comme la combinaison séquentielle de plusieurs LLM, l'intégration des LLM avec des modèles d'invite, ou l'incorporation de données externes.
LangChain peut-il traiter des données documentaires provenant de différentes sources ?
Oui, LangChain prend en charge les chargeurs de documents pour de multiples sources de données, y compris le texte, CSV, les fichiers PDF et les plateformes comme Slack et Figma, à incorporer dans les applications LLM.