凭借像ChatGPT这样的大型语言模型(LLMs),OpenAI目睹了企业和用户采用的激增,目前每月收入约为8000万美元。根据The Information最近的一份报告,这家总部位于旧金山的公司报道称其年收入有望达到10亿美元。
上次我们深入研究了AutoGPT和GPT-Engineering,这些早期主流的基于开源LLM的人工智能代理旨在自动化复杂任务。虽然有前景,但这些系统也存在一些问题:结果不一致、性能瓶颈以及处理多方面需求的限制。它们在代码生成方面表现出色,但其能力通常止步于此。它们缺乏关键的项目管理功能,如PRD生成、技术设计生成和API接口原型。
MetaGPT是一种利用Sirui Hong的大型语言模型的多代理系统,将标准化操作规程(SOPs)与基于LLM的多代理系统相结合。这种新兴范式打破了LLMs在促进复杂现实世界应用的有效协作和任务分解方面的现有限制。
MetaGPT的美妙之处在于其结构化。它利用元编程技术实时操作、分析和转换代码。目的是实现一种灵活、适应动态编程任务的敏捷软件架构。
敏捷开发
SOPs在这里起到元函数的作用,根据定义的输入协调代理生成代码。简单来说,就好像将一支高度协调的软件工程师团队转变成一个适应性强、智能化的软件系统。
理解MetaGPT框架
MetaGPT框架(https://arxiv.org/pdf/2308.00352.pdf)
基础和协作层
MetaGPT的架构分为两个层级:基础组件层和协作层。
- 基础组件层:这一层主要关注单个代理的操作,并促进系统范围的信息交流。它引入了核心构建模块,如环境、记忆、角色、动作和工具。环境为共享工作空间和通信路径打下基础,而记忆则用作历史数据存档。角色封装领域专业知识,动作执行模块化任务,工具提供常见服务。该层本质上充当代理的操作系统。关于这些模块如何协同工作的更多细节,请参阅文章《超越ChatGPT;AI代理:一个新的工作世界》
- 协作层:建立在基础组件之上,这一层管理和简化单个代理的协作努力。它引入了两种机制:知识共享和封装工作流程。
- 知识共享:这充当将代理绑定在一起的协作胶水。代理可以以不同的层次存储、检索和共享信息,从而减少冗余,提高运行效率。
- 封装工作流程:这就是标准化操作规程(SOPs)发挥作用的地方。SOPs作为将任务分解为可管理组件的蓝图。将这些子任务分配给代理,并将其绩效与标准化输出对齐。
MetaGPT还使用“角色定义”来初始化各种专业化代理,如产品经理、架构师等,就像我们上面讨论的那样。这些角色具有名称、概况、目标、约束和描述等关键属性。
https://arxiv.org/pdf/2308.00352.pdf
此外,“锚定代理”为这些代理提供特定角色的指导。例如,产品经理的角色可能以“高效创建成功的产品”为约束条件。锚定代理确保代理的行为与总体目标一致,从而优化性能。
MetaGPT代理的认知过程
MetaGPT能够观察、思考、反思和行动。它们通过特定的行为函数,如_think()
、_observe()
、_publish_message()
等进行操作。这种认知建模使得代理能够成为主动学习者,能够适应和演化。
- 观察:代理扫描环境并将关键数据纳入记忆。
- 思考和反思:通过
_think()
函数,在采取行动之前角色进行深思熟虑。 - 广播消息:代理使用
_publish_message()
来分享当前任务状态和相关行动记录。 - 知识沉淀和行动:代理评估传入的消息,并在决定下一步行动之前更新其内部存储库。
- 状态管理:通过任务锁定和状态更新等功能,角色可以顺序处理多个动作,模拟真实的人类协作。
MetaGPT的代码审查机制
代码审查是软件开发生命周期中的关键组成部分,但在一些流行的框架中却缺失。MetaGPT和AgentVerse都支持代码审查功能,但MetaGPT更进一步。它还结合了预编译执行,有助于早期错误检测,从而提高代码质量。考虑到编码的迭代性质,这个特性不仅仅是一个附加功能,而是任何成熟的开发框架的要求。
在多个任务上进行的定量实验表明,MetaGPT在几乎每个场景中都优于其竞争对手。Pass@1是衡量框架在单次迭代中生成准确代码的能力的指标。这个指标在实际环境中更真实地反映了框架的实用性。更高的Pass@1率意味着更少的调试和更高的效率,直接影响开发周期和成本。与CodeX、CodeT甚至GPT-4等其他先进的代码生成工具相比,MetaGPT表现出色。该框架在HumanEval和MBPP基准测试中实现了81.7%至82.3%的Pass@1率。
比较MetaGPT与其他领先模型之间的MBPP和HumanEval指标(https://arxiv.org/pdf/2308.00352.pdf)
该框架还使用较少的标记和计算资源,在只有传统软件工程成本的一小部分的情况下实现了高成功率。数据显示,MetaGPT每个项目的平均成本仅为$1.09,这只是开发人员在执行相同任务时收费的一小部分。
在您的系统上本地安装MetaGPT的步骤
NPM、Python安装
- 检查和安装NPM:首先确保NPM已安装在您的系统上。如果没有安装,您需要安装node.js。在终端中运行以下命令检查是否已安装npm:
npm --version
。如果看到版本号,说明已安装。 - 要安装MetaGPT的依赖项
mermaid-js
,运行:sudo npm install -g @mermaid-js/mermaid-cli
或npm install -g @mermaid-js/mermaid-cli
- 验证Python版本:确保您使用的是Python 3.9或更高版本。要检查您的Python版本,请打开终端并键入:
python --version
。如果版本不是最新的,请从Python官方网站下载最新版本。 - 克隆MetaGPT存储库:使用命令
git clone https://github.com/geekan/metagpt
克隆MetaGPT GitHub存储库。确保您的系统中已安装Git。如果没有安装,请访问这里。 - 导航到目录:克隆后,使用命令
cd metagpt
导航到MetaGPT目录。 - 安装:使用命令
python setup.py install
执行Python安装脚本以安装MetaGPT。 - 创建一个应用程序:运行
python startup.py "ENTER-PROMPT" --code_review True
注意:
- 您的新项目现在应该在
workspace/
目录中。 --code_review True
将允许 GPT 模型执行额外的操作,以确保代码的准确运行,但请注意这将增加成本。- 如果在安装过程中遇到权限错误,请尝试以替代方式运行
python setup.py install --user
。 - 有关特定发布版本和更多详细信息,请访问官方的 MetaGPT GitHub 发布页面:MetaGPT Releases。
Docker 安装
对于那些喜欢容器化的人来说,Docker 简化了这个过程:
- 拉取 Docker 镜像:下载 MetaGPT 官方镜像并准备配置文件:
docker pull metagpt/metagpt:v0.3.1``mkdir -p /opt/metagpt/{config,workspace}``docker run --rm metagpt/metagpt:v0.3.1 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/key.yaml`` vim /opt/metagpt/config/key.yaml
- 运行 MetaGPT 容器:使用以下命令执行容器:
docker run --rm --privileged \`` -v /opt/metagpt/config/key.yaml:/app/metagpt/config/key.yaml \`` -v /opt/metagpt/workspace:/app/metagpt/workspace \`` metagpt/metagpt:v0.3.1 \`` python startup.py "创建一个简单且交互式的基于命令行的石头、剪刀和布游戏" --code_review True
使用您的 OpenAI API 密钥配置 MetaGPT
在初始设置完成后,您需要将 MetaGPT 与您的 OpenAI API 密钥集成。以下是所需步骤:
- 查找或生成您的 OpenAI 密钥:您可以在 OpenAI 仪表板的 API 设置下找到该密钥。
- 设置 API 密钥:您可以选择将 API 密钥放置在
config/key.yaml
、config/config.yaml
或将其设置为环境变量 (env
)。优先级顺序为config/key.yaml > config/config.yaml > env
。 - 要设置密钥,请导航到
config/key.yaml
并将占位符文本替换为您的 OpenAI 密钥:OPENAI_API_KEY: "sk-..."
请记住保护好您的 OpenAI API 密钥。永远不要将其提交到公共代码库或与未经授权的人分享。
用例说明
我给出了开发一个基于命令行的石头、剪刀和布游戏的目标,MetaGPT 成功执行了这个任务。
下面是展示生成的游戏代码实际运行的视频。
MetaGPT 演示运行
MetaGPT 提供了一个使用 Markdown 编写的系统设计文档,Markdown 是一种常用的轻量级标记语言。该 Markdown 文件包含了 UML 图表,从而提供了对架构蓝图的细粒度视图。此外,API 规范详细描述了 HTTP 方法、端点、请求/响应对象和状态码。
MetaGPT 输出 – 系统设计 Markdown
类图详细说明了我们的 Game
类的属性和方法,提供了一个易于理解的抽象。它甚至可以可视化程序的调用流程,有效地将抽象的想法转化为具体的步骤。
这不仅极大地减少了规划中的手动工作量,而且加快了决策过程,确保您的开发流程保持敏捷。通过 MetaGPT,您不仅可以自动化代码生成,还可以自动化智能项目规划,从而在快速应用开发中提供竞争优势。
结论:MetaGPT——革新软件开发
MetaGPT重新定义了生成式人工智能和软件开发的领域,提供了智能自动化和敏捷项目管理的无缝融合。它远远超越了ChatGPT、AutoGPT和传统的LangChain模型,在任务分解、高效代码生成和项目规划方面表现出色。了解更多信息,请访问
以下是本文的主要观点:
- 元编程的力量:通过采用元编程,MetaGPT提供了一个敏捷和适应性的软件框架。它超越了传统工具的狭隘功能,引入了一种变革性的方法,不仅处理编码,还处理项目管理和决策方面的问题。
- 双层架构:通过其基础和协作层,MetaGPT有效地创建了一个协同工作的生态系统,使代理能够像一个专业管理的软件团队一样协同工作。
- 优化的代码审查:MetaGPT不仅仅生成代码,还提供了预编译执行功能,这实际上是一个错误的预警系统。这不仅节省了调试时间,还确保了代码的质量。
- 认知代理:MetaGPT的智能代理具备_observe()、_think()和_publish_message()等认知功能,能够不断演化和适应,确保您的软件解决方案不仅仅是编码,而是“智能”的。
- 安装和部署:我们已经说明了MetaGPT可以轻松设置,无论您是通过npm和Python进行本地安装,还是通过Docker进行容器化。