For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/ai-machine-learning/ai-endpoints-chatbot-langchain.md.

AI Endpoints - Développer un chatbot en Python avec LangChain

Voir en Markdown

Apprenez à développer un chatbot en Python en utilisant LangChain et AI Endpoints

Info

AI Endpoints est couvert par les Conditions particulières OVHcloud Public Cloud (voir l’Annexe 10 – « Conditions spécifiques – AI Endpoints »).

Introduction

LangChain est l'un des frameworks les plus populaires pour créer des applications pilotées par des LLM, comme les assistants virtuels et les chatbots. Il fournit des abstractions structurées et des outils permettant d'orchestrer facilement les prompts, la mémoire, les chaînes et les agents.

Dans ce tutoriel, nous allons utiliser LangChain (édition Python) avec AI Endpoints d'OVHcloud pour créer un chatbot en ligne de commande, en commençant par un simple mode bloquant, puis en activant le streaming pour un retour en temps réel.

Objectif

Ce tutoriel montre comment :

  • Créer un chatbot à l'aide de LangChain et FastAPI
  • Se connecter à AI Endpoints d'OVHcloud pour accéder aux LLM
  • Activer le streaming pour améliorer l'expérience utilisateur
  • Exécuter le chatbot depuis la ligne de commande

Définitions

  • Réponse LLM en streaming : plutôt que d'attendre une réponse complète du modèle, le streaming permet à l'application de commencer à traiter les tokens de sortie au fur et à mesure de leur génération. Cela crée une expérience utilisateur plus fluide et plus rapide, particulièrement utile pour les chatbots.
  • LangChain4j : framework basé sur Java, inspiré de LangChain, conçu pour simplifier l'intégration des LLM (Large Language Models) dans les applications. Il propose des abstractions et des annotations pour créer des agents intelligents et des chatbots. Notez que LangChain4j n'est pas officiellement maintenu par l'équipe de LangChain, malgré la ressemblance des noms.
  • Quarkus : framework Java natif Kubernetes conçu pour optimiser les applications Java pour les containers et le cloud. Dans ce tutoriel, nous utiliserons l'extension quarkus-langchain4j.
  • AI Endpoints : plateforme serverless d'OVHcloud offrant un accès simplifié à une variété de modèles d'IA reconnus mondialement, dont Mistral, LLaMA, et bien d'autres. Cette plateforme est conçue pour être simple, sécurisée et intuitive, avec la confidentialité des données comme priorité absolue.

Prérequis

En pratique

Configurer l'environnement

Afin d'utiliser facilement les API AI Endpoints, créez un fichier .env pour stocker les variables d'environnement :

_OVH_AI_ENDPOINTS_ACCESS_TOKEN=<ai-endpoints-api-token>
_OVH_AI_ENDPOINTS_MODEL_NAME=Mistral-7B-Instruct-v0.3 # (or any other model you want to use)
_OVH_AI_ENDPOINTS_URL=https://oai.endpoints.kepler.ai.cloud.ovh.net/v1

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.

Créez ensuite un fichier requirements.txt avec les bibliothèques suivantes :

fastapi==0.110.0
openai==1.13.3
langchain-mistralai==0.1.7
python-dotenv==1.0.1

Lancez ensuite l'installation de ces dépendances :

pip install -r requirements.txt

Créer un chatbot en mode bloquant

Créez un nouveau fichier nommé chat-bot.py et collez-y le code suivant :

import argparse

from langchain_mistralai import ChatMistralAI
from langchain_core.prompts import ChatPromptTemplate

# Access the environment variables from the .env file
load_dotenv()

## Set the OVHcloud AI Endpoints token to use models
_OVH_AI_ENDPOINTS_ACCESS_TOKEN = os.environ.get('OVH_AI_ENDPOINTS_ACCESS_TOKEN') 
_OVH_AI_ENDPOINTS_MODEL_NAME = os.environ.get('OVH_AI_ENDPOINTS_MODEL_NAME') 
_OVH_AI_ENDPOINTS_URL = os.environ.get('OVH_AI_ENDPOINTS_URL') 

