329 lines
6.8 KiB
Markdown
329 lines
6.8 KiB
Markdown
# 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 推送创作进度
|