智能体工具调用
一锅炖不下

主流工具:

  • 文件操作
  • 联网操作
  • 网页抓取
  • 终端操作
  • 资源下载
  • PDF生成

AI借助外部工具来完成自己做不到的事情。

AI是根据用户问题生成调用工具名称和参数传递给后端,后端调用工具再把结果返回,而不是AI自己来调用工具。

AI决定使用什么工具,以及需要传递参数。需要保证安全性

100*100 - 2 * 100 + 1 = 9803

定义工具的方式:

  • 基于Methods
    • @Tool(description = “”)打在方法上 @ToolParam(description = “”)打在方法参数上
  • 基于Function函数式编程
  • 编程式——应用场景可以是从数据库中获取工具信息动态创建等,返回值类型要能被序列化
    1. 先定义工具类
    2. 反射获取工具方法
    3. 根据参数动态创建ToolCallback工具类

使用工具

  • .tools()

  • .defaultTools()

  • 给chatModel绑定工具

  • 动态解析

流程:

  1. AI调用工具
  2. 执行工具方法
  3. 将结果返回给AI
  4. AI基于工具结果生成最终回答

工具本质是一种插件

  1. 可以在github等地方去找——思路:官方文档没有或者很少可以去github顺藤摸瓜地找

动态获取当前项目根目录可以用System.getProperty(“user.dir”)方法

工具调用需要加try catch

58.33