spring-ai 第十tool调用
官网
工具调用(也称为函数调用)是AI应用中的常见模式,允许模型与一组API或工具互动,增强其功能
spring-ai网址【https://docs.spring.io/spring-ai/reference/api/tools.html】
工具调用
- 信息检索
从外部来源检索信息(弥补本地模型的不足,通过外网获取信息进行推理组织),eg: 检索最新的新闻文章
- 采取行动
执行一个动作,例如调用一个API或执行一个命令,eg:填写网页上的表单
两种集成方式
| 特性 | 方法工具 (@Tool) | 函数工具 (Function) |
|---|---|---|
| 核心注解/接口 | @Tool 注解 | java.util.function.Function 接口 |
| 实现复杂度 | 简单,在任意 Bean 方法上加注解即可 | 相对繁琐,需要实现 Function 接口 |
| 状态管理 | 可以访问和依赖其他 Spring Bean | 通常是无状态的,不适合依赖复杂服务 |
| 适用场景 | 广泛,尤其适合有状态的业务逻辑 | 简单的数据转换、计算等单一功能 |
| 推荐度 | 高,是更符合 Spring 习惯的声明式方式 | 低 |
核心价值与安全模型
- 模型负责决策:LLM根据用户问题,判断需要调用哪个工具,并生成所需的参数。
- 应用负责执行:你的Spring AI应用接收这个“调用请求”,安全地执行对应的Java方法,然后将结果返回给模型。
- 安全隔离:模型永远无法直接访问你的数据库、API密钥等内部资源,确保了系统的安全性
通过聊天获取最新新闻
60s API 开放平台【https://docs.60s-api.viki.moe/】
源码示例
https://gitee.com/kcnf_open/spring-ai-sample/tree/master/spring-ai/spring-ai-sample09
代码中重点 tool 关键字,如果匹配不到会直接跳过tool,直接llm

llm 选择 (model: glm-4-plus)

完整链路(llm->通过关键字匹配优先执行tool进行数据库查询,再通过llm进行优化)



