AnyTool:用于大规模 API 调用的自我反思、分层Agent
摘要:
-
AnyTool旨在彻底改变大量工具在解决用户查询方面的使用问题
-
结构简介
-
具有分层结构的 API 检索器
-
使用一组选定的 API 候选者解决用户查询的求解器
-
自我反思机制,如果初始解决方案被证明不可行,该机制会重新激活 AnyTool
-
-
先前的评估协议会出现人为导致高通过率,基于此修改了评估协议
-
引入新的基准测试AnyToolBench
介绍
-
API检索器
-
链接meta-agent,meta-agent链接不同类别的api-agent,如类别agent和tool-agent
-
-
求解器
-
求解API tool
-
-
自我反思
-
特点
-
即插即用,不用训练
-
应用分而治之思想和Rapid API分类构建的API层次结构
-
显著减少了每个Agent的搜索范围,并克服了与 LLM 中最大上下文长度相关的限制
-
-
自我反思机制
-
显著减少了“过度搜索”简单查询的趋势,同时还为复杂查询提供了上下文更丰富、更深入的搜索。这个闭环系统提高了查询解析过程的效率和有效性。
-
4-6次自我反思,准确率提高20%,下图在不同数据集上使用不同轮次自我反思的性能曲线
-
-
对现实场景进行评估,修改评估协议
-
-
a)gpt-4(API检索器)给出的检索结果与查询意图无关会给出‘无解’这一答案,这样的“无解”会被认为是正确的,最终会导致Pass Rate变高
-
b)人工审核去除‘无解’,更新Pass Rate计算方式
方法
-
(第 4.1 节)创建 API 候选池。为了提高效率,AnyTool 采用分层架构设计,利用 Rapid API 中提供的结构化 API 组织
-
Rapid API 中的结构化 API 组织
-
第一层,类别:如体育、金融
-
第二层,工具:特定类别的工具
-
第三层,API:每个API属于特定的工具
-
-
层次结构
-
如上方图2
-
-
API候选池生成(看 图2)
-
所有Agent,包括元Agent、类别Agent和工具Agent,以多线程方式独立运行
-
元Agent发送调用自身托管功能的请求(涉及创建类别agent和工具agent和执行特定功能),类别Agent或工具Agent解析请求并执行相应功能
-
工具Agent调用函数“检查请求是否可解决”并收到返回值“True”时,工具Agent使用“将 API 添加到 API 池”功能将 API 添加到该池中,所有Agent停止操作
-
完成搜索,标记为“已完成”
-
-
-
(第 4.2 节)求解器利用候选 API 来解析查询 Q
-
求解器发送调用函数的请求,
-
解释该请求并执行函数,
-
将函数的结果集成到上下文历史记录中,然后返回到求解器。
-
触发自我反思机制
-
1)“给出解决方案”,GPT-4 审查解决方案并确定查询仍未解决;
-
2)“放弃”,求解器无法解决查询。
-
-
-
如果查询仍未解决,AnyTool 会进行自我反思过程(第 4.3 节)以解决问题。
实验评估
-
使用 ToolBench 包含六个子集过滤了无解情况的:G1-Instruction (G1-I)、G1-Tool (G1-T)、G1-Category (G1C)、G2-Instruction (G2-I)、G2-Category (G2-C) 和 G3Instruction (G3-I)以及自己建立的 AnyToolBench
-
GPT-4-32K
-
发现 G1-I自子集GPT4 与人类评估的一致性为 96.5%,因而专门使用GPT-4评估
-
模型简要说明
-
除了原始的ToolLLM,还有两种ToolLLM变体
-
1)一种在求解器中用 GPT-4 替换 ToolLLaMA;
-
2) 另一种放弃 API 检索器并仅依赖参考 API。
-
-
4种不同的GPT-4模型
-
1)一种在求解器中使用参考 API 和思想链算法;
-
2) 另一个使用参考 API 和 DFSDT 算法;
-
3) 第三种采用普通Agent进行 API 检索,并将 DFSDT 算法合并到求解器中;
-
4) 第四个利用 AutoGen 的检索增强生成 (RAG) 功能进行 API 检索,并使用 DFSDT 算法通过选定的 API 候选来解析用户查询。
-
-
-
ToolBench结果
-
AnyTool 在平均通过率方面明显优于原始 ToolLLM 和使用参考 API 的 GPT-4,分别高出 +32.6 点和 +19.3 点。
-
-
AnyToolBench的结果
-
消融实验
-
工具Agent管理太多工具(例如,K = 10)会有更大的搜索空间,可能导致忽略相关 API,管理太少工具(例如, K = 3) 可能会导致召回率降低
结论
-
AnyTool 能够利用 16K+ API 来有效处理实际的用户查询
-
AnyTool 的核心是一个分层 API 检索器和一个求解器,采用了独特的自我反思机制,提高了响应用户查询的能力
-
在 ToolBench 和 AnyToolBench 上进行实验证明了方法相对于现有模型的优越性
-
提出了两个未来的研究方向
-
优化 API 的组织以提高性能和效率;
-
研发专门针对 API 使用的开源 LLM,以促进本地部署
-