• 作者:老汪软件技巧
  • 发表时间: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 "写一个贪吃蛇游戏"


上一条查看详情 +啥?JavaScript也有“锁”?
下一条 查看详情 +没有了