Skip to content
Tutoriels
Streamlit
Construire un chatbot Streamlit avec les modèles LLM: Démarrage rapide

Construire un chatbot Streamlit avec les modèles LLM : Démarrage rapide

Vous êtes-vous déjà demandé comment Siri, Alexa ou votre chatbot de service client fonctionnent ? Eh bien, vous allez bientôt jeter un coup d'œil derrière le rideau. Dans cet article, nous jetons un coup d'œil rapide sur le monde des chatbots, ces petits outils pratiques alimentés par l'IA qui révolutionnent la communication numérique. Ils sont partout, du service client aux expériences interactives, et ils changent notre façon de communiquer et d'accéder à l'information.

Mais voici l'astuce : nous ne parlons pas simplement d'un chatbot ordinaire. Nous nous concentrons sur la construction d'un chatbot en utilisant Streamlit, un cadre d'application open-source qui est un succès parmi les passionnés de machine learning et de data science. Et ce n'est pas tout - nous allons également explorer comment l'intégrer avec LangChain et divers modèles linguistiques, y compris les modèles LLM. Alors, attachez vos ceintures, car nous allons créer un chatbot respectueux de la vie privée qui n'est pas seulement efficace, mais respecte également la vie privée de l'utilisateur.

Qu'est-ce que Streamlit ?

Streamlit est un outil open-source rapide, facile et amusant pour la construction d'applications web. Il est conçu pour aider les ingénieurs en machine learning et les data scientists à construire des applications web interactives autour de leurs projets sans avoir besoin de connaissances en développement web. La simplicité et la rapidité de Streamlit en font un excellent choix pour la construction d'une interface utilisateur de chatbot.

Qu'est-ce qu'un chatbot ?

Un chatbot est une application logicielle conçue pour mener des conversations de chat en ligne via du texte ou de la synthèse vocale, plutôt que de fournir un contact direct avec un agent humain en direct. Conçus pour simuler de manière convaincante la façon dont un humain se comporterait en tant que partenaire de conversation, les systèmes de chatbot nécessitent généralement un réglage et un test continus, et beaucoup en production ne sont toujours pas capables de converser de manière adéquate ou de passer le test de Turing standard de l'industrie.

Construction d'un chatbot avec Streamlit

Configuration de l'environnement

Avant de plonger dans le processus réel de construction de notre chatbot, nous devons d'abord configurer notre environnement de développement avec les bibliothèques et les outils nécessaires. Cela garantit que notre code peut être exécuté avec succès et que notre chatbot peut fonctionner comme prévu. Le fichier requirements.txt contient une liste de bibliothèques et d'outils nécessaires pour ce projet. Voici ce qu'il comprend :

  • streamlit : Cette bibliothèque nous aide à créer des applications web interactives pour des projets de machine learning et de data science.
  • streamlit_chat : Ce composant Streamlit est utilisé pour créer l'interface utilisateur du chatbot.
  • langchain : Il s'agit d'un cadre de développement d'applications alimentées par des modèles linguistiques. Il fournit une interface standard pour les chaînes, de nombreuses intégrations avec d'autres outils et des chaînes de bout en bout pour des applications courantes.
  • sentence_transformers : Cette bibliothèque nous permet d'utiliser des modèles de transformer tels que BERT, RoBERTa, etc. pour générer des représentations sémantiques de texte (c'est-à-dire des embeddings), que nous utiliserons pour notre indexation de documents.
  • openai : Il s'agit de la bibliothèque officielle OpenAI qui nous permet d'utiliser leurs modèles linguistiques, tels que GPT-3.5-turbo, pour générer un texte semblable à celui d'un être humain.
  • unstructured et unstructured[local-inference] : Ils sont utilisés pour le traitement de documents et la gestion de données non structurées.
  • pinecone-client : Il s'agit du client pour Pinecone, un service de base de données vectorielles qui nous permet d'effectuer une recherche de similarité sur les données vectorielles.

Pour installer toutes ces bibliothèques, vous pouvez exécuter la commande suivante dans votre terminal :

pip install -r requirements.txt

