ToolAlpaca:3000个模拟案例的语言模型通用工具学习

23年5月中科院软件研究所和中科院大学的论文“ToolAlpaca: Generalized Tool Learning for Language Models with 3000 Simulated Cases”。

使语言大模型能够有效地利用现实世界的工具对于实现具身智能至关重要。 现有的工具学习方法要么主要依靠极大的语言模型(例如 GPT-4)以零样本的方式获得通用的工具使用能力,要么利用监督学习在紧凑模型上训练有限范围的工具。 然而,较小的语言模型是否可以在不进行特定工具训练的情况下实现通用的工具使用能力仍然不确定。

为了解决这个问题,本文介绍ToolAlpaca,一种框架旨在自动生成多样化的工具使用语料库,并以最少的人工干预在紧凑的语言模型上学习通用的工具使用能力。 具体来说,ToolAlpaca首先通过构建多智体模拟环境,自动创建高度多样化的工具使用语料库。 该语料库包含 3938 个工具使用实例,来自 50 个不同类别的 400 多个现实世界工具 API。 随后,利用构建的语料库对紧凑语言模型进行微调,分别产生两个模型,即ToolAlpaca-7B和ToolAlpaca-13B。 最后,评估这些模型在没有特定训练的情况下利用以前未见工具的能力。 实验结果表明,ToolAlpaca 实现了与 GPT-3.5 等超大语言模型相当的有效泛化工具使用能力,证明学习泛化工具使用能力对于紧凑语言模型是可行的。

具身智能,即与环境进行有意义交互的能力,是高级认知系统的核心属性,也是人工智能的关键进步。 创建和使用工具的能力扩展了人类与环境交互的身体能力并增强了认知功能。 这样的进化里程碑不仅拓宽了人类身体活动范围,也给解决问题的能力和创新思维带来了革命性的变化。 追求将工具使用能力融入AI对于推进通用智能系统的发展具有重要意义。

最近在增强语言大模型(LLM),例如具有工具使用能力的 GPT-4(OpenAI 2023)方面,取得的进展已在该领域取得了重大进展。 这些模型显示了它们通过集成插件有效利用外部工具的能力,从而扩展了它们的多功能性并提高了输出的精度和质量。 不幸的是,由于缺乏对现有语言大模型如何获得通用工具使用能力的理解,目前的紧凑语言模型仍然不具备这种通用能力。 因此,大量的研究工作致力于微调较小的语言模型,以获得在有限范围的工具上使用工具的能力(Komeili、Shuster & Weston 2022;Parisi、Zhao & Fiedel 2022;Schick 2023) ,缺乏泛化到未见工具的能力。 较大模型的通用工具使用能力与紧凑模型更受限能力之间的差异提出了一个有趣的问题:这些紧凑语言模型能否学习泛化其工具使用能力,从而实现与更广泛工具的交互?

LLM中外部工具的利用已成为一个快速发展的研究领域(Mialon,2023;Qin,2023a)。 当前的方法可以分为两个不同的类别。 第一类利用LLM的能力,促使他们与各种工具进行交互,包括高度专业化的工具,例如代码解释器(Gao et al. 2022;Chen et al. 2022)、搜索引擎(Yao et al. 2022)、 检索模型(Khattab,2023)和 AI 模型(Shen,2023;Lu,2023),到更通用的工具集(Qin,2023a;Li,2023;Song,2023)。 语言大模型已经在工具使用方面展现了强大的泛化能力,并能够通过提示来装备许多未见的工具。 相比之下,第二类集中于专门为专用工具设计的数据集进行微调,增强紧凑语言模型的特定工具使用能力(Parisi、Zhao & Fiedel,2022;Schick,2023;Xu,2023)。 同时,GPT4Tools(Yang et al. 2023)对紧凑模型进行了微调,以合并多模态工具,该工具集中于一组非常相似的多模态工具。 ToolLLM(Qin,2023b)有助于语言模型掌握海量 API。 但他们的数据采集策略需要事先积累大量真实的API,需要人工获取和验证。 尽管它们很有效,但紧凑语言模型的通用工具使用能力域在很大程度上仍未得到探索。 本研究旨在通过自动构建包含各种工具使用场景的多样化工具使用数据集来弥补这一研究差距。

许多研究都采用LLM进行数据生成,重点关注各种任务,例如问答(Wang et al. 2021;Agrawal et al. 2022;Chen, Chen, & Wen-tau Yih 2023)、语义相似性预测(Schick and Schu ̈tze 2021) )和指令调整(Honovich,2022;Wang,2023)。 此外,在工具使用的背景下,一些工作(Schick et al. 2023;Patil et al. 2023;Yang et al. 2023)已经采用模型合成数据来增强特定的工具使用能力。 然而,广义工具使用数据的生成提出了更重大的挑战,因为它涉及广泛且多样化的工具以及更复杂的多轮交互。

