当前位置: 首页 > article >正文

基于 MetaGPT 自部署一个类似 MGX 的多智能体协作框架

MGX(由 MetaGPT 团队开发的 mgx.dev)是一个收费的多智能体编程平台,提供从需求分析到代码生成、测试和修复的全流程自动化功能。虽然 MGX 本身需要付费,但您可以通过免费服务和开源项目搭建一个类似的功能。以下是一个分步骤的实现方案,充分利用开源工具和免费云服务,模拟 MGX 的多智能体协作开发体验。目标是实现“一次性输入需求,自动生成完整项目代码”的功能,同时尽量减少人工干预。

在这里插入图片描述

文章目录

  • 一、目标与前提
  • 二、分步骤实现
    • 2.1 步骤 1:选择开源多智能体框架
    • 2.2 步骤 2:搭建本地运行环境
    • 2.3 步骤 3:实现角色分工与协作
    • 2.4 步骤 4:自动化测试与纠错
    • 2.5 步骤 5:部署到免费云服务
    • 2.6 步骤 6:优化与扩展
  • 三、实现结果
  • 四、总结

一、目标与前提

  • 目标: 部署一个类似 MGX 的系统,支持多角色智能体(项目经理、架构师、工程师等)协作,输入需求后自动生成项目代码。
  • 前提:
    • 您有基本的编程知识(如 Python、Linux 命令)。
    • 有一台本地计算机或免费云服务器(如 Google Colab、Kaggle、Replit)。
    • 使用开源工具和免费 API(如 Grok、Ollama)替代付费服务。

二、分步骤实现

2.1 步骤 1:选择开源多智能体框架

MGX 的核心是多智能体协作,因此我们需要一个类似的基础框架。以下是推荐的开源选项:

  • MetaGPT:
    • GitHub: github.com/geekan/MetaGPT
    • 简介: 一个成熟的多智能体框架,支持角色分工(产品经理、架构师、工程师等),能从单行需求生成完整项目。
    • 优点: 接近 MGX 的功能,开源免费,社区活跃。

在这里插入图片描述

  • ChatDev:
    • GitHub: github.com/OpenBMB/ChatDev
    • 简介: 模拟软件开发公司,支持瀑布模型的多角色协作。
    • 优点: 简单易用,适合小型项目。
  • AutoGen:
    • GitHub: github.com/microsoft/autogen
    • 简介: 微软开发的多智能体框架,强调灵活性和跨语言支持。
    • 优点: 可扩展性强,支持本地模型。

选择理由: MetaGPT 是最接近 MGX 的开源替代品,提供完整的 SOP(标准操作流程)和角色协作机制,因此我们以 MetaGPT 为主。

操作:

  • 克隆 MetaGPT 仓库:

    bash

    git clone https://github.com/geekan/MetaGPT.git
    cd MetaGPT
    

2.2 步骤 2:搭建本地运行环境

MetaGPT 默认依赖 OpenAI API(收费),但我们可以用免费替代品(如 Ollama 或 Grok)运行本地大语言模型(LLM)。

  1. 安装 Python 环境:

    • 确保系统有 Python 3.9 或 3.10:

      bash

      python --version
      
    • 如果没有,使用 Conda 创建环境:

      bash

      conda create -n metagpt python=3.9
      conda activate metagpt
      
  2. 安装 Ollama(本地 LLM):

    • 下载并安装 Ollama(ollama.ai):

      bash

      curl -fsSL https://ollama.ai/install.sh | sh
      
    • 拉取一个免费开源模型(如 LLaMA 或 Mistral):

      bash

      ollama pull llama3
      
    • 运行 Ollama 服务:

      bash

      ollama serve
      
  3. 配置 MetaGPT 使用本地 LLM:

    • 编辑 config2.yaml 文件(位于 MetaGPT 根目录):

      yaml

      llm:api_type: "ollama"model: "llama3"base_url: "http://localhost:11434/v1"api_key: "ollama"  # Ollama 不需真实 API 密钥
      
    • 安装 MetaGPT 依赖:

      bash

      pip install -r requirements.txt
      

2.3 步骤 3:实现角色分工与协作

