7天狂揽 1.3w star 的 MetaGPT,他们的目标让软件公司为之一惊
在 AI 产品爆炸的今天,拥有各种本领的 AI 产品层出不穷,但 MetaGPT 的出现仍然显的格外耀眼,其可以实现只输入单一 prompt,就可以输出需求分析、需求文档、技术架构、最终代码等等产物,这相当于一个开发团队的输出成果,为何 MetaGPT 拥有此等本事,且听我娓娓道来。
MetaGPT 是一个多代理协同的元编程框架(META PROGRAMMING FOR MULTI-AGENT COLLABORATIVE FRAMEWORK),读起来感觉有些拗口?
那你需要首先了解一下什么是多代理的语言模型,这里先容我讲一个故事:
想必大家都用过 ChatGPT 或者和它类似的生成式 AI 程序,他就像一个知识丰富的老者,每当你向他进行提问时,或者换句话说向他输入一个 prompt 时,他都会用他渊博的知识对你进行解答,让我们带入一个场景,某一天你想让 ChatGPT 给你生成一份低脂健康菜谱,当你输入相应的提示词时,它给你返回了所需要的食材,但你突然发现有一道菜你不会做,这时,你又需要问它关于这道菜的制作流程,等你知道这道菜的制作流程后,你突然发现有一个食材你不知道哪里有卖,这时你还需要查找该食材的购买方法... ...
看到这里,想必聪明的你一定想到了,既然 AI 懂得这么多,为什么还需要一次又一次的进行询问呢?它自己应该可以分饰多个角色,可以既是一个营养师,也是一个大厨,还可以是一个采购专家,而我们只需要提出一个需求,这些 AI 角色就可以各司其职帮我解决问题。
没错!这就是拥有多个代理的语言模型,像营养师、大厨、采购专家,它们就是一个个的代理,它们经过专属领域知识的训练,是各自领域的专家,重要的是他们之间懂得协作,可以合作解决问题。这就是 MetaGPT 要做的事情,只不过它专攻的是软件领域,培养的专家是产品经理,项目经理,架构师和开发工程师,就和现实的软件公司一样,他想通过这些 AI 专家来干掉软件公司!
说了这么多,接下来我们来了解一下 MetaGPT 是如何实现多代理间的协同的:
MetaGPT 的框架主要分为两个层级,分别是 基础组件层(Foundation Components Layer),协同层(Collaborations Layer),让我们对这两个层级分别进行介绍:
基础组件层(Foundation Components Layer):基础组件,顾名思义,其是为上层提供基础能力的,包括 AI 代理的角色设置,代理角色可以执行的动作,代理角色们所处的环境以及共享的记忆等
协同层(Collaborations Layer)是 MetaGPT 的核心功能所在,包含其两大法宝分别为 封装工作流程(Encapsulating Workflows),知识共享(Knowledge Sharing)。
-
封装工作流程(Encapsulating Workflows):
工作流是人们对从事工作协同的总结和提炼,是来自人类社会的智慧,我们可以将总结和提炼出的流程称作标准化操作流程(Standardized Operating Procedures),简称 SOPs。
对于标准化操作流程来说,我们需要关心的是任务拆解包含哪些流程,由哪些角色参与了流程,以及每一步流程的标准化输出是什么。
-
知识共享(Knowledge Sharing):
可以理解为不同角色间存在着一个消息中心,他就像是这些角色的司令,在统领着他们,把控整个流程。
它负责实现不同角色的消息传递,并且也负责通知在当前流程轮到那个角色需要干活了。
在 MetaGPT 中每一个角色就相当于一个 AI 代理,你需要填写它的名称,职业,目标,以及对它的约束条件,角色构建完成后就会根据 SOPs 给它分配到相应的流程中,就可以让它开始上班了!
那么 MetaGPT 中软件开发的 SOPs 是什么样的呢?
对于用户输入的需求,首先由产品经理角色进行处理,该角色的标准化输出包括 :
-
产品目标
-
用户故事
-
竟品分析
-
需求分析
-
需求池
这些标准化的输出内容会进入共享知识库,从而让下一节点的角色可以学习。接下来由架构师的角色进行架构设计,该角色的标准化输出包括:
-
程序调用图(时序图,类图)
-
程序文件列表
紧接着就由项目经理进行项目分析,该角色的标准化输出包括:
-
任务分析
-
任务列表
-
逻辑分析(即每个文件的作用)
完成角色的标准化输出后,就可以由工程师进行开发,这时,该角色的标准化输出为每一个文件的代码内容。最后一个步骤则是 QA 环节,测试工程师会 review 每一个文件的代码,最终输出程序代码本体。
从上述流程来看, MetaGPT 相当还原一个标准的程序开发流程,通过该流程串联其每一个 AI 代理角色进行工作,简直就像是一个程序生成车间!
说到这里你有没有很心动,也想试用一下 MetaGPT,当然没问题,MetaGPT 是完全开源的,你可以在 Github Repo 上来访问其使用方法,这里我只做一个简单的介绍
-
确保在你的环境中存在 node 和 npm,并且使用 npm 安装 mermaid-cli :
sudo npm install -g @mermaid-js/mermaid-cli
-
确保你的环境中存在 python,并且版本为 v3.9;
-
克隆 MetaGPT 到本地,并且安装依赖:
git clone https://github.com/geekan/metagpt
cd metagpt
pip install -e.
-
设置你的 AI token,通常使用 ChatGPT 4.0 API token :
// config/config.yaml
OPENAI_API_KEY: "your-openai-token"
-
现在你就可以尝试输入你的 prompt :
# Run the script
python startup.py "Write a cli snake game"
运行后代码以及相应的设计文件会生成在 workspace 目录下,接着就可以运行生成后的代码:
# workspace/your-project
python main.py
就现阶段来说, MetaGPT 还远远不能替换掉软件公司,因为软件开发是一个不断迭代改进的过程,而只通过一句话的 prompt 还是远远不能生成一个完整的软件,其还需要增加更多可以对程序进行设计的节点,例如反复的需求讨论,以及增加 ui 设计,数据库设计等流程,AI 自动化的程序设计还有很长的路要走。
但它的出现也向我们传递了一个信号,即:这是一个程序开发走向工业化的时代,而像 MetaGPT 这样的多代理协同编程框架必然将如同蒸汽机一样,带领我们打开新时代的大门。
那么,如何在变化中求生存,如何在颠覆中找到新风口呢?鼎道智联一直在探索新兴科技技术,并且,DingOS 智能操作系统也正在探索利用这些新兴技术,来实现“助天下人尽享智能物联服务”。如果你也认可我们的想法,欢迎关注我们加入鼎道生态~
相关文章:

7天狂揽 1.3w star 的 MetaGPT,他们的目标让软件公司为之一惊
在 AI 产品爆炸的今天,拥有各种本领的 AI 产品层出不穷,但 MetaGPT 的出现仍然显的格外耀眼,其可以实现只输入单一 prompt,就可以输出需求分析、需求文档、技术架构、最终代码等等产物,这相当于一个开发团队的输出成果…...

工控网络协议模糊测试:用peach对modbus协议进行模糊测试
0x00 背景 本人第一次在FB发帖,进入工控安全行业时间不算很长,可能对模糊测试见解出现偏差,请见谅。 在接触工控安全这一段时间内,对于挖掘工控设备的漏洞,必须对工控各种协议有一定的了解,然后对工控协议…...

python+opencv+机器学习车牌识别 计算机竞赛
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器学习的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖,适…...
魔域服务端数据库说明
Magic.DB MagID: 魔法ID Mag:Magic MagName: 魔法名称 EffectType: 效果类型 Effect: 效果 Spell: 魔力(魔法值) Power: 能力,力量 MaxPower: 最大能力 DefSpell: 变化后的魔力Def:deformation DefPower: 变化后能力 DefMaxPower:…...

笔记本无线网卡MAC一直改动
今天在网管处把我无线网卡的MAC地址添加后,回来链接无线网却一直显示网络链接失败,以为是自己的驱动问题,去官网下载了最新的驱动结果依然无法链接。之前在家或者公共场合链接WiFi从来没有出现过类似情况。 百思不得其解之际发现自己的无线网…...