# Function in charge to call the LLM model.
# Question parameter is the user's question.
# The function print the LLM answer.
def chat_completion(question: str):
  # no need to use a token
  model = ChatMistralAI(model=_OVH_AI_ENDPOINTS_MODEL_NAME, 
                        api_key=_OVH_AI_ENDPOINTS_ACCESS_TOKEN,
                        endpoint=_OVH_AI_ENDPOINTS_URL, 
                        max_tokens=1500)

  prompt = ChatPromptTemplate.from_messages([
    ("system", "You are Nestor, a virtual assistant. Answer to the question."),
    ("human", "{question}"),
  ])

  chain = prompt | model

  response = chain.invoke(question)

  print(f"🤖: {response.content}")

# Main entrypoint
def main():
  # User input
  parser = argparse.ArgumentParser()
  parser.add_argument('--question', type=str, default="What is the meaning of life?")
  args = parser.parse_args()
  chat_completion(args.question)

if __name__ == '__main__':
    main()

Vous pouvez tester votre nouvel assistant avec la commande suivante :

python3 chat-bot.py --question "What is OVHcloud?"

Ce qui vous donnera une sortie similaire à :

🤖: OVHcloud is a global cloud computing company that offers a variety of services such as virtual private servers, dedicated servers, 
storage solutions, and other web services. 
It was founded in France and has since expanded to become a leading provider of cloud infrastructure, with data centers located around the 
world. OVHcloud offers a range of options for businesses and individuals, including high-performance computing, big data, and machine learning solutions. 
It is known for its commitment to data security and privacy, 
and its infrastructure is designed to be flexible, scalable, and reliable.

Activer le mode streaming

Maintenant que vous avez un chatbot, pourquoi ne pas ajouter la fonctionnalité de streaming ? Le streaming donne à votre chatbot la capacité d'afficher les informations dès qu'elles sont prêtes, sans attendre que le message entier soit traité côté serveur.

Pour cela, vous pouvez mettre à jour le script Python précédent comme suit :

import argparse
import time

from langchain_mistralai import ChatMistralAI
from langchain_core.prompts import ChatPromptTemplate

# Access the environment variables from the .env file
load_dotenv()

## Set the OVHcloud AI Endpoints token to use models
_OVH_AI_ENDPOINTS_ACCESS_TOKEN = os.environ.get('OVH_AI_ENDPOINTS_ACCESS_TOKEN') 
_OVH_AI_ENDPOINTS_MODEL_NAME = os.environ.get('OVH_AI_ENDPOINTS_MODEL_NAME') 
_OVH_AI_ENDPOINTS_URL = os.environ.get('OVH_AI_ENDPOINTS_URL') 


# Function in charge to call the LLM model.
# Question parameter is the user's question.
# The function print the LLM answer.
def chat_completion(new_message: str):
  # no need to use a token
  model = ChatMistralAI(model=_OVH_AI_ENDPOINTS_MODEL_NAME, 
                        api_key=_OVH_AI_ENDPOINTS_ACCESS_TOKEN,
                        endpoint=_OVH_AI_ENDPOINTS_URL, 
                        max_tokens=1500, 
                        streaming=True)

  prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a Nestor, a virtual assistant. Answer to the question."),
    ("human", "{question}"),
  ])

  chain = prompt | model

  print("🤖: ")
  for r in chain.stream({"question", new_message}):
    print(r.content, end="", flush=True)
    time.sleep(0.150)

# Main entrypoint
def main():
  # User input
  parser = argparse.ArgumentParser()
  parser.add_argument('--question', type=str, default="What is the meaning of life?")
  args = parser.parse_args()
  chat_completion(args.question)

if __name__ == '__main__':
    main()

Exécutez-le avec :

python3 chat-bot-streaming.py --question "What is OVHcloud?"

Vous devriez maintenant voir le chatbot saisir sa réponse en temps réel ! 💬✨

Conclusion

Avec seulement quelques lignes de code Python, vous disposez maintenant d'un chatbot fonctionnel connecté à de puissants LLM hébergés sur AI Endpoints d'OVHcloud. Vous l'avez également enrichi avec le streaming pour une expérience utilisateur en temps réel.

Aller plus loin

Vous pouvez ensuite créer et déployer une application web dans le cloud, rendant votre interface accessible à tous. Pour cela, reportez-vous aux articles et tutoriels suivants :

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.
Cette page vous a-t-elle aidé ?