🛠️Spring AI的工具调用
一、 📌概述
Spring AI 的工具调用(Tool Calling)功能允许大语言模型在生成回答时触发预定义的外部工具函数,从而实现动态数据获取或业务逻辑操作(如查询数据库、调用 API 等)。 Spring AI 帮我们规范了工具定义、注册等过程,并在发起模型请求之前自动将工具注入到 Prompt 中,而当模型决策在合适的时候去调用某个工具时,Spring AI 完成工具调用动作,最终将工具执行结果与原始问题再一并发送给模型,模型根据新的输入决策下一步动作。这其中涉及与大模型的多次交互过程,一次工具调用就是一次完成的交互过程。 函数调用的核心流程 第一步,定义工具:通过 @Tool 注解声明可供模型调用的工具方法(名称、描述、参数结构),使用 record 定义参数载体。 第二步,注册工具:在 ChatClient 构建时通过 .tools() 方法注册工具实例。 第三步,模型交互:将工具信息与用户输入一起发送给模型,模型决定是否需要调用工具。 第四步,执行工具:解析模型的工具调用请求,执行对应的业务逻辑。 第五步,返回结果:将工具执行结果返回给模型,生成最终回答。
二、⚙️ 工具调用实现
1、📦 pom.xml依赖配置
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-deepseeks</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtool</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
2、📁 application.yml配置文件
server.port=8002
spring.application.name=SpringAiFunctionspring.ai.deepseek.api-keys=sk-a201abfea5394
spring.ai.deepseek.base-url=https://api.deepseek.com
spring.ai.deepseek.chat.options.model=deepseek-chat
spring.ai.deepseek.chat.options.temperature=0.7
3、▶️ 启动类定义