前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >41K star! 多智能体 MetaGPT 2 分钟上线需求,极致工程化!

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

原创
作者头像
brzhang
发布2024-06-03 10:43:13
4200
发布2024-06-03 10:43:13
举报
文章被收录于专栏:玩转全栈玩转全栈
MateGPT
MateGPT

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

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

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

直到你的需求上线。

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

MateGPT 架构
MateGPT 架构

MetaGPT 的特点

MetaGPT 目前在 GitHub 上开源,地址:https://github.com/geekan/MetaGPT ,现在是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 也都是可用的。所以就算你手头拮据,使用开源的模型来体验下,也是可以的。

2048
2048

中间产物剖析

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

架构图
架构图

需求的分析及细化:

需求分析
需求分析

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

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

一些思考

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

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MetaGPT 的特点
  • 源码一撇
    • 主要职责
      • 具体工作
        • 属性
        • 方法
    • 傻瓜式的安装与配置
      • 安装
      • 使用示例
        • 中间产物剖析
        • 一些思考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档