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

AI Endpoints - Model Context Protocol (MCP) avec LangChain4j

Voir en Markdown

Apprenez à utiliser le Model Context Protocol (MCP) avec Java, LangChain4j 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 »).

Objectif

OVHcloud AI Endpoints permet aux développeurs d'ajouter facilement des fonctionnalités d'IA à leurs développements au quotidien.

Dans cet article, nous allons explorer comment créer un serveur et un client Model Context Protocol (MCP) à l'aide de Quarkus et LangChain4J pour interagir avec AI Endpoints d'OVHcloud.

Associé à OVHcloud AI Endpoints, qui propose à la fois des modèles LLM et des modèles d'embedding, il devient facile de créer des assistants avancés, prêts pour la production.

Illustration d'un robot humanoïde blanc penché sur un bureau pour regarder un ordinateur portable ouvert

Définition

  • Model Context Protocol : MCP est un protocole qui permet à votre LLM de demander du contexte ou des données supplémentaires à des sources externes pendant le processus de génération. Pour plus d'informations sur MCP, reportez-vous à la documentation officielle.
  • LangChain4j : framework basé sur Java, inspiré de LangChain, conçu pour simplifier l'intégration des LLM (Large Language Models) dans les applications. Notez que LangChain4j n'est pas officiellement maintenu par l'équipe de LangChain, malgré la ressemblance des noms.
  • 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

  • Un projet Public Cloud dans votre compte OVHcloud.
  • Un token d'accès pour AI Endpoints d'OVHcloud. Pour créer un token API, suivez les instructions du guide AI Endpoints - Premiers pas.
  • Cet exemple de code utilise JBang, un outil basé sur Java permettant de créer et d'exécuter des programmes Java sous forme de scripts. Pour plus d'informations sur JBang, reportez-vous à la documentation JBang.

En pratique

Dans ce tutoriel, nous allons voir comment créer facilement, en Java, un serveur MCP à l'aide de Quarkus et un client à l'aide de LangChain4J.

Créer un serveur avec Quarkus

L'objectif de ce serveur MCP est de permettre au LLM de demander des informations sur les projets Public Cloud OVHcloud.

Info

ℹ️ Le code utilisé pour appeler l' se trouve dans le dépôt GitHub et ne sera pas détaillé ici.

Grâce à Quarkus, la seule chose dont vous avez besoin pour créer un serveur MCP est de définir les outils que vous souhaitez exposer au LLM.

// Quarkus code for MCP Server
public class PublicCloudUserTool {

    @RestClient
    OVHcloudMe ovhcloudMe;

    @Tool(description = "Tool to manage the OVHcloud public cloud user.")
    ToolResponse getUserDetails() {
        Long ovhTimestamp = System.currentTimeMillis() / 1000;
        return ToolResponse.success(
                new TextContent(ovhcloudMe.getMe(OVHcloudSignatureHelper.signature("me", ovhTimestamp),
                        Long.toString(ovhTimestamp)).toString()));
    }
}

⚠️ La description est très importante, car elle sera utilisée par le LLM pour choisir le bon outil pour la tâche. ⚠️

Au moment de la rédaction, il existe deux types de serveurs MCP : stdio et Streamable HTTP. Cet article utilise le mode Streamable grâce à Quarkus avec l'extension quarkus-mcp-server-sse.

Exécutez votre serveur avec la commande quarkus dev. Votre serveur MCP sera accessible sur http://localhost:8080.

Utiliser le serveur MCP avec LangChain4J

Vous pouvez maintenant utiliser le serveur MCP avec LangChain4J pour créer un chatbot puissant, capable d'interagir avec votre compte OVHcloud !

///usr/bin/env jbang "$0" "$@" ; exit $?
//JAVA 24+
//PREVIEW
//DEPS dev.langchain4j:langchain4j-mcp:1.0.1-beta6 dev.langchain4j:langchain4j:1.0.1 dev.langchain4j:langchain4j-mistral-ai:1.0.1-beta6 


import dev.langchain4j.mcp.McpToolProvider;
import dev.langchain4j.mcp.client.DefaultMcpClient;
import dev.langchain4j.mcp.client.McpClient;
import dev.langchain4j.mcp.client.transport.McpTransport;
import dev.langchain4j.mcp.client.transport.http.HttpMcpTransport;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.mistralai.MistralAiChatModel;
import dev.langchain4j.service.AiServices;

// Simple chatbot definition with AI Services from LangChain4J
public interface Bot {
    String chat(String prompt);
}

void main() {
    // Mistral model from OVHcloud AI Endpoints
    ChatModel chatModel = MistralAiChatModel.builder()
            .apiKey(System.getenv("OVH_AI_ENDPOINTS_ACCESS_TOKEN"))
            .baseUrl(System.getenv("OVH_AI_ENDPOINTS_MODEL_URL"))
            .modelName(System.getenv("OVH_AI_ENDPOINTS_MODEL_NAME"))
            .logRequests(false)
            .logResponses(false)
            .build();

    // Configure the MCP server to use
    McpTransport transport = new HttpMcpTransport.Builder()
            // https://xxxx/mcp/sse
            .sseUrl(System.getenv("MCP_SERVER_URL"))
            .logRequests(false)
            .logResponses(false)
            .build();

    // Create the MCP client for the given MCP server
    McpClient mcpClient = new DefaultMcpClient.Builder()
            .transport(transport)
            .build();

    // Configure the tools list for the LLM
    McpToolProvider toolProvider = McpToolProvider.builder()
            .mcpClients(mcpClient)
            .build();

    // Create the chatbot with the given LLM and tools list
    Bot bot = AiServices.builder(Bot.class)
            .chatModel(chatModel)
            .toolProvider(toolProvider)
            .build();

    // Play with the chatbot 🤖
    String response = bot.chat("Can I have some details about my OVHcloud account?");
    System.out.println("RESPONSE: " + response);

}

Si vous exécutez le code, vous pouvez voir votre serveur et votre client MCP en action :

$ jbang SimpleMCPClient.java

DEBUG -- Connected to SSE channel at http://127.0.0.1:8080/mcp/sse
DEBUG -- Received the server's POST URL: http://127.0.0.1:8080/mcp/messages/ZDdkZTEyYWMtNzczMC00NDVkLWFhMjktZWI1MGI0YjVjNzFh
DEBUG -- MCP server capabilities: 
{"capabilities":
  {"resources":
    {"listChanged":true},
    "completions":{},
    "logging":{},
    "tools":
      {"listChanged":true},
      "prompts":
        {"listChanged":true}
  },
  "serverInfo":
    {"version":"1.0.0-SNAPSHOT",
    "name":"ovh-mcp"
    },
  "protocolVersion":"2024-11-05"
}

RESPONSE:  Here are the details for your OVHcloud account:
- First name: Stéphane
- Last name: Philippart
- City: XXX
- Country: FR
- Language: fr_FR

You can refer to these details when interacting with the OVHcloud platform or support.

Conclusion

Dans cet article, nous avons vu comment créer un serveur et un client Model Context Protocol (MCP) à l'aide de Quarkus et LangChain4J pour interagir avec AI Endpoints d'OVHcloud.

Aller plus loin

Vous trouverez l'exemple de code complet dans le dépôt GitHub.

Parcourez la documentation AI Endpoints complète pour mieux comprendre les concepts principaux et démarrer.

Pour découvrir comment créer des applications complètes et puissantes à l'aide d'AI Endpoints, explorez nos guides AI Endpoints dédiés.

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é ?