Files
langchain4j-ai-java/langchain4j-ai-xiaoai-agent/src/main/java/com/iwe3/langchain4j/config/BaiduMcpConfig.java
2025-12-19 14:30:47 +08:00

63 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.iwe3.langchain4j.config;
import com.iwe3.langchain4j.mcp.BaiduMcpService;
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.stdio.StdioMcpTransport;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.StreamingChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.tool.ToolProvider;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
import java.util.Map;
@Configuration
public class BaiduMcpConfig {
@Resource
private ChatModel chatModelQwen;
@Bean
public BaiduMcpService baiduMcpService(){
/**1.构建McpTransport协议
*
* 1.1 cmd启动 Windows 命令行解释器。
* 1.2 /c告诉 cmd 执行完后面的命令后关闭自身。
* 1.3 npxnpx = npm execute packageNode.js 的一个工具,用于执行 npm 包中的可执行文件。
* 1.4 -y 或 --yes自动确认操作类似于默认接受所有提示
* 1.5 @baidumap/mcp-server-baidu-map要通过 npx 执行的 npm 包名
* 1.6 BAIDU_MAP_API_KEY 是访问百度地图开放平台API的AK
*/
var transport = new StdioMcpTransport.Builder()
.command(List.of("cmd", "/c", "npx", "-y", "@baidumap/mcp-server-baidu-map"))
.environment(Map.of("BAIDU_MAP_API_KEY", System.getenv("BAIDU_MAP_API_KEY")))
.build();
// 2.构建McpClient客户端
var mcpClient = new DefaultMcpClient.Builder()
.transport(transport)
.build();
// 3.创建工具集和原生的FunctionCalling类似
var toolProvider = McpToolProvider.builder()
.mcpClients(mcpClient)
.build();
// 4.通过AiServivces给我们自定义接口McpService构建实现类并将工具集和大模型赋值给AiService
return AiServices.builder(BaiduMcpService.class)
.chatModel(chatModelQwen)
.toolProvider(toolProvider)
.build();
}
}