package com.ard.agent.tool; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.ai.document.Document; import org.springframework.ai.tool.annotation.Tool; import org.springframework.ai.tool.annotation.ToolParam; import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.stereotype.Component; import java.util.List; import java.util.stream.Collectors; /** * 知识库工具 * * @author lsy * @date 2026/5/11 */ @Component @Slf4j public class KnowledgeTools { @Resource private VectorStore vectorStore; // 你的向量数据库 @Tool(description = """ 从内部知识库中检索相关文档。当你需要查询公司政策、技术文档、产品说明等静态知识时, 应该优先调用此工具。此工具适用于非实时、非动态的数据查询。 """) public String searchKnowledgeBase( @ToolParam(description = "搜索关键词或问题") String query) { log.info("AI调用searchKnowledgeBase工具,参数: query={}", query); // 执行向量检索 List results = vectorStore.similaritySearch( SearchRequest.builder().query(query) .topK(3) .build() ); if (results.isEmpty()) { return "未找到相关知识"; } return results.stream() .map(Document::getText) .collect(Collectors.joining("\n---\n")); } }