From 7d65f1ced7514b319ab42b38690fa6d4af06459d Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Tue, 27 May 2025 16:21:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=B7=A5=E5=85=B7=EF=BC=9A?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A4=A9=E6=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiagent/Service/ToolsService.java | 11 ++++++ .../Service/impl/ToolsServiceImpl.java | 31 ++++++++++++++++ .../aiagent/controller/ToolController.java | 36 +++++++++++++++++++ .../aiagent/tools/WeatherTools.java | 18 ++++++++++ src/main/resources/application.yml | 2 +- 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/huangge1199/aiagent/Service/ToolsService.java create mode 100644 src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java create mode 100644 src/main/java/com/huangge1199/aiagent/controller/ToolController.java create mode 100644 src/main/java/com/huangge1199/aiagent/tools/WeatherTools.java diff --git a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java new file mode 100644 index 0000000..3bcd339 --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java @@ -0,0 +1,11 @@ +package com.huangge1199.aiagent.Service; + +/** + * ToolsService + * + * @author huangge1199 + * @since 2025/5/27 15:06:53 + */ +public interface ToolsService { + String getWeather(String question); +} diff --git a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java new file mode 100644 index 0000000..a382335 --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java @@ -0,0 +1,31 @@ +package com.huangge1199.aiagent.Service.impl; + +import com.huangge1199.aiagent.Service.ToolsService; +import com.huangge1199.aiagent.config.MyLoggerAdvisor; +import com.huangge1199.aiagent.tools.WeatherTools; +import jakarta.annotation.Resource; +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.ai.ollama.OllamaChatModel; +import org.springframework.stereotype.Service; + +/** + * ToolsServiceImpl + * + * @author huangge1199 + * @since 2025/5/27 15:07:06 + */ +@Service +public class ToolsServiceImpl implements ToolsService { + + @Resource + private OllamaChatModel ollamaChatModel; + + @Override + public String getWeather(String question) { + return ChatClient.create(ollamaChatModel) + .prompt(question) + .advisors(new MyLoggerAdvisor()) + .tools(new WeatherTools()) + .call().content(); + } +} diff --git a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java new file mode 100644 index 0000000..743d747 --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java @@ -0,0 +1,36 @@ +package com.huangge1199.aiagent.controller; + +import com.huangge1199.aiagent.Service.ToolsService; +import com.huangge1199.aiagent.common.R; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.ai.document.Document; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * ToolController + * + * @author huangge1199 + * @since 2025/5/27 14:59:32 + */ +@RestController +@RequestMapping("/tool") +@Tag(name = "工具调用") +public class ToolController { + + @Resource + private ToolsService toolsService; + + @PostMapping("/getWeather") + @Operation(summary = "获取天气") + public R getWeather(@RequestBody String question) { + String result = toolsService.getWeather(question); + return R.ok(result); + } +} diff --git a/src/main/java/com/huangge1199/aiagent/tools/WeatherTools.java b/src/main/java/com/huangge1199/aiagent/tools/WeatherTools.java new file mode 100644 index 0000000..a20de91 --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/tools/WeatherTools.java @@ -0,0 +1,18 @@ +package com.huangge1199.aiagent.tools; + +import org.springframework.ai.tool.annotation.Tool; +import org.springframework.ai.tool.annotation.ToolParam; + +/** + * WeatherTools + * + * @author huangge1199 + * @since 2025/5/27 15:01:04 + */ +public class WeatherTools { + + @Tool(description = "Get current weather for a location") + public String getWeather(@ToolParam(description = "The city name") String city) { + return "Current weather in " + city +": Sunny, 25°"; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b3640e9..702d8bd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -11,7 +11,7 @@ spring: ollama: base-url: http://192.168.188.2:11435 chat: - model: gemma3:1b + model: llama3.2:3b vectorstore: pgvector: index-type: HNSW