Introduction
LangChain représente un framework open source qui vise à rationaliser le développement d’applications tirant parti des grands modèles de langage (LLM). Son objectif principal est d’établir une interface standardisée pour les chaînes, bénéficiant de nombreuses intégrations avec divers outils et proposant des chaînes de bout en bout pour les applications fréquemment rencontrées. Cette plate-forme aide les développeurs d’IA à créer des applications qui fusionnent des modèles de langage étendus, tels que GPT-4, avec des sources de données externes et des capacités de calcul. Le framework est équipé de packages Python et JavaScript.
Comment fonctionne langChain ?
LangChain fonctionne sur la base d’un pipeline fondamental : l’utilisateur initie une requête au modèle de langage, qui utilise ensuite la représentation vectorielle de la question pour effectuer une recherche de similarité dans la base de données vectorielles. Par conséquent, les informations pertinentes sont extraites de la base de données vectorielles et la réponse est ensuite réinjectée dans le modèle de langage. Ce processus aboutit finalement à la génération d’une réponse ou à l’exécution d’une action par le modèle de langage.
photo gracieuseté : https://python.langchain.com/docs/use_cases/summarization
Fonctionnalités et modules :
LangChain comprend divers modules qui facilitent le bon fonctionnement de plusieurs composants cruciaux pour des applications NLP efficaces :
- Interaction avec le modèle : Également connu sous le nom de modèle d’E/S, ce module permet une interaction transparente avec divers modèles de langage, en gérant les entrées et en extrayant les informations pertinentes de leurs sorties.
- Intégration et récupération de données : Ce module permet la transformation, le stockage et la récupération des données accessibles par les LLM. Il facilite la gestion des données grâce à des bases de données et une gestion efficace des requêtes.
- Chaînes: Lors de la création d’applications sophistiquées, ce module permet de relier plusieurs LLM avec d’autres composants, établissant ainsi des chaînes LLM pour des fonctionnalités améliorées et des opérations complexes.
- Agents: Fonctionnant comme un facilitateur de prise de décision, le module agent coordonne des commandes complexes pour les LLM et les outils auxiliaires, les guidant pour exécuter des tâches spécifiques et répondre efficacement aux demandes des utilisateurs.
- Mémoire: Ce module garantit que les LLM conservent le contexte lors des interactions avec les utilisateurs en intégrant à la fois une mémoire à court et à long terme, améliorant ainsi leur compréhension et leur réactivité.
- Applications: LangChain propose une gamme polyvalente d’applications, tirant parti de la puissance des LLM pour créer des fonctionnalités diverses et percutantes. Il offre une interface conviviale et bénéficie d’une communauté florissante d’utilisateurs et de contributeurs.
Voici quelques-unes des applications clés de LangChain :
- Analyse et synthèse de documents
- Chatbots : Utiliser LangChain pour développer des chatbots interactifs et basés sur le langage naturel pour le support client, la prise de rendez-vous et les demandes de renseignements des clients.
- Analyse des codes : Utilisation de LangChain pour une analyse complète du code, identifiant les bogues potentiels et les vulnérabilités de sécurité.
- Réponse aux questions basées sur la source : Tirer parti des capacités de LangChain pour répondre aux requêtes en recherchant des informations à partir de divers référentiels tels que du texte, du code et des données.
- Augmentation des données : Exploiter LangChain pour générer de nouvelles données similaires aux ensembles de données existants, contribuant ainsi à la formation de modèles d’apprentissage automatique et à l’expansion de la diversité des données.
- Classement du texte : Utilisation de LangChain pour la catégorisation de texte et l’analyse des sentiments en fonction des données de texte saisies.
- Résumé du texte : Utiliser LangChain pour condenser et résumer un texte détaillé en limites de mots ou en phrases spécifiées.
- Traduction automatique: Utiliser les capacités de traduction de LangChain pour convertir des données textuelles dans différentes langues, favorisant ainsi la communication et l’accessibilité multilingues.
Implémentation de la génération augmentée de récupération (RAG) à l’aide de LangChain :
Voyons une petite implémentation de la recherche Retrieval utilisant Lanchain. Avant de commencer, assurez-vous d’installer Python sur votre machine et de disposer d’une clé API ouverte.
Voici une implémentation de la façon d’utiliser un fichier texte et de faire une séance de questions-réponses en l’utilisant à l’aide de RAG en utilisant LangChain avec l’explication du code :
Tout d’abord, installez les modules ou packages suivants :
pip install langchain openai chromadb tiktoken
Deuxièmement, créez un dossier avec les fichiers suivants :
- abc.txt (fichier texte)
- constants.py (fichier python pour stocker la clé API, ici l’API AI ouverte est utilisée)
- DocAnalysis.py (fichier python)
Troisièmement, dans abc.txt, collez toutes les données que vous souhaitez analyser et posez des questions.
Dans le fichier constants.py, collez le code suivant et collez la clé API AI ouverte entre guillemets :
APIKEY = "<paste your openai API key here>"
Dans le fichier DocAnalysis.py collez le code suivant :
from langchain.chains import ConversationalRetrievalChain, RetrievalQA from langchain.document_loaders import TextLoader from langchain.embeddings.openai import OpenAIEmbeddings from langchain.llms import OpenAI from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import Chroma import constants loader = TextLoader("abc.txt") documents = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) texts = text_splitter.split_documents(documents) embeddings = OpenAIEmbeddings(openai_api_key=constants.APIKEY) llm = OpenAI(openai_api_key=constants.APIKEY) docsearch = Chroma.from_documents (texts, embeddings) qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=docsearch.as_retriever()) """ query = "what is this document about?" print('\n\n-->', qa.run(query)) query = "Summarize the document" print('\n\n-->', qa.run(query)) query = "What do we need to become an NLP engineer?" print('\n\n-->', qa.run(query)) """ query = "What are the responsibilities and salaries of an NLP engineer?" print('\n\n-->', qa.run(query))
Explication du code :
Les lignes 1 à 7 importent les différentes fonctions de LangChain.
Les fonctions importées ci-dessus seront utilisées pour charger le texte, l’analyser, diviser le texte et mesurer leur relation, stocker leur relation dans des bases de données vectorielles et récupérer les réponses aux questions posées.
9-12 Ligne Charge les données ou le fichier texte à l’aide de la fonction « TextLoader » et divise le texte en séparateurs (qui est « \n\n » par défaut) avec une taille de bloc de 1 000 et stocke le texte divisé dans le « « textes ».
14-17 Lines permet de mesurer la relation entre les chaînes de texte en créant des intégrations à l’aide de « OpenAIEmbeddings » à l’aide d’une clé API openAI.
La ligne 18 sert à récupérer les intégrations créées à partir de la base de données vectorielles sur les « Textes » du fichier txt à l’aide de la chaîne « RetrievalQA ».
Les lignes 20 à 31 servent à saisir les questions/requêtes, puis à les exécuter.
Certains autres exemples de questions qui peuvent être posées sont commentés dans le code que vous pouvez décommenter et utiliser.
Conclusion:
En conclusion, LangChain se présente comme un framework dynamique et polyvalent, permettant aux développeurs d’exploiter les capacités des grands modèles linguistiques (LLM) pour une myriade d’applications puissantes. Grâce à son interface conviviale et à son solide support communautaire, LangChain facilite l’analyse de documents, le développement de chatbot, l’analyse de code et l’augmentation des données, entre autres tâches. Son intégration transparente avec la classification, le résumé et la traduction automatique de textes renforce encore sa position en tant qu’outil fondamental pour les tâches de PNL. De plus, la gestion par LangChain des intégrations et de leurs relations permet une analyse de données précise et nuancée, améliorant ainsi l’efficacité et la précision de diverses opérations. Avec son riche ensemble de fonctionnalités et de modules, LangChain ouvre la voie à des avancées innovantes et percutantes dans le domaine du traitement du langage naturel.
Source link