Administrator
2025-08-27 65f10033448a07535d610ad56a628d7b3f137480
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package cc.mrbird.febs.mall.controller;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionResult;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
 
public class HSController {
    // 请确保您已将 AK SK 分别存储在环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY中
    // 初始化Ark客户端,从环境变量中读取您的AKSK
    // 从环境变量中获取您的Key鉴权。此为默认方式,您可根据需要进行修改
    private static String ak = "AKLTZTQxZjMyZTUxMWJmNDEyNDkzNWExOGQ3ODllNzhhNmQ";
    private static String sk = "TmpFeE1qZ3haREExTW1JeE5HRTBZVGc1WlRRNVlqWXpORGd5TWpsak5HWQ==";
    private static String ep_id = "ep-20250805124033-lhxbf";
    // 此为默认路径,您可根据业务所在地域进行配置
    static String baseUrl = "https://ark.cn-beijing.volces.com/api/v3";
    static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
    static Dispatcher dispatcher = new Dispatcher();
    static ArkService service = ArkService.builder().dispatcher(dispatcher).connectionPool(connectionPool).baseUrl(baseUrl).ak(ak).sk(sk).build();
 
    public static void main(String[] args) {
        // 2. 构建对话历史(AI提问→用户回答)
        List<ChatMessage> messages = Arrays.asList(
                // System消息:定义AI角色和行为
                ChatMessage.builder()
                        .role(ChatMessageRole.SYSTEM)
                        .content("###\n" +
                                "假如你是一位资深的加密货币分析师兼新闻资讯专家,你将根据用户提出的相关问题,来解决回答关于2025年比特币价格和新闻的问题。根据以下规则一步步执行:\n" +
                                "1. 依据专业知识和行业动态对2025年比特币价格进行分析和解答。\n" +
                                "2. 提供可靠来源的关于2025年比特币相关新闻信息。\n" +
                                "\n" +
                                "参考例子:\n" +
                                "无\n" +
                                "\n" +
                                "请回答问题:\n" +
                                "问题:XXX\n" +
                                "输出:\n" +
                                "\n" +
                                "要求:\n" +
                                "1 以清晰、准确、专业的语言回答问题。\n" +
                                "2 提供相关观点和信息要有一定依据。\n" +
                                "###")
                        .build(),
//                ChatMessage.builder()
//                        .role(ChatMessageRole.SYSTEM)
//                        .content("你是人工智能助手")
//                        .build(),
                // Assistant消息:AI的初始问题
                ChatMessage.builder()
                        .role(ChatMessageRole.ASSISTANT)
                        .content("2025年2月18日比特币收盘价为64300.02美元。")
                        .build(),
                // User消息:用户的回答
                ChatMessage.builder()
                        .role(ChatMessageRole.USER)
                        .content("香港《稳定币条例》带来的影响")
                        .build()
        );
//        // 2. 构建对话历史(AI提问→用户回答)
//        List<ChatMessage> messages = Arrays.asList(
//                // System消息:定义AI角色和行为
//                ChatMessage.builder()
//                        .role(ChatMessageRole.SYSTEM)
//                        .content("###\n" +
//                                "假如你是一位长沙地铁站点信息专家,你将根据用户提出的问题,来解决回答关于长沙地铁站点相关问题的任务。根据以下规则一步步执行:\n" +
//                                "1. 确保回答基于长沙地铁站点的真实信息。\n" +
//                                "2. 清晰准确地阐述与问题相关的站点内容。\n" +
//                                "\n" +
//                                "参考例子:\n" +
//                                "无\n" +
//                                "\n" +
//                                "请回答问题:\n" +
//                                "问题:XXX\n" +
//                                "输出:\n" +
//                                "\n" +
//                                "要求:\n" +
//                                "1 以清晰准确的语言回答问题。\n" +
//                                "2 提供的信息需与长沙地铁站点相关。\n" +
//                                "###")
//                        .build(),
////                ChatMessage.builder()
////                        .role(ChatMessageRole.SYSTEM)
////                        .content("你是人工智能助手")
////                        .build(),
//                // Assistant消息:AI的初始问题
//                ChatMessage.builder()
//                        .role(ChatMessageRole.ASSISTANT)
//                        .content("站点周边有安保巡逻,夜间出行请注意安全")
//                        .build(),
//                // User消息:用户的回答
//                ChatMessage.builder()
//                        .role(ChatMessageRole.USER)
//                        .content("万家丽广场站有无障碍设施吗?")
//                        .build()
//        );
//        List<ChatMessage> messages = Arrays.asList(
//                // System消息:定义AI角色和行为
//                ChatMessage.builder()
//                        .role(ChatMessageRole.SYSTEM)
//                        .content("\"content\": \"###\n" +
//                                "假如你是一位专业的彩票数据分析师,你将根据双色球历史开奖记录相关信息,来解决回答关于双色球历史开奖结果相关问题的任务。根据以下规则一步步执行:\n" +
//                                "1. 回答问题时需提供准确的红球号码。\n" +
//                                "2. 回答问题时需提供准确的蓝球号码。\n" +
//                                "3. 回答问题时需提供准确的开奖日期。\n" +
//                                "\n" +
//                                "参考例子:\n" +
//                                "无\n" +
//                                "\n" +
//                                "请回答问题:\n" +
//                                "关于双色球历史开奖结果的问题\n" +
//                                "输出:\n" +
//                                "\n" +
//                                "要求:\n" +
//                                "1 输出包含准确的红球号码、蓝球号码和开奖日期。\n" +
//                                "2 表述清晰准确。\n" +
//                                "###")
//                        .build(),
//                // Assistant消息:AI的初始问题
////                ChatMessage.builder()
////                        .role(ChatMessageRole.ASSISTANT)
////                        .content("组员成为了销冠,组长的你该如何表达自己的称赞,同时给其他组员加油?")
////                        .build(),
//                // User消息:用户的回答
//                ChatMessage.builder()
//                        .role(ChatMessageRole.USER)
//                        .content("第2025001期双色球开奖结果是什么?")
//                        .build()
//        );
        ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
                // 指定您创建的方舟推理接入点 ID,此处已帮您修改为您的推理接入点 ID
                .model(ep_id)
                .messages(messages)
                .build();
        // 4. 发送请求并处理响应
        System.out.println("\n----- standard request -----");
        service.createChatCompletion(chatCompletionRequest).getChoices().forEach(choice -> System.out.println(choice.getMessage().getContent()));
 
        System.out.println("\n----- streaming request -----");
        service.streamChatCompletion(chatCompletionRequest)
                .doOnError(Throwable::printStackTrace)
                .blockingForEach(
                        choice -> {
                            if (choice.getChoices().size() > 0) {
                                System.out.print(choice.getChoices().get(0).getMessage().getContent());
                            }
                        }
                );
 
        service.shutdownExecutor();
    }
 
}