MetaGPT 默认支持多角色智能体(产品经理、架构师、工程师等)。我们需要确保其能自动完成需求分析到代码生成的全流程。

  1. 定义角色:

    • MetaGPT 已内置角色(如 ProductManager、Architect、Engineer),无需额外定义。您只需确保配置文件正确。
    • 检查 metagpt/roles/ 目录,确认角色实现。
  2. 输入需求:

    • 创建一个简单的启动脚本(start.py):

      python

      from metagpt.software_company import generate_reporepo = generate_repo("Create a CLI-based To-Do list app using Python")
      print(repo)
      
    • 这将触发 MetaGPT 的多智能体协作,生成项目结构和代码。

  3. 运行测试:

    • 执行脚本:

      bash

      python start.py
      
    • 输出将包括需求文档、架构设计和完整代码,保存在 workspace/ 目录。

2.4 步骤 4:自动化测试与纠错

MGX 提供自动测试和修复功能,我们需要为 MetaGPT 添加类似能力。

  1. 集成单元测试:

    • 使用 Python 的 unittest 检查生成代码:

      python

      import unittest
      import osclass TestGeneratedCode(unittest.TestCase):def test_code_runs(self):os.system("python workspace/todo_app/main.py")self.assertEqual(os.system("echo $?"), 0)if __name__ == "__main__":unittest.main()
      
    • 将此脚本保存为 test_generated.py。

  2. 自动纠错:

    • 添加反馈循环:如果测试失败,重新运行 MetaGPT 的工程师角色修复代码。

    • 修改 start.py:

      python

      from metagpt.software_company import generate_repo
      import osdef run_and_fix():repo = generate_repo("Create a CLI-based To-Do list app using Python")os.system("python test_generated.py")if os.system("echo $?") != 0:print("Test failed, re-running Engineer role...")repo.engineer.run_fix()  # 假设有此方法,需自定义return reporepo = run_and_fix()
      print(repo)
      
    • 注意:MetaGPT 默认没有 run_fix(),需自行实现,参考其 Engineer 类。

  3. 运行完整流程:

    bash

    python start.py
    

2.5 步骤 5:部署到免费云服务

华为云免费试用

  • 服务: 华为云弹性云服务器 (ECS) 免费试用
  • 特点: 新用户可免费试用 1 核 2G 或 2 核 4G 云服务器 30 天。
  • 获取: 访问 华为云免费试用,注册并完成实名认证后领取。

部署步骤:

  1. 注册与领取:

    • 在华为云官网注册账号,完成个人或企业实名认证。
    • 领取免费云服务器(例如 2 核 4G S6,带 5M 带宽和 100G 数据盘)。
  2. 配置服务器:

    • 登录华为云控制台,选择“弹性云服务器 ECS”。
    • 创建实例,选择 Ubuntu 20.04 系统,设置密码或 SSH 密钥。
  3. 上传 MetaGPT:

    • 使用 SSH 客户端(如 XShell 或终端)连接服务器:

      bash

      ssh root@<服务器公网IP>
      
    • 上传 MetaGPT 文件夹:

      bash

      scp -r /path/to/MetaGPT root@<服务器公网IP>:/root/
      
  4. 安装依赖:

    • 登录服务器,安装 Python 和依赖:

      bash

      apt update
      apt install python3.9 python3-pip -y
      cd /root/MetaGPT
      pip3 install -r requirements.txt
      
  5. 配置 API:

    • 编辑 config2.yaml,填入 Grok 或其他 API 密钥(参考步骤 2)。
  6. 运行项目:

    • 执行启动脚本:

      bash

      python3 start.py
      
    • 输出结果保存在 workspace/,可通过 SCP 下载。

2.6 步骤 6:优化与扩展

  • 添加前端界面(可选):

    • 使用 Gradio 创建简单 Web 界面:

      python

      import gradio as gr
      from metagpt.software_company import generate_repodef generate_project(requirement):repo = generate_repo(requirement)return str(repo)interface = gr.Interface(fn=generate_project, inputs="text", outputs="text")
      interface.launch()
      
    • 安装 Gradio:pip install gradio。

  • 支持复杂需求:

    • 输入更详细的需求(如“开发一个支持用户注册和支付的在线商店”),调整 MetaGPT 的 SOP。

