输入“/”快速插入内容

Tool use:有效地利用外部工具

2024年7月26日修改
🌲
翻译整理:小七姐
免费知识星球:Prompt 星球
“Tool use”(工具使用)是 AI Agent 工作流中的另一个关键设计模式,这个模式主要关注 AI Agent 如何有效地利用外部工具来增强其执行任务的能力。这可能包括使用计算器来执行精确的数学运算、搜索引擎来获取信息、或者调用API来实现特定的功能。这种设计模式超越了传统的仅依赖预训练变换器(transformer)生成输出的方式,通过赋予LLM额外的工具和能力,使其能够执行更复杂的任务和提供更丰富的输出。
在实际应用中,"tool use"可以体现在以下几个方面:
网络搜索:AI Agent可以通过执行网络搜索来获取关于特定主题的信息,例如,根据用户询问“根据评论者的评价,哪款咖啡机最好?”,AI Agent可能会调用搜索引擎并分析下载的网页内容来提供答案。
代码执行:AI Agent可以执行代码来完成计算任务,例如,在回答“如果我以7%的复利投资100美元,12年后我会得到多少钱?”时,AI Agent可以运行一个Python命令来计算最终金额。
多源信息检索:AI Agent可以使用不同的工具来从多个来源(如互联网、维基百科、arXiv等)检索信息,以及与生产力工具(如发送电子邮件、读写日历条目等)进行交互。
图像处理:AI Agent可以生成或解释图像,这通常涉及到调用图像处理API或其他视觉工具。
自动选择功能:AI Agent可以根据给定的上下文自动选择正确的功能来执行任务。这可能涉及到对功能的详细描述和期望参数的理解。
大规模工具集成:在某些系统中,AI Agent可以访问数百种工具。在这种情况下,可能会使用启发式方法来选择在当前处理步骤中最相关的功能子集。
基于上述内容,我们可以举一个实际的例子来说明"tool use"在AI Agent中的应用:
假设你正在使用一个基于大型语言模型(LLM)的在线聊天系统,你向这个系统提出了一个问题:“根据评论者的评价,哪款咖啡机最好?”在这个场景中,AI Agent会采取以下步骤来使用工具来回答问题:
1.
理解请求:AI Agent首先理解用户的问题是关于咖啡机的评论和评价。
2.
决定使用工具:AI Agent识别到为了回答这个问题,它需要访问最新的用户评论和评分,这超出了其预训练知识的范围。因此,它决定使用网络搜索工具来获取相关信息。
3.
生成搜索请求:AI Agent被训练或提示生成一个特殊的字符串,例如{tool: web-search, query: "coffee maker reviews"}。这个字符串是一个指令,告诉系统执行一个网络搜索,并使用查询字符串“coffee maker reviews”。
4.
执行搜索:后处理步骤会寻找类似上述的特殊字符串。当找到这样的字符串时,系统会调用网络搜索功能,并使用相关的参数(在这个例子中是查询字符串)来执行搜索。
5.
获取并处理结果:搜索功能返回的结果会被传递回AI Agent,作为额外的输入上下文。然后,AI Agent可以进一步处理这些信息,比如提取最受欢迎和评分最高的咖啡机型号。
6.
生成回答:基于搜索结果,AI Agent生成一个回答,告诉用户根据评论者的评价,哪款咖啡机最受欢迎。
通过这种方式,"tool use"使得AI代理能够超越其预训练知识的限制,利用外部工具来提供更准确、更丰富的信息和回答。
以下是三篇与"Tool use(执行)"相关的论文,它们探讨了AI Agent如何通过使用工具来提高其性能和效率:
Gorilla
Gorilla: Large Language Model Connected with Massive APIs:这篇论文介绍了Gorilla,这是一个基于LLaMA模型的AI Agent,它通过与大量API的连接来提高其在编写API调用方面的表现。当结合文档检索器时,Gorilla展示了适应测试时文档变更的强大能力,允许灵活的用户更新或版本变更,并显著减少了直接提示LLM时常见的幻觉问题。
Gorilla:一个使大型语言模型(LLMs)能够与APIs交互的系统。上图的上半部分代表了第三章中描述的训练过程。据我们所知,这是目前最全面的机器学习API数据集。
在推理过程中(下图的下半部分),Gorilla支持两种模式——带有检索的和零样本的。在这个例子中,它能够为从用户自然语言查询生成图像建议正确的API调用。
论文中提出的方法通过以下几个关键步骤,利用自我指令微调(self-instruct fine-tuning)和检索机制来提升大型语言模型(LLMs)在处理庞大且重叠的API工具集时的准确性和适应性:
1.自我指令微调:
利用GPT-4等预训练模型生成合成指令数据,这些数据包括API调用的上下文示例和参考文档。
通过提供具体的API使用场景和相应的代码实现,训练模型理解API的功能和正确的调用方式。
特别强调在生成指令时不使用具体的API名称或提示,以促使模型学习从自然语言描述中识别任务并生成准确的API调用。
2.构建APIBench数据集:
从TorchHub、TensorHub和HuggingFace等公共模型中心抓取机器学习API(模型),构建一个包含复杂且经常重叠功能的API的大型数据集。
使用自我指令方法生成的指令-API对作为数据集中的条目,每个API条目都关联一个或多个可能的用户指令。
3.检索机制的整合:
在Gorilla模型的训练过程中,将检索系统整合到模型的推理流程中。
通过检索最相关的API文档,模型学会了在生成API调用时参考最新的文档信息。
这种检索器aware的训练方法使得Gorilla能够适应API文档的更新和变化,从而保持其输出的准确性和适用性。
4.AST树匹配技术:
采用抽象语法树(AST)子树匹配技术来评估生成的API调用的功能正确性。