在我们传统的软件开发团队中,一个草台班子通常会有产品经理、设计师、软件开发工程师、测试工程师,商业分析运营师等等。这些角色各司其职,共同合作,完成一个软件产品的开发和上线运营。
然而,今天,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
类代表了产品经理的角色,负责产品开发和管理。主要职责和具体工作如下:
主要职责
- 准备文档(PrepareDocuments) :
- 产品经理需要准备市场需求文档、用户故事、竞争分析等文档。这些文档是项目成功的基础,帮助团队理解和应对市场需求。
- 撰写产品需求文档(WritePRD) :
- 产品经理还需要撰写详细的产品需求文档(PRD)。这份文档详细描述了产品的功能、目标用户、使用场景等,确保开发团队能够准确理解并实现产品需求。
具体工作
属性
name
: 产品经理的名称,默认是 "Alice"。profile
: 角色的描述,默认为 "Product Manager"。goal
: 产品经理的目标,即"高效创建满足市场需求和用户期望的成功产品"。constraints
: 限制条件,如需要使用与用户需求相同的语言进行无缝交流。todo_action
: 待办任务,初始化时设置为WritePRD
。
方法
__init__(self, **kwargs)
: 构造函数,进行初始化设置:- 设置产品经理需要执行的动作,例如
PrepareDocuments
和WritePRD
。 - 监听用户需求和文档准备的状态变化。
- 设置反应模式为按照顺序执行(RoleReactMode.BY_ORDER)。
- 初始化
todo_action
为WritePRD
。
- 设置产品经理需要执行的动作,例如
_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 就可以帮助我们完成这个项目的开发验证。
关注 老码沉思录 ,获取更加全面的技术分享。