diff --git a/pom.xml b/pom.xml index 023b8cd..52a79b4 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,12 @@ spring-ai-alibaba-starter 1.0.0-M6.1 - + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + 1.0.0-M6 + diff --git a/src/main/java/com/huangge1199/aiagent/Service/InvokeService.java b/src/main/java/com/huangge1199/aiagent/Service/InvokeService.java index a6fa4ea..4a6790e 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/InvokeService.java +++ b/src/main/java/com/huangge1199/aiagent/Service/InvokeService.java @@ -17,4 +17,6 @@ public interface InvokeService { JSONObject getMsgByHttp(String question); String getMsgBySpringAi(String question); + + String getMsgBySpringAiOllam(String question); } diff --git a/src/main/java/com/huangge1199/aiagent/Service/impl/InvokeServiceImpl.java b/src/main/java/com/huangge1199/aiagent/Service/impl/InvokeServiceImpl.java index d759586..8929e36 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/impl/InvokeServiceImpl.java +++ b/src/main/java/com/huangge1199/aiagent/Service/impl/InvokeServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel; import com.alibaba.dashscope.aigc.generation.Generation; import com.alibaba.dashscope.aigc.generation.GenerationParam; import com.alibaba.dashscope.common.Message; @@ -15,8 +16,8 @@ import com.alibaba.dashscope.exception.NoApiKeyException; import com.huangge1199.aiagent.Service.InvokeService; import jakarta.annotation.Resource; import org.springframework.ai.chat.messages.AssistantMessage; -import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -33,7 +34,10 @@ public class InvokeServiceImpl implements InvokeService { private String baiLianKey; @Resource - private ChatModel dashscopeChatModel; + private DashScopeChatModel dashscopeChatModel; + + @Resource + private OllamaChatModel ollamaChatModel; @Override public JSONObject callWithMessage(String question) throws NoApiKeyException, InputRequiredException { @@ -106,4 +110,12 @@ public class InvokeServiceImpl implements InvokeService { .getOutput(); return output.getText(); } + + @Override + public String getMsgBySpringAiOllam(String question) { + AssistantMessage output = ollamaChatModel.call(new Prompt(question)) + .getResult() + .getOutput(); + return output.getText(); + } } diff --git a/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java b/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java index 7ebbd96..9e7b99f 100644 --- a/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java +++ b/src/main/java/com/huangge1199/aiagent/controller/invoke/InvokeController.java @@ -62,4 +62,15 @@ public class InvokeController { return R.fail(e.getMessage()); } } + + @PostMapping("/ollama") + @Operation(summary = "spring ai 引入 ollama") + public R ollamaInvoke(@RequestBody String question) { + try { + String result = invokeService.getMsgBySpringAiOllam(question); + return R.ok(result); + } catch (ApiException e) { + return R.fail(e.getMessage()); + } + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index af5a5b7..dc45b7f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,6 +3,15 @@ spring: name: long-ai-agent profiles: active: dev + ai: + dashscope: + chat: + options: + model: qwen-plus + ollama: + base-url: http://192.168.188.2:11435 + chat: + model: gemma3:1b server: port: 8123 servlet: @@ -23,4 +32,9 @@ springdoc: knife4j: enable: true setting: - language: zh_cn \ No newline at end of file + language: zh_cn + + # 日志打印 +logging: + level: + org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor = debug \ No newline at end of file