导读大模型已经展示出在复杂场景下调动各类工具以解决复杂任务的能力。其深度的语义理解、广泛的世界知识,以及强大的推理和规划能力,共同使得人工智能在模拟人类使用工具的过程中展现出巨大的潜力。在此背景下,基础模型(FoundationModel)的工具学习(ToolLearning)应运而生,该领域的目标是让基础模型能够根据人类的指示和操作来使用工具,以解决特定任务。然而,无论是从理论研究还是实际应用的角度来看,该领域都面临着众多机遇和挑战。本文将介绍清华大学在工具学习领域的一些重要研究成果,并详细介绍其开源的交互式网页搜索中文问答框架WebCPM、BMTools和AgentVerse工具包。希望这些工作能够帮助读者深化对大模型工具学习领域的理解,同时也欢迎更多的研究者和开发者参与到这些工具包的使用和开发中来,共同推进大模型工具学习范式的发展。
1.工具学习背景(Background)
2.工具学习框架(Framework)
3.工具学习应用(Application)
4.问答环节
编辑整理|王帅
内容校对|李瑶
出品社区|DataFun
01
工具学习背景Background
1.工具与智能(ToolsandIntelligence)
工具是人类能力的延伸,旨在提高生产力和效率,以及解决问题。人与动物本质区别在于工具,人可以非常熟练地创造和使用工具。纵观历史,人类一直是工具发明和操作的主要推动者。
GPT-4等基础模型(FoundationModel)展示了其在理解人类意图、自动化复杂过程、解读多模态信息等方面的巨大潜力。同时也引发了如下问题:人工智能是否可以像人类一样使用工具?
基于大模型、基础模型(FoundationModel),上述问题的回答是Yes!主要原因如下:
强大的语义理解。大语言模型可以很好地follow人的指令。
丰富的世界领域知识。保证大模型可在各种场景更好地落地应用。
强大的推理和规划能力。可在复杂场景完成规划任务,将复杂目标分解成多个简单子目标,然后去顺序执行。
执行过程中遇到的问题,可通过推理辅助进行下一步决策。
上图给出了一些工具学习场景的典型应用:
推荐书籍,若大模型基于19年之前的语料进行训练,不了解最新书籍,则会调用搜索引擎,将搜索结果进行答案生成,可弥补时效性不足的问题。
操纵机器人做饭
调用已有工具或模型完成任务,如调用一些模型进行画画。
2.工具学习的分类(CategorizationofToolLearning)
现有工具学习主要可以分为两类,工具增强学习(Tool-augmentedLearning)和工具导向学习(Tool-orientedLearning),其核心差异在于学习过程中,是通过工具执行来增强基础模型(工具为AI服务),还是通过基础模型优化工具的使用(AI为工具服务)。
工具增强学习(Tool-augmentedLearning)
工具增强学习利用各种工具的执行结果,增强基础模型性能。在这一范式中,工具执行结果被视为辅助生成高质量输出的外部资源。将工具作为额外资源辅助模型生成,如解决大模型生成过程中的时效性不足或事实性不准确的问题。如用户想了解今天Twitter的Trending,大模型可以调用Twitter的API,得到这些Trending后,再进行生成。
工具导向学习(Tool-orientedLearning)
02
框架Framework
1.工具学习框架
一个通用的工具学习框架,类似强化学习MDP的架构,包含人类用户角色和四个关键组成部分:工具集、控制器、感知器和环境。
工具集(ToolSet):具备不同功能的、可供模型使用的各种工具。从交互接口的视角可以分为三类:基于物理交互的工具、基于GUI交互的工具、基于程序交互的工具。
控制器(Controller):提供灵活的规划以满足用户的需求。通常使用基础模型建模,负责接收用户的指令,并根据这些指令制定可执行的计划并调用工具执行。
感知器(Perceiver):负责接收来自环境和用户的反馈信息,并将其汇总给控制器。
环境(Environment):模型或工具实施所处的场景,包括物理环境和虚拟环境等。
工具学习框架的整体流程始于人类用户,具体如下:
指令发送:人类用户向Controller(大模型)发送一个指令;
规划:大模型接收指令后进行一系列的规划,如复杂的任务需要的步骤以及每个步骤所需的工具集。
反馈:每个工具环境中去执行后,都会得到环境的反馈,例如给到搜索的信息或者给到该任务是否可以成功的判断。同时,人类也可在过程中给出反馈。
反馈总结:感受器perceiver接收来自环境和人类的反馈,并将两部分反馈总结为最终的summary给到大模型。
更新:大模型依据接收到的summary判断工具执行的成败,从而对规划进行更新,或者进行下一步的工具决策。
迭代:上述流程循环执行,直到大模型判定已完成人类给到的instruction指令后退出。
(1)意图理解IntentUnderstanding
在ChatGPT之前更多是NLP场景下的任务,大家的共识是模型理解语言比较困难。ChatGPT出现后,大模型基于InstructionTuning技术,具备了非常强的理解人类指令潜在意图的能力,可依据人的指令去解决真实场景下用户的Query问题。
大模型将NLP任务包装为多种instruction格式,进行大规模有监督的精调(Fine-Tuning),实现从指令空间到模型认知空间映射的学习。上述训练后的大模型具备了在未学习过的指令上的泛化能力,且随着模型的增大,训练数据量的增大及diversity的增强,其泛化能力会越来越强。
工具学习场景下意图理解面临两方面的挑战:
用户的Query存在模棱两可、含糊不清的现象。通常人会表达一个目标,并未写明一个具体的指令,如利用什么工具,用工具做哪些任务。因此模型需要面对人类复杂和high-level的query进行规划决策、匹配适合的工具。
理论上,整个指令空间无限。面对无限的表达和个性化的指令,如何使得大模型更好地泛化到未知的指令是另一个挑战。
(2)工具理解ToolUnderstanding
在大模型中,除了需要模型对人类指令进行准确理解外,模型对工具的理解同样至关重要。首先,模型需要理解工具的功能;其次,模型需要知道如何在特定的任务中使用这些工具。在ChatGPT出现之前,主要的模式是通过记录人类使用工具的行为,并让模型模拟这些行为以实现工具使用的学习。而随着ChatGPT的出现,我们可以通过PromptLearning,即在Prompt中给出工具的描述,让大模型理解并应用工具。这种基于Prompt的方式目前已经成为大模型使用工具的主流方法。具体Prompting有如下两种:
Zero-shotPrompting
提供一个描述任务的提示(prompt)来引导模型生成正确的输出。在Prompt中描述API的功能、输入输出格式、传参方式等,使得模型理解API如何使用。如下图,Zero-shotPrompting给出了forecastweatherAPI,描述其功能、返回信息等,然后去解决“下周北京的平均气温是多少”的问题。
优点:不需要为每个新任务重新训练模型,节省了大量的计算资源;并且可以快速适应新任务,只需为任务编写新的提示即可。
缺点:性能通常不如使用特定任务训练数据进行Fine-tuning的方法;且编写有效的提示需要一定的技巧和经验。
Few-shotPrompting
不仅给出任务描述性提示,还要直接展示少量(few-shot)的使用工具的示例,模型通过模拟人类的行为,理解如何使用工具。如下图,Few-shotPrompting给出了调用API的示例(如何回答问题—明天上海的温度),然后再让大模型利用API去解决问题。
优点:利用少量示例帮助模型理解任务,提高了模型的性能。比Zero-shotPrompting更灵活,可以应对更多种类的任务。
缺点:需要选择有代表性的示例,这需要一定的专业知识和经验。对于一些复杂的任务,可能需要更多的示例才能达到满意的性能。
(3)规划与推理PlanningandReasoning
大模型除了理解工具和人类的指令,还须具备规划和推理能力。
依据规划与环境是否交互,模型的推理分成两种:
IntrospectiveReasoning
大模型首先生成多个候选答案,然后自评估答案的优劣,最后选择最优的答案。
模型生成一个静态规划(给出未来任务列表),不与环境交互,适用于简单的场景。
如果Prompt指令合理,早期的预训练语言模型(PretrainedLanguageModels)已经具备理解和使用上下文的incontext能力,可将high-level的任务有效地分解为mid-level的规划,而无需进一步的训练。
ExtrospectiveReasoning
大模型默认解决方案,不断根据每一步的成败以及环境和人类的反馈,动态跟进该规划,直至整个流程完成。
方案1:
上篇论文通过设定valuefunction限定了模型在每种场景下可做的任务,模型在某一场景下,只在上述的限制任务集合中进行选择,可以保证模型的可执行。
方案2:
可解决多步或多工具场景下的复杂问题的模型
必要性:人类并不只局限于某一个特殊场景,或只使用某一个特定的工具,通常会协调使用多个工具,解决复杂问题。
研究探索:
不同工具之间的依赖关系
不同工具并行化执行(模型的生成是流式的)
(4)训练策略TrainingStrategies
大模型下,虽然直接Prompting就可以让模型学会使用工具,但在具备一定数据的特定场景下,进行微调通常都会有收益,除非数据的质量有问题。大模型学习使用工具的方式有两种:
人类行为克隆,人类向大模型展示如何使用工具,给到描述和注解。
试错中探索,通常基于强化学习,大模型从与环境和人类的交互反馈中不断学习。
2.WebCPM
(1)WebGPT介绍
2021年12月WebGPT的发布标志着基于网页搜索的问答新范式的诞生,该篇工作(Nakano,Reiichiro,etal."WebGPT:Browser-assistedquestion-answeringwithhumanfeedback."arXivpreprintarXiv:2112.09332(2021))可以算是工具学习领域最早期的工作,其做法为基于人类记录的大量搜索引擎使用的行为数据进行有监督Fine-Tune和强化学习,使得大模型学会使用搜索引擎。该文证明只需6000条数据就可让模型很好地学会如何使用搜索引擎,且能力会超越人类专家。
(2)WebCPM介绍
(3)WebCPM搜索交互界面
(4)WebCPM数据集
WebCPM的数据集包含5500对高质量的问题-答案对以及十万多条真实用户网页搜索行为。
LFQA数据样例特点:
记录问题
记录搜索过程的action
记录抽取出来的多条事实依据,有标注的事实的label
基于事实依据生成最终答案
(5)LFQApipeline框架
WebCPM建模包含两类模型:
Action预测模块(预测在该平台的下一个action,大约10个action,建模为一个多分类任务)
Query生成模块(生成搜索的query,用文本生成来实现,P(Qt+1|St))
Fact抽取模块(对当前页面抽取摘要)
(6)整体pipeline评测
pipeline-collected:指WebCPM的pipeline提取事实方法,模型生成的答案在32.5%(19.0+13.5=32.5)的情况下与人写的答案相当或更优;
human-collected:将人工收集的事实应用于信息综合模型时,性能提升到了16.0+29.5=45.5,可归因于收集的事实质量的提高;
Non-interactiveSearch:指利用非交互式方法收集的fact,效果较差,说明pipeline方法的优越性。
WebCPM工作是在ChatGPT3.5发布之前,当时的基础模型与ChatGPT还是有一定的差距,随着CPM模型的改进,当前内部测试发现可以远超人类水平。
3.其他工作
(1)WebShop
大模型如何学会使用亚马逊购物网站?可以类似搜索引擎,构建WebShop:
记录亚马逊中文网站上的主流操作,搭建平台接口
人类使用上述平台接口
记录人类行为信息
大模型学习上述人类行为信息
(2)Toolformer
WebCPM和WebShop都需要让大模型学习大量人类标注数据,如何让大模型可以触类旁通学习,降低人类标注成本或降低人类的参与度?
动机:
模型对工具的使用应该是自监督的,这样可以省去很大的标注开销
方法:
受到in-contextlearning的启发,给定少量的人写的关于API的描述,让模型去自行生成潜在API调用的语言建模数据
构建一个自监督的Loss函数,让模型来决定哪些API的调用有助于它的语言建模的预测
步骤:
给定一个纯文本数据集,构建出一个带有API调用的数据集,然后在此数据集上做微调
在大规模无标注语料上,使用in-contextlearning来生成大量的潜在可用的API(每个API为一个具体的工具)
执行这些API,返回得到结果
检查返回的结果是否有助于语言模型的预测,过滤掉其他的API
构建一个高质量的工具调用数据集,进行模型微调
Toolformer这项工作展示了大模型具备很强的自学的能力,大模型可自主学习工具,并可不断提升工具使用的能力。
(3)ToolCreation
在证实大模型可以使用工具后,我们的ToolCreation工作在整个领域首先提出了模型作为工具创造者的想法。在21世纪之前,通常认为人类是工具创造和使用的主要主体,而基础模型的出现可能颠覆这一观念,创造工具不再是人类专有的能力。
每个任务其实最好都是能用工具解决,现实场景下不一定存在最适合解决该任务的工具,可以通过大模型生成解决该任务的工具。人类创造的工具都是为人类设计,为人类设计的工具不一定是最好的,大模型可以定义更加适合自己的工具接口,该接口不一定适合人类使用。通过初步验证,大模型可以将一个简单工具API升级为具有更好功能的工具,基础模型可能具有自发创造工具的潜力。
所以我们提了这样一个框架,给定任何一个query,我们会让模型先去做一遍工具的生成。具体包含四个步骤:creation、Decision、Execution、Rectification。
这个过程会持续进行,直到模型创造出一个能够有效解决当前任务的工具,就可以跳出这个循环。这种设计使模型具有了持续学习和自我优化的能力,从而提升了其解决问题的效率和效果。
通过实验发现增加工具生成,使得解决实际任务的能力增强,相较PoT和CoT都有显著的提升。
工具的创造过程从本质上说是降低了后续任务的难度。如果只有一个质量很差的工具,那么可能需要付出巨大的精力才能使用这个工具来解决一个复杂的任务。所以,从这个角度出发,引出我们工作的核心理念:先创造工具,再用这个工具去解决任务。
03
应用Application
1.开源平台BMTools
(1)ChatGPT插件
OpenAI发布了支持联网、解决数学计算的插件ChatGPTPlugins,被称为OpenAI的“AppStore”。然而,由于目前其仅支持部分OpenAIPlus用户,大多数开发者仍然无法使用。
(2)BMTools介绍
为解决这个痛点,我们推出了BMTools工具学习包,一个基于语言模型的开源可扩展工具学习平台。
我们将各种调用流程统一到一个框架上,使整个工具调用流程标准化、自动化。开发者可通过BMTools,使用给定的模型(ChatGPT、GPT4)调用多种工具接口,实现特定任务或功能。
BMTools具有如下一些特性:
在HuggingfaceSpaces上可直接试用;
支持自定义新工具,开发者只用编写简单的python程序就能轻松构建新的插件功能,允许开发者扩充工具库;
支持使用已有的工具如ChatGPTplugins;
支持使用本地模型,可接入StanfordAlphaka、CPMBee等;
在planning层面,支持Langchain框架,支持babyAGI和autoGPT;
100K+工具使用的SFT数据即将发布;
支持30+工具,包括数据库,天气API,PPT、谷歌搜索引擎、图像生成、Huggingface模型等。
2.ToolBench
ToolBench项目,可以帮助开发者构建开源、大规模、高质量的指令调优数据,促进构建具有通用工具使用能力的大语言模型。
ToolBench工具包特性如下:
支持单一工具和多工具配置。对于单一工具的配置,采用了LangChain的提示风格;而对于多工具配置,则参照了AutoGPT的提示风格。
模型的回复不仅仅包含最终的答案,还涵盖了模型的思维链条过程、工具的执行以及工具执行的结果,以实现对模型的深度理解。
具备处理真实世界层面复杂性的能力,支持多步骤的工具调用,从而能够应对各种复杂的任务需求。
提供丰富的API接口,可用于现实世界中的各种场景,包括但不限于获取天气信息、进行网络搜索、更新股票信息以及实现PPT自动化。
构建过程:
ToolBench基于BMTools,在有监督数据中训练大语言模型。所有的数据都是由OpenAIAPI自动生成并由开发团队进行过滤,数据的创建过程很容易扩展。
ToolLLaMA
通过ChatGPT对LLaMA和ChatGPT的答案和工具使用链进行自动评估。
评估结果如下(分数越高越好),ToolLLaMA在不同场景下与ChatGPT的性能相同或更好。
3.工具学习必读PaperList
04
问答环节
Q1:WebCPM是否针对网络中网页搜索质量低,进行搜索结果过滤等设计?
A1:WebCPM针对页面低质量搜索内容进行了过滤。
Q2:在不同语言上的效果如何,例如在中文任务上的效果怎么样?
A2:WebCPM背后的基础模型CPM是由面壁智能与OpenBMB开源社区开发的百亿参数中文语言模型,占据多个中文领域语言模型排行榜前列。
Q3:WebCPM和WebGLM的区别?
WebGLM则是一个基于大语言模型(LLM)的联网问答聊天机器人,其工作流程是固定且流程化的,包括搜索、页面检索、页面信息摘取和总结等步骤。这一框架为进一步提升每一步骤的能力提供了极好的基础,随着每一步骤能力的增强,最终的模型效果有可能超越现有的大模型。
INTRODUCTION
秦禹嘉
清华大学
博士生
秦禹嘉,男,清华大学计算机系2020级直博生。主要研究方向为大规模语言模型的高效预训练与下游智能化应用,曾在ACL、NAACL、EMNLP、ICLR、NeurIPS等会议发表多篇一作论文。