架构总览
┌─────────────────────────────────────────────────────────┐
│ 用户入口 (Web UI) │
│ Dify / Open WebUI / 自研前端 │
└──────────────────────┬──────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────┐
│ Agent 编排层 (Dify + MCP) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
│ │ 文案编辑 │ │ PPT制作 │ │ 编码助手 │ │ 生活助手 │ │
│ │ SubAgent │ │ SubAgent │ │ SubAgent │ │ SubAgent │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 文生图 │ │ 文生视频 │ │ 视频剪辑 │ │
│ │ MCP Tool │ │ MCP Tool │ │ MCP Tool │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ RAG 知识库引擎 │ │
│ └─────────────────────────────────────┘ │
└──────────────────────┬──────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────┐
│ 模型服务层 │
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
│ │ Qwen2.5 │ │ SD/FLUX │ │ CogVideoX / Wan2.1 │ │
│ │ 72B (vLLM) │ │ (ComfyUI) │ │ (ComfyUI) │ │
│ └────────────┘ └────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────┘
第一部分:硬件要求
最低配置(能跑)
| 组件 | 规格 | 预算参考 |
|---|---|---|
| GPU | 1× RTX 4090 24GB | ~¥16,000 |
| CPU | i7-13700K / Ryzen 9 7900X | ~¥3,000 |
| 内存 | 64GB DDR5 | ~¥1,500 |
| 存储 | 2TB NVMe SSD | ~¥1,000 |
| 总计 | ~¥25,000 |
此配置可跑 Qwen2.5-32B(量化)+ SDXL/FLUX + CogVideoX-2B
推荐配置(体验好)
| 组件 | 规格 | 预算参考 |
|---|---|---|
| GPU | 2× RTX 4090 24GB 或 1× A100 80GB | ¥32,000 ~ ¥80,000 |
| CPU | i9-14900K / Ryzen 9 7950X | ~¥4,500 |
| 内存 | 128GB DDR5 | ~¥3,000 |
| 存储 | 4TB NVMe SSD | ~¥2,000 |
此配置可跑 Qwen2.5-72B(4bit量化)+ FLUX.1 + CogVideoX-5B + Wan2.1
云服务器替代方案(按需租用)
# AutoDL(国内最流行的 GPU 云)
# A100 80GB: ~¥5/小时
# RTX 4090: ~¥2/小时
# 注册: https://www.autodl.com
# 适合不想一次性投入硬件的场景
第二部分:模型选型与部署
2.1 核心语言模型 — Qwen2.5-72B-Instruct
为什么选它:
- 开源模型中综合能力最强之一(代码、数学、中文理解)
- 原生支持 Function Calling / Tool Use
- 128K 上下文窗口
- 阿里持续迭代,社区生态好
部署方式 — vLLM(生产级推理引擎):
# 1. 安装 vLLM
pip install vllm
# 2. 下载模型(国内用 ModelScope 镜像)
pip install modelscope
modelscope download --model Qwen/Qwen2.5-72B-Instruct-GPTQ-Int4 --local_dir ./models/qwen2.5-72b
# 3. 启动 OpenAI 兼容 API 服务
python -m vllm.entrypoints.openai.api_server \
--model ./models/qwen2.5-72b \
--served-model-name qwen2.5-72b \
--tensor-parallel-size 2 \
--max-model-len 32768 \
--gpu-memory-utilization 0.9 \
--host 0.0.0.0 \
--port 8000
# 4. 验证
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-72b",
"messages": [{"role": "user", "content": "你好"}]
}'
单卡 4090 方案(用 Qwen2.5-32B 量化):
# 如果只有单卡 4090 24GB
modelscope download --model Qwen/Qwen2.5-32B-Instruct-AWQ --local_dir ./models/qwen2.5-32b
python -m vllm.entrypoints.openai.api_server \
--model ./models/qwen2.5-32b \
--served-model-name qwen2.5-32b \
--quantization awq \
--max-model-len 16384 \
--gpu-memory-utilization 0.95 \
--host 0.0.0.0 \
--port 8000
Ollama 方案(更简单,适合个人用):
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 拉取模型
ollama pull qwen2.5:72b # 需要 48GB+ 显存
ollama pull qwen2.5:32b # 需要 24GB 显存
ollama pull qwen2.5:14b # 需要 12GB 显存
# 启动(默认暴露 OpenAI 兼容 API 在 11434 端口)
ollama serve
# 验证
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "qwen2.5:32b", "messages": [{"role": "user", "content": "你好"}]}'
2.2 文生图模型 — FLUX.1 / Stable Diffusion
部署方式 — ComfyUI(最灵活的图像生成工作流):
# 1. 安装 ComfyUI
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
# 2. 下载模型(放到 models/ 对应目录)
# FLUX.1-dev(推荐,生成质量高)
# 从 https://modelscope.cn 搜索 FLUX.1-dev 下载
# 放到 ComfyUI/models/unet/
# SD3.5 / SDXL 也可以同时部署
# 放到 ComfyUI/models/checkpoints/
# 3. 启动
python main.py --listen 0.0.0.0 --port 8188
# ComfyUI 提供 REST API,可被 Agent 调用
# POST http://localhost:8188/prompt
2.3 文生视频 / 图生视频 — Wan2.1 / CogVideoX
# 方案 A: ComfyUI + Wan2.1 插件(推荐,与图像生成统一管理)
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper.git
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
# 下载 Wan2.1 模型
# modelscope download --model Wan-AI/Wan2.1-T2V-14B --local_dir ./models/wan2.1
# 方案 B: CogVideoX(智谱开源,适合低显存)
pip install cogvideo-factory
# CogVideoX-2B 只需 8GB 显存,CogVideoX-5B 需要 24GB
2.4 代码专用模型(可选,增强编码能力)
# DeepSeek-Coder-V2 或 Qwen2.5-Coder-32B
ollama pull qwen2.5-coder:32b
# 作为编码 SubAgent 的专用模型
第三部分:Agent 平台部署 — Dify
3.1 为什么选 Dify
- 开源、可私有化部署、中文社区活跃
- 原生支持 Agent、RAG 知识库、工作流编排
- 兼容 OpenAI API 格式(直接对接 vLLM/Ollama)
- 支持自定义 Tool(可接入 ComfyUI、视频生成等)
- 社区已有大量 Skills/Tools 可复用
3.2 部署 Dify
# 1. 克隆 Dify
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,关键配置:
# EDITION=SELF_HOSTED
# SECRET_KEY=<生成一个随机字符串>
# CONSOLE_WEB_URL=http://你的IP
# APP_WEB_URL=http://你的IP
# 3. 启动
docker compose up -d
# 4. 访问 http://localhost/install 完成初始化
# 设置管理员账号密码
3.3 接入本地模型
在 Dify 管理后台:
设置 → 模型供应商 → OpenAI-API-compatible
名称: Local-Qwen2.5-72B
API Base: http://宿主机IP:8000/v1 # vLLM 地址
API Key: not-needed # 本地不需要
模型名: qwen2.5-72b # 与 vLLM --served-model-name 一致
第四部分:构建多能力 Agent 系统
4.1 Agent 架构设计
┌──────────────┐
│ 主 Agent │ ← 路由 + 意图识别
│ (Orchestrator)│
└──────┬───────┘
┌───────┬───────┼───────┬───────┬───────┐
▼ ▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│文案 ││PPT ││编码 ││图像 ││视频 ││生活 │
│Agent ││Agent ││Agent ││Agent ││Agent ││Agent │
└──┬───┘└──┬───┘└──┬───┘└──┬───┘└──┬───┘└──┬───┘
│ │ │ │ │ │
知识库 python 代码执行 ComfyUI ComfyUI 搜索
RAG -pptx 沙箱 API API 天气/日历
4.2 在 Dify 中创建各个 SubAgent
SubAgent 1: 文案编辑助手
# Dify → 创建应用 → Agent
名称: 文案编辑助手
系统提示词: |
你是一名专业的文案编辑。擅长:
- 各类文体写作(公文、营销文案、技术文档、自媒体文案)
- 文章润色、改写、缩写、扩写
- SEO 优化、标题党生成
- 多风格切换(正式、幽默、学术、口语化)
工具:
- 知识库检索(上传写作范文、品牌调性文档)
- 网页搜索(Dify 内置)
SubAgent 2: PPT 制作助手
名称: PPT 制作助手
系统提示词: |
你是一名 PPT 制作专家。根据用户需求生成专业 PPT。
使用 python-pptx 库生成 .pptx 文件。
工具:
- 代码执行(Dify Sandbox,预装 python-pptx)
- 文生图工具(调用 ComfyUI 生成配图)
自定义 Tool — PPT 生成 API:
# ppt_service.py — 独立部署的 PPT 生成微服务
from fastapi import FastAPI
from pptx import Presentation
from pptx.util import Inches, Pt
import json, uuid, os
app = FastAPI()
@app.post("/generate_ppt")
async def generate_ppt(request: dict):
"""
接收结构化 PPT 内容,生成 .pptx 文件
request: {
"title": "演示标题",
"slides": [
{"title": "页面标题", "content": "内容", "image_url": "可选图片"}
]
}
"""
prs = Presentation()
# 封面
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = request["title"]
# 内容页
for s in request.get("slides", []):
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = s["title"]
slide.placeholders[1].text = s["content"]
filename = f"/outputs/ppt_{uuid.uuid4().hex[:8]}.pptx"
prs.save(filename)
return {"file_path": filename, "download_url": f"/download/{os.path.basename(filename)}"}
# 启动: uvicorn ppt_service:app --host 0.0.0.0 --port 8501
SubAgent 3: 编码助手
名称: 编码助手
模型: qwen2.5-coder:32b # 用代码专用模型
系统提示词: |
你是一名资深全栈工程师,擅长 TypeScript/Python/Go/Rust。
遵循 TDD、SOLID 原则。提供可运行的完整代码。
工具:
- 代码执行沙箱(Dify Sandbox)
- 知识库(上传框架文档、内部 API 文档)
SubAgent 4: 文生图 / 图像助手
创建 ComfyUI MCP Tool:
# comfyui_tool.py — 封装 ComfyUI API 为 Dify 自定义工具
from fastapi import FastAPI
import requests, json, uuid, time
app = FastAPI()
COMFYUI_URL = "http://localhost:8188"
# 预定义的 ComfyUI 工作流模板
FLUX_WORKFLOW = {
# ... ComfyUI 导出的 API 格式 workflow JSON
# 关键节点:正向提示词、负向提示词、尺寸、步数
}
@app.post("/text2img")
async def text2img(prompt: str, width: int = 1024, height: int = 1024):
workflow = FLUX_WORKFLOW.copy()
# 注入用户 prompt
workflow["6"]["inputs"]["text"] = prompt
workflow["5"]["inputs"]["width"] = width
workflow["5"]["inputs"]["height"] = height
# 提交到 ComfyUI
resp = requests.post(f"{COMFYUI_URL}/prompt", json={"prompt": workflow})
prompt_id = resp.json()["prompt_id"]
# 轮询等待完成
while True:
history = requests.get(f"{COMFYUI_URL}/history/{prompt_id}").json()
if prompt_id in history:
outputs = history[prompt_id]["outputs"]
# 提取生成的图片路径
for node_id in outputs:
if "images" in outputs[node_id]:
image = outputs[node_id]["images"][0]
return {
"image_url": f"{COMFYUI_URL}/view?filename={image['filename']}"
}
time.sleep(1)
# 启动: uvicorn comfyui_tool:app --host 0.0.0.0 --port 8502
SubAgent 5: 视频生成 / 剪辑助手
# video_service.py
from fastapi import FastAPI
import subprocess, uuid
app = FastAPI()
@app.post("/text2video")
async def text2video(prompt: str, duration: int = 4):
"""调用 Wan2.1 / CogVideoX 生成视频"""
# 通过 ComfyUI API 调用视频生成工作流
# 类似 text2img,但使用视频生成节点
pass
@app.post("/edit_video")
async def edit_video(input_path: str, operations: list):
"""
使用 FFmpeg 进行视频剪辑
operations: [
{"type": "trim", "start": "00:00:05", "end": "00:00:15"},
{"type": "concat", "files": ["a.mp4", "b.mp4"]},
{"type": "add_text", "text": "标题", "position": "center"},
{"type": "add_bgm", "audio": "bgm.mp3", "volume": 0.3},
{"type": "speed", "factor": 2.0}
]
"""
output_path = f"/outputs/video_{uuid.uuid4().hex[:8]}.mp4"
for op in operations:
if op["type"] == "trim":
subprocess.run([
"ffmpeg", "-i", input_path,
"-ss", op["start"], "-to", op["end"],
"-c", "copy", output_path
])
elif op["type"] == "add_text":
subprocess.run([
"ffmpeg", "-i", input_path,
"-vf", f"drawtext=text='{op['text']}':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2",
output_path
])
# ... 更多操作
return {"file_path": output_path}
# 启动: uvicorn video_service:app --host 0.0.0.0 --port 8503
SubAgent 6: 生活助手
名称: 生活助手
系统提示词: |
你是一名全能生活助手,可以帮助用户:
- 日程管理、待办事项
- 天气查询、出行建议
- 菜谱推荐、健康建议
- 知识问答
工具:
- 天气 API(和风天气免费 API)
- 日历/提醒(CalDAV 集成)
- 网页搜索
- 知识库(上传菜谱、健康指南等)
4.3 主 Agent(Orchestrator)编排
在 Dify 中创建**工作流(Workflow)**类型应用:
名称: 全能助手
类型: Workflow(Agent 模式)
系统提示词: |
你是一个智能路由助手。分析用户意图,将任务分发给合适的专业助手:
- 写文章、改文案、润色 → 调用「文案编辑助手」
- 做PPT、制作演示文稿 → 调用「PPT制作助手」
- 写代码、调试、技术问题 → 调用「编码助手」
- 画图、生成图片、设计 → 调用「图像助手」
- 做视频、剪辑、视频生成 → 调用「视频助手」
- 日常问题、天气、日程 → 调用「生活助手」
如果任务涉及多个领域,按顺序调用多个助手并整合结果。
工具:
- 文案编辑助手(作为 SubAgent 工具)
- PPT制作助手(作为 SubAgent 工具)
- 编码助手(作为 SubAgent 工具)
- 图像助手(作为 SubAgent 工具)
- 视频助手(作为 SubAgent 工具)
- 生活助手(作为 SubAgent 工具)
第五部分:MCP 集成
5.1 什么是 MCP
MCP (Model Context Protocol) 是 Anthropic 提出的开放协议,让 AI Agent 能以标准化方式连接外部工具和数据源。Dify 已原生支持 MCP。
5.2 部署 MCP Server
# 安装 MCP Server SDK
pip install mcp
# 也可使用社区 MCP Server
# https://github.com/modelcontextprotocol/servers
示例:文件系统 MCP Server:
# mcp_filesystem.py
from mcp.server import Server
from mcp.types import Tool, TextContent
import os, json
server = Server("filesystem")
@server.tool()
async def read_file(path: str) -> str:
"""读取文件内容"""
with open(path, "r") as f:
return f.read()
@server.tool()
async def write_file(path: str, content: str) -> str:
"""写入文件"""
with open(path, "w") as f:
f.write(content)
return f"已写入 {path}"
@server.tool()
async def list_directory(path: str = ".") -> str:
"""列出目录内容"""
return json.dumps(os.listdir(path), ensure_ascii=False)
# 启动
if __name__ == "__main__":
import asyncio
from mcp.server.stdio import stdio_server
asyncio.run(stdio_server(server))
示例:ComfyUI MCP Server(图像/视频生成):
# mcp_comfyui.py
from mcp.server import Server
import requests
server = Server("comfyui")
@server.tool()
async def generate_image(prompt: str, width: int = 1024, height: int = 1024) -> str:
"""使用 FLUX 模型生成图片"""
resp = requests.post("http://localhost:8502/text2img",
json={"prompt": prompt, "width": width, "height": height})
return resp.json()["image_url"]
@server.tool()
async def generate_video(prompt: str, duration: int = 4) -> str:
"""使用 Wan2.1 生成视频"""
resp = requests.post("http://localhost:8503/text2video",
json={"prompt": prompt, "duration": duration})
return resp.json()["file_path"]
5.3 在 Dify 中接入 MCP
Dify 管理后台 → 工具 → 自定义工具 → 添加 MCP 工具
传输方式: SSE
MCP Server URL: http://localhost:MCP端口/sse
第六部分:知识库建设
6.1 知识库架构
知识库/
├── 文案写作/
│ ├── 营销文案范文.pdf
│ ├── 公文写作规范.pdf
│ └── SEO写作指南.md
├── PPT制作/
│ ├── PPT设计原则.pdf
│ └── 配色方案手册.pdf
├── 编程开发/
│ ├── TypeScript最佳实践.md
│ ├── React设计模式.pdf
│ └── 内部API文档/(Swagger导出)
├── 图像设计/
│ ├── Prompt工程指南.md
│ ├── 构图法则.pdf
│ └── 风格参考库.md
├── 视频制作/
│ ├── 剪辑技巧手册.pdf
│ └── 转场效果参考.md
└── 生活百科/
├── 菜谱大全.pdf
├── 健康指南.pdf
└── 旅行攻略.md
6.2 在 Dify 中创建知识库
1. Dify → 知识库 → 创建知识库
2. 上传文档(支持 PDF、Markdown、TXT、HTML、DOCX)
3. 分段设置:
- 分段方式:自动
- 最大分段长度:1000 tokens
- 分段重叠:100 tokens
4. 索引方式:高质量(向量 + 关键词混合检索)
5. Embedding 模型:使用本地 bge-m3
部署本地 Embedding 模型:
# 使用 Ollama 部署 Embedding 模型
ollama pull bge-m3
# 或使用 Xinference 部署(更多选择)
pip install xinference
xinference launch --model-name bge-m3 --model-type embedding
# API: http://localhost:9997/v1/embeddings
第七部分:Docker Compose 一键部署
# docker-compose.yml — 完整的全能 Agent 栈
version: '3.8'
services:
# ========== 模型服务 ==========
vllm:
image: vllm/vllm-openai:latest
runtime: nvidia
ports:
- "8000:8000"
volumes:
- ./models:/models
command: >
--model /models/qwen2.5-72b
--served-model-name qwen2.5-72b
--tensor-parallel-size 2
--max-model-len 32768
--gpu-memory-utilization 0.85
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 2
capabilities: [gpu]
ollama:
image: ollama/ollama:latest
runtime: nvidia
ports:
- "11434:11434"
volumes:
- ./ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
# ========== 图像/视频生成 ==========
comfyui:
image: yanwk/comfyui-boot:latest
runtime: nvidia
ports:
- "8188:8188"
volumes:
- ./comfyui_models:/root/ComfyUI/models
- ./comfyui_output:/root/ComfyUI/output
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
# ========== 工具微服务 ==========
ppt-service:
build: ./services/ppt
ports:
- "8501:8501"
volumes:
- ./outputs:/outputs
video-service:
build: ./services/video
ports:
- "8503:8503"
volumes:
- ./outputs:/outputs
# ========== Agent 平台 (Dify) ==========
# Dify 自带 docker-compose,这里只展示关键配置
# 详见 dify/docker/docker-compose.yml
# ========== 向量数据库 ==========
weaviate:
image: semitechnologies/weaviate:latest
ports:
- "8080:8080"
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "true"
PERSISTENCE_DATA_PATH: "/var/lib/weaviate"
volumes:
- ./weaviate_data:/var/lib/weaviate
# ========== 对象存储(文件上传下载)==========
minio:
image: minio/minio:latest
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./minio_data:/data
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123
第八部分:实施步骤时间线
基础设施
├── Day 1: 硬件采购/云服务器开通,安装 NVIDIA 驱动 + CUDA + Docker
├── Day 2: 部署 vLLM/Ollama + Qwen2.5 模型,验证推理正常
└── Day 2: 部署 Dify,接入本地模型,验证基础对话
核心能力
├── Day 3: 部署 ComfyUI + FLUX 模型,实现文生图
├── Day 3: 部署 Wan2.1/CogVideoX,实现文生视频
├── Day 4: 创建各个 SubAgent + 系统提示词
└── Day 4: 搭建知识库,上传初始文档
工具集成
├── Day 5: 开发 PPT/视频剪辑微服务
├── Day 5: 开发 MCP Server,接入 Dify
├── Day 6: 主 Agent 编排 + 路由测试
└── Day 6: 端到端联调
优化上线
├── Day 7: 性能调优(量化、缓存、并发)
├── Day 7: 安全加固(API 鉴权、网络隔离)
├── Day 8: 编写使用文档
└── Day 8: 正式使用 + 持续迭代知识库
总结:核心技术栈选择
| 层级 | 技术选型 | 理由 |
|---|---|---|
| 语言模型 | Qwen2.5-72B (vLLM) | 开源最强中文模型,原生 Tool Use |
| 代码模型 | Qwen2.5-Coder-32B | 编码场景专用 |
| 图像生成 | FLUX.1-dev (ComfyUI) | 当前最优开源图像模型 |
| 视频生成 | Wan2.1 / CogVideoX | 阿里/智谱开源,效果好 |
| Agent 平台 | Dify | 开源、成熟、支持 MCP/RAG/工作流 |
| 推理引擎 | vLLM (生产) / Ollama (轻量) | 高吞吐 / 易用 |
| 向量数据库 | Weaviate (Dify内置支持) | 知识库检索 |
| 工具协议 | MCP | 标准化工具集成 |
| 容器化 | Docker Compose | 一键部署全栈 |