From 642edae0bef3e84a305d65e2b2732695b0b360c6 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 28 May 2025 15:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=B7=A5=E5=85=B7=EF=BC=9A?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++++- .../aiagent/Service/ToolsService.java | 2 ++ .../Service/impl/ToolsServiceImpl.java | 7 +++++ .../aiagent/controller/ToolController.java | 8 ++++++ .../aiagent/tools/WebScrapTool.java | 27 +++++++++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java diff --git a/pom.xml b/pom.xml index 9e28d15..744e1c0 100644 --- a/pom.xml +++ b/pom.xml @@ -120,7 +120,12 @@ spring-ai-pgvector-store 1.0.0-M6 - + + + org.jsoup + jsoup + 1.20.1 + diff --git a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java index 6c1e2ba..ffeab9a 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java +++ b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java @@ -18,4 +18,6 @@ public interface ToolsService { String aiWriteFile(String question); List webSearch(String question); + + List webScrap(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 index 53a99db..d646437 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java +++ b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java @@ -4,6 +4,7 @@ import com.huangge1199.aiagent.Service.ToolsService; import com.huangge1199.aiagent.config.MyLoggerAdvisor; import com.huangge1199.aiagent.tools.FileTool; import com.huangge1199.aiagent.tools.WeatherTool; +import com.huangge1199.aiagent.tools.WebScrapTool; import com.huangge1199.aiagent.tools.WebSearchTool; import jakarta.annotation.Resource; import org.springframework.ai.chat.client.ChatClient; @@ -64,4 +65,10 @@ public class ToolsServiceImpl implements ToolsService { WebSearchTool webSearchTool = new WebSearchTool(searchApiKey); return List.of(webSearchTool.searchWeb(question).split(",")); } + + @Override + public List webScrap(String url) { + WebScrapTool webScrapTool = new WebScrapTool(); + return List.of(webScrapTool.scrapeWebPage(url).split(",")); + } } diff --git a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java index 765b3cc..b85af8b 100644 --- a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java +++ b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java @@ -70,4 +70,12 @@ public class ToolController { List result = toolsService.webSearch(question); return R.ok(result); } + + @PostMapping("/webScrap") + @Operation(summary = "网页抓取") + public R> webScrap(@RequestBody String question) { + CheckUtils.checkEmpty(question, "问题"); + List result = toolsService.webScrap(question); + return R.ok(result); + } } diff --git a/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java b/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java new file mode 100644 index 0000000..b7d35dc --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java @@ -0,0 +1,27 @@ +package com.huangge1199.aiagent.tools; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.springframework.ai.tool.annotation.Tool; +import org.springframework.ai.tool.annotation.ToolParam; + +import java.io.IOException; + +/** + * WebScrapTool + * + * @author huangge1199 + * @since 2025/5/28 15:10:11 + */ +public class WebScrapTool { + + @Tool(description = "Scrape the content of a web page") + public String scrapeWebPage(@ToolParam(description = "URL of the web page to scrape") String url) { + try { + Document doc = Jsoup.connect(url).get(); + return doc.html(); + } catch (IOException e) { + return "Error scraping web page: " + e.getMessage(); + } + } +}