如图是ToolAlpaca 的高级概述,由三个组件组成:(1)工具集构建,根据公共 API 提供的简要介绍生成每个工具的结构化文档。 (2)通过多智体模拟生成工具使用实例。 (3)ToolAlpaca模型训练,在生成的工具使用语料库上微调语言模型获得ToolAlpaca。整个ToolAlpaca框架由两个阶段组成:

  1. 工具集构建。 这一步的目的是构建一个工具集,并使用标准化格式表示它们,如{名称,简介,描述,功能文档,OpenAPI规范}。 具体来说,从互联网上获取工具名称和介绍来启动该流程,然后利用LLM通过结构化文档来丰富它们,这些文档彻底描述了每个工具的功能和用法。 通过这种方式,可以构建一个与现实场景非常相似的多样化、结构化的工具集。
  2. 工具使用实例生成。 给定工具集,此阶段的目标是在模拟环境中自动生成工具使用实例。 该环境是通过三个不同的虚拟智体编排而设计的,每个虚拟智体都是一个语言大模型的具身:用户、工具执行者和助手。 通过这些智体之间的多回合交互,可以生成反映真实世界工具使用场景的工具使用实例。 每个工具使用实例由三个关键元素组成:{用户的指令、操作及其相应的工具输出、最终响应}。

添加图片注释,不超过 140 字(可选)

从互联网上积累广泛的 API 集,反映了现实世界的工具使用场景。 考虑到这些 API 的基本描述和缺乏统一的表示,进一步利用 LLM 的生成能力为每个工具创建全面的文档。 本文档可帮助语言模型理解每个工具的功能和用法。 随后,遵循OpenAPI标准,为每个API生成统一的规范,从而实现自动化的计算机调用并方便后续的工具执行模拟。 这样,每个工具就可以表示为一个五元组{名称、简介、描述、功能文档、OpenAPI规范}。 如图提供了一个示例,其中名称、描述和简介提供了公共假期工具的基本信息和用途,功能文档提供了工具中包含的各种函数(getHolidays、searchHolidays、getHolidayDetails)的功能、输入和输出 ,而 OpenAPI 规范提供了更全面、更结构化的文档。

添加图片注释,不超过 140 字(可选)

