Maison > développement back-end > Tutoriel Python > Créez votre propre chatbot AI RAG : un guide Python avec LangChain

Créez votre propre chatbot AI RAG : un guide Python avec LangChain

Patricia Arquette
Libérer: 2024-10-20 14:15:30
original
454 Les gens l'ont consulté

Qui ne voudrait pas de réponses instantanées à partir de ses documents ? C'est exactement ce que font les chatbots RAG : combiner la récupération avec la génération d'IA pour des réponses rapides et précises !

Dans ce guide, je vais vous montrer comment créer un chatbot en utilisant la Retrieval-Augmented Generation (RAG) avec LangChain et Streamlit. Ce chatbot extraira les informations pertinentes d'une base de connaissances et utilisera un modèle de langage pour générer des réponses.

Je vous guiderai à travers chaque étape, en vous proposant plusieurs options de génération de réponses, que vous utilisiez OpenAI, Gemini ou Fireworks, garantissant ainsi une flexibilité et solution rentable.

Qu'est-ce que la génération augmentée par récupération (RAG) ?

RAG est une méthode qui combine la récupération et la génération pour fournir des réponses de chatbot plus précises et plus contextuelles. Le processus de récupération extrait les documents pertinents d'une base de connaissances, tandis que le processus de génération utilise un modèle linguistique pour créer une réponse cohérente basée sur le contenu récupéré. Cela garantit que votre chatbot peut répondre aux questions en utilisant les données les plus récentes, même si le modèle de langage lui-même n'a pas été spécifiquement formé sur ces informations.

Imaginez que vous ayez un assistant personnel qui ne connaît pas toujours la réponse à vos questions. Ainsi, lorsque vous posez une question, ils parcourent des livres et trouvent des informations pertinentes (récupération), puis ils résument ces informations et vous les racontent dans leurs propres mots (génération). C’est essentiellement ainsi que fonctionne RAG, combinant le meilleur des deux mondes.

Dans un organigramme, le processus RAG ressemblera un peu à ceci :

Create Your Own AI RAG Chatbot: A Python Guide with LangChain

Maintenant, commençons et procurez-vous notre propre chatbot !


Configuration de l'environnement du projet

Nous utiliserons principalement Python dans ce TUTO, si vous êtes responsable JS vous pouvez suivre les explications et parcourir la documentation de langchain js.

Tout d'abord, nous devons configurer notre environnement de projet. Cela inclut la création d'un répertoire de projet, l'installation de dépendances et la configuration de clés API pour différents modèles de langage.

1. Créez un dossier de projet et un environnement virtuel

Commencez par créer un dossier de projet et un environnement virtuel :

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate
Copier après la connexion
Copier après la connexion
Copier après la connexion

2. Installer les dépendances

Ensuite, créez un fichier exigences.txt pour lister toutes les dépendances nécessaires :

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2
Copier après la connexion
Copier après la connexion
Copier après la connexion

Maintenant, installez ces dépendances :

pip install -r requirements.txt
Copier après la connexion
Copier après la connexion
Copier après la connexion

3. Configuration des clés API

Nous utiliserons OpenAI, Gemini ou Fireworks pour la génération de réponses du chatbot. Vous pouvez choisir n’importe lequel d’entre eux en fonction de vos préférences.

Ne vous inquiétez pas si vous expérimentez, Fireworks fournit gratuitement 1 $ de clés API, et le modèle gemini-1.5-flash est également gratuit dans une certaine mesure !

Configurez un fichier .env pour stocker les clés API de votre modèle préféré :

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate
Copier après la connexion
Copier après la connexion
Copier après la connexion

Assurez-vous de vous inscrire à ces services et d'obtenir vos clés API. Gemini et Fireworks proposent des niveaux gratuits, tandis que OpenAI facture en fonction de l'utilisation.


Traitement et fragmentation des documents

Pour donner du contexte au chatbot, nous devrons traiter les documents et les diviser en morceaux gérables. Ceci est important car les textes volumineux doivent être décomposés pour l'intégration et l'indexation.

1. Créez document_processor.py

Créez un nouveau script Python appelé document_processor.py pour gérer le traitement des documents :

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ce script charge un fichier texte et le divise en morceaux plus petits d'environ 1 000 caractères avec un léger chevauchement pour garantir qu'aucun contexte n'est perdu entre les morceaux. Une fois traités, les documents sont prêts à être intégrés et indexés.


