creative_studio/MVP_GUIDE.md
2026-01-25 19:27:44 +08:00

329 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Creative Studio MVP 使用指南
## 快速开始
### 1. 启动后端
```powershell
cd backend
.\start.bat
```
### 2. 启动前端
```powershell
cd frontend
npm install
npm run dev
```
### 3. 配置 GLM API Key
编辑 `backend\.env` 文件:
```env
ZHIPUAI_API_KEY=your_api_key_here
```
获取 API Key: https://open.bigmodel.cn/usercenter/apikeys
---
## 完整创作流程演示
### 步骤 1: 创建项目
1. 访问 http://localhost:5173
2. 点击 "创建新项目"
3. 填写项目信息:
```
项目名称: 宫廷风云
总集数: 30
世界观设定: 架空朝代天启朝,皇权与相权之争
风格指南: 古风正剧,对话半文半白
主要人物:
李云飞:边关将军,耿直刚正,说话简练直接
苏婉儿:丞相之女,聪慧隐忍,说话含蓄委婉
整体大纲:
EP01-05相识与相恋两人被迫分离
EP06-15宫中斗争婉儿周旋云飞征战
EP16-25真相大白联手对抗丞相
EP26-30最终对决有情人终成眷属
```
### 步骤 2: 开始创作
1. 进入项目详情页
2. 点击 "开始创作 (EP1-EP3)"
3. 等待 AI 创作完成(每集约需 30-60 秒)
### 步骤 3: 查看结果
1. 创作完成后,剧集列表会显示已完成
2. 点击 "查看内容" 查看剧本
3. 可以看到大纲、完整剧本、质量分数
---
## API 使用示例
### 使用 Swagger UI
访问 http://localhost:8000/docs
#### 1. 查看所有 Skills
```
GET /api/v1/skills
```
#### 2. 测试 Skill
```
POST /api/v1/skills/dialogue_writer_ancient/test
{
"test_input": "请创作一段古风对话:李云飞向苏婉儿告别",
"temperature": 0.7
}
```
#### 3. 创建项目
```
POST /api/v1/projects
{
"name": "宫廷风云",
"totalEpisodes": 30,
"globalContext": {
"worldSetting": "架空朝代天启朝...",
"characterProfiles": {
"char_1": {
"name": "李云飞",
"description": "边关将军",
"personality": "耿直刚正",
"speechStyle": "简练直接"
}
}
}
}
```
#### 4. 执行剧集创作
```
POST /api/v1/projects/{project_id}/execute
{
"episodeNumber": 1,
"title": "初识"
}
```
---
## Python 脚本示例
### 完整创作流程脚本
```python
import requests
import time
BASE_URL = "http://localhost:8000/api/v1"
# 1. 创建项目
project_data = {
"name": "测试项目",
"totalEpisodes": 3,
"globalContext": {
"worldSetting": "架空朝代,皇权与相权之争",
"overallOutline": "EP1-3相识与相恋"
}
}
response = requests.post(f"{BASE_URL}/projects", json=project_data)
project = response.json()
project_id = project["id"]
print(f"✅ 项目创建成功: {project_id}")
# 2. 执行 EP1 创作
print("\n🎬 开始创作 EP1...")
start_time = time.time()
response = requests.post(
f"{BASE_URL}/projects/{project_id}/execute",
json={"episodeNumber": 1, "title": "初识"}
)
result = response.json()
if result["success"]:
episode = result["episode"]
print(f"✅ EP1 创作完成!")
print(f" 质量分数: {episode['qualityScore']}")
print(f" 创作耗时: {time.time() - start_time:.1f}秒")
print(f"\n📜 剧本预览:")
print(episode["content"][:500] + "...")
else:
print(f"❌ 创作失败: {result['message']}")
# 3. 获取所有剧集
response = requests.get(f"{BASE_URL}/projects/{project_id}/episodes")
episodes = response.json()
print(f"\n📊 已完成 {len(episodes)} 集")
for ep in episodes:
print(f" EP{ep['number']}: {ep['status']} - 分数: {ep.get('qualityScore', 'N/A')}")
```
### 批量创作脚本
```python
import requests
import time
BASE_URL = "http://localhost:8000/api/v1"
project_id = "your-project-id"
# 批量创作 EP1-EP5
for ep_num in range(1, 6):
print(f"\n🎬 创作 EP{ep_num}...")
start = time.time()
response = requests.post(
f"{BASE_URL}/projects/{project_id}/execute",
json={"episodeNumber": ep_num}
)
result = response.json()
elapsed = time.time() - start
if result["success"]:
episode = result["episode"]
print(f"✅ 完成 - 分数: {episode['qualityScore']} - 耗时: {elapsed:.1f}秒")
else:
print(f"❌ 失败: {result['message']}")
```
---
## cURL 示例
### 创建项目
```bash
curl -X POST http://localhost:8000/api/v1/projects \
-H "Content-Type: application/json" \
-d '{
"name": "宫廷风云",
"totalEpisodes": 3,
"globalContext": {
"worldSetting": "架空朝代天启朝",
"overallOutline": "EP1-3相识与相恋"
}
}'
```
### 执行创作
```bash
curl -X POST http://localhost:8000/api/v1/projects/{project_id}/execute \
-H "Content-Type: application/json" \
-d '{
"episodeNumber": 1,
"title": "初识"
}'
```
---
## 预期输出示例
### 创作完成的剧本
```
【场景】御花园,傍晚,落霞满天
【人物】李云飞、苏婉儿
李云飞:(拱手)苏姑娘,此地不宜久留。
苏婉儿:(轻叹)将军所言极是,只是...
李云飞:(环顾四周)只是什么?
苏婉儿:(低头)只是婉儿不知何时才能再与将军相见。
李云飞:(沉默片刻)三年,三年后我必回来。
苏婉儿:(猛地抬头)三年?太久了...
李云飞:(坚定)这是我能做到的极限。
【场景转换】
宫门之外,李云飞翻身上马,最后回首望向宫墙深处...
```
---
## 故障排查
### 问题 1: GLM API 调用失败
**症状**: 创作失败,提示 "GLM API 调用失败"
**解决**:
1. 检查 `.env` 文件中的 `ZHIPUAI_API_KEY` 是否正确
2. 确认 API Key 有效且有足够额度
3. 检查网络连接
### 问题 2: 创作结果为空
**症状**: 创作完成但内容为空
**解决**:
1. 查看后端日志
2. 尝试降低 `temperature` 参数
3. 检查提示词是否过长
### 问题 3: 前端无法连接后端
**症状**: 前端报错 "Network Error"
**解决**:
1. 确认后端服务正在运行 (http://localhost:8000)
2. 检查 CORS 配置
3. 确认前端代理配置正确
---
## MVP 功能限制
当前 MVP 版本的功能限制:
| 功能 | 状态 | 说明 |
|-----|------|------|
| 项目管理 | ✅ | 完整支持 |
| 单集执行 | ✅ | 完整支持 |
| 批量执行 | ✅ | 简化实现 |
| 记忆系统 | ⚠️ | 简化版(仅记录事件) |
| 审核系统 | ⚠️ | 简化版LLM 评分) |
| Agent 管理 | ❌ | 未实现(使用固定 Agent |
| Skill 配置 | ⚠️ | 仅支持内置 Skills |
| 用户创建 Skill | ✅ | 支持 |
| 数据持久化 | ❌ | 内存存储(重启丢失) |
---
## 下一步
MVP 验证通过后,可以继续实现:
1. **数据持久化** - 集成 MongoDB 存储项目和剧集
2. **完整记忆系统** - 事件时间线、伏笔追踪
3. **高级审核** - 多维度审核、问题定位
4. **Agent 管理** - 可视化 Agent 工作流
5. **实时执行监控** - WebSocket 推送创作进度