三、实现结果

  • 功能: 您将拥有一个本地或云端的系统,支持一次性输入需求,生成完整项目代码(包括需求文档、架构和实现),并通过测试验证。
  • 成本: 完全免费,利用开源工具(MetaGPT、Ollama)和免费云服务(Replit、Colab)。
  • 类似 MGX: 通过多角色协作和自动化测试,接近 MGX 的核心体验。

注意事项与局限

  1. 性能: 本地 LLM(如 LLaMA)可能不如 OpenAI GPT-4,复杂任务可能需要更高算力。(可直接调用大模型API,不必自己部署)
  2. 稳定性: 开源工具的纠错能力有限,可能需手动调整。
  3. 算力需求: 在免费服务上运行大模型可能受限,建议用 16GB+ RAM 的本地机器。

四、总结

通过 MetaGPT 和 Ollama,您可以用免费资源搭建一个类似 MGX 的系统。步骤包括选择框架、配置本地 LLM、实现角色协作、添加测试纠错、并部署到云端。虽然不如 MGX 商业化产品完善,但它满足了“一次性输入、全自动化生成”的需求,且成本为零。

Form: Gork 3 beta

相关文章:

基于 MetaGPT 自部署一个类似 MGX 的多智能体协作框架

MGX&#xff08;由 MetaGPT 团队开发的 mgx.dev&#xff09;是一个收费的多智能体编程平台&#xff0c;提供从需求分析到代码生成、测试和修复的全流程自动化功能。虽然 MGX 本身需要付费&#xff0c;但您可以通过免费服务和开源项目搭建一个类似的功能。以下是一个分步骤的实现…...

三个小时学完vue3 —— 简单案例(二)

三个小时学完vue3&#xff08;二&#xff09; 图片轮播案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...

数字人技术再超越,TANGO 可生成与音频匹配的全身手势视频

TANGO 是由东京大学与 CyberAgent AI Lab 于 2024 年共同研发的开源框架&#xff0c;专注于声音驱动的全身数字人生成。该技术能够根据目标语音音频生成与之同步的全身手势视频&#xff0c;突破了传统数字人技术仅支持面部或上半身动作的局限性。TANGO 的工作原理利用隐式分层音…...

释放微软bing的力量:深度剖析其主要功能

在浩瀚无垠的互联网海洋中,搜索引擎就如同指南针,引领我们找到所需要的信息。微软必应凭借其一系列强大功能,在搜索引擎领域脱颖而出,成为极具竞争力的一员。在这篇博客文章中,我们将深入探讨微软必应的主要功能,这些功能使其独具特色,成为全球用户的得力工具。 1. 智能…...

DeepSeek 开源周(2025/0224-0228)进度全分析:技术亮点、调用与编程及潜在影响

DeepSeek 技术开源周期间所有开放下载资源的目录及简要说明: 1. FlashMLA 描述:针对 Hopper GPU 优化的高效 MLA 解码内核,专为处理可变长度序列设计,显著提升大语言模型(LLM)的解码效率。性能:内存受限配置下可达 3000 GB/s 带宽,计算受限配置下可达 580 TFLOPS 算力(…...

let、const【ES6】

‌“我唯一知道的就是我一无所知。” - 苏格拉底 目录 块级作用域&#xff1a;var、let、const的对比&#xff1a;Object.freeze()&#xff1a; 块级作用域&#xff1a; 块级作用域指由 {} 包围的代码块&#xff08;如 if、for、while、单独代码块等&#xff09;形成的独立作用…...

PySpark中mapPartitionsWithIndex等map类算子生成器函数问题 - return\yield

PySpark中mapPartitionsWithIndex等map类算子生成器函数问题 - return\yield 顾名思义&#xff0c;本文讲述了map算子生成器函数的相关问题——return 和 yield的使用。 首先先讲结论&#xff0c;在使用map等迭代生成的算子时最好使用yield。 1、问题产生 在写代码的过程中&…...

网络原理 初识[Java EE]

目录 网络发展史 独立模式 网络互联 局域网 LAN 1. 基于网络直连 2. 基于集线器(Hub)组建 3. 基于交换机(Switch)组建 4. 基于交换机和路由器(Router)组建 广域网 WAN 网络通信基础 IP 地址 1. 概念 2. 格式 端口号 1. 概念 2.格式 认识协议 1. 概念 2. 作用…...

Redis Stream基本使用及应用场景

一、概念 Redis Streams是Redis5.0提供的一种消息队列机制&#xff0c;支持多播的可持久化的消息队列&#xff0c;用户实现发布订阅的功能&#xff0c;借鉴了kafka设计。 二、常用命令 命令名称描述XADD key ID field value [field value ...]添加一条消息 key&#xff1a;St…...

amcl :odometry 到global frame 的转换

amcl - ROS Wiki amcl - ROS Wiki...

Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)

