95 lines
2.5 KiB
Markdown
95 lines
2.5 KiB
Markdown
# PPT Worker 微服务
|
||
|
||
PPT Master 管线的 HTTP 服务封装,作为 GovAI 平台的 PPT 生成后端。
|
||
|
||
## 架构
|
||
|
||
```
|
||
GovAI 前端 → Go 后端 → Redis 队列 → PPT Worker → PPTX 文件
|
||
```
|
||
|
||
Worker 接收任务后执行完整 PPT Master 管线:
|
||
1. **源内容转换** — PDF/DOCX/URL/文本 → Markdown
|
||
2. **项目初始化** — 创建 PPT Master 项目结构
|
||
3. **策略师阶段** — LLM 生成设计规范 + 执行锁定
|
||
4. **图片获取** — AI 生图(可选)
|
||
5. **执行器阶段** — LLM 逐页生成 SVG
|
||
6. **后处理导出** — SVG 质量检查 → finalize → 导出 PPTX
|
||
|
||
## 快速开始
|
||
|
||
### 前置条件
|
||
|
||
- Python 3.10+
|
||
- PostgreSQL(GovAI 数据库)
|
||
- Redis
|
||
- PPT Master 项目(`/Users/freedak/Documents/go-new/ppt-master`)
|
||
|
||
### 安装
|
||
|
||
```bash
|
||
cd ppt-worker
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 配置
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# 编辑 .env,填入数据库、Redis、LLM API Key 等配置
|
||
```
|
||
|
||
### 启动
|
||
|
||
```bash
|
||
# 同时启动 HTTP API + Worker
|
||
python app.py
|
||
|
||
# 或仅启动 Worker(不含 HTTP API)
|
||
python worker.py
|
||
```
|
||
|
||
### Docker
|
||
|
||
```bash
|
||
cd docker
|
||
docker compose up -d ppt-worker
|
||
```
|
||
|
||
## API
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/api/tasks` | 创建文本/URL 任务 |
|
||
| POST | `/api/tasks/upload` | 创建带文件上传的任务 |
|
||
| GET | `/api/tasks/{id}` | 查询任务状态 |
|
||
| GET | `/api/tasks/{id}/download` | 下载 PPTX 文件 |
|
||
| GET | `/health` | 健康检查 |
|
||
|
||
## 环境变量
|
||
|
||
| 变量 | 默认值 | 说明 |
|
||
|------|--------|------|
|
||
| `WORKER_PORT` | 8090 | HTTP 服务端口 |
|
||
| `WORKER_CONCURRENCY` | 2 | 并发处理数 |
|
||
| `DATABASE_URL` | - | PostgreSQL 连接串 |
|
||
| `REDIS_URL` | redis://localhost:6379/0 | Redis 连接串 |
|
||
| `PPT_MASTER_PATH` | - | PPT Master 项目路径 |
|
||
| `OPENAI_API_KEY` | - | DashScope API Key(LLM + 图片共用) |
|
||
| `OPENAI_BASE_URL` | https://dashscope.aliyuncs.com/compatible-mode/v1 | 千问 OpenAI 兼容端点 |
|
||
| `OPENAI_MODEL` | qwen-max | 千问模型(推荐 qwen-max / qwen-plus) |
|
||
| `IMAGE_BACKEND` | wanx | 图片后端(`wanx` 通义万相 / 其他回退脚本) |
|
||
| `WANX_MODEL` | wanx-v1 | 万相模型名 |
|
||
| `IMAGE_API_KEY` | (空,复用 OPENAI_API_KEY) | 单独的图片 API Key(可选) |
|
||
|
||
### 千问模型推荐
|
||
|
||
| 模型 | 上下文 | 适用场景 |
|
||
|------|--------|---------|
|
||
| `qwen-max` | 128K | SVG 生成首选,质量最好 |
|
||
| `qwen-plus` | 128K | 性价比之选 |
|
||
| `qwen-long` | 10M | 超长文档输入 |
|
||
| `qwen-turbo` | 128K | 速度优先 |
|