From 5f993c453a73d773389630c33520fa28f3f9c8e7 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 14 May 2025 13:21:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9ASDK=E6=8E=A5?= =?UTF-8?q?=E5=85=A5ai=E7=9A=84demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + pom.xml | 12 +++-- .../aiagent/controller/HealthController.java | 4 ++ .../controller/invoke/InvokeController.java | 41 ++++++++++++++++ .../aiagent/demo/invoke/SdkAiInvoke.java | 49 +++++++++++++++++++ src/main/resources/application.yml | 2 +- 6 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java create mode 100644 src/main/java/com/huangge1199/aiagent/demo/invoke/SdkAiInvoke.java diff --git a/.gitignore b/.gitignore index 549e00a..dcfe917 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ build/ ### VS Code ### .vscode/ +/src/main/resources/application-dev.yml diff --git a/pom.xml b/pom.xml index 77f5e16..f208525 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ org.projectlombok lombok true - 1.18.36 + 1.18.38 org.springframework.boot @@ -52,7 +52,7 @@ hutool-all 5.8.37 - + com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter @@ -75,7 +75,12 @@ com.baomidou mybatis-plus-jsqlparser - + + + com.alibaba + dashscope-sdk-java + 2.20.0 + @@ -100,6 +105,7 @@ org.projectlombok lombok + 1.18.38 diff --git a/src/main/java/com/huangge1199/aiagent/controller/HealthController.java b/src/main/java/com/huangge1199/aiagent/controller/HealthController.java index 25cdf88..d89d811 100644 --- a/src/main/java/com/huangge1199/aiagent/controller/HealthController.java +++ b/src/main/java/com/huangge1199/aiagent/controller/HealthController.java @@ -1,5 +1,7 @@ package com.huangge1199.aiagent.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -12,9 +14,11 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping("/health") +@Tag(name = "程序健康检测") public class HealthController { @GetMapping + @Operation(summary = "简单返回") public String healthCheck() { return "OK"; } diff --git a/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java b/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java new file mode 100644 index 0000000..67e87fa --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java @@ -0,0 +1,41 @@ +package com.huangge1199.aiagent.controller.invoke; + +import com.alibaba.dashscope.aigc.generation.GenerationResult; +import com.alibaba.dashscope.exception.ApiException; +import com.alibaba.dashscope.exception.InputRequiredException; +import com.alibaba.dashscope.exception.NoApiKeyException; +import com.alibaba.dashscope.utils.JsonUtils; +import com.huangge1199.aiagent.common.R; +import com.huangge1199.aiagent.demo.invoke.SdkAiInvoke; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * InvokeController + * + * @author huangge1199 + * @since 2025/5/14 12:56:17 + */ +@RestController +@RequestMapping("/mbgk/data") +@Tag(name = "AI大模型接入") +public class InvokeController { + + @Resource + private SdkAiInvoke sdkAiInvoke; + + @PostMapping("/sdk") + @Operation(summary = "sdk接入") + public R sdkAiInvoke() { + try { + GenerationResult result = sdkAiInvoke.callWithMessage(); + return R.ok(JsonUtils.toJson(result)); + } catch (ApiException | NoApiKeyException | InputRequiredException e) { + return R.fail(e.getMessage()); + } + } +} diff --git a/src/main/java/com/huangge1199/aiagent/demo/invoke/SdkAiInvoke.java b/src/main/java/com/huangge1199/aiagent/demo/invoke/SdkAiInvoke.java new file mode 100644 index 0000000..f618d79 --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/demo/invoke/SdkAiInvoke.java @@ -0,0 +1,49 @@ +package com.huangge1199.aiagent.demo.invoke; + +import java.util.Arrays; +import java.lang.System; +import com.alibaba.dashscope.aigc.generation.Generation; +import com.alibaba.dashscope.aigc.generation.GenerationParam; +import com.alibaba.dashscope.aigc.generation.GenerationResult; +import com.alibaba.dashscope.common.Message; +import com.alibaba.dashscope.common.Role; +import com.alibaba.dashscope.exception.ApiException; +import com.alibaba.dashscope.exception.InputRequiredException; +import com.alibaba.dashscope.exception.NoApiKeyException; +import com.alibaba.dashscope.utils.JsonUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * SdkAiInvoke + * + * @author huangge1199 + * @since 2025/5/14 12:27:47 + */ +@Component +public class SdkAiInvoke { + + @Value("${bailian.API-KEY}") + private String baiLianKey; + + public GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException { + Generation gen = new Generation(); + Message systemMsg = Message.builder() + .role(Role.SYSTEM.getValue()) + .content("You are a helpful assistant.") + .build(); + Message userMsg = Message.builder() + .role(Role.USER.getValue()) + .content("你是谁?") + .build(); + GenerationParam param = GenerationParam.builder() + // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") + .apiKey(baiLianKey) + // 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models + .model("qwen-plus") + .messages(Arrays.asList(systemMsg, userMsg)) + .resultFormat(GenerationParam.ResultFormat.MESSAGE) + .build(); + return gen.call(param); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0df8a44..af5a5b7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,7 @@ spring: application: name: long-ai-agent profiles: - active: local + active: dev server: port: 8123 servlet: