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…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...