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-20250728114932-429wg"; // 此为默认路径,您可根据业务所在地域进行配置 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 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 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 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(); } }