导读 大模型已经展示出在复杂场景下调动各类工具以解决复杂任务的能力。其深度的语义理解、广泛的世界知识,以及强大的推理和规划能力,共同使得人工智能在模拟人类使用工具的过程中展现出巨大的潜力。在此背景下,基础模型(Foundation Model)的工具学习(Tool Learning)应运而生,该领域的目标是让基础模型能够根据人类的指示和操作来使用工具,以解决特定任务。然而,无论是从理论研究还是实际应用的角度来看,该领域都面临着众多机遇和挑战。本文将介绍清华大学在工具学习领域的一些重要研究成果,并详细介绍其开源的交互式网页搜索中文问答框架 WebCPM、BMTools 和 AgentVerse 工具包。希望这些工作能够帮助读者深化对大模型工具学习领域的理解,同时也欢迎更多的研究者和开发者参与到这些工具包的使用和开发中来,共同推进大模型工具学习范式的发展。今天的分享会围绕下面四点展开:
01
工具学习背景 Background
**1. ****工具与智能(Tools and Intelligence)******工具是人类能力的延伸,旨在提高生产力和效率,以及解决问题。人与动物本质区别在于工具,人可以非常熟练地创造和使用工具。纵观历史,人类一直是工具发明和操作的主要推动者。GPT-4 等基础模型(Foundation Model)展示了其在理解人类意图、自动化复杂过程、解读多模态信息等方面的巨大潜力。同时也引发了如下问题:**人工智能是否可以像人类一样使用工具?******基于大模型、基础模型(Foundation Model),上述问题的回答是 **Yes!**主要原因如下:
在综述文章 Qin, Yujia, et al. "Tool Learning with Foundation Models." arXiv preprint arXiv:2304.08354 (2023)中,给出了工具学习的定义。**基础模型工具学习,**即基础模型可以跟随人类指令和操作工具,用于解决任务。 上图给出了一些工具学习场景的典型应用:
**推荐书籍,**若大模型基于 19 年之前的语料进行训练,不了解最新书籍,则会调用搜索引擎,将搜索结果进行答案生成,可弥补时效性不足的问题。
操纵机器人做饭
**调用已有工具或模型完成任务,**如调用一些模型进行画画。
**2. ****工具学习的分类(Categorization of Tool Learning)******现有工具学习主要可以分为两类,工具增强学习(Tool-augmented Learning)和工具导向学习(Tool-oriented Learning),其核心差异在于学习过程中,是通过工具执行来增强基础模型(工具为 AI 服务),还是通过基础模型优化工具的使用(AI 为工具服务)。
工具增强学习利用各种工具的执行结果,增强基础模型性能。在这一范式中,工具执行结果被视为辅助生成高质量输出的外部资源。将工具作为额外资源辅助模型生成,如解决大模型生成过程中的时效性不足或事实性不准确的问题。如用户想了解今天 Twitter 的 Trending,大模型可以调用 Twitter 的 API,得到这些 Trending 后,再进行生成。
工具导向学习,将学习过程重点从增强模型性能转向工具执行本身。这一范式关注开发能够代替人类控制工具并进行序列决策的模型。利用基础模型丰富的世界知识和复杂推理与规划的能力,让模型管理工具,充当整个工具智能的大脑,使其可代替人类高效执行一系列的序列决策。如人类让大模型到 Twitter 上发一条推特,大模型会先规划,将目标分解为多个子目标,如打开浏览器,登录推特,发送推特。每个子目标的完成可能会去调用 API,逐步完成所有子目标,直到完成最终的目标。02
框架 Framework
1. 工具学习框架****
一个通用的工具学习框架,类似强化学习 MDP 的架构,包含人类用户角色和四个关键组成部分:工具集、控制器、感知器和环境。
在 ChatGPT 之前更多是 NLP 场景下的任务,大家的共识是模型理解语言比较困难。ChatGPT 出现后,大模型基于 Instruction Tuning 技术,具备了非常强的理解人类指令潜在意图的能力,可依据人的指令去解决真实场景下用户的 Query 问题。 大模型将 NLP 任务包装为多种 instruction 格式,进行大规模有监督的精调(Fine-Tuning),实现从指令空间到模型认知空间映射的学习。上述训练后的大模型具备了在未学习过的指令上的泛化能力,且随着模型的增大,训练数据量的增大及 diversity 的增强,其泛化能力会越来越强。工具学习场景下意图理解面临两方面的挑战:
在大模型中,除了需要模型对人类指令进行准确理解外,模型对工具的理解同样至关重要。首先,模型需要理解工具的功能;其次,模型需要知道如何在特定的任务中使用这些工具。在 ChatGPT 出现之前,主要的模式是通过记录人类使用工具的行为,并让模型模拟这些行为以实现工具使用的学习。而随着 ChatGPT 的出现,我们可以通过 Prompt Learning,即在 Prompt 中给出工具的描述,让大模型理解并应用工具。这种基于 Prompt 的方式目前已经成为大模型使用工具的主流方法。具体 Prompting 有如下两种:
****提供一个描述任务的提示(prompt)来引导模型生成正确的输出。在 Prompt 中描述 API 的功能、输入输出格式、传参方式等,使得模型理解 API 如何使用。如下图,Zero-shot Prompting 给出了 forecast weather API,描述其功能、返回信息等,然后去解决“下周北京的平均气温是多少”的问题。**优点:**不需要为每个新任务重新训练模型,节省了大量的计算资源;并且可以快速适应新任务,只需为任务编写新的提示即可。**缺点:**性能通常不如使用特定任务训练数据进行 Fine-tuning 的方法;且编写有效的提示需要一定的技巧和经验。
不仅给出任务描述性提示,还要直接展示少量(few-shot)的使用工具的示例,模型通过模拟人类的行为,理解如何使用工具。如下图,Few-shot Prompting 给出了调用 API 的示例(如何回答问题—明天上海的温度),然后再让大模型利用 API 去解决问题。**优点:利用少量示例帮助模型理解任务,提高了模型的性能。比 Zero-shot Prompting 更灵活,可以应对更多种类的任务。**缺点:需要选择有代表性的示例,这需要一定的专业知识和经验。对于一些复杂的任务,可能需要更多的示例才能达到满意的性能。
大模型除了理解工具和人类的指令,还须具备规划和推理能力。****
依据规划与环境是否交互,模型的推理分成两种:
大模型首先生成多个候选答案,然后自评估答案的优劣,最后选择最优的答案。模型生成一个静态规划(给出未来任务列表),不与环境交互,适用于简单的场景。如果 Prompt 指令合理,早期的预训练语言模型(Pretrained Language Models)已经具备理解和使用上下文的 incontext 能力,可将 high-level 的任务有效地分解为 mid-level 的规划,而无需进一步的训练。
大模型默认解决方案,不断根据每一步的成败以及环境和人类的反馈,动态跟进该规划,直至整个流程完成。**挑战:**模型的自省式推理生成静态规划 Plan 存在一定问题,最优的方案是模型可以很好地在下游任务中落地。文章 Ahn, Michael, et al. "Do as i can, not as i say: Grounding language in robotic affordances." arXiv preprint arXiv:2204.01691 (2022) 提到:不是模型想做什么就做什么,而是让模型知道当前场景下能做什么才去做什么。方案1:
上篇论文通过设定 value function 限定了模型在每种场景下可做的任务,模型在某一场景下,只在上述的限制任务集合中进行选择,可以保证模型的可执行。方案2:Inner Monologue 这篇工作将不同来源的反馈信息注入到模型规划中,例如静态反馈——每次执行后环境的变化,动态反馈——人主动告知该任务是否成功等。基于环境反馈的模型能更好地进行推理和规划,达到更好的效果。
可解决多步或多工具场景下的复杂问题的模型
不同工具之间的依赖关系不同工具并行化执行(模型的生成是流式的)单一Agent到多Agent协同执行任务(已发布AgentVerse 工具包https://github.com/OpenBMB/AgentVerse)
大模型下,虽然直接 Prompting 就可以让模型学会使用工具,但在具备一定数据的特定场景下,进行微调通常都会有收益,除非数据的质量有问题。大模型学习使用工具的方式有两种:
2. WebCPM****
2021 年 12 月 WebGPT 的发布标志着基于网页搜索的问答新范式的诞生,该篇工作(Nakano, Reiichiro, et al. "WebGPT: Browser-assisted question-answering with human feedback." arXiv preprint arXiv:2112.09332 (2021)) 可以算是工具学习领域最早期的工作,其做法为基于人类记录的大量搜索引擎使用的行为数据进行有监督 Fine-Tune 和强化学习,使得大模型学会使用搜索引擎。该文证明只需 6000 条数据就可让模型很好地学会如何使用搜索引擎,且能力会超越人类专家。
鉴于 WebGPT 并未开源,相关工作不透明。因此,我们进行了 WebGPT 复现,完成了中文领域首个基于交互式网页搜索的问答开源模型框架 WebCPM,提供了第一个中文 LFQA 数据集,information retrieval 信息检索数据是基于网络搜索的交互信息拿到的,相关工作收录于自然语言处理顶级会议 ACL 2023。论文地址:https://arxiv.org/abs/2305.06849项目地址:https://github.com/thunlp/WebCPM
接口特点:可以搜索相关事实,记录相关事实,同时记录大约 10 个交互 action 行为信息。
WebCPM 的数据集包含 5500 对高质量的问题-答案对以及十万多条真实用户网页搜索行为。******LFQA **数据样例特点:
WebCPM 建模包含两类模型:
WebCPM 工作是在 ChatGPT3.5 发布之前,当时的基础模型与 ChatGPT 还是有一定的差距,随着 CPM 模型的改进,当前内部测试发现可以远超人类水平。 3. 其他工作
大模型如何学会使用亚马逊购物网站?可以类似搜索引擎,构建 WebShop:
WebCPM 和 WebShop 都需要让大模型学习大量人类标注数据,如何让大模型可以触类旁通学习,降低人类标注成本或降低人类的参与度?动机:
模型应该自行地去决定在何时间,用何方法来调用工具
模型对工具的使用应该是自监督的,这样可以省去很大的标注开销 方法:
受到 in-context learning 的启发,给定少量的人写的关于 API 的描述,让模型去自行生成潜在 API 调用的语言建模数据
构建一个自监督的 Loss 函数,让模型来决定哪些 API 的调用有助于它的语言建模的预测 **步骤:******给定一个纯文本数据集,构建出一个带有 API 调用的数据集,然后在此数据集上做微调
在大规模无标注语料上,使用 in-context learning 来生成大量的潜在可用的 API(每个 API 为一个具体的工具)
执行这些 API,返回得到结果
检查返回的结果是否有助于语言模型的预测,过滤掉其他的 API
构建一个高质量的工具调用数据集,进行模型微调
Toolformer 这项工作展示了大模型具备很强的自学的能力,大模型可自主学习工具,并可不断提升工具使用的能力。****
在证实大模型可以使用工具后,我们的 Tool Creation 工作在整个领域首先提出了模型作为工具创造者的想法。在 21 世纪之前,通常认为人类是工具创造和使用的主要主体,而基础模型的出现可能颠覆这一观念,创造工具不再是人类专有的能力。每个任务其实最好都是能用工具解决,现实场景下不一定存在最适合解决该任务的工具,可以通过大模型生成解决该任务的工具。人类创造的工具都是为人类设计,为人类设计的工具不一定是最好的,大模型可以定义更加适合自己的工具接口,该接口不一定适合人类使用。通过初步验证,大模型可以将一个简单工具 API 升级为具有更好功能的工具,基础模型可能具有自发创造工具的潜力。 所以我们提了这样一个框架,给定任何一个 query,我们会让模型先去做一遍工具的生成。具体包含四个步骤:creation、Decision、Execution、Rectification。从现有的工具库中选择相关的工具,然后对这些工具进行升级。完成工具升级后,模型可以具体调用这些工具来解决任务。假设模型发现当前的工具并不适合解决当前的任务,那么它可以回到升级或创造工具的阶段,继续优化工具或创建新的工具。这个过程会持续进行,直到模型创造出一个能够有效解决当前任务的工具,就可以跳出这个循环。这种设计使模型具有了持续学习和自我优化的能力,从而提升了其解决问题的效率和效果。 通过实验发现增加工具生成,使得解决实际任务的能力增强,相较 PoT 和 CoT 都有显著的提升。 工具的创造过程从本质上说是降低了后续任务的难度。如果只有一个质量很差的工具,那么可能需要付出巨大的精力才能使用这个工具来解决一个复杂的任务。所以,从这个角度出发,引出我们工作的核心理念:先创造工具,再用这个工具去解决任务。03
应用 Application
1. 开源平台 BMTools
OpenAI 发布了支持联网、解决数学计算的插件 ChatGPT Plugins, 被称为 OpenAI 的“App Store”。然而,由于目前其仅支持部分 OpenAI Plus 用户,大多数开发者仍然无法使用。
为解决这个痛点,我们推出了 BMTools 工具学习包,一个基于语言模型的开源可扩展工具学习平台。BMTools 工具包:https://github.com/OpenBMB/BMTools ****
我们将各种调用流程统一到一个框架上,使整个工具调用流程标准化、自动化。开发者可通过 BMTools,使用给定的模型(ChatGPT、GPT4)调用多种工具接口,实现特定任务或功能。**BMTools **具有如下一些特性:
2.ToolBench**ToolBench 项目,可以帮助开发者构建开源、大规模、高质量的指令调优数据,促进构建具有通用工具使用能力的大语言模型。 链接:https://github.com/OpenBMB/ToolBenchToolBench **工具包特性如下:
ToolBench 仓库中提供了相关数据集、训练和评估脚本,以及在 ToolBench 上微调的功能模型 ToolLLaMA。仓库中包含 31.2 万次真实 API 调用得到的 9800 条数据。 ToolLLaMA通过 ChatGPT 对 LLaMA 和 ChatGPT 的答案和工具使用链进行自动评估。评估结果如下(分数越高越好),ToolLLaMA 在不同场景下与 ChatGPT 的性能相同或更好。
3. 工具学习必读 Paper List****工具学习论文列表:https://github.com/thunlp/ToolLearningPapers 04
**问答环节****Q1:Web CPM 是否针对网络中网页搜索质量低,进行搜索结果过滤等设计?******A1:WebCPM 针对页面低质量搜索内容进行了过滤。
分享嘉宾
INTRODUCTION
秦禹嘉
清华大学
博士生
秦禹嘉,男,清华大学计算机系 2020 级直博生。主要研究方向为大规模语言模型的高效预训练与下游智能化应用,曾在 ACL、NAACL、EMNLP、ICLR、NeurIPS 等会议发表多篇一作论文。