2026-06-30 24681c81c09022f584a57006f2534b5f74723414
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package cn.iocoder.yudao.module.ai.framework.ai.core.model.mcp;
 
import cn.hutool.system.SystemUtil;
import cn.iocoder.yudao.module.ai.framework.ai.core.model.doubao.DouBaoChatModel;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
 
import static cn.iocoder.yudao.module.ai.util.AiUtils.validateApiKey;
 
@Disabled
public class DouBaoMcpTests {
 
    private static final String API_KEY = SystemUtil.get("DOUBAO_API_KEY",
            "sk-xxxx"); // 按需改成你的豆包 API Key
 
    private final OpenAiChatModel openAiChatModel = OpenAiChatModel.builder()
            .options(OpenAiChatOptions.builder()
                    .baseUrl(DouBaoChatModel.BASE_URL)
                    .apiKey(API_KEY)
                    .model(DouBaoChatModel.MODEL_DEFAULT) // 模型(doubao)
                    .temperature(0.7)
                    .build())
            .build();
 
    private final DouBaoChatModel chatModel = new DouBaoChatModel(openAiChatModel);
 
    private final MethodToolCallbackProvider provider = MethodToolCallbackProvider.builder()
            .toolObjects(new UserService())
            .build();
 
    private final ChatClient chatClient = ChatClient.builder(chatModel)
            .defaultTools(provider)
            .build();
 
    @Test
    public void testMcpGetUserInfo() {
        validateApiKey(API_KEY);
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("目前有哪些工具可以使用")
                .call()
                .content());
        System.out.println("====================================");
 
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("小新的年龄是多少")
                .call()
                .content());
        System.out.println("====================================");
 
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("获取小新的基本信息")
                .call()
                .content());
        System.out.println("====================================");
 
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("小新是什么职业的")
                .call()
                .content());
        System.out.println("====================================");
 
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("小新的教育背景")
                .call()
                .content());
        System.out.println("====================================");
 
        // 打印结果
        System.out.println(chatClient.prompt()
                .user("小新的兴趣爱好是什么")
                .call()
                .content());
        System.out.println("====================================");
    }
 
 
    static class UserService {
 
        @Tool(name = "getUserAge", description = "获取用户年龄")
        public String getUserAge(String userName) {
            return "《" + userName + "》的年龄为:18";
        }
 
        @Tool(name = "getUserSex", description = "获取用户性别")
        public String getUserSex(String userName) {
            return "《" + userName + "》的性别为:男";
        }
 
        @Tool(name = "getUserBasicInfo", description = "获取用户基本信息,包括姓名、年龄、性别等")
        public String getUserBasicInfo(String userName) {
            return "《" + userName + "》的基本信息:\n姓名:" + userName + "\n年龄:18\n性别:男\n身高:175cm\n体重:65kg";
        }
 
        @Tool(name = "getUserContact", description = "获取用户联系方式,包括电话、邮箱等")
        public String getUserContact(String userName) {
            return "《" + userName + "》的联系方式:\n电话:138****1234\n邮箱:" + userName.toLowerCase() + "@example.com\nQQ:123456789";
        }
 
        @Tool(name = "getUserAddress", description = "获取用户地址信息")
        public String getUserAddress(String userName) {
            return "《" + userName + "》的地址信息:北京市朝阳区科技园区88号";
        }
 
        @Tool(name = "getUserJob", description = "获取用户职业信息")
        public String getUserJob(String userName) {
            return "《" + userName + "》的职业信息:软件工程师,就职于ABC科技有限公司,工作年限5年";
        }
 
        @Tool(name = "getUserHobbies", description = "获取用户兴趣爱好")
        public String getUserHobbies(String userName) {
            return "《" + userName + "》的兴趣爱好:编程、阅读、旅游、摄影、打篮球";
        }
 
        @Tool(name = "getUserEducation", description = "获取用户教育背景")
        public String getUserEducation(String userName) {
            return "《" + userName + "》的教育背景:\n本科:计算机科学与技术专业,北京大学\n硕士:软件工程专业,清华大学";
        }
 
    }
 
}