arXiv:2303.17580v2[cs.CL]2023年4月2日 HuggingGPT:在拥抱的脸上与ChatGPT及其朋友一起解决人工智能任务 沈永良1*,KaitaoSong2*,徐谭2,李东生2,WeimingLu1,岳亭庄1 浙江大学1,微软亚洲研究2 [Syl,luwm,yzhuang]@zju.edu.cn,[Kaitaosong,xuta,dongsli]@microsoft.com 摘要 解决不同领域和模式的复杂人工智能任务是迈向高级人工智能的关键一步。虽然有丰富的人工智能模型可供d使用如果是不同的领域和模式,它们无法处理复杂的人工智能任务。考虑到大型语言模型(LLM)在语言理解、生成、交互和推理方面表现出非凡的能力,我们主张LLM可以充当Ntroller用于管理现有的人工智能模型,以解决复杂的问题 人工智能任务和语言可以成为增强其能力的通用界面。基于这一理念,我们提出了HuggingGPT,这是一个利用LLM(例如ChatGPT)连接机器学习社区(例如HuggingFace)中的各种AI模型的框架,以解决AI任务。具体来说,我们在收到用户请求时使用ChatGPT进行任务规划,根据HuggingFace中可用的功能描述选择模型,使用选定的AI模型执行每个子任务,并总结响应命令执行结果。通过利用ChatGPT强大的语言能力和HuggingFace中丰富的AI模型,HuggingGPT能够在不同模式和领域涵盖许多复杂的人工智能任务,并取得令人印象深刻的结果在语言、视觉、语言和其他具有挑战性的任务方面,这为先进的人工智能铺平了一条新道路2. 1简单介绍 大型语言模型(LLM)[1、2、3、4、5、6],如ChatGPT,引起了两个学术界的极大关注和行业,由于他们在各种自然语言处理(NLP)任务上的出色表现。基于大规模文本语料库的大规模预训练和来自人类反馈(RLHF)的强化学习,LLM可以在语言理解、生成、互动和推理。LLM的强大能力也推动了许多紧急研究课题(例说,上下文学习[1,7,8],教学学习[9,10,11,12]和思想链提示[13,14,15,16])进一步调查LLM的巨大潜力,并为我们构建先进的人工智能系统带来无限的可能性。 尽管取得了这些巨大成功,但当前的LLM技术仍然不完美,并面临一些紧迫的问题正在构建先进的人工智能系统。我们从以下方面讨论它们:1)仅限于文本生成的输入和输出形式,当前的LLM缺乏处理视觉和语音等复杂信息的能力,无论它们如何r在NLP任务方面取得重大成就;2)在现实世界中,一些复杂的任务通常由多个子任务组成,因此需要多个模型的调度与合作,这些模型是也超出了语言模型的能力;3)对于一些具有挑战性的任务,LLM 在零射中表现出优异的结果 ∗ 前两位作者的贡献相等。这项工作是在第一作者在微软亚洲研究公司实习时完成的。 2 https://github.com/microsoft/JARVIS. 图1:语言是LLM(例如ChatGPT)连接众多人工智能模型的界面 (例如,那些拥抱脸的人)用于解决复杂的人工智能任务。在这个概念中,LLM充当控制器,管理和组织专家模型的合作。法长首先根据用户请求计划任务列表,然后分配专家德尔斯完成每项任务。专家执行任务后,LLM会收集结果并回复用户。 或几枪设置,但它们仍然比一些专家弱(例说,微调模型)。如何解决这些问题可能是第一个也是LLM朝着更先进的人工智能系统迈出了关键一步。 在本文中,我们指出,为了处理复杂的人工智能任务,LLM应该能够与外部模型协调,以利用其能力。所以,关键是如何选择suitable中间件来连接LLM和AI模型之间的联系。为了解决这个问题,我们注意到,通过总结其模型函数,每个AI模型都可以将其表示为一种语言形式。因此,我们引入了一个概念:“语言是一个通用的interLLM连接人工智能模型的面孔”。换句话说,通过将这些模型描述纳入提示中,LLM可以被视为管理规划、调度和合作等人工智能模型的大脑。因此,这种策略使LLM能够调用外部模型来解决人工智能任务。但是,如果我们想将多个人工智能模型集成到LLM中,将出现另一个挑战:解决许多人工智能任务需要收集大量高质量的模型描述,这需要大量提示摇摇大气。巧合的是,我们注意到,一些公共ML社区通常提供各种适用的模型,并带有明确定义的模型描述,以解决语言、视觉和语音等特定人工智能任务。这些观察给我们带来了一些灵感:我们可以链接LLM吗(例说,ChatGPT)与公共ML社区(例说,GitHub,拥抱脸1,Azure等)通过基于语言的界面解决复杂的人工智能任务? 因此,在本文中,我们提出了一个名为拥抱GPT连接LL女士(也就是说,、ChatGPT)和ML社区(也就是说,,拥抱脸),它可以处理来自不同模式的输入,并解决许多复杂的人工智能任务。更具体地说,对于HuggingFace中的每个AI模型,我们使用libr中的相应模型描述Ary,并将其融合到提示中,以建立与ChatGPT的连接。之后,在我们的系统中,LLM (也就是说,,ChatGPT)将充当大脑来确定用户问题的答案。如图1所示,HuggingGPT的整个过程N分为四个阶段: •任务规划:使用ChatGPT分析用户理解其意图的请求,并通过提示将其分解为可能可解决的任务。 •型号选择:为了解决计划中的任务,ChatGPT选择专家m根据模型描述托管在HuggingFace上的odel。 •任务执行:调用并执行每个选定的模型,并将结果返回到ChatGPT。 1https://huggingface.co/models •响应生成:最后,使用ChatGPT集成所有模型和genrat的预测E为用户提供答案。 HuggingGPT受益于这种设计,能够使用外部模型,因此可以集成多模式感知能力并处理多个复杂的人工智能任务。此外,这条管道还允许我们的HuggingGPT继续吸收特定任务专家的力量,实现可增长和可扩展的人工智能能力。 到目前为止,我们的HuggingGPT已经在ChatGPT周围的HuggingFace上集成了数百个模型,涵盖了文本分类、对象检测等24项任务躁狂分割、图像生成、问题回答、文本到语音和文本到视频。实验结果证明了HuggingGPT处理多模态信息和复杂人工智能任务的能力。 总之,我们的贡献是一个如下: 1.为了补充大型语言模型和专家模型的优势,我们提出了模型间合作协议。大语言模型充当规划和决策的大脑,小模型充当每个样本的执行器C任务,为设计通用人工智能模型提供新方法。 2.我们构建了HuggingGPT,通过将HuggingFace集线器与围绕ChatGPT的400多个特定任务模型集成来处理通用人工智能任务。通过模型的开放协作,HuggingGPT为用户提供多模式和可靠的对话服务。 3.前夫对跨语言、视觉、语音和跨模式的多个具有挑战性的人工智能任务的紧张实验证明了HuggingGPT从多种模式和领域理解和解决复杂任务的能力。 2相关作品 2.1大朗古年龄模型 近年来,自然语言处理(NLP)领域因大型语言模型(LLM)的出现而发生了革命性的变化[1、2、3、4、5、6],例如GPT3[1]、PaLM[3]和LLaMa[6]等模型。LLM已经证明了我由于其庞大的语料库和密集的训练计算,零射和少射任务以及数学问题解决和常识推理等更复杂的任务具有紧迫的能力。 关于LLM的一些活跃研究领域包括思想链提示(CoT)[13、14、15、16]和指令调优[9、10、11、12]。[13]提出的思想链提示通过设置几个案例示例来提示大型模型生成解决问题的过程,从而显著地改进模型的推理能力。[14]将这种方法扩展到零镜头思维链,并发现大型模型仍然可以通过使用“让我们一步一步地思考"。相比之下,[15]将程序语言f分开罗马自然语言,使大型语言模型能够生成代码逻辑来解决推理问题。指令调优是大型语言模型应用程序的另一种方法。[10]、[11]和[9]等研究工作已经收集并改变了d将传统的NLP任务数据集转换为指令,并对指令数据集上的大模型进行微调,以提高未知任务的泛化能力。通过指令调优,Flan-T5[12]和Flan-UL2的表现优于650BPaLM[3]型号u只唱100B参数。另一方面,InstrutGPT和ChatGPT使用从人类反馈技术中强化学习,使语言模型与指令保持一致,从而获得卓越的语言理解和生成能力。 2.2LLM功能的进步 为了将大型语言模型(LLM)的范围扩展到文本生成之外,当代研究研究了两种主要方法。首先,一些作品设计了统一的多式联运语言模型,如BLIP-2[17],它使用Q-former来协调语言和视觉语义,Kosmos-1[18],它将视觉输入集成到文本序列中,以合并语言和视觉输入。其次,其他研究侧重于exte的整合Rnal工具或模型。开创性的Toolformer[19]在文本序列中引入了外部API标签,方便LLM访问外部工具。因此,许多作品扩展了LLM,以涵盖视觉模式。VisualChatGPT[20]保险丝带有LLM的视觉基础模型,如BLIP[21]和ControlNet[22]。可视化编程[23]和ViperGPT[20]通过使用编程语言将LLM应用于视觉对象,将可视化查询解析为以Pythoncod表示的可解释步骤E.此外,研究人员还努力使这些LLM适应专门的视觉任务。例如,先知[24]和ChatCaptioner[25]分别将LLM纳入视觉问题回答和图像字幕任务中。 与这些约有区别疼痛,我们提议的HuggingGPT通过以下方式推进了更通用的人工智能功能:1)HuggingGPT使用大型语言模型作为接口,将用户请求路由到专家模型,有效地结合了语言理解能力具有其他专家模型专业知识的大型语言模型。2)HuggingGPT不限于视觉感知任务,还可以通过大型语言模型组织模型之间的合作来解决任何模式或领域的任务。钨在大型语言模型的规划中,可以有效地指定任务过程并解决更复杂的问题。3)HuggingGPT采用更开放的方法,根据模型描述分配和组织任务。通过只提供model描述,HuggingGPT可以持续方便地集成各种专家模型,而无需更改任何结构或提示设置。这种开放和持续的方式使我们离实现更先进的人工智能又近了一步。 3拥抱GPT HuggingGPT是一个协作系统,由作为控制器的大型语言模型(LLM)和作为协作执行器的众多专家模型组成。HuggingGPT的工作流程包括四个阶段:任务规划、模型选择、任务执行和响应生成,如图2所示。1)LLM(例如ChatGPT)首先解析用户请求,将其分解为多个任务,并根据其知识规划任务顺序和依赖性;2)LLM分发解析的任务o根据HuggingFace中的模型描述进行专家模型;3)专家模型在推理端点上执行分配的任务,并将执行信息和推断结果记录给LLM;4)最后,LLM总结了执行过程Ess日志和推断结果,并将摘要返回给用户。 3.1任务规划 在HuggingGPT的第一阶段,大型语言模型接受用户的请求并将其分解为一系列结构化任务。复杂的请求通常涉及多个任务,大型语言模型需要确定依赖项和这些任务的执行顺序。为了提示大型语言模型进行有效的任务规划,HuggingGPT在其提示设计中采用了基于规范的指令和基于演示的解析。我们在下面的paragrap中介绍细节Hs。 基于规范的指令任务规范为任务提供了一个统一的模板,并允许大型语言模型通过插槽归档进行任务解析。HuggingGPT设计了四个用于任务解析的插槽,即任务类型,任务ID、任务依赖项和任务参数: •任务ID为任务规划提供了一个唯一的标识符,用于引用依赖任务及其生成的资源。 •任务类型涵盖语言、视觉、视频、音频等方面的不同任务。C当前支持的HuggingGPT任务列表见表1、2、3和表4。 •任务依赖项定义了执行所需的先决条件任务。只有当所有先决条件相关任务完成时,任务才会