MCPInstall
agent_training_mcp logo

agent_training_mcp

by FwithB 15 stars FwithB/agent_training_mcp

MCP Learning: AI Agent Training Project Based on YOLO

READMEmain

YOLO MCP 训练助手

这是一个基于MCP架构的YOLO训练系统,通过客户端-服务器模式实现了自然语言控制YOLO模型训练的功能。本项目采用消息通信协议(MCP)将原本单机的YOLO训练系统拆分为服务器端和客户端两个独立组件,使用户可以从任何设备远程控制训练过程。客户端通过OpenRouter API解析自然语言指令,将其转换为结构化请求发送给服务器,服务器执行实际训练任务并返回结果。

项目特点

  • MCP客户端-服务器架构:将用户交互与计算密集型任务分离,实现分布式训练控制
  • 自然语言指令解析:集成OpenRouter API,支持中文自然语言控制训练流程
  • 远程训练控制:可以在笔记本等轻量级设备上控制服务器的训练任务
  • 灵活部署:客户端和服务器可以部署在不同机器上,通过网络通信
  • 实时结果反馈:完整的训练状态和结果返回机制

项目背景与动机

本项目是对原单机版YOLO Agent训练助手的架构升级,解决了以下问题:

  1. 资源分离:将高性能计算任务与用户交互界面分离,优化资源使用
  2. 远程控制:支持从任何设备远程启动和监控训练过程
  3. 多用户支持:为未来支持多用户同时访问训练服务器奠定基础
  4. 持续服务:服务端可以持续运行,客户端可以随时连接或断开

项目结构

agent_training_mcp/
├── server.py        # MCP服务器,接收训练请求并执行训练
├── train.py         # 训练模块,负责调用Ultralytics YOLO进行训练
├── main.py          # MCP客户端,处理用户交互、指令解析和请求发送
├── requirements.txt # 项目依赖列表
└── README.md        # 项目说明文档

组件说明

  • server.py:

    • 使用Flask框架创建HTTP服务器
    • 提供/train接口接收训练请求
    • 调用train.py中的训练函数执行实际训练
    • 将训练结果以JSON格式返回给客户端
  • train.py:

    • 封装YOLOv8训练功能为可调用函数
    • 处理各种训练参数(模型类型、轮数、数据集等)
    • 提供标准化的返回格式,包含训练状态和结果信息
  • main.py:

    • 提供用户交互界面(命令行)
    • 通过OpenRouter API解析自然语言指令
    • 将解析结果转换为HTTP请求发送给服务器
    • 接收并显示服务器返回的训练结果

环境与依赖

服务器端依赖

  • Python 3.6+
  • ultralytics:YOLOv8模型训练库
  • flask:HTTP服务器框架

客户端依赖

  • Python 3.6+
  • openai:用于调用OpenRouter API
  • requests:用于发送HTTP请求

安装依赖

# 服务器端
pip install flask ultralytics

# 客户端
pip install requests openai

使用方法

步骤1:启动服务器

在训练服务器(通常是具有GPU的机器)上运行:

python server.py

服务器将在0.0.0.0:5000端口监听训练请求。

步骤2:配置客户端

在客户端(可以是任何设备)上,修改main.py中的服务器URL:

# 将此行
url = 'http://localhost:5000/train'
# 修改为服务器的IP地址
url = 'http://服务器IP:5000/train'

同时确保设置了OpenRouter API密钥:

# 方法1:设置环境变量
export OPENROUTER_API_KEY=您的API密钥

# 方法2:直接在代码中设置
API_KEY = "您的API密钥"

步骤3:运行客户端

在客户端机器上执行:

python main.py

客户端将显示菜单,您可以选择:

  1. 使用自然语言指令训练模型(例如:"训练一个yolov8n模型识别猫狗,跑3轮")
  2. 手动指定训练参数
  3. 退出程序

实际测试效果

本项目已在以下环境成功测试:

  • 服务器:Windows PC(192.168.1.6)运行server.py和train.py
  • 客户端:笔记本电脑运行main.py,通过WiFi连接到服务器
  • 笔记本成功解析自然语言指令,发送到PC,PC执行训练并返回结果

技术实现详解

MCP架构实现

项目采用了简单而有效的MCP(消息通信协议)实现方式:

  1. 通信协议:使用HTTP协议和JSON格式作为基础通信机制
  2. API端点:服务器定义/train端点接收POST请求
  3. 消息格式:
    • 请求体:{"model_type": "yolov8n", "epochs": 1, "data": "coco128.yaml"}
    • 响应体:{"status": "success/error", "message": "描述", "details": "详情"}

自然语言解析

客户端使用OpenRouter API进行自然语言解析:

  1. 定义function calling格式,指定训练函数和参数结构
  2. 将用户输入发送给LLM,请求其解析为函数调用
  3. 解析返回的函数调用参数,转换为HTTP请求参数

错误处理机制

系统实现了多层次的错误处理:

  1. 客户端解析错误:当LLM无法解析指令时,使用默认参数
  2. 网络通信错误:添加重试机制和超时处理
  3. 服务器执行错误:捕获训练过程异常并返回详细错误信息
  4. 日志记录:使用logging模块跟踪系统运行状态和错误

与单机版YOLO Agent的区别

特性单机版YOLO AgentMCP架构YOLO Agent
架构单体应用,直接函数调用客户端-服务器分离,通过HTTP通信
部署单一设备可分布在多个设备上
资源使用用户交互和训练在同一设备将计算密集型任务放在专用服务器
远程控制不支持支持从任何设备远程控制
可扩展性有限高(支持多客户端、负载均衡等)
状态保持必须保持应用运行服务器可持续运行,客户端可随时连接

未来计划

  • 实时进度反馈:实现训练过程中的实时进度推送(WebSocket/SSE)
  • 多任务队列:支持多个训练任务排队和并发执行
  • 用户认证:添加认证机制,确保只有授权用户可以使用服务
  • Web界面:开发基于浏览器的用户界面,替代命令行客户端
  • 分布式训练:支持跨多台服务器的分布式训练任务

贡献与许可证

  • 贡献:欢迎通过Issues和Pull Requests参与项目改进
  • 许可证:本项目采用MIT许可证

More AI Chatbot MCP servers

Similar servers from the same category.

Jentic

jentic

Enables AI assistants to discover and execute external APIs and workflows through a Python SDK that leverages the Open Agentic Knowledge repository for standardized API access and execution.

AI Chatbot

Provides a bridge to the Flyworks AI lipsync service, enabling creation of digital avatar videos synchronized with audio inputs through a simple API.

git

Official JavaScript implementation that integrates with MiniMax's multimodal capabilities for image generation, video creation, text-to-speech, and voice cloning across multiple transport modes.

APIVideo+7

Provides a bridge to Mureka.ai's music generation capabilities, enabling on-demand creation of lyrics, complete songs, and instrumental tracks without requiring specialized music production knowledge.

AI Chatbot