Cette commande indique à pip (l'installateur de packages Python) d'installer les bibliothèques mentionnées dans le fichier requirements.txt.

Indexation des documents

La prochaine étape de notre parcours pour construire le chatbot consiste à préparer et indexer les documents que notre chatbot utilisera pour répondre aux requêtes. Pour cela, nous utilisons le script indexing.py.

Chargement des documents à partir d'un répertoire avec LangChain

La première étape du script indexing.py consiste à charger les documents à partir d'un répertoire. Nous utilisons la classe DirectoryLoader fournie par LangChain pour cela. Cette classe accepte un répertoire en entrée et charge tous les documents qui s'y trouvent.

from langchain.document_loaders import DirectoryLoader
 
directory = '/content/data'
 
def load_docs(directory):
 loader = DirectoryLoader(directory)
 documents = loader.load()
 return documents
 
documents = load_docs(directory)
len(documents)

Fractionnement des documents

Après avoir chargé les documents, le script procède à la division de ces documents en des morceaux plus petits. La taille des morceaux et le chevauchement entre ces morceaux peuvent être définis par l'utilisateur. Cela est fait pour garantir que la taille des documents est gérable et qu'aucune information pertinente n'est manquée en raison de la division. La classe RecursiveCharacterTextSplitter de LangChain est utilisée à cette fin.

from langchain.text_splitter import RecursiveCharacterTextSplitter
 
def split_docs(documents,chunk_size=500,chunk_overlap=20):
 text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
 docs = text_splitter.split_documents(documents)
 return docs
 
docs = split_docs(documents)
print(len(docs))

Création d'embeddings

Une fois que les documents sont divisés, nous devons convertir ces morceaux de texte dans un format compréhensible par notre modèle IA. Cela est fait en créant des embeddings du texte à l'aide de la classe SentenceTransformerEmbeddings fournie par LangChain.

from langchain.embeddings import SentenceTransformerEmbeddings
 
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")

Stocker les embeddings dans Pinecone

Après la création des embeddings, ils doivent être stockés dans un endroit accessible et facilement consultable. Pinecone est un service de base de données vectorielles parfait pour cette tâche. Le code d'exemple est le suivant :

from langchain.pinecone import PineconeIndexer
 
def index_embeddings(embeddings, docs):
    indexer = PineconeIndexer(api_key='votre-clé-api-pinecone', index_name='votre-nom-d-index')
    indexer.index(embeddings, docs)
 
index_embeddings(embeddings, docs)

Ce script crée un index dans Pinecone et stocke les embeddings avec le texte correspondant. Maintenant, chaque fois qu'un utilisateur pose une question, le chatbot peut interroger cet index pour trouver le texte le plus similaire et renvoyer la réponse correspondante.

Création de l'interface du chatbot avec Streamlit

Une fois nos documents indexés et prêts à être consultés, nous pouvons nous concentrer sur la création de l'interface du chatbot. Streamlit offre une manière simple et intuitive de créer des applications web interactives, parfaites pour notre interface de chatbot.

Composant de chat Streamlit

Le composant de chat Streamlit est une nouvelle façon de créer des chatbots. Il offre une interface similaire à une application de chat, ce qui donne au chatbot déployé sur Streamlit une interface utilisateur attrayante. Pour utiliser ce composant, vous devez l'installer séparément à l'aide de pip :

pip install streamlit-chat

Après l'installation, vous pouvez l'importer dans votre application Streamlit :

import streamlit as st
from streamlit_chat import chat
 
@st.cache(allow_output_mutation=True)
def get_chat():
    return chat()
 
chat = get_chat()

Ce code crée une nouvelle interface de chat dans votre application Streamlit. Vous pouvez ajouter des messages à ce chat à l'aide de la méthode add_message :

chat.add_message("Bonjour, comment puis-je vous aider aujourd'hui ?", "bot")

Intégration du chatbot avec LangChain

LangChain est un framework pour le développement d'applications basées sur des modèles de langage. Il fournit une interface standard pour les chaînes, de nombreuses intégrations avec d'autres outils, et des chaînes de bout en bout pour des applications courantes. Pour intégrer notre chatbot avec LangChain, nous devons modifier la fonction load_chain dans main.py.

from langchain import LangChain
 
def load_chain():
    chain = LangChain(api_key='votre-clé-api-openai')
    return chain
 
chain = load_chain()

Ce code crée une nouvelle instance de LangChain avec votre clé API OpenAI. Vous pouvez utiliser cette instance pour générer des réponses aux requêtes des utilisateurs.

Créez une application de visualisation de données sans code avec PyGWalker

PyGWalker (opens in a new tab) est un autre outil génial sans code. Vous pouvez facilement utiliser cette bibliothèque Python Open Source pour créer des applications de visualisation de données avec Streamlit.

Démonstration en ligne de PyGWalker + Streamlit (opens in a new tab)

PyGWalker (opens in a new tab) est une bibliothèque Python qui vous permet d'intégrer facilement une interface utilisateur semblable à Tableau dans votre propre application Streamlit sans effort.

Regardez cette vidéo incroyable réalisée par Sven de Coding is Fun (opens in a new tab) qui explique étape par étape comment donner plus de puissance à votre application Streamlit avec cette puissante bibliothèque de visualisation de données Python !


Un grand merci à Sven et sa formidable contribution (opens in a new tab) à la communauté PyGWalker !

Vous pouvez également consulter ces ressources :

Visualize Data in Streamlit with PyGWalker (opens in a new tab)

Fonctionnalités respectueuses de la vie privée

À l'ère du numérique, les atteintes à la confidentialité et les préoccupations liées à la vie privée sont plus présentes que jamais. Il est essentiel de garantir que notre chatbot offre non seulement une expérience utilisateur fluide, mais aussi qu'il respecte la vie privée de l'utilisateur. Comment y parvenir ?

Tout d'abord, nous pouvons nous assurer que notre chatbot ne stocke aucune donnée personnelle de l'utilisateur. Le composant de chat Streamlit est conçu en tenant compte de la confidentialité - il ne stocke par défaut aucune donnée utilisateur. Cela signifie que toute conversation que vous avez avec le chatbot reste entre vous et le bot, sans que les données soient stockées ou utilisées à d'autres fins.

Mais nous pouvons aller plus loin. Nous pouvons utiliser des modèles de langage respectueux de la vie privée pour garantir que notre chatbot ne mémorise pas d'informations sensibles. Ces modèles sont entraînés de manière à les empêcher de conserver des données sensibles. Par exemple, GPT-3.5-turbo d'OpenAI est un modèle de langage conçu pour générer du texte semblable à celui d'un être humain sans retenir d'informations sensibles à partir des entrées qui lui sont fournies. Cela signifie que même si un utilisateur partage involontairement des informations sensibles, le modèle ne les mémorisera pas et ne les utilisera pas lors d'interactions ultérieures.

Conclusion

La création d'un chatbot avec Streamlit et LangChain est un processus simple qui implique la configuration de l'environnement, l'indexation des documents, la création de l'interface du chatbot et l'implémentation de fonctionnalités respectueuses de la vie privée. Grâce à la puissance des modèles de langage de grande envergure et des outils open-source, vous pouvez créer un chatbot efficace, convivial et respectueux de la vie privée de l'utilisateur.

FAQ

  1. Comment créer un chatbot sur Streamlit ? Créer un chatbot sur Streamlit implique plusieurs étapes, notamment la configuration de votre environnement de développement, l'indexation de vos documents, la création de l'interface du chatbot et la garantie de fonctionnalités respectueuses de la vie privée. Cet article offre un guide complet sur la façon de construire un chatbot avec Streamlit.

  2. Quelle est l'utilisation de Streamlit chat ? Streamlit chat est utilisé pour créer une interface conviviale de chatbot dans votre application Streamlit. Il offre une interface similaire à une application de chat, rendant votre chatbot plus interactif et engageant pour les utilisateurs.

  3. Quel est le chatbot IA le plus avancé ? Les chatbots IA les plus avancés utilisent des modèles de langage sophistiqués tels que GPT-3.5-turbo d'OpenAI. Ces chatbots peuvent générer du texte similaire à celui des humains, comprendre le contexte et fournir des réponses pertinentes. Ils sont également conçus en tenant compte de la vie privée, garantissant qu'ils ne conservent pas d'informations sensibles sur les utilisateurs.