智能视频监控平台助手
基于自然语言交互的视频云平台管理助手,结合LLM和MCP技术,实现设备查询、实时视频预览和录像回放等功能。
系统架构
- 后端:Python FastAPI(异步框架)
- 前端:Vue 3 + Element Plus
- LLM模型:DeepSeek-R1(兼容OpenAI API)
- 视频流格式:RTSP/HTTP
- 前后端通信:RESTful API
- 数据库:SQLite(异步访问)
- MCP服务:外部MCP服务器集成
目录结构
video-llm-system/
├── backend/ # 后端代码
│ ├── app/
│ │ ├── api/ # API路由(包含llm_router、auth_router等)
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务服务(MCP服务、LLM服务、数据库服务等)
│ ├── .env # 环境变量配置
│ ├── main.py # 后端入口
│ ├── requirements.txt # Python依赖
│ ├── mcp_servers_config.json # MCP服务器配置
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # Vue组件
│ │ ├── router/ # 路由配置
│ │ ├── services/ # API服务封装
│ │ ├── views/ # 页面视图
│ │ ├── App.vue # 根组件
│ │ └── main.js # 前端入口
│ ├── package.json # NPM依赖
│ └── vite.config.js # Vite配置
├── docker-compose.yml # Docker部署配置
└── README.md # 项目说明核心功能
- 自然语言交互:通过LLM实现智能对话和命令处理
- 设备管理:查询设备列表、设备状态和详细信息
- 实时视频预览:支持RTSP/HTTP格式的实时视频流播放
- 录像回放:支持指定时间段的录像查询和回放
- MCP工具集成:与外部MCP服务无缝集成,支持多种工具调用
- 异步处理:全面采用异步编程,提高系统性能和并发能力
技术架构详解
后端架构
后端采用FastAPI作为核心框架,具有以下特点:
- 异步处理:基于Python asyncio,实现高性能异步API
- 类型安全:使用Pydantic进行数据验证和序列化
- 依赖注入:FastAPI内置的依赖注入系统,便于服务管理
- 事件生命周期:使用lifespan管理应用启动和关闭过程
- MCP集成:通过LLMMCPIntegration实现与外部MCP服务的连接管理
核心数据流:
客户端请求 → FastAPI路由 → LLM服务 → MCP服务调用 → 工具执行 → 响应返回前端架构
前端基于Vue 3构建,采用组件化设计,主要特点:
- 组件化:基于Element Plus的UI组件库
- 路由管理:Vue Router实现页面导航
- API封装:统一的API服务封装,简化后端调用
部署要求
环境要求
- Python 3.8+
- Node.js 16+
- 推荐使用虚拟环境管理依赖
后端部署
- 安装依赖
cd backend
pip install -r requirements.txt- 配置环境变量
复制 .env.example 为 .env 并配置相应参数:
cp .env.example .env
# 编辑.env文件,设置必要的环境变量- 配置MCP服务器
编辑 mcp_servers_config.json 文件,配置外部MCP服务器:
{
"mcpServers": {
"视频系统": {
"url": "http://127.0.0.1:5005/mcp",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}智能视频监控平台助手
基于自然语言交互的视频云平台管理助手,结合LLM和MCP技术,实现设备查询、实时视频预览和录像回放等功能。
系统架构
- 后端:Python FastAPI(异步框架)
- 前端:Vue 3 + Element Plus
- LLM模型:DeepSeek-R1(兼容OpenAI API)
- 视频流格式:RTSP/HTTP
- 前后端通信:RESTful API
- 数据库:SQLite(异步访问)
- MCP服务:外部MCP服务器集成
配套 MCP 视频服务器
本项目依赖配套的 mcp-video-server 提供底层视频能力验证。 该仓库实现了符合 MCP 协议的视频服务,支持:
- 设备列表查询
- 实时视频流地址获取
- 录像片段检索与回放
- 基于 SSE 的异步事件推送
请先 clone 并启动 mcp-video-server,再启动本系统,否则 LLM 无法调用视频相关工具。
目录结构
- 启动服务
python main.py服务默认运行在 http://0.0.0.0:5003
前端部署
- 安装依赖
cd frontend
npm install- 开发环境运行
npm run dev- 构建生产版本
npm run build构建后的文件在 dist 目录中
环境变量配置
后端环境变量(.env文件)
# 服务器配置
SERVER_HOST=0.0.0.0
SERVER_PORT=5003
DATABASE_URL=sqlite:///./video_llm.db
# LLM配置 - OpenAI兼容接口
LLM_API_KEY=sk-your-api-key-here # OpenAI风格的API密钥
LLM_BASE_URL=http://localhost:5001/v1 # OpenAI API基础URL或兼容服务URL
LLM_MODEL=deepseek-ai/DeepSeek-R1 # OpenAI模型名称或兼容模型名称
# MCP服务器配置
MCP_LOG_LEVEL=DEBUG
MCP_SERVERS_CONFIG_FILE=./mcp_servers_config.jsonAPI文档
后端服务启动后,可以通过以下地址访问API文档:
- Swagger UI: http://localhost:5003/docs
- ReDoc: http://localhost:5003/redoc
关键API端点
LLM相关接口
POST /api/llm/query- 发送自然语言查询到LLMGET /api/llm/conversation-history- 获取对话历史
系统接口
GET /- 根路径,返回服务信息GET /health- 健康检查接口
Docker部署
使用Docker Compose进行容器化部署:
- 配置环境变量
确保 .env 文件已正确配置
- 启动服务
docker-compose up -d- 访问服务
- 后端API:http://localhost:5003 - 前端应用:http://localhost:3000 - API文档:http://localhost:5003/docs
技术栈
后端
- FastAPI:高性能异步API框架
- Python asyncio:异步编程支持
- Pydantic:数据验证和序列化
- aiosqlite:异步SQLite数据库访问
- Uvicorn:ASGI服务器
- MCP (Model Control Protocol):模型控制协议集成
前端
- Vue 3:渐进式JavaScript框架
- Vue Router:路由管理
- Element Plus:UI组件库
- Axios:HTTP客户端
系统集成流程
- LLM与MCP集成
后端服务启动时,自动初始化LLM和MCP客户端连接,MCP工具列表会被动态注入到LLM中。
- 请求处理流程
- 客户端发送自然语言查询 - LLM分析查询意图并决定是否调用工具 - 如果需要调用工具,通过MCP服务执行相应操作 - 将结果整合并返回给客户端
- MCP通信模式
支持SSE、HTTP Stream等通信方式,确保实时数据传输的稳定性和效率。
注意事项
- 端口占用
确保端口5003
- API密钥安全
生产环境中请勿将API密钥硬编码到代码中,使用环境变量或安全的密钥管理方案
- CORS配置
生产环境中应配置具体的允许来源域名,而不是使用通配符*
- 错误处理
系统包含完善的错误处理机制,确保在各种异常情况下能够优雅降级
- 日志管理
通过环境变量MCP_LOG_LEVEL控制日志详细程度,支持DEBUG、INFO、WARNING等级别
