简介
最近朋友和B站都给我推 MetaGPT,正好有空就下载亲测了一下。MetaGPT 是目前(230809)github热榜第一名,今天就加了3000多个星。
MetaGPT是一个多智能体框架,能够生成不同的角色:工程师、产品经理、架构师和项目经理。然后共同构建一个软件项目,使用的模型是GPT-4,与AutoGPT有些类似。
中文帮助文档见:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
实验
搭建环境
$ git clone https://github.com/geekan/MetaGPT # 约11M左右
$ cd MetaGPT
$ docker build . -t metagpt:baseline # 生成镜像
$ mkdir -p /opt/metagpt/{config,workspace} # 请切换成root后执行
$ docker run --rm metagpt/metagpt:v0.3 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/config.yaml
$ cd /opt/metagpt/
$ cp config/config.yaml config/key.yaml # 生成配置文件
修改 key.yaml中的 OPENAI_API_KEY, OPENAI_API_BASE
$ docker run --name metagpt -d --privileged -v /opt/metagpt/config:/app/metagpt/config -v /opt/metagpt/workspace:/app/metagpt/workspace metagpt:baseline # 运行镜像
$ docker exec -it metagpt /bin/bash # 进入镜像
运行
$ python startup.py "写一个微信小程序,实现简单的文件阅读和翻译功能"
运行之后,程序创建项目:
workspace/wechat_mini_reader/
实验结果
- 最终花费:¥4.07(GPT-4 用的是一个国内的中转)
- 我的需求是:写一个微信小程序,实现简单的文件阅读和翻译功能,最终它生成了一组Python程序(不是微信小程序),是demo的感觉,离完整应用差得比较远。
- 生成5个代码文件,包含:Flask构架、sqlite3数据库,调用google translate的翻译,文件读取等等,整体生成数据400行,其中含代码105行,其它为设计文档。
主观感受
- 可以设置你想花多少钱调用GPT-4,默认3$
- 工具链做得很好,一小时之内可以上手
- 可以做demo,简化了项目开始的工作量
- 想用它做一个完整项目,个人觉得差距还比较大
- 它生成的竞品分析,API文档,mermaid图也都挺好的
- 可能存在大局观问题:每个小步做得都对,合一块不一定对
代码分析
目前metagpt的项目,核心代码量有80多个python文件,共6000多行(代码文件都不大),底层也使用了langchain
主要代码
- startup.py:代码入口,可以设置想花多少钱,需要几个角色合作……
- actions:使用 PROMPT 方式,通过调用 GPT 和其它 API 实现了具体的功能,比如:写代码、分析库依赖、文本转语音、运行代码、测试……
- document_store:各种存储的支持,faiss, milvus, chromadb向量数据库,本地存储,各种模式数据的读取,
- management:管理所有技能
- memory:管理存储
- prompts:管理各种角色的提示
- provider:调用大语言模型,目前支持Claude和OpenAI
- roles:各角色的具体实现和相关工具,角色包含:工程师,架构师,产品,项目管理……
- tools & utils:辅助工具
底层逻辑
我觉得,该工具是将软件开发拆解成前后多个步骤,调用模型完成各个步骤,通过提示以及对返回结果的解析,最终结合成完整的项目。即:用大模型实现了软件开发的全链路。
可能对于开发某种类型的应用效果比较好,对于所以类型软件而言,个人觉得目前尚处于初始阶段。有时候不如针对具体问题,直接提问;有时候 MetaGPT 过程也给我们一些启发。
另外,真正应用过程可能遇到的问题是:开发简单的软件可能不需要这么多角色;开发复杂的软件,相互交错的工作,GPT是否能支撑非常复杂的设计?
虽然我个人觉得离自动编程还挺远,不过还是有很多有意思和值得借鉴的内容~~