【Tomcat】Apache发布两个新版本Tomcat修复多个Bug
Apache 官网发布了两个最新的 Tomcat 版本包,分别是:8.5.94、9.0.81 这两个最新版本修复了多个漏洞,统计信息如下表所示。有关漏洞的详细信息,请查阅官方相关文档(见:参考)。 严重等级漏洞说明…...

Empowering Low-Light Image Enhancer through Customized Learnable Priors 论文阅读笔记
中科大、西安交大、南开大学发表在ICCV2023的论文,作者里有李重仪老师和中科大的Jie Huang(ECCV2022的FEC CVPR2022的ENC和CVPR2023的ERL的一作)喔,看来可能是和Jie Huang同一个课题组的,而且同样代码是开源的…...
LeetCode 2652. 倍数求和【数学,容斥原理】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
ansible-playbook剧本
一,playbook组成: (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates&…...

竞赛选题 深度学习LSTM新冠数据预测
文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 …...

机械设计师应该在工作中培养哪些良好习惯?
图纸规范 1、一定要按照制图标准设计图纸!图纸上任何一条直线(无论是点划线、粗实线、细实线等等)、数值、公差、图标等,都必须有理有据,不能想当然。图纸是产品生产的基础,无论是生产、加工、装配&#x…...

小程序新增功能页面
需求背景: 小程序主页面有个报名板块,我打算替换主页面报名板块菜单,迁移到我的页面里面, 替换成资讯栏目,我喜欢分享最新技术,开源课题,IT资讯,本想做成论坛的效果,由于时间问题,先替换添加板块 替换后效果: 模块功能: 添加、修改、删除、查看 文件目录:// 添…...
LeetCode每日一题——2652. Sum Multiples
文章目录 一、题目二、题解 一、题目 Given a positive integer n, find the sum of all integers in the range [1, n] inclusive that are divisible by 3, 5, or 7. Return an integer denoting the sum of all numbers in the given range satisfying the constraint. E…...
Python问答题(更新中)
1. 列表(list)和元组(tuple)有什么区别? 列表是可变的,创建后可以对其进行修改;元组是不可变的,元组一旦创建,就不能对其进行更改。列表表示的是顺序。它们是有序序列&a…...

服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复
最近一段时间内,相信很多使用金蝶或用友的办公软件的企业,有很多都经历了locked勒索病毒的攻击,导致企业服务器被加密无法正常使用,严重影响了企业的正常工作。通过云天数据恢复中心的解密恢复发现,在今年locked勒索病…...

游游的字母串 (环形数组两点之间的位置)
题目链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 yab 输出 3 思路: 暴力枚举,全部变成对应的26个字母字符需要的操作步数,取最少的一个操作步数, 这里的操作步数࿰…...

Flink的ResourceManager详解(一)
ResourceManager 总结 一、概述 1、ResourceManager 管理 Flink 集群中的计算资源,计算资源主要来自 TaskManager 组件。 2、如果集群采用 Native【本地模式】部署,则 ResourceManager 会动态地向集群资源管理器申请 Container 并启动TaskManager&…...
Tornado 可以使用 nginx 提供负载均衡
Tornado和nginx都是网络服务器的重要组成部分,但它们在职能和使用场景上存在显著的差异。 Tornado可以独立运行,而不需要依赖nginx等其他Web服务器。这是因为Tornado本身就是一个完整的Web服务器,可以独立处理HTTP请求并返回响应数据。 ngi…...

Golang 面向对象编程 多态
基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例,u…...

WLAN 无线案例(华为AC控制器配置模板)
实验说明: 无线用户VLAN 30 192.168.30.0/24 AP和AC用VLAN 20 192.168.20.0/24 有线网段 VLAN 10 192.168.10.0/24 步骤一:全网互通 sw1: sysname sw1 # vlan batch 10 20 30 # dhcp enable # ip pool 20 gateway-list 192.168.20.1…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...