AI Endpoints - Activer la mémoire de conversation dans votre chatbot avec LangChain
Intégrez la mémoire de conversation à votre chatbot en utilisant AI Endpoints et LangChain
AI Endpoints est couvert par les Conditions particulières OVHcloud Public Cloud (voir l’Annexe 10 – « Conditions spécifiques – AI Endpoints »).
Introduction
Vous souhaitez créer un chatbot capable de tenir des conversations plus naturelles et cohérentes avec vos utilisateurs ?
Dans ce tutoriel, nous allons découvrir comment mettre en œuvre la mémoire conversationnelle à l’aide de LangChain et du modèle Mistral 7B grâce à OVHcloud AI Endpoints. Cela permettra à votre chatbot de se souvenir des interactions précédentes et d’utiliser ce contexte pour générer des réponses plus précises et pertinentes.
Nous présenterons les différents types de mémoire disponibles dans LangChain. Nous comparerons ensuite le comportement du chatbot avec et sans mémoire.
Définitions
Avant de plonger dans le code, prenons le temps de comprendre les différents types de mémoire disponibles dans LangChain :
Mémoire conversationnelle
La mémoire conversationnelle des LLM (Language Learning Models) désigne la capacité de ces modèles à se souvenir des informations issues des interactions précédentes au sein d’une même conversation, et à les réutiliser.
Elle fonctionne d’une manière similaire à la façon dont les humains utilisent leur mémoire à court terme dans les conversations du quotidien.
Cette fonctionnalité est essentielle pour maintenir le contexte et la cohérence tout au long d’un dialogue. Elle permet au modèle de se rappeler des détails, des faits ou des questions mentionnés plus tôt dans la conversation (historique de la conversation), et d’utiliser efficacement ces informations pour générer des réponses plus pertinentes correspondant aux nouvelles entrées de l’utilisateur.
La mémoire conversationnelle peut être mise en œuvre grâce à diverses techniques et architectures, notamment avec LangChain.
Types de mémoire dans LangChain
LangChain propose plusieurs modules de mémoire pouvant être utilisés au sein d’une ConversationChain. Chacun présente des compromis différents en matière de longueur de mémoire, d’utilisation de tokens et de style de résumé.
- ConversationBufferMemory : stocke la liste complète des messages de la conversation. Ensuite, toutes les interactions entre l’humain et l’IA sont transmises au paramètre
history. - ConversationSummaryMemory : résout un problème qui survient avec ConversationBufferMemory : la consommation rapide d’un grand nombre de tokens, dépassant souvent la limite de la fenêtre de contexte des LLM les plus avancés. Ce second composant permet de limiter l’utilisation abusive des tokens tout en exploitant la mémoire. Il résume l’historique de la conversation avant de l’envoyer au paramètre dédié (
history). - ConversationBufferWindowMemory : introduit une fenêtre dans la mémoire tampon, ne conservant en mémoire que les K interactions les plus récentes.
- ConversationSummaryBufferMemory : un mélange de ConversationSummaryMemory et de ConversationBufferWindowMemory. Il résume les interactions les plus anciennes tout en conservant les tokens les plus récents de la conversation entre l’humain et l’IA.
Prérequis
- Un projet Public Cloud dans votre compte OVHcloud.
- Un token d’accès pour OVHcloud AI Endpoints. Pour créer un token API, suivez les instructions du guide AI Endpoints - Premiers pas.
En pratique
Configurer l’environnement
Afin d’utiliser facilement les API AI Endpoints, créez un fichier .env pour stocker les variables d’environnement :
Veillez à remplacer la valeur du token (OVH_AI_ENDPOINTS_ACCESS_TOKEN) par la vôtre. Si vous n’en avez pas encore, suivez les instructions du guide AI Endpoints - Premiers pas.
Ensuite, créez un fichier requirements.txt avec les librairies nécessaires :
Puis, lancez l’installation de ces dépendances :
Notez que Python 3.11 est utilisé dans ce tutoriel.
Importer les librairies et variables nécessaires
Une fois ceci fait, vous pouvez créer un notebook ou un fichier Python (par exemple, chatbot-memory-langchain.ipynb), dans lequel vous importerez d’abord vos librairies comme suit :
Après ces lignes, chargez et accédez aux variables d’environnement de votre fichier .env :
💡 Vous êtes maintenant prêt à tester votre LLM sans mémoire conversationnelle !
Tester Mistral 7B sans mémoire conversationnelle
Testez le modèle de manière simple et observez ce qui se passe avec le contexte :
Vous devriez obtenir le résultat suivant :
Notez ici que le modèle ne stocke pas la conversation en mémoire, puisqu’il ne se souvient plus du prénom envoyé dans le premier prompt.
Ajouter une fenêtre de mémoire à votre LLM
Dans cette étape, nous ajoutons une fenêtre de mémoire de conversation grâce au composant suivant afin de résoudre le problème de mémoire, en utilisant ConversationBufferWindowMemory de LangChain :
Le paramètre k définit le nombre d’interactions stockées.
Notez que si nous définissons k=1, cela signifie que la fenêtre se souviendra uniquement de la toute dernière interaction entre l’humain et l’IA. C’est-à-dire la dernière entrée humaine et la dernière réponse de l’IA.
Ensuite, nous devrons créer la chaîne de conversation :
ce qui donne le code suivant :
En exécutant le code précédent, vous devriez obtenir ce type de résultat :
Comme vous pouvez le constater, grâce à ConversationBufferWindowMemory, votre modèle garde une trace de la conversation et retrouve les informations échangées précédemment.
Note : ici, la fenêtre de mémoire est de k=10, n’hésitez pas à personnaliser la valeur de k selon vos besoins.
Conclusion
Bravo 🎉 ! Vous pouvez désormais bénéficier de la mémoire générée par l’historique de vos interactions avec le LLM. 🤖 Cela vous permettra de fluidifier les échanges avec le chatbot et d’obtenir des réponses plus pertinentes !
Vous avez également constaté à quel point il est facile d’utiliser AI Endpoints pour créer des solutions clé en main innovantes.
➡️ Accédez au code complet ici.
Aller plus loin
Si vous souhaitez en savoir plus, consultez l’article suivant sur la mémoire d'un chatbot avec LangChain4j.
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Votre avis nous intéresse !
N’hésitez pas à nous faire part de vos questions, retours et suggestions concernant AI Endpoints et ses fonctionnalités :
- Dans le canal #ai-endpoints du serveur Discord OVHcloud, où vous pouvez échanger avec la communauté et les équipes OVHcloud.