专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
中国政府网  ·  事关资本市场,最高检、证监会重磅发声! ·  2 天前  
半月谈  ·  打卡 | 深地塔科1井是口什么井? ·  2 天前  
医学界  ·  女护士跪求患者原谅,只因拔针出血 ·  5 天前  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

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

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2024-04-09 02:35

正文

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.工具使用实例生成。给定工具集,此阶段的目标是在模拟环境中自动生成工具使用实例。该环境是通过三个不同的虚拟智体编排而设计的,每个虚拟智体都是一个语言大模型的具身:用户、工具执行者和助手。通过这些智体之间的多回合交互,可以生成反映真实世界工具使用场景的工具使用实例。每个工具使用实例由三个关键元素组成:{用户的指令、操作及其相应的工具输出、最终响应}。


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

人类普遍使用各种工具,通常以基于 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 年日本假期列表是......”。

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

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

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

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

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

  • 工具执行者智体(Tool Executor Agent)







请到「今天看啥」查看全文