- 作者:老汪软件技巧
- 发表时间:2024-09-04 17:13
- 浏览量:
介绍
MetaGPT 是一个多智能体框架,可以实现输入一句话的老板需求,输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等。MetaGPT内部包括产品经理 / 架构师 / 项目经理 / 工程师,它提供了一个软件公司的全过程与精心调配的SOP,Code = SOP(Team)是核心哲学。它将SOP具象化,并且用于LLM构成的团队
MetaGPT的能力
你只需要给这个项目一条简单的原始需求,项目就可以利用GPT-4来完成最终的产品实现。下图是MetaGPT在内部通过prompt实现的一个完整的软件开发团队:
可以看到,基本上是按照现代软件开发团队涉及的角色来配备的。不过,能有这样的流程和角色的可能也不是一个小团队。在一个比较完整的软件开发团队中,一个原始需求提出来之后需要经过原始需求分析、需求评审、系统需求分析、系统设计、代码实现、代码评审、代码测试等一系列环节。这样的开发流程可以有效保证代码开发的质量,但是流程较长,不太灵活。如果能用大模型实现这个流程,显然对于软件开发的质量和效率都有很大的帮助。
快速开始
我们提供了几种安装MetaGPT的方式,请选择最适合你的方式。
支持的系统和版本系统版本Python版本是否支持
macOS 13.x
python 3.9
是
Windows 11
python 3.9
是
Ubuntu 22.04
python 3.9
是
请确保你的系统已安装Python 3.9+。你可以通过以下命令进行检查:
python3 --version
安装稳定版本
推荐大多数用户使用。你可以像使用任何python包一样导入MetaGPT,使用各种内置角色或团队,并构建自己的智能体来服务各种应用。
pip install metagpt
安装最新的开发版本
最适合体验最新功能的用户。
pip install git+https://github.com/geekan/MetaGPT
以开发模式安装
推荐给那些想要根据自己的独特需求定制框架、尝试新的想法或者利用框架创建复杂功能(如新颖的记忆机制)的开发者和研究者。
git clone https://github.com/geekan/MetaGPT.git
cd /your/path/to/MetaGPT
pip install -e .
使用Docker安装使用默认的MetaGPT镜像
# 第1步:下载metagpt官方镜像并准备config2.yaml
docker pull metagpt/metagpt:latest
mkdir -p /opt/metagpt/{config,workspace}
docker run --rm metagpt/metagpt:latest cat /app/metagpt/config/config2.yaml > /opt/metagpt/config/config2.yaml
vim /opt/metagpt/config/config2.yaml # 修改配置
# 第2步:使用容器运行metagpt demo
docker run --rm \
--privileged \
-v /opt/metagpt/config/config2.yaml:/app/metagpt/config/config2.yaml \
-v /opt/metagpt/workspace:/app/metagpt/workspace \
metagpt/metagpt:latest \
metagpt "Write a cli snake game"
# 你也可以启动一个容器并在其中执行命令
docker run --name metagpt -d \
--privileged \
-v /opt/metagpt/config/config2.yaml:/app/metagpt/config/config2.yaml \
-v /opt/metagpt/workspace:/app/metagpt/workspace \
metagpt/metagpt:latest
docker exec -it metagpt /bin/bash
$ metagpt "Write a cli snake game"
docker run ...命令做了以下事情:
自行构建镜像
# 你也可以自行构建metagpt镜像。
git clone https://github.com/geekan/MetaGPT.git
cd MetaGPT && docker build -t metagpt:custom .
安装全部功能
如果你想生成一些图表,比如象限图,系统设计图,顺序流程图等,这非常有用。如果你运行软件启动示例,它们将作为中间结果提供给你。
Mermaid
Mermaid是一种使用文本生成流程图、饼图、甘特图和其他图表的语言。MetaGPT使用Mermaid创建流程图、序列图和甘特图等图表。Mermaid是在Node.js中实现的,直接安装可能有些昂贵。MetaGPT提供以下Mermaid引擎将Mermaid文本转换为图表:
nodejs通过nodejs直接安装mermaid-cli。MetaGPT调用命令行将Mermaid文本转换为图表。你需要先安装nodejs,然后使用npm进行安装:
npm install -g @mermaid-js/mermaid-cli
这是mermaid提供的官方方法,通过nodejs安装,因此它基本上支持所有平台,也支持输出png/svg/pdf格式。然而,它需要安装nodejs和mermaid-cli,安装和使用有一定的成本,并且在运行时需要浏览器环境。
pyppeteerMermaid也可以通过JavaScript调用,pyppeteer是一个用Python实现的web自动化测试工具,可以执行JavaScript脚本。因此,使用pyppeteer + mermaidjs可以将Mermaid文本转换为图表。你可以使用pip安装pyppeteer:
pip install pyppeteer
这种方法安装相对简单,没有平台限制,并支持输出png/svg/pdf格式。然而,它需要依赖于浏览器,所以你需要先安装一个浏览器,并在运行时设置浏览器路径:
export PUPPETEER_EXECUTABLE_PATH=/path/to/your/chromium # 或者edge或chrome
(注意:pyppeteer已经不再维护)
playwright由于pyppeteer已经不再维护,它推荐使用playwright-python作为替代。使用playwright运行mermaid的原理与pyppeteer相同。然而,playwright-python需要安装其自己提供的浏览器,不能使用已经安装的浏览器。官方只支持以下平台:
pip install playwright
playwright install --with-deps chromium
inkMermaid.ink 项目提供了将 Mermaid 文本在线转换为图表的功能,请参阅Mermaid.ink。因此,任何连接到互联网的设备都可以使用ink方法,而无需本地浏览器或其他依赖关系。然而,此方法仅支持生成 PNG 和 SVG,不支持 PDF,并且在操作过程中需要访问Mermaid.ink,可能会受到网络和其他因素的影响,可能导致稳定性受到影响。
对比
Mermaid引擎nodejspyppeteerplaywrightink
安装简易度
★
★★★
★★
★★★★★
平台兼容性
★★★★★
★★★★
★★★
★★★★★
生成png
✔
✔
✔
✔
生成svg
✔
✔
✔
✔
生成pdf
✔
✔
✔
✘
离线运行
✔
✔
✔
✘
设置
使用MetaGPT需要配置模型API。我们将在本页面中介绍设置过程。
在安装完成后,请按照本文档中的说明完成配置,然后开始使用。 目前,该项目的示例只需要配置OpenAI API。
配置大模型APIOpenAI API
我们以OpenAI API为例说明配置过程,其他大模型的API配置过程是相同的。
您可以通过设置 config2.yaml 完成配置
使用config2.yaml在当前工作目录中创建一个名为config的文件夹,并在其中添加一个名为config2.yaml的新文件。将示例config2.yaml文件的内容复制到您的新文件中。将您自己的值填入文件中:
yaml
llm:
api_key: 'sk-...' # YOUR_API_KEY
model: 'gpt-4-turbo-preview' # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
# base_url: 'https://api.openai.com/v1' # or any forward url.
# proxy: 'YOUR_PROXY' # Optional. If you want to use a proxy, set it here.
请记住:如果您按照安装中的git clone方法,config/config2.yaml文件已经存在。只需编辑它或创建一个名为~/.metagpt/config2.yaml的副本进行编辑。这样您就不会意外地使用git提交和共享您的API密钥。
注意: MetaGPT将按照以下优先顺序读取您的设置:~/.metagpt/config2.yaml > config/config2.yaml
现在您可以开始使用了!
MetaGPT还支持各种LLM模型,根据您的需求配置模型API的密钥。
智谱 API
Checkllm_config.pyfor more details.
yaml
llm:
api_type: 'zhipuai'
api_key: 'YOUR_API_KEY'
model: 'MODEL_NAME'
科大讯飞的大模型 Spark API:
Checkllm_config.pyfor more details.
yaml
llm:
api_type: 'spark'
app_id: 'YOUR_APPID'
api_key: 'YOUR_API_KEY'
api_secret: 'YOUR_API_SECRET'
domain: 'generalv2'
base_url: 'wss://spark-api.xf-yun.com/v3.1/chat'
Azure OpenAI API
Checkllm_config.pyfor more details.
yaml
llm:
api_type: 'azure'
api_key: 'YOUR_API_KEY'
model: 'YOUR_MODEL_NAME'
百度 千帆 API
支持ERNIE-*模型和部分主流开源模型,详见metagpt/utils/token_counter.py
使用安全认证AK/SK鉴权
使用model进行调用
yaml
llm:
api_type: qianfan
access_key: 'YOUR_ACCESS_KEY'
secret_key: 'YOUR_SECRET_KEY'
model: 'YOUR_MODEL_NAME like ERNIE-Bot-turbo'
使用endpoint进行调用
yaml
llm:
api_type: qianfan
access_key: 'YOUR_ACCESS_KEY'
secret_key: 'YOUR_SECRET_KEY'
endpoint: 'YOUR_ENDPOINT_NAME like ernie_speed'
使用应用AK/SK鉴权(不推荐)
使用model进行调用
yaml
llm:
api_type: qianfan
api_key: 'YOUR_API_KEY'
secret_key: 'YOUR_SECRET_KEY'
model: 'YOUR_MODEL_NAME like ERNIE-Bot-turbo'
使用endpoint进行调用
yaml
llm:
api_type: qianfan
api_key: 'YOUR_API_KEY'
secret_key: 'YOUR_SECRET_KEY'
endpoint: 'YOUR_ENDPOINT_NAME like ernie_speed'
阿里云 灵积 DashScope API
支持qwen-*模型和部分主流开源模型,详见metagpt/utils/token_counter.py
yaml
llm:
api_type: dashscope
api_key: 'YOUR_API_KEY'
model: 'YOUR_ENDPOINT_NAME like qwen-max'
配置工具(可选)
除了让智能体能调用大模型,我们时常期望智能体能调用工具。我们需要配置好所需工具以完成准备工作。
网页搜索 API
Checksearch_config.pyfor more details.
yaml
## Supported api_type: serpapi/google/serper/ddg
## serper: Visit https://serper.dev/ to get key.
## serpapi: Visit https://serpapi.com/ to get key.
## google: Visit https://console.cloud.google.com/apis/credentials to get key.
## ddg: it is free, no need to get key.
search:
api_type: 'google' # serpapi/google/serper/ddg
api_key: 'YOUR_API_KEY'
cse_id: 'YOUR_CSE_ID' # only for google
网页浏览
yaml
browser:
engine: 'playwright' # playwright/selenium
# for playwright engine, please check https://playwright.dev/python/docs/api/class-browsertype
# for selenium engine, please check https://www.selenium.dev/documentation/webdriver/browsers
browser_type: 'chrome' # playwright: chromium/firefox/webkit; selenium: chrome/firefox/edge/ie
Azure TTS
yaml
azure_tts_subscription_key: 'YOUR_API_KEY'
azure_tts_region: 'eastus'
Mermaid
Checkmermaid_config.pyfor more details.
yaml
mermaid:
engine: 'nodejs' # nodejs/ink/playwright/pyppeteer
path: 'mmdc' # such as './node_modules/.bin/mmdc'
puppeteer_config: './config/puppeteer-config' # only for nodejs
pyppeteer_path: '/usr/bin/google-chrome-stable' # only for pyppeteer
其他配置(可选)
Checkconfig2.example.yamlandconfig2.pyfor more details.
yaml
enable_longterm_memory: false
prompt_schema: json #json or markdown
一句话需求的软件开发
现在,让我们开始吧!我们将创建一个多智能体团队,根据我们的一句话需求编写软件。
metagpt "写一个贪吃蛇游戏"