From ce711456a59c7be575a0fd58c920a22700993699 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 25 Jul 2025 10:28:27 +0800 Subject: [PATCH] feat(mall): 添加 HSController 类实现大模型查询 --- src/main/java/cc/mrbird/febs/mall/controller/HSController.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 8 ++++ 2 files changed, 112 insertions(+), 0 deletions(-) diff --git a/pom.xml b/pom.xml index af6a5ee..56ecf7c 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,14 @@ </properties> <dependencies> + + <dependency> + <groupId>com.volcengine</groupId> + <artifactId>volcengine-java-sdk-ark-runtime</artifactId> + <version>LATEST</version> + </dependency> + + <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-apache-httpclient</artifactId> diff --git a/src/main/java/cc/mrbird/febs/mall/controller/HSController.java b/src/main/java/cc/mrbird/febs/mall/controller/HSController.java new file mode 100644 index 0000000..486182f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/HSController.java @@ -0,0 +1,104 @@ +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-20250724165858-g5rwk"; + // 此为默认路径,您可根据业务所在地域进行配置 + 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) { + System.out.println("\n----- standard request -----"); + // 2. 构建对话历史(AI提问→用户回答) +// List<ChatMessage> messages = Arrays.asList( +// // System消息:定义AI角色和行为 +// ChatMessage.builder() +// .role(ChatMessageRole.SYSTEM) +// .content("你是同事相处顾问,任务流程:\n1) 先提出一个关于团队协作的问题\n2) 用户回答后,分析回答的不足\n3) 提供具体的改进建议和示例") +// .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(); + } + +} -- Gitblit v1.9.1