人类普遍使用各种工具,通常以基于 Web 的 API 形式体现。 为了促进这些 API 的利用和发现,互联网上存在大量的存储库,聚集了大量实用且常用的 API。 因此利用代表性 API 存储库-public APIs (https://github.com/public-apis/public-apis )作为目标工具集。这个存储库包含 1400 多个 API,涵盖 50 多个不同类别。

为了增强语言模型对工具功能和用法的理解,此步骤使用LLM自动生成每个工具的文档,包括其描述和功能文档。 具体来说,给定工具的名称和介绍,利用LLM强大的生成能力,例如ChatGPT,构建相应的提示来生成每个工具的描述和功能文档。 如上图所示,对于工具描述,扩展了提供工具用途和功能的总体概述,使语言模型能够理解使用该工具的适当任务场景。 对于函数文档,提示LLM在描述中设定域内生成更具体的函数,包括它们各自的输入和输出参数。 它确保LLM理解如何使用该工具的不同功能。 通过采用这种方法,为后续用户指令的生成和模拟工具使用环境的创建奠定了坚实的基础。

最后提示 LLM 以 OpenAPI 规范的形式为每个工具生成更正式和结构化的表示。 OpenAPI 规范 (OAS) 定义了一个与语言无关的标准接口,用于描述 API,包括有关端点、预期输入/输出类型以及可能的错误响应信息。 OAS 为人类和机器提供了一致性和可读性,使其成为工具使用语料库的理想选择。 这份全面的文档是框架后续阶段模拟工具执行的基础。

总结一下,构建一个多样化的、均匀表示的工具集,为多智体仿真环境的搭建和进一步的工具使用语料库生成提供了坚实的基础。

关于工具使用语料库的自动构建,如图所示,每个工具使用实例可以表示为三元组 {指令、操作、响应}:

说明:需要工具帮助才能解决的用户查询。 “……那你能告诉我明年日本的假期清单吗?” 在示例中充当指令。
动作:解决指令的过程可能涉及按特定顺序执行多个动作。 按照 React (Yao et al. 2022)方法,每个动作都由一个元组表示,其中包括想法、函数名称、输入参数和相应的工具响应。 例如,如图所示,三元组 (“我需要获取 2024 年日本的节假日列表。”, ”getHolidays”, {”country”: ”Japan”, ”year”: 2024}, ”Status 代码:200 响应:…”)代表一个动作。
响应:指模型经过多轮交互后的结论性响应,整合工具响应,为原始指令提供全面的解决方案。 例如,示例中的响应是:“2024 年日本假期列表是…”。

添加图片注释,不超过 140 字(可选
上图是一个仿真环境中事例生成过程。用户智体提供指令来启动序列,然后助理智体解释指令并与用户和工具执行器进行多轮交互,直到生成合适的响应。

构建多样化且真实的工具使用数据集是一项具有挑战性的任务。 首先,工具集多种多样,因此手动为每个工具起草说明是不切实际的。 鉴于从娱乐领域到专业领域的工具种类繁多,而且指令的构建依赖于对工具的功能和潜用例的理解,手动注释的负担变得难以承受。 其次,现实场景中的工具使用往往涉及多轮反复试验的迭代过程,使得自动构建反映真实情况的工具使用实例具有很大的挑战性。

为此,设计一个模拟环境来生成工具使用语料库,包含三个虚拟智体:用户、助手和工具执行者。 工具使用实例是通过这些智体之间的相互作用生成的。 具体来说,每个智体都由具有特定提示的语言大模型模拟。 每个智体的不同角色详细说明如下:

用户智体(User Agent)旨在模仿工具用户,其功能包括: (1) 根据工具的功能文档,为当前工具起草任务指令。 (2) 根据当前交互上下文回答助理的询问,提供初始指令中可能缺失的基本信息。 对于每个功能,构建相应的提示模板来指导LLM生成适当的输出。 此外,为了确保任务指令的多样性,采用各种提示来生成不同格式的指令,包括命令、问题等。 利用大模型在几乎所有领域的熟练程度,这种方法可以根据工具文档生成高质量和多样化的指令。 这有效地解决了前面提到的手动标注的问题。

助理智体(Assistant Agent)旨在模拟具有工具使用功能的助手。 它接收来自用户代理的指令并确定后续操作。 这包括选择适当的工具和功能、为工具执行器生成命令以及总结交互以生成最终响应。 如图 3 所示,遵循 ReAct(Yao et al. 2022),我们采用(思想、行动、观察)格式模板来指导 LLM 完成这些任务。

工具执行者智体(Tool Executor Agent)旨在模拟工具的执行,接收来自助理智体的请求并根据工具的预定义功能生成响应。 具体来说,对助理的请求进行格式和参数检查后,将其转换为网络请求格式。 然后工具执行器向LLM提示工具的OpenAPI规范和助手的请求,生成模拟执行结果。 利用LLM强大的模拟和生成功能,减轻了构建实际 API 调用所涉及的复杂性。 该方法已经过实证验证,既准确又有效。

总结一下,给定上述智体,工具用例通过它们之间的多轮交互生成。 最初,用户智体根据工具信息生成指令。 随后,助手智体选择适当的操作及其相应的输入,并等待模拟执行和工具执行器的响应。 这种动作选择和收集工具响应的迭代过程一直持续到助手智体认为它已经收集了足够的信息来响应用户的指令。 通过这种多智体交互,可以模拟真实的工具使用场景,生成全面、多样化的工具使用实例。

利用前面提到的多智体模拟框架,构建ToolAlpaca 语料库。 具体来说,该过程首先从 public-APIs 存储库中随机选择 500 个 API。 随后,利用 ChatGPT 生成更全面的文档,从而形成多样化且结构良好的工具集。 在模拟环境中,用 ChatGPT 作为用户智体为每个工具生成 10 条指令,并使用工具执行器来模拟工具执行。 选择 GPT-3.5 作为助手智体,因为它在结构上表现出色,并且对生成的语料库进行了有效的过滤过程。 系统地排除可能在其输入或输出中包含非文本内容的工具。 就实例而言,丢弃那些超过五个交互步、缺少相关函数调用或在输出中出现解析错误的实例。

最后,自动构建一个广泛且多样化的工具使用语料库。 如表所示,包含50个类别的426个独特工具,总计3938个实例。

添加图片注释,不超过 140 字(可选)

如之前所强调的,多样性对于大模型获得通用能力和适应多种未见过场景至关重要(Wang et al. 2023)。 ToolAlpaca 语料库表现出两方面的多样性:

工具集。 如表所示,工具集在多个方面表现出多样性:(1)工具集包含50类工具,从常见类别(如就业和新闻)到专业类别(如区块链和金融)。 (2)每个工具平均提供5个功能,凸显其能力的多样性和全面性。 (3)函数输入的范围从简单到复杂的场景都有所不同,包括数组和目标(objects),进一步增强了工具集的丰富性和复杂性。
实例。 ToolAlpaca 语料库中的实例在指令、函数调用和错误处理方面表现出多样性。 具体来说,在指令生成过程中采用各种提示来刺激语言模型生成不同的指令。 如图所示,指令长度的宽范围分布证实了这一点。 此外,数据集包含大约 1,500 个需要多个函数调用才能解析的实例,进一步强调了数据集的全面性。 此外,数据充分反映了真实工具使用场景中可能遇到的潜在错误,包括涉及各种类型错误的实例,例如无效操作、解析错误和不正确的参数。

为了评估 ToolAlpaca 语料库的质量,随机抽取了 100 个实例并聘请人类标注者进行评估。 该评估测试用户智体生成指令的可解释性、工具执行智体输出的精度以及助手智体动作和响应的准确性。 如表所示,评估三个智体能力的指标均超过80%。 这证实了每个智体都精通各自的角色,证明了基于模拟构建的数据的可靠性,并肯定数据集的良好质量。

添加图片注释,不超过 140 字(可选)

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值