目录 1️⃣下载和安装Ollama 1. &#x1f947;官网下载安装包 2. &#x1f948;安装Ollama 3.&#x1f949;配置Ollama环境变量 4、&#x1f389;验证Ollama 2️⃣本地部署DeepSeek 1. 选择模型并下载 2. 验证和使用DeepSeek 3️⃣使用可视化工具 1. Chrome插件-Page …...

解决Value of type ‘AVCodecContext‘ has no member ‘channels‘ 的问题

在 FFmpeg 7.1 中,AVCodecContext 的 channels 和 channel_layout 字段已经被移除,取而代之的是 AVChannelLayout 结构。因此,代码需要进行调整以适应新的 API。 以下是如何正确设置 AVCodecContext 和 AVCodecParameters 的方法。 1. 问题分析 在 FFmpeg 7.1 中: AVCode…...

STM32内存五区及堆栈空间大小设置(启动文件浅析)

前言 嘿&#xff0c;朋友们&#xff01;今天咱们来聊聊STM32的内存五区和堆栈空间大小设置。这可是嵌入式开发里的“必修课”&#xff0c;要是没整明白&#xff0c;程序说不定就“翻车”了。别担心&#xff0c;我这就带你一步步搞懂这事儿&#xff0c;让你轻松上手&#xff0c…...

定义数组存储3部汽车对象(class2:类在class1中请看上一篇博客)

