AnyTool 论文粗读
💡 Meta Data
| Title | AnyTool: Self-Reflective, Hierarchical Agents for Large-Scale API Calls | | —————————————————————— | ———————————————————————————————————————————————————— | | Journal | (10.48550/arXiv.2402.04253 ICML 2024) | | Authors | Du Yu,Wei Fangyun,Zhang Hongyang | | Pub.date | 2024-02-06 |
📜 研究背景 & 基础 & 目的 (Motivation)
- 如何驱动 LLM 有效的使用工具
- 提供一种使用大量工具解决用户查询的方式
🔬 研究方法
提出了AnyTool
Anytool 采用GPT-4 API 无需训练外部模块
-
一个具有层次结构API 检索器(用 GPT-4无需训练)
- 由三个层组成,每个层包含一个或多个具有不同角色的 agent,克服了LLMs 中最大上下文长度的限制
- 首先 meta agent 根据 rapidapi 类和 query 动态给出类别代理
- 然后类别代理从工具集中识别工具,创建工具代理
- 最后工具代理选择 API添加到 API 候选池中(工具代理不只管理一个工具)
-
使用选定 api 候选者解决用户查询的求解器(Tool LLaMA / GPT-4)
- 有两种输出:给出解决方案和放弃
- 当放弃时 要给出不相关 API 的原因和名称 *
-
自我反思机制
-
如果初始解决方案被证明不可行,则重新激活 AnyTool
-
两种情况会被激活:
- 给出解决方案,但是 GPT4 评判未解决(由 GPT-4 给出理由)
- 求解器给出放弃的结果(由求解器给出理由)
-
然后将理由添加在API 检索器中刚刚激活的代理的上下文中(从下到上),这个过程会重新扩展 API 候选池
-
优点:显著减少了对简单查询的“过渡搜索“的倾向,同时为复杂查询提供了更丰富的上下文和更深入的搜索。
-
提出修订的评估办法:AnyToolBench
- 原本:\(R=\frac{\#(\text{Non-solvable})+\#(\mathrm{Solved})}{\#(\text{Non-solvable})+\#(\mathrm{Solved})+\#(\mathrm{Unsolved})}.\)修改后:
- 解决了在不可解决的 query 算通过率,导致了人为的提高通过率的问题,能更好的反应实际应用场景的
🚩 结论
在多个数据集上实验表明,AnyTool 的比ToolLLM、GPT-4要好
- 在 ToolBench 上,AnyTool 的平均通过率比 ToolLLM 高 35.4%
- 在 AnyToolBench 上
📌 感想 & 疑问
- 消融实验非常的完善
- 将自我反思作用在Retriever 上,通过添加 agent 的上下文来实现是一种有效的自我反思方法。
- 自我反思关键是要能把已有的错误修正。