41K star! 多智能体 MetaGPT 2 分钟上线需求,极致工程化!

在我们传统的软件开发团队中,一个草台班子通常会有产品经理、设计师、软件开发工程师、测试工程师,商业分析运营师等等。这些角色各司其职,共同合作,完成一个软件产品的开发和上线运营。

然而,今天,GitHub 上开源的 MetaGPT,可以帮你零成本搭建一个这样的草台班子,还有模有样的完成整个软件开发的各个工序,包括:

  • 需求分析:对你的一句话需求进行,需求分析,会产出需求文档
  • 架构设计:会进行架构设计,会给出架构设计图
  • 接口文档:会输出接口文档
  • 自动化测试用例:会输出自动化测试用例,保证产出的质量。

直到你的需求上线。

一言以蔽之,MateGPT 设计为了处理复杂任务,它可以将不同的角色分配给GPT模型,形成一个协作性软件开发团队

MetaGPT 的特点

MetaGPT 目前在 GitHub 上开源,地址:github.com/geekan/Meta... ,现在是40.4k星,这个项目的特点如下:

  • 多角色协作:MetaGPT 模拟了软件草台班子的运作方式,内置了产品经理、架构师、项目经理和工程师等角色,可根据需求进行任务分配和协作。
  • 简单易用:用户只需输入一行需求,MetaGPT 就能输出完整的软件开发流程与产物。
  • 强大的数据解释能力:内置的 Data Interpreter 模块,可以处理各种真实世界的问题,并具备数据分析和可视化能力。

源码一撇

我们可以看看产品经理这个角色他干了些什么事情:

py 复制代码
class ProductManager(Role):
    """
    Represents a Product Manager role responsible for product development and management.

    Attributes:
        name (str): Name of the product manager.
        profile (str): Role profile, default is 'Product Manager'.
        goal (str): Goal of the product manager.
        constraints (str): Constraints or limitations for the product manager.
    """

    name: str = "Alice"
    profile: str = "Product Manager"
    goal: str = "efficiently create a successful product that meets market demands and user expectations"
    constraints: str = "utilize the same language as the user requirements for seamless communication"
    todo_action: str = ""

    def __init__(self, **kwargs) -> None:
        super().__init__(**kwargs)

        self.set_actions([PrepareDocuments, WritePRD])
        self._watch([UserRequirement, PrepareDocuments])
        self.rc.react_mode = RoleReactMode.BY_ORDER
        self.todo_action = any_to_name(WritePRD)

    async def _observe(self, ignore_memory=False) -> int:
        return await super()._observe(ignore_memory=True)

这个 ProductManager 类代表了产品经理的角色,负责产品开发和管理。主要职责和具体工作如下:

主要职责

  1. 准备文档(PrepareDocuments)
    • 产品经理需要准备市场需求文档、用户故事、竞争分析等文档。这些文档是项目成功的基础,帮助团队理解和应对市场需求。
  2. 撰写产品需求文档(WritePRD)
    • 产品经理还需要撰写详细的产品需求文档(PRD)。这份文档详细描述了产品的功能、目标用户、使用场景等,确保开发团队能够准确理解并实现产品需求。

具体工作

属性

  • name: 产品经理的名称,默认是 "Alice"。
  • profile: 角色的描述,默认为 "Product Manager"。
  • goal: 产品经理的目标,即"高效创建满足市场需求和用户期望的成功产品"。
  • constraints: 限制条件,如需要使用与用户需求相同的语言进行无缝交流。
  • todo_action: 待办任务,初始化时设置为 WritePRD

方法

  • __init__(self, **kwargs) : 构造函数,进行初始化设置:
    • 设置产品经理需要执行的动作,例如 PrepareDocumentsWritePRD
    • 监听用户需求和文档准备的状态变化。
    • 设置反应模式为按照顺序执行(RoleReactMode.BY_ORDER)。
    • 初始化 todo_actionWritePRD
  • _observe(self, ignore_memory=False) :
    • 重写 _observe 方法,在忽略记忆的情况下调用父类的 _observe 方法,监控任务的执行状态。