package test3; import java.util.Scanner; public class carTest {public static void main(String[] args){//创建一个数组car[] arrnew car[3];//2创建汽车对象&#xff0c;来源于输入Scanner sc new Scanner(System.in);for (int i 0; i <arr.length ; i) {car cnew ca…...

Go红队开发—语法补充

文章目录 错误控制使用自定义错误类型错误包装errors.Is 和 errors.Aspanic捕获、recover 、defer错误控制练习 接口结构体实现接口基本类型实现接口切片实现接口 接口练习Embed嵌入文件 之前有师傅问这个系列好像跟红队没啥关系&#xff0c;前几期确实没啥关系&#xff0c;因为…...

IP----访问服务器流程

这只是IP的其中一块内容-访问服务器流程&#xff0c;IP还有更多内容可以查看IP专栏&#xff0c;前一段学习内容为IA内容&#xff0c;还有更多内容可以查看IA专栏&#xff0c;可通过以下路径查看IA-----配置NAT-CSDN博客CSDN,欢迎指正 1.访问服务器流程 1.分层 1.更利于标准化…...

阿里云ack的创建与实战应用案例

阿里云ack的创建与应用案例 创建前开通ack相关服务&#xff1a;开始创建简单的魔方游戏&#xff0c;熟悉sv与clb自动注册创建部署一个nginx 服务示例&#xff1a;走不同域名访问不同svc资源&#xff1a;为什么需要 Ingress &#xff1f;创建第一个域名的 Deployment和Service。…...

git 的 Detached HEAD

在 Git 版本管理中&#xff0c;Detached HEAD 是指你当前的工作状态不再指向任何分支&#xff0c;而是指向一个特定的提交&#xff08;commit&#xff09;。 通常情况下&#xff0c;HEAD 是指向你当前工作分支的指针&#xff0c;例如 main 或 feature-branch。当你切换到一个特…...

【R语言】dplyr包经典函数summarise函数

dplyr包经典函数summarise函数&#xff0c;后面改名乘reframe函数了&#xff0c;但是summarise仍然适用 这个函数的返回结果是一个新的数据框&#xff0c;下面讲一下几种常见用法 示例数据为R自带的数据集mtcars 1.不分组 mtcars %>%summarise(mean mean(disp), n n()…...

C#装箱拆箱机制详解

在C#中&#xff0c;装箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09; 是值类型与引用类型之间转换的核心机制。它们的实现直接影响程序的性能和类型安全。 一、装箱&#xff08;Boxing&#xff09; 定义&#xff1a; 将值类型转换为引用类型&#…...

llama.cpp 一键运行本地大模型 - Windows

文章目录 llama.cpp 一键运行本地大模型 - Windows嘿&#xff0c;咱来唠唠 llama.cpp 这玩意儿&#xff01;gguf 格式是啥&#xff1f;咱得好好说道说道基座模型咋选&#xff1f;所需物料&#xff0c;咱得准备齐全咯核心命令&#xff0c;得记牢啦运行方式咋选&#xff1f;测试应…...

BUU40 [CSCCTF 2019 Qual]FlaskLight1【SSTI】

模板&#xff1a; {{.__class__.__base__.__subclasses__()[80].__init__.__globals__[__builtins__].eval("__import__(os).popen(type flag.txt).read()")}} 是个空字符串&#xff0c;.__class__代表这个空字符串的类是什么&#xff08;这里是单引号双引号都行&a…...

数据同步的中间件

以下是10个支持MySQL、HBase、ClickHouse、HDFS等不同数据库之间数据同步的GitHub项目推荐&#xff1a; 项目名称语言主要特点支持的数据库GitHub链接DataXPython阿里巴巴开源的数据同步工具&#xff0c;支持多种数据库和文件系统。MySQL、ClickHouse、HDFS等GitHub链接Apache…...

C# | GDI+图像测距辅助线的实现思路

C# | GDI图像测距辅助线的实现思路 文章目录 C# | GDI图像测距辅助线的实现思路一、辅助线需求概述二、坐标系与角度计算2.1 笛卡尔坐标系2.2 线长和角度计算方法2.3 文本角度矫正计算方法2.4 坐标变换实现步骤 三、与if判断方式对比四、总结 一、辅助线需求概述 在图像测量工…...

【备份】php项目处理跨域请求踩坑

这都是老生常谈的东西了。我还在踩坑&#xff0c;记录一下。 我在项目入口明明写了如下代码&#xff1a; // 处理预检请求 (OPTIONS) if ($_SERVER[REQUEST_METHOD] OPTIONS) {header("Access-Control-Allow-Origin: https://xxx.vip");header("Access-Cont…...

常见的Linux面试题

以下是一些常见的Linux面试题&#xff1a; 基础操作类 如何远程连接Linux服务器&#xff1a;常用的工具如Xshell、CRT、FinalShell等&#xff0c;通过SSH协议连接&#xff0c;默认端口是22。 如何查看当前目录下的所有文件&#xff08;包括隐藏文件&#xff09;&#xff1a;使…...

MySQL 数据库本地及异地备份:全面指南

文章目录 MySQL 数据库本地及异地备份&#xff1a;全面指南备份脚本概述编写备份脚本脚本内容主要参数解释设置脚本权限 定期执行备份设置crontab任务 安全性建议避免明文密码rsync密码文件安全 进阶功能和优化增量备份备份验证日志轮转 总结附录&#xff1a;脚本依赖 MySQL 数…...

免费使用 DeepSeek API 教程及资源汇总

免费使用 DeepSeek API 教程及资源汇总 一、DeepSeek API 资源汇总1.1 火山引擎1.2 百度千帆1.3 阿里百炼1.4 腾讯云 二、其他平台2.1 华为云2.2 硅基流动 三、总结 DeepSeek-R1 作为 2025 年初发布的推理大模型&#xff0c;凭借其卓越的逻辑推理能力和成本优势&#xff0c;迅速…...

java后端开发day20--面向对象进阶(一)--static继承

&#xff08;以下内容全部来自上述课程&#xff09; 1.static–静态–共享 static表示静态&#xff0c;是java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 1.静态变量 被static修饰的成员变量&#xff0c;叫做静态变量。 特点&#xff1a; 被该类…...

统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?

得分函数&#xff1a;统计学中的“敏感探针” 在统计学和概率论中&#xff0c;得分函数&#xff08;Score Function&#xff09;是一个看似简单却非常重要的概念。它不仅是Fisher信息矩阵的核心组成部分&#xff0c;还在参数估计、模型优化等领域发挥着关键作用。今天&#xf…...