Création d'intégrations et d'indexation

Maintenant que nos documents sont fragmentés, l'étape suivante consiste à les convertir en intégrations (représentations numériques du texte) et à les indexer pour une récupération rapide. (car les machines comprennent plus facilement les chiffres que les mots)

1. Créez embedding_indexer.py

Créez un autre script appelé embedding_indexer.py :

pip install -r requirements.txt
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans ce script, les intégrations sont créées à l'aide d'un modèle Hugging Face (all-MiniLM-L6-v2). Nous stockons ensuite ces intégrations dans un FAISS vectorstore, ce qui nous permet de récupérer rapidement des morceaux de texte similaires en fonction d'une requête.


Implémentation de la récupération et de la génération de réponses

Voici la partie passionnante : combiner la récupération et la génération de langage ! Vous allez maintenant créer une chaîne RAG qui récupère les morceaux pertinents du vectorstore et génère une réponse à l'aide d'un modèle de langage. (vectorstore est une base de données dans laquelle nous stockons nos données converties en nombres sous forme de vecteurs)

1. Créez rag_chain.py

Créons le fichier rag_chain.py :

# Uncomment your API key
# OPENAI_API_KEY=your_openai_api_key_here
# GEMINI_API_KEY=your_gemini_api_key_here
# FIREWORKS_API_KEY=your_fireworks_api_key_here
Copier après la connexion

Ici, nous vous donnons le choix entre OpenAI, Gemini ou Fireworks en fonction de la clé API que vous fournissez. La chaîne RAG récupérera les 3 documents les plus pertinents et utilisera le modèle de langage pour générer une réponse.

Vous pouvez basculer entre les modèles en fonction de votre budget ou de vos préférences d'utilisation : Gemini et Fireworks sont gratuits, tandis que OpenAI facture en fonction de l'utilisation.


Construire l'interface du chatbot

Maintenant, nous allons créer une interface de chatbot simple pour prendre en compte les entrées des utilisateurs et générer des réponses à l'aide de notre chaîne RAG.

1. Créez chatbot.py

Créez un nouveau fichier appelé chatbot.py :

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ce script crée une interface de chatbot en ligne de commande qui écoute en permanence les entrées de l'utilisateur, les traite via la chaîne RAG et renvoie la réponse générée.


Création de l'interface utilisateur Streamlit

Il est temps de rendre votre chatbot encore plus convivial en créant une interface Web à l'aide de Streamlit. Cela permettra aux utilisateurs d'interagir avec votre chatbot via un navigateur.

1. Créez app.py

Créer app.py :

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2
Copier après la connexion
Copier après la connexion
Copier après la connexion

2. Exécutez l'application Streamlit

Pour exécuter votre application Streamlit, utilisez simplement :

pip install -r requirements.txt
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cela lancera une interface Web où vous pourrez télécharger un fichier texte, poser des questions et recevoir des réponses du chatbot.


Optimisation des performances

Pour de meilleures performances, vous pouvez expérimenter la taille des morceaux et le chevauchement lors de la division du texte. Les morceaux plus gros fournissent plus de contexte, mais les morceaux plus petits peuvent accélérer la récupération. Vous pouvez également utiliser la mise en cache Streamlit pour éviter de répéter des opérations coûteuses comme la génération d'intégrations.

Si vous souhaitez optimiser les coûts, vous pouvez basculer entre OpenAI, Gemini ou Fireworks en fonction de la complexité de la requête : utilisez OpenAI pour les questions complexes et Gemini ou Fireworks pour les plus simples afin de réduire les coûts.


Conclusion

Félicitations ! Vous avez créé avec succès votre propre chatbot basé sur RAG. Désormais, les possibilités sont infinies :

  • Créez votre propre compagnon d'étude personnalisé.
  • Plus besoin de parcourir de longues documentations : il suffit de "RAG it out" pour des réponses rapides et précises !

Le voyage commence ici, et le potentiel est illimité !


Vous pouvez suivre mon travail sur GitHub. N'hésitez pas à me contacter : mes DM sont toujours ouverts sur X et LinkedIn.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal