热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >MetaGPT:重塑自然语言编程,多智能体引领代码生成与协同的革新探索

MetaGPT:重塑自然语言编程,多智能体引领代码生成与协同的革新探索

来源:互联网 更新时间:2026-08-27 14:22

近年来,多智能体协作与大语言模型的结合已经成为人工智能领域最令人兴奋的方向之一。今天这篇内容,我们来聊聊MetaGPT——这个在业界引起广泛关注的开源框架,看看它在多智能体协作和智能体能力增强方面到底做了哪些有意思的工作。

整个分享会围绕四个部分展开:MetaGPT的发展与影响、多智能体的协作与自我提升、智能体能力的进一步增强,以及最后的问答环节。

MetaGPT的发展与影响

MetaGPT:或许是中国历史上涨速最快的开源工程

MetaGPT是DeepWisdom在2023年6月正式开源的一个多智能体框架。说实话,它一经发布就瞬间引爆了开发者圈。到今天,GitHub上已经收获了超过40K的star,多次拿下GitHub Trending的第一名。到2023年8月,相关的技术论文不仅被公布,还拿下了ICLR 2024 oral的机会——在2024年ICLR所有基于LLM的Agent相关论文中,它的综合评分排在第一。

目前,MetaGPT的社区总人数已经超过了一万人。上图右上部分展示的是社区小伙伴们基于MetaGPT框架开发的各种有趣应用,从创意工具到实用项目,应有尽有。

MetaGPT:多智能体协同的新范式

那么,MetaGPT凭什么能吸引这么多关注?背后的原理到底是什么?

我们先看一个大背景。随着大语言模型能力的持续提升,很多常见任务开始和LLM结合——代码补全、客服对话等等,表现都不错。但一旦面对更为复杂的人类社会常见问题,比如软件生成开发、项目级别的代码生成,大语言模型就常常“翻车”了:要么产生幻觉,要么理解不了从自然语言到代码的对齐过程,很难把一句简单的自然语言需求直接翻译成项目级别的代码,在数据分析过程中也常常搞不定动态变化的问题。

不过,人类社会在实践中其实已经沉淀了非常多的最佳实践。举个例子,软件开发中的瀑布流模式,就是把一个复杂的长周期任务分解成不同专家或角色的分工,每个角色都能提供高质量的输出,最终完成整体工作。

MetaGPT的思路很简单:把人类社会的最佳实践用来驱动大语言模型,自动实现这些复杂工作。具体来说,MetaGPT把人类社会中的标准化操作程序(SOPs),通过元编程的方式嵌入到智能体的开发框架中,自动驱动智能体完成结构化协作。通俗点讲,就是在框架里设计了软件开发流程中的各个角色——产品经理、架构师、项目经理、开发工程师、测试工程师等等。

当产品经理接收到用户的需求时,它会利用自己的专业知识和背景,把一个简单模糊的需求转化为结构化的详细信息,包括竞品分析、用户故事、开发任务描述等等。这些信息对于大语言模型来说至关重要——有了这些,后续的角色才能把任务转化为代码。

接下来,架构师会根据这些已经扩展的丰富结构化表述,自动生成相关的任务列表、API设计以及项目技术设计。这一步,本质上是从自然语言到符号语言的转换。通过这种转换,LLM在解决复杂代码生成任务上又往前迈了一大步。

最后,工程师根据前面生成的API设计文档或简化的伪代码,进一步生成有效的代码。整个流程环环相扣,代码生成能力自然就提升了。

MetaGPT:实际应用与优势

在多智能体协作的框架下,MetaGPT在相对简单的项目级软件生成任务上已经取得了相当不错的成果。和同期其他框架相比——比如生成2048这样的小游戏,或者创建CRUD管理系统——MetaGPT的完成度明显更高。原因也不复杂:它融合了人类知识,而其他框架在这方面往往有短板——要么生成的代码过于简单,要么代码完成度不够,整个项目直接“崩”了。

在MetaGPT里,多个角色的输出呈现瀑布流形式。这些输出文档可以实时显示在人机交互的工作空间中,开发者或用户可以随时访问和调整。这对于基于多智能体协同框架的开发者来说,无论是需求细化还是代码优化,都提供了极大的便利。

MetaGPT的核心任务,是把复杂或模糊的高层用户意图,翻译成复杂且长的多文件代码片段。为了验证它是否真的能提升大语言模型的代码生成效果,我们做了量化实验——在HumanEval和MBPP这两个数据集上进行比较。结果很有意思:单独使用GPT-4,在HumanEval数据集上的Pass@1只有67分;但基于MetaGPT的多角色协作,这个数字直接冲到了85.9。多智能体协作的范式,确实能帮助开发者生成更高质量的代码。

多智能体协作与自我提升

软件公司:MetaGPT “Create a 2048 game.”

MetaGPT开源框架提供了支持瀑布流式软件开发流程的智能体和协作模式。借助它,人们可以非常方便地完成软件开发工作。上图展示了一个例子——仅需大约20行代码,就能创建一个软件公司团队,并且开始生产任务。

MG虚拟小镇:记忆的重要性、近因性,和相关性

作为一个多智能体框架,MetaGPT还支持在不同协作场景中进行模拟和仿真。在一些社会学仿真中,研究者们特别希望看到不同智能体在模拟环境中如何交互。整个环境会提供基础信息——地点、生活状态,甚至每个智能体都有自己的个人画像。

基于MetaGPT,我们创建了一个虚拟小镇,并在模拟过程中探索了可以增强框架的技术。在这个过程中,我们发现社会学仿真对大语言模型的要求非常具有挑战性:需要输出的内容以及所依赖的上下文,通常非常复杂且长期,这些信息可能分散在不同的时间周期和生活片段中。所以,如何让智能体在需要输出有效结果时,能够检索和利用这些记忆和内容,就成为一个必须解决的问题。

除了长期记忆内容本身的连贯性管理,还需要考虑大语言模型窗口的限制。在框架层面,我们需要一个自主、方便且通用的记忆管理机制。为此,我们更新了MetaGPT的记忆模块设计,增加了几个关于记忆存储和检索的重要方法——为每个存储和应用的记忆评估其重要性、近因性和相关性。当Agent检索上下文并提交给大语言模型时,它会综合考虑不同记忆节点的因素,根据动态组合的上下文来生成回复。

MG狼人杀智能体:经验获取

除了社会模拟场景,还有很多学术工作致力于研究基于大语言模型的推理能力和知识在游戏中的应用。大家很好奇:基于LLM的智能体,能不能在游戏中做出高水平的表现?

我们创建了基于MetaGPT的狼人杀智能体团队——6到8个狼人杀智能体,要求它们在游戏中对局中产生有效互动。我们观察了每种玩家的胜率:狼人的胜率够不够高?不同策略下村民的胜率是不是受到了压制?结果发现一个有趣的现象:在当前大语言模型的基础数据下,初步配置的6到8人狼人杀游戏中,村民的胜率非常低。原因主要是村民经常由于对局势判断失误,或对伪装策略的理解不足,导致识别错误,或者被投票淘汰。所以我们希望通过框架来增强这些智能体。

在游戏对局中,理解对局以及通过反思能力形成经验,是相当重要的。智能体需要根据对局信息来增强自己的策略效果。因此,我们增加了一些基础的反思和经验池——这些经验池可以在实际游戏中获取,通过简单的经验检索和判断来优化当前的输出。在调用大语言模型时,可以动态嵌入相关的上下文,根据上下文来优化对局经验。

MG Minecraft:程序记忆与终身学习

Agent这个概念,并不是大语言模型独有的。在很多强化学习的工作中,Agent的概念早已存在。在游戏仿真场景中,除了文本游戏仿真,还有很多工作致力于探索基于智能体和LLM的游戏环境建模和反馈,比如Minecraft。

举个例子,Minecraft中一个常见的任务是挖钻石。了解Minecraft背景的人都知道,挖钻石是一项相当困难的任务。它不仅需要智能体自动升级工具、解锁每个工具的使用,还要求智能体对周围环境进行判断和任务调整,以提高挖到钻石的可能性。

通过参考Minecraft的一些经典工作(比如Voyager),我们基于MetaGPT构建了一个Minecraft游戏团队,帮助玩家更好地解锁技能树,提高生存率或任务解决效率。我们为Minecraft游戏智能体构建了四个小型的LLM智能体,分别负责课程学习、技能检索、代码生成和执行反馈。这些智能体遵循一套基础的任务优化SOP,帮助Minecraft玩家在游戏中成功且最高速地获取物品和解锁技能。

和经典的Voyager对比,相同轮次下,MetaGPT的多智能体团队能获得更多的既有物品,而Voyager的获取速度相对不稳定。在挖取钻石这类比较困难的任务中,MetaGPT的多智能体可以在16轮内挖到钻石,输出相对稳定;而Voyager通常需要30到50轮才能完成。

探索智能体能力增强

技术挑战:HumanEval

前面提到的多智能体在不同场景的应用工作,实际上是为了辅助我们解决软件开发任务之外的问题——赋予多智能体研究的使用者增强Agent的能力。在MetaGPT的框架中,我们增强了它的记忆能力、反思能力、经验获取能力,包括长期任务规划的能力。

回到单Agent的效果提升。针对代码补全和代码生成任务,目前的MetaGPT智能体还缺什么?在典型数据集HumanEval上,GPT-4只能达到67分(这是较早的数据)。而在引入SOP流程和执行反馈流程后,MetaGPT能达到86分。那么突破点在哪里?我们发现,之前的工作中缺少一个重要环节——没有验证执行的代码是否可靠。而人类可以依赖代码执行结果,通过频繁的代码调试和修改来提高问题解决效率。

在代码补全任务中,我们能不能引入相关能力来提升Agent的编码效果?答案当然是肯定的。在当前工作中,我们为每个编码智能体引入了代码反馈和代码执行能力,要求每个智能体自主验证所生成的代码,弥补大语言模型在生成和解释上的幻觉问题。

下一阶段,大语言模型除了在单函数补全任务上的能力(HumanEval是一个简单的单函数补全数据集),还应具备模仿人类进行repo级别的代码修复、代码生成,甚至整个repo级别代码架构生成的能力。比如最近有一项叫Devin的工作——由国外团队提出的LLM智能体,可以在GitHub上找到一个issue,根据描述修复对应的repo代码,并自主提交修复代码。我们也期待MetaGPT能完成这样的任务。

Data Interpreter:重塑数据科学领域

基于前期在代码工作上的探索,我们在2024年3月提出了一个叫Data Interpreter的工作。这项工作额外探索了基于代码解释和代码执行的能力在解决数据科学和机器学习相关任务时,MetaGPT能达到什么程度。与一些先进框架(比如OpenInterpreter、TaskWea ver、AutoGen)进行比较后发现,MetaGPT的Data Interpreter在机器学习任务上从0.86提升到了0.95,整个开放世界任务的完成率提高了112%。

Data Interpreter本质上基于任务规划、任务执行、动态调整以及工具集成能力。这些能力,是目前基于LLM的Agent开发的常见范式。

基于代码解释器的能力补充

数据科学领域的任务和代码生成任务有所不同。经典的机器学习应用场景中,任务和数据都是动态变化的——数据的行和列在执行过程中经常发生变化。比如在数据清洗和特征工程中,数据的列就可能发生大量变化。如何让大语言模型有效捕捉输入信息的变化,并生成适应这种变化数据的有效代码,是数据科学领域面临的一个挑战。

此外,我们在代码解释器的基础上为智能体增加了基于代码执行结果的反馈,但这种反馈并不完备——代码执行不报错,并不意味着代码写对了,可能存在逻辑或语义理解上的问题。因此,我们在工作中引入了基于验证和基于经验驱动的推理,要求数据智能体在编写完代码后主动进行一次白盒测试,验证代码逻辑,并基于已有经验补充代码debug的效果。

在机器学习场景中,很多人类专家依赖现有知识或特定行业的背景知识和代码,而这些信息可能并不存在于大语言模型的语料库中。因此,我们提出了一些创新的工具集成和工具进化方法,使数据智能体能够动态结合本地代码和已有知识来产生相关代码,提高效果。

上图左上是数据智能体自动执行Kaggle数据集的任务并产生数据可视化的结果——既可以与人类实时交互,也可以被智能体自身捕捉为上下文。智能体将根据执行结果调整代码,也会根据执行报错进行反思和优化。上图右上是基于英伟达股价做的趋势预测,右下是智能体做的深度学习相关实践——一个人脸识别的任务。

动态规划与层次图结构

这里着重分享一下数据智能体中的规划器——动态规划与层次图结构。基于之前从事自动机器学习的工作背景,我们引入了一种在自动机器学习领域常见的层次图分类方法。具体来说,用户的输入会首先由数据智能体进行两层分解。第一层是任务规划——对待解决问题进行更细粒度的task level规划和推理,将用户的目标转化为任务图结构。然后,在具体执行过程中,基于任务图结构进一步组合相关代码,进行代码层面的图结构处理和生成。

这种做法的好处在于,基于任务粒度的规划,可以让Data Interpreter广泛适应不同的任务场景,而无需通过提示词强制和生硬地切入来优化数据效果。另一个引入的能力是任务粒度的动态管理——当任务在执行过程中被修改或编辑时(比如增加了一个需求或修改了输出要求),Data Interpreter的智能体可以根据人类的修改信息自动重新规划所有下游任务,并根据规划内容进行数据合并,完成相关任务节点的更新。

如果Data Interpreter的任务在执行过程中失败了(比如代码一直写错无法执行,或者出现数据库连接问题),智能体会暂停当前计划的节点,根据失败原因自动对节点进行更细致的拆解和规划,生成所有与当前任务相关的下游任务,尽可能完成整个任务的实现。

工具集成与应用场景

我们的一项创新实践是给数据智能体做了工具的集成和应用。和常见的function calling方法不同,这里的工具指的是一个完整的代码片段。智能体或大语言模型可以在一次代码生成的过程中,既生成本地已有的代码,也生成自有知识的代码,并且将它们动态组合在一起——就像人类把本地已有的代码片段和新写的代码片段自动融合的过程。

整个过程会经历两个阶段。第一个阶段是工具的推荐。在实际工作中,会有很多本地的代码片段。我们可以把这些代码片段注册到智能体的工具箱中,让智能体关注到工具的实际代码片段和代码描述。在实际应用过程中,Data Interpreter会根据每个任务的自然语言描述,动态进行工具推荐、筛选和排序,选择top k个最适合解决当前任务的工具。这些被选中的工具可以看作是独立的代码片段——可能是一个类、一个脚本、一个函数等等。然后,Data Interpreter会基于当前要解决的问题,自动进行代码层面的组合和规划,将检索和排序得到的代码片段与自己要解决的任务所需的代码片段组合在一起,完成工具的组合和推荐。工具在执行过程中会得到验证,验证后的工具可以被进一步自动加入到工具箱中,完成工具使用的闭环和进化。

上图展示了我们基于Data Interpreter开发的不同工具——比如stable diffusion的调用代码,它可以自动结合相关代码去调用stable diffusion完成多模态任务;还加入了一些图像去背景的代码片段,让Data Interpreter在解决问题的过程中能够调用这些相关工具。甚至我们还开发了一些网页仿写和邮件回复的工具,让它增强自己解决实际问题的能力。

能力效果提升