其他不一一赘述,感兴趣可以翻看源码。

傻瓜式的安装与配置

安装

确保系统中已安装 Python 3.9+,可以使用以下命令进行安装:

bash 复制代码
pip install --upgrade metagpt
# 或者使用以下命令
# git clone https://github.com/geekan/MetaGPT && cd MetaGPT && pip install --upgrade -e .

使用示例

安装完成后,就直接可以在命令行中使用 MetaGPT:

bash 复制代码
metagpt "创建一个 2048 游戏"  # 这会在 ./workspace 目录下创建一个代码仓库

下图是生成的的 2048 这个游戏的效果,他们贴在了官网的 example 中。可以看到 性价比相当不错,只花费了0.4 刀,那还是gpt-4-turbo-preview 这个模型,如果是gpt-4o,那么可以显而易见的是更加便宜,而且,也不仅仅说是只能使用 OpenAI 的模型,国内的 kimi,开源的模型如,ollama / groq 也都是可用的。所以就算你手头拮据,使用开源的模型来体验下,也是可以的。

中间产物剖析

MetaGPT 会生成一系列中间产物,如需求文档、架构设计、代码实现等,这些产物可以帮助开发者更好地理解和实现需求。比如,我看到 2048 这个游戏的产物中,有系统设计架构图:

需求的分析及细化:

可以看到,真的是每个角色都有自己的产物,这样的话,对于个人开发者来说,真的是非常的友好,不用再去担心自己的需求分析,架构设计,代码实现等等,都是 MetaGPT 帮你完成的。

这里:www.deepwisdom.ai/usecases 可以看他用户上传的很多 case,可以直接下载看产物,非常有意思。

一些思考

MetaGPT 这种方式,使得软件开发过程中的许多繁琐步骤得以自动化处理,从而极大地提高了开发效率。同时,通过模拟真实的团队角色和工作流程,MetaGPT 也为开发者提供了更直观和系统化的开发体验。这不仅能解决单一任务的实现问题,还能够通过多智能体的协作,处理更复杂、更高级的开发需求。但是,他是否真的可以用来完成我们真实的开发需求,我觉得还是需要打个问号的,毕竟,软件开发是一个复杂的过程,其中涉及到的技术、业务、设计等方面的知识都是非常庞大的,MetaGPT 能否真的做到像一个真实的团队一样,完成一个软件产品的开发,还有待进一步的验证。

那么,我们不放思考下,这里面还能做哪些改进呢?

  • 断点执行:MetaGPT 目前是一次性生成所有产物,如果能够支持断点执行,用户可以在生成的产物基础上进行修改和调整,将更加灵活。
  • 自定义角色:MetaGPT 内置了产品经理、架构师、项目经理和工程师等角色,如果能够支持自定义角色,用户可以根据实际需求进行角色的调整和配置,将更加灵活。

但是,也不可否认,MetaGPT 用来模拟我们的一个突发的点子,或者是一个小的项目,还是非常有用的,毕竟,我们不可能每个项目都有一个完整的团队,这个时候,MetaGPT 就可以帮助我们完成这个项目的开发验证。

关注 老码沉思录 ,获取更加全面的技术分享。

相关推荐
没头发的卓卓4 天前
pnpm--他简直是超人!
前端·npm·前端工程化
鹿守心畔光11 天前
webpack 简介
webpack·前端工程化
zaimoe18 天前
基于 Yjs 的协同方案介绍
前端·javascript·前端工程化
吃饺子不吃馅19 天前
一个js库就把你的网页的底裤🩲都扒了——import-html-entry
前端·react.js·前端工程化
JK凯24 天前
Next.js 中 App 路由和 Pages 路由实现服务端渲染及静态生成方式
前端·next.js·前端工程化
光头程序员1 个月前
工程化开发谷歌插件到底有爽
前端·react·工程化·前端工程化·谷歌插件
19组清风1 个月前
对于模块动态加载,Vite 内部做了哪些优化
前端·vite·前端工程化
Do1 个月前
所以pnpm到底比npm&yarn好在哪?
前端·面试·前端工程化