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

AI Endpoints - Créez votre propre chatbot IA à l'aide de LangChain4j et Quarkus

Voir en Markdown

Découvrez comment construire un chatbot en utilisant LangChain4j, Quarkus et OVHcloud 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

Vous cherchez à créer un chatbot piloté par l'IA en Java ? Dans ce tutoriel, vous apprendrez à créer un chatbot à l'aide de LangChain4j, Quarkus et AI Endpoints.

Objectif

Ce tutoriel montre comment :

  • Configurer une application Quarkus à l'aide de LangChain4j
  • Connecter votre chatbot à AI Endpoints
  • Personnaliser les prompts à l'aide d'annotations
  • Exposer votre chatbot sous forme d'API
  • Tester votre chatbot à l'aide d'une requête cURL

Définitions

  • 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 \
                   --extension='quarkus-langchain4j-mistral-ai'

Voici la structure de l'arborescence après l'exécution de la commande précédente :

.
├── .dockerignore
├── .gitignore
├── .mvn
│   └── wrapper
│       ├── .gitignore
│       ├── MavenWrapperDownloader.java
│       └── maven-wrapper.properties
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    
└── main
        
├── docker
        
│   ├── Dockerfile.jvm
        
│   ├── Dockerfile.legacy-jar
        
│   ├── Dockerfile.native
        
│   └── Dockerfile.native-micro
        
├── java
        
└── resources
            
└── application.properties

Après avoir exécuté cette commande, vérifiez que votre fichier pom.xml contient la dépendance suivante :

{/* ... */}
 
<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-mistral-ai</artifactId>
  <version>0.10.4</version>
</dependency>
 
{/* ... */}

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 :

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
 
@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 to make the answer more fun.")
  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 :

import com.ovhcloud.examples.aiendpoints.services.ChatBotService;
import jakarta.inject.Inject;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
 
// Endpoint root 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 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
 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \  
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/  
2024-04-12 08:51:33,515 INFO  [io.quarkus] (Quarkus Main Thread) quarkus-langchain4j 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.9.3) started in 3.163s. Listening on: http://localhost:8080
 
2024-04-12 08:51:33,517 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2024-04-12 08:51:33,518 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [awt, cdi, langchain4j, langchain4j-mistralai, poi, qute, rest, rest-client, rest-client-jackson, smallrye-context-propagation, vertx]
 
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>

Utilisez ensuite cURL pour interagir avec votre API :

$ curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"question": "What is OVHcloud?"}' \
  http://localhost:8080/ovhcloud-ai/ask

Pour l'exemple de prompt précédent, voici le résultat :

Answer: «OVHcloud is a global, integrated cloud hosting platform, offering Infrastructure as a Service (IaaS) and Platform as a Service (PaaS). »
 
This answer describes OVHcloud as a global integrated cloud hosting platform offering IaaS and PaaS with optimal and secure services. Emojis were added to the response to make it more fun and engaging.

Conclusion

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

Aller plus loin

Si vous souhaitez aller plus loin et déployer votre application web dans le cloud, rendant votre interface accessible à tous, 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é ?