我们对效果提升进行了量化分析。我们收集了一个机器学习的基准测试集——从Kaggle上收集的20个经典机器学习数据集。选择了经典的开源框架,在两个维度上进行对比:第一是任务完成度指标——是否能够完全正确地完成一个机器学习建模任务,从数据读入到数据清洗、特征建模、模型训练、模型评估、输出指标等等;第二是在具体数据集上的输出效果——比如对于Titanic数据集,要求输出ACC指标,关注在这个数据集上能够通过数据拟合到什么程度。每个数据集都有自己的相关指标,最后综合任务完成度和数据效果指标得到综合得分。

上图左上显示了综合得分效果指标。可以看到,Data Interpreter在7个典型数据集上的得分都是接近最高的,最终综合得分的平均分从同期其他框架的最高分0.86提升到了0.95。同时,我们也收集了一些开放任务——比如图像去背景、网页搜索、网页仿写等。这些任务相比软件开发任务,任务粒度更细,流程也相对更复杂。在这样的任务中,Data Interpreter也能获得比较好的完成度,在大部分任务上可以基于自己工具的能力来解决任务场景所需要的特殊技能。

上图右边显示的是Data Interpreter在实际解决问题过程中自动生成的数据分析图像——这对于智能体自身在解决问题和人类介入的过程中都很有帮助。下一阶段,针对Data Interpreter现有的能力,我们正在做自动机器学习的工作。我们希望Data Interpreter能通过自己在一个数据集上多次调试的经验发现优化方法,自动做每一步搜索空间的裁剪和算子的优化。比如它可以在Titanic数据集上从0.91提升到0.97。希望它也能在一些自己不常见的任务上学会相关技能,并做自我的迭代和优化。这也是Data Interpreter接下来的工作重点。

问答环节

Q1:Data Interpreter和其他团队的CodeInterpreter比较大的差异点是什么?

A1:我们在过程中也尝试过CodeInterpreter,但发现它很难自动正确地完成数据建模任务。除了需要更多的人工引导外,还必须明确告诉它数据的变化、期望的效果以及数据之间的依赖关系,才能逐步完成任务。Data Interpreter除了完成自动化的Plan外,还做了大量的自动调试,让它能自行发现和解决问题。另外,与CodeInterpreter不同的是,Data Interpreter可以自动嵌入本地代码和算法。对大多数用户来说,如果已经有大量项目代码,他们可以快速接入Data Interpreter,让它利用这些代码来解决问题。

Q2:对比AutoGen,MetaGPT在哪些方面或方向上有更强的核心优势?

A2:AutoGen是一个非常出色的框架,它简化了人们在设计和使用Agent时的方法和门槛。但使用AutoGen时,人们仍然需要配置Agent的流程或设置交互模式。MetaGPT则将这种配置和设计融入到了Agent的开发过程中。使用时只需定义好Agent的交互方法或执行任务的流程,用户就可以直接开发智能体并进行动态修改。这是MetaGPT和AutoGen之间的一个典型区别。MetaGPT在支持各种不同的多智能体应用场景和环境方面已经做了大量工作,能够帮助各个研究领域的多智能体研究者快速接入这样的环境,而无需考虑智能体在环境中观察和执行任务时的工程问题。目前,MetaGPT在Agent和Action层面都做了很多原子化的设计,在SOP的嵌入中使用了Meta Programming的思想——大家会发现很容易复用这些Agent和Action。

Q3:如何从大量的tool中选择比较好的tool?如何保证工具使用的效果?

A3:在当前Agent使用场景中,工具选择是一个普遍存在的问题。从我们的工作经验来看,前期的工具选择流程不仅需要召回,还需要排序,以便根据任务和工具代码描述准确理解工具并选择合适的工具。为了保证工具的使用效果,一些有效实践是通过ensemble、debating或review来实现的——不仅让工具生成结果,还让它review自己的结果,或者引入一个额外的智能体来review其结果,或者让它们产生辩论,发现前期选择中的问题。此外,很多经典工作(比如多次结果投票等)也能辅助提高解决问题的准确率。

以上就是本次分享的内容,谢谢大家。

关于宇宙的好的网名有哪些
关于宇宙的好的网名有哪些

类型:角色扮演

大小:1

语言:简体中文

平台:互联网

游戏下载

热门手游

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc