智能体工具调用

主流工具:
- 文件操作
- 联网操作
- 网页抓取
- 终端操作
- 资源下载
- PDF生成
AI借助外部工具来完成自己做不到的事情。
AI是根据用户问题生成调用工具名称和参数传递给后端,后端调用工具再把结果返回,而不是AI自己来调用工具。
AI决定使用什么工具,以及需要传递参数。需要保证安全性。
100*100 - 2 * 100 + 1 = 9803
定义工具的方式:
- 基于Methods
- @Tool(description = “”)打在方法上 @ToolParam(description = “”)打在方法参数上
- 基于Function函数式编程
- 编程式——应用场景可以是从数据库中获取工具信息动态创建等,返回值类型要能被序列化
- 先定义工具类
- 反射获取工具方法
- 根据参数动态创建ToolCallback工具类
使用工具
.tools()
.defaultTools()
给chatModel绑定工具
动态解析
流程:
- AI调用工具
- 执行工具方法
- 将结果返回给AI
- AI基于工具结果生成最终回答
工具本质是一种插件
- 可以在github等地方去找——思路:官方文档没有或者很少可以去github顺藤摸瓜地找
动态获取当前项目根目录可以用System.getProperty(“user.dir”)方法
工具调用需要加try catch
58.33