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-streaming-chatbot-langchain4j-quarkus.md.

AI Endpoints - Créer un chatbot de streaming avec LangChain4j et Quarkus

Voir en Markdown

Découvrez comment créer un chatbot basé sur Java qui diffuse les réponses de AI Endpoints pour offrir une expérience de chat en temps réel

Info

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

Introduction

Après avoir exploré comment utiliser AI Endpoints avec LangChain4j, il est temps de passer à l'étape supérieure et de créer un chatbot prenant en charge les réponses en streaming en temps réel.

Dans ce tutoriel, vous apprendrez à utiliser LangChain4j avec Quarkus pour créer un chatbot qui diffuse en streaming les réponses générées par un LLM à l'aide de AI Endpoints.

Objectif

Ce tutoriel montre comment :

  • Configurer un projet Quarkus avec quarkus-langchain4j
  • Utiliser AI Endpoints d'OVHcloud pour accéder aux modèles Mistral AI
  • Diffuser les réponses du LLM en streaming via une API REST réactive

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

Créer un projet Quarkus

Générez votre projet Quarkus à l'aide de la CLI avec l'extension LangChain4j Mistral AI :

$ quarkus create app com.ovhcloud.examples.aiendpoints:quarkus-langchain4j-streaming \
    --extension='quarkus-langchain4j-mistral-ai,rest'

Création du service IA

Codons notre service pour créer un chatbot, à l'aide d'une annotation :

import io.quarkiverse.langchain4j.RegisterAiService;
 
@RegisterAiService
public interface ChatBotService {
   
}

Ajoutez maintenant les prompts système et utilisateur à votre service :

package com.ovhcloud.examples.aiendpoints.services;

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
import io.smallrye.mutiny.Multi;

@RegisterAiService
public interface ChatBotService {
  // Scope / context passed to the LLM
  @SystemMessage("You are a virtual, an AI assistant.")
  // Prompt (with detailed instructions and variable section) passed to the LLM
  @UserMessage("Answer as best possible to the following question: {question}. The answer must be in a style of a virtual assistant and add some emojis.")
  Multi<String> askAQuestion(String question);
}

💡 Pour plus de détails sur @SystemMessage et @UserMessage, reportez-vous à la documentation de l'extension Quarkus LangChain4j.

Configurer l'accès à AI Endpoints

Adaptez et ajoutez la configuration suivante à votre fichier application.properties, afin d'activer l'accès à AI Endpoints :

### Global configurations
# Base URL for Mistral AI endpoints
quarkus.langchain4j.mistralai.base-url=${OVH_AI_ENDPOINTS_URL}
# Activate or not the log during the request
quarkus.langchain4j.mistralai.log-requests=true
# Activate or not the log during the response
quarkus.langchain4j.mistralai.log-responses=true
# Delay before raising a timeout exception                   
quarkus.langchain4j.mistralai.timeout=60s   
# No key is needed
quarkus.langchain4j.mistralai.api-key=${OVH_AI_ENDPOINTS_ACCESS_TOKEN}
 
# Activate or not the Mistral AI embedding model                     
quarkus.langchain4j.mistralai.embedding-model.enabled=false
 
### Chat model configurations
# Activate or not the Mistral AI chat model
quarkus.langchain4j.mistralai.chat-model.enabled=true             
# Chat model name used
quarkus.langchain4j.mistralai.chat-model.model-name=${OVH_AI_ENDPOINTS_MODEL_NAME}
# Number of tokens to use
quarkus.langchain4j.mistralai.chat-model.max-tokens=1024

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.

Vous devrez également remplacer deux autres variables d'environnement, liées au modèle que vous souhaitez utiliser. Vous trouverez ces valeurs spécifiques au modèle dans l'onglet documentation de chaque modèle. Par exemple, si vous souhaitez ajouter le modèle Mistral-7B-Instruct-v0.3, les variables d'environnement attendues seront :

Créer une API REST pour interagir avec le chatbot

Commencez par installer l'extension Quarkus REST :

$ quarkus ext add io.quarkus:quarkus-rest
 
Looking for the newly published extensions in registry.quarkus.io
[SUCCESS] ✅  Extension io.quarkus:quarkus-rest has been installed

Créez ensuite un endpoint REST :

package com.ovhcloud.examples.aiendpoints;

import com.ovhcloud.examples.aiendpoints.services.ChatBotService;
import io.smallrye.mutiny.Multi;
import jakarta.inject.Inject;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;

@Path("/ovhcloud-ai")
public class AIEndpointsResource {
    // AI Service injection to use it later
    @Inject
    ChatBotService chatBotService;

    // ask resource exposition with POST method
    @Path("ask")
    @POST
    public Multi<String> ask(String question) {
        // Call the Mistral AI chat model
        return chatBotService.askAQuestion(question);
    }
}

Exécuter et tester

Il est maintenant temps de tester l'API du chatbot IA !

Pour démarrer votre application et exécuter votre API, utilisez simplement le mode dev de Quarkus, en exécutant quarkus dev :

$ quarkus dev

Utilisez ensuite cURL pour interagir avec votre API :

curl http://localhost:8080/ovhcloud-ai/ask\?question\=%22Can%20you%20tell%20me%20what%20OVHcloud%20is%20and%20what%20kind%20of%20products%20it%20offers\?%22

Vous verrez la réponse être diffusée directement depuis le modèle IA, token par token ! 🧠⚡

Conclusion

En quelques étapes seulement, vous avez créé votre propre chatbot IA en streaming grâce à LangChain4j, Quarkus et AI Endpoints d'OVHcloud.

Cette approche permet des interactions utilisateur en temps réel, parfaites pour une intégration dans des interfaces de chat ou des outils de support client.

Aller plus loin

N'hésitez pas à aller plus loin en créant un frontend web pour une expérience encore plus interactive ! 😄💬 Vous pouvez ensuite déployer cette 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é ?