多代理框架MetaGPT

发布于:2025-07-17 ⋅ 阅读:(29) ⋅ 点赞:(0)

引言

MetaGPT 是一个创新的多代理框架,基于大型语言模型(LLM),通过模拟软件公司的运作流程,将复杂任务分解为多个代理协作完成。它以一句需求输入,输出用户故事、竞品分析、需求文档、数据结构、API 设计等完整开发流程,核心理念为 Code = SOP(Team),即通过标准操作流程(SOP)协调由 LLM 驱动的代理团队。本文档结合 MetaGPT 官方文档概念教程 及网络资源,旨在提供一份全面的 MetaGPT 中文指导文档,帮助用户快速理解和使用该框架。需要注意的是,本文档为简化说明,可能存在一定遗漏,建议参考官方文档或 GitHub 仓库 获取更详细内容。

MetaGPT 核心概述

MetaGPT 通过为多个代理分配不同角色(如产品经理、架构师、项目经理、工程师等),模拟软件开发团队的协作,适用于软件开发、研究、游戏开发等多种场景。例如,输入 metagpt "设计一个类似今日头条的推荐系统",即可生成从需求分析到代码实现的完整输出。

核心特点

  • 多代理协作:通过角色分工,代理间通过消息传递和动作输出实现高效协作。
  • 灵活性:支持用户自定义代理角色、动作和工具,适用于多样化应用场景。
  • 开源支持:可集成多种 LLM(如 OpenAI、Claude、LLaMA 等),并支持工具扩展(如 OCR、搜索)。
  • SOP 驱动:以标准操作流程为核心,确保任务分解和执行的结构化。

核心概念

1. 代理(Agent)

代理是 MetaGPT 的核心执行单元,被视为数字化的“有机体”,具备以下能力:

  • 大型语言模型(LLM):作为代理的“大脑”,驱动思考、决策和动作。
  • 观察(Observation):代理感知环境的方式,接收其他代理的消息、文本输入、图像或音频等。
  • 思考(Thought):基于观察和记忆,分析并制定行动方案,通常由 LLM 驱动。
  • 动作(Action):代理的响应行为,如生成代码、执行工具操作等。
  • 记忆(Memory):存储过往经验或上下文,提供决策依据。

示例:在软件开发中,产品经理代理生成需求文档,工程师代理观察文档并编写代码。

2. 通信(Communication)

代理通过发布消息或动作输出到共享环境中实现信息交换。例如,代理 Alice 发布需求文档,代理 Bob 观察后编写代码,代理 Charlie 审查代码并发布反馈,形成协作闭环。

3. 经济(Economy)

经济机制管理多代理环境中的资源分配和任务优先级,确保高效协作。

4. 多代理框架

MetaGPT 通过角色分工模拟软件公司运作。例如,一个团队可能包括:

  • 产品经理:定义用户故事和需求。
  • 架构师:设计系统架构和 API。
  • 项目经理:协调任务和资源。
  • 工程师:实现代码。
  • 测试者/审查者:验证代码质量。

安装与配置

1. 安装 MetaGPT

MetaGPT 支持 Docker 和本地安装,以下为 Docker 安装步骤:

# 拉取官方镜像
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

本地安装可通过 pip install metagpt 或克隆 GitHub 仓库:

git clone https://github.com/geekan/MetaGPT.git
cd MetaGPT
pip install -r requirements.txt

额外工具支持:

  • RAGpip install 'metagpt[rag]' 用于检索增强生成。
  • OCRpip install 'metagpt[ocr]' 用于图像文本提取。
  • 搜索pip install 'metagpt[search-ddg]'pip install 'metagpt[search-google]' 用于搜索功能。

2. 配置 LLM API

MetaGPT 支持多种 LLM(如 OpenAI、Claude、LLaMA)。以 OpenAI 为例,编辑 config2.yaml

llm:
  api_type: 'openai'
  model: 'gpt-4-turbo'
  base_url: 'https://api.openai.com/v1'
  api_key: 'YOUR_API_KEY'

对于开源模型(如 LLaMA),需部署模型并配置 base_url(如 http://127.0.0.1:11434/api)。

使用 MetaGPT

1. 快速入门

运行简单项目(如 CLI 贪吃蛇游戏):

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"

或本地运行:

metagpt "Write a cli snake game"

MetaGPT 将生成项目文件夹,包含需求文档、代码和测试用例。

2. 自定义代理与动作

用户可通过定义 ActionRole 自定义代理。例如,创建一个 SimpleCoder 代理:

from metagpt.actions import Action

class SimpleWriteCode(Action):
    PROMPT_TEMPLATE: str = """
    Write a python function that can {instruction}.
    Return ```python your_code_here ``` with NO other texts, your code:
    """
    name: str = "SimpleWriteCode"

    async def run(self, instruction: str):
        prompt = self.PROMPT_TEMPLATE.format(instruction=instruction)
        rsp = await self._aask(prompt)
        code_text = parse_code(rsp)
        return code_text

通过 _watch 方法设置代理间协作:

self._watch([SimpleWriteCode])

这使代理观察其他代理的输出并触发相应动作。

3. 工具集成

MetaGPT 支持自定义工具。例如,创建一个计算阶乘的工具:

from metagpt.tools.tool_registry import register_tool
import math

@register_tool()
def calculate_factorial(n):
    """Calculate the factorial of a non-negative integer."""
    if n < 0:
        raise ValueError("Input must be a non-negative integer")
    return math.factorial(n)

DataInterpreter 中使用:

from metagpt.roles.di.data_interpreter import DataInterpreter

async def main(requirement: str):
    role = DataInterpreter(tools=["calculate_factorial"])
    await role.run(requirement)

asyncio.run(main("Please calculate the factorial of 5."))

工具需放置在 metagpt/tools/libs 目录,并使用 @register_tool 注册。

4. 增量开发

MetaGPT 支持增量开发。例如,基于现有贪吃蛇游戏添加新功能:

metagpt "Add a randomly appearing enemy that lasts for 5 seconds." --project-path "/path/to/snake_game" --run-tests --n-round 20

这会在现有项目上迭代,生成更新后的代码。

5. 人类参与

用户可通过设置 is_human=True 参与 SOP,例如担任审查者角色:

team.hire([
    SimpleCoder(),
    SimpleTester(),
    SimpleReviewer(is_human=True)
])

人类审查者可通过终端输入反馈,指导代理优化输出。

实践应用

MetaGPT 适用于多种场景:

  • 软件开发:生成完整项目,包括需求、架构和代码。
  • 研究:代理可搜索网络并生成报告。
  • 游戏开发:如 Flappy Bird 或贪吃蛇游戏的快速原型开发。
  • 数据分析:结合 OCR 或搜索工具处理发票、生成报表。

示例:开发 Flappy Bird 游戏:

metagpt "write a flappy bird game without any obstacles" --project-name "flappy_bird" --run-tests --n-round 20

MetaGPT 将生成游戏代码、测试用例和文档。

  • LLM 选择:为获得稳定结果,推荐使用 GPT-4;开源模型(如 LLaMA)可能需优化提示词。
  • 网络配置:若 OpenAI API 不可用,可配置代理:
    llm:
      api_type: 'openai'
      base_url: 'https://api.openai-forward.com/v1'
      api_key: 'YOUR_API_KEY'
    
  • 局限性:人类参与目前通过终端输入,复杂输入需优化提示词格式。

通过掌握 MetaGPT 的核心概念和操作方法,用户可快速构建高效的多代理系统,应用于各种复杂任务场景。


网站公告

今日签到

点亮在社区的每一天
去签到