735 lines
11 KiB
Markdown
735 lines
11 KiB
Markdown
# Creative Studio API 文档
|
||
|
||
## 概述
|
||
|
||
Creative Studio 提供 RESTful API 接口,支持项目管理、Skill 管理、记忆系统、审核系统等功能。
|
||
|
||
**Base URL**: `http://localhost:8000/api/v1`
|
||
|
||
**认证方式**: Bearer Token (即将支持)
|
||
|
||
**数据格式**: JSON
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
- [Skill 管理 API](#skill-管理-api)
|
||
- [项目管理 API](#项目管理-api)
|
||
- [记忆系统 API](#记忆系统-api)
|
||
- [审核系统 API](#审核系统-api)
|
||
- [错误处理](#错误处理)
|
||
- [使用示例](#使用示例)
|
||
|
||
---
|
||
|
||
## Skill 管理 API
|
||
|
||
### 1. 列出所有 Skills
|
||
|
||
```http
|
||
GET /api/v1/skills
|
||
```
|
||
|
||
**查询参数**:
|
||
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|-----|------|-----|------|
|
||
| skill_type | string | 否 | 筛选类型 (builtin/user) |
|
||
| category | string | 否 | 筛选分类 |
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"id": "dialogue-writer-ancient",
|
||
"name": "古风对话大师",
|
||
"version": "2.1.0",
|
||
"type": "builtin",
|
||
"category": "编剧 > 对话风格",
|
||
"behavior_guide": "你是专业的古风剧集编剧...",
|
||
"tags": ["古风", "对话", "编剧"],
|
||
"created_at": "2024-01-15T10:00:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 获取 Skill 详情
|
||
|
||
```http
|
||
GET /api/v1/skills/{skill_id}
|
||
```
|
||
|
||
**路径参数**:
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
|-----|------|------|
|
||
| skill_id | string | Skill ID |
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"id": "dialogue-writer-ancient",
|
||
"name": "古风对话大师",
|
||
"version": "2.1.0",
|
||
"author": "Creative Studio Platform",
|
||
"type": "builtin",
|
||
"behavior_guide": "你是专业的古风剧集编剧...",
|
||
"config": {
|
||
"preset": null,
|
||
"parameters": {},
|
||
"weights": null
|
||
},
|
||
"category": "编剧 > 对话风格",
|
||
"tags": ["古风", "对话", "编剧"]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 创建新 Skill
|
||
|
||
```http
|
||
POST /api/v1/skills
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"id": "my-custom-skill",
|
||
"name": "我的自定义 Skill",
|
||
"content": "# Skill: 我的自定义 Skill\n\n## 行为指导\n你是...",
|
||
"category": "自定义",
|
||
"tags": ["测试"]
|
||
}
|
||
```
|
||
|
||
**响应**: 返回创建的 Skill 对象
|
||
|
||
---
|
||
|
||
### 4. 测试 Skill
|
||
|
||
```http
|
||
POST /api/v1/skills/{skill_id}/test
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"test_input": "请帮我创作一段古风对话",
|
||
"context": {
|
||
"scene": "御花园",
|
||
"characters": ["李云飞", "苏婉儿"]
|
||
},
|
||
"temperature": 0.7
|
||
}
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"skill_id": "dialogue-writer-ancient",
|
||
"skill_name": "古风对话大师",
|
||
"response": "【场景】御花园,傍晚\n【人物】李云飞、苏婉儿\n\n李云飞:(拱手)苏姑娘...",
|
||
"usage": {
|
||
"prompt_tokens": 150,
|
||
"completion_tokens": 300,
|
||
"total_tokens": 450
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 更新 Skill
|
||
|
||
```http
|
||
PUT /api/v1/skills/{skill_id}
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"name": "更新后的名称",
|
||
"content": "更新后的内容..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 删除 Skill
|
||
|
||
```http
|
||
DELETE /api/v1/skills/{skill_id}
|
||
```
|
||
|
||
**响应**: 204 No Content
|
||
|
||
---
|
||
|
||
### 7. 重新加载 Skill
|
||
|
||
```http
|
||
POST /api/v1/skills/{skill_id}/reload
|
||
```
|
||
|
||
用于清除缓存并重新加载 Skill。
|
||
|
||
---
|
||
|
||
### 8. 列出所有分类
|
||
|
||
```http
|
||
GET /api/v1/skills/categories/list
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
["编剧 > 对话风格", "审核 > 一致性", "通用"]
|
||
```
|
||
|
||
---
|
||
|
||
## 项目管理 API
|
||
|
||
### 1. 列出所有项目
|
||
|
||
```http
|
||
GET /api/v1/projects
|
||
```
|
||
|
||
**查询参数**:
|
||
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|-----|------|-----|------|
|
||
| status | string | 否 | 筛选状态 |
|
||
| agent_id | string | 否 | 筛选 Agent 类型 |
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"id": "proj-123",
|
||
"name": "我的古风剧集",
|
||
"description": "一部古装爱情剧",
|
||
"agent_id": "series-creation-agent",
|
||
"status": "active",
|
||
"created_at": "2024-01-15T10:00:00Z",
|
||
"episode_count": 10,
|
||
"completed_episodes": 3
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 创建项目
|
||
|
||
```http
|
||
POST /api/v1/projects
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"name": "我的古风剧集",
|
||
"description": "一部古装爱情剧",
|
||
"agent_id": "series-creation-agent",
|
||
"global_context": {
|
||
"world_setting": "古代架空世界...",
|
||
"character_profiles": [...],
|
||
"scene_settings": [...],
|
||
"overall_outline": "..."
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 获取项目详情
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"id": "proj-123",
|
||
"name": "我的古风剧集",
|
||
"description": "一部古装爱情剧",
|
||
"agent_id": "series-creation-agent",
|
||
"status": "active",
|
||
"global_context": {...},
|
||
"memory": {...},
|
||
"episodes": [...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 更新项目
|
||
|
||
```http
|
||
PUT /api/v1/projects/{project_id}
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 删除项目
|
||
|
||
```http
|
||
DELETE /api/v1/projects/{project_id}
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 执行单集创作
|
||
|
||
```http
|
||
POST /api/v1/projects/{project_id}/execute
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"episode_number": 4,
|
||
"config": {
|
||
"duration_minutes": 45,
|
||
"focus_areas": ["情感发展", "剧情推进"]
|
||
}
|
||
}
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"episode_id": "ep-proj-123-4",
|
||
"episode_number": 4,
|
||
"status": "in_progress",
|
||
"stages": {
|
||
"structure": "completed",
|
||
"outline": "in_progress",
|
||
"dialogue": "pending",
|
||
"review": "pending",
|
||
"memory": "pending"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 批量执行剧集创作
|
||
|
||
```http
|
||
POST /api/v1/projects/{project_id}/execute-batch
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"start_episode": 4,
|
||
"end_episode": 6,
|
||
"batch_config": {
|
||
"quality_threshold": 85,
|
||
"max_retries": 2
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 8. 获取剧集列表
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/episodes
|
||
```
|
||
|
||
---
|
||
|
||
### 9. 获取单集详情
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/episodes/{episode_number}
|
||
```
|
||
|
||
---
|
||
|
||
## 记忆系统 API
|
||
|
||
### 1. 获取项目记忆
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/memory
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"eventTimeline": [...],
|
||
"pendingThreads": [...],
|
||
"characterStates": {...},
|
||
"foreshadowing": [...],
|
||
"relationships": {...}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 获取事件时间线
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/memory/timeline
|
||
```
|
||
|
||
**查询参数**:
|
||
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|-----|------|-----|------|
|
||
| character | string | 否 | 筛选角色 |
|
||
| episode | int | 否 | 筛选集数 |
|
||
| importance | string | 否 | 筛选重要性 (low/medium/high) |
|
||
|
||
---
|
||
|
||
### 3. 获取待收线问题
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/memory/threads
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 添加待收线问题
|
||
|
||
```http
|
||
POST /api/v1/projects/{project_id}/memory/threads
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"description": "需要解释为什么主角会失去记忆",
|
||
"importance": "high",
|
||
"reminder_episode": 5
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 更新待收线问题
|
||
|
||
```http
|
||
PUT /api/v1/projects/{project_id}/memory/threads/{thread_id}
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 标记问题已解决
|
||
|
||
```http
|
||
POST /api/v1/projects/{project_id}/memory/resolve-thread
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"thread_id": "thread-123",
|
||
"resolution_episode": 5,
|
||
"resolution_description": "在第五集中揭示..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 获取人物状态
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/memory/characters
|
||
```
|
||
|
||
---
|
||
|
||
## 审核系统 API
|
||
|
||
### 1. 获取审核配置
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/review-config
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"enabled_review_skills": ["consistency_checker", "dialogue_quality_checker"],
|
||
"overall_strictness": "medium",
|
||
"dimension_settings": {...},
|
||
"custom_rules": [...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 更新审核配置
|
||
|
||
```http
|
||
PUT /api/v1/projects/{project_id}/review-config
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"enabled_review_skills": ["consistency_checker"],
|
||
"overall_strictness": "strict",
|
||
"dimension_settings": {
|
||
"character_consistency": {
|
||
"enabled": true,
|
||
"strictness": 0.8,
|
||
"weight": 0.5
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 获取审核配置预设
|
||
|
||
```http
|
||
GET /api/v1/projects/{project_id}/review-presets
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 执行剧集审核
|
||
|
||
```http
|
||
POST /api/v1/projects/{project_id}/episodes/{episode_number}/review
|
||
```
|
||
|
||
**响应示例**:
|
||
|
||
```json
|
||
{
|
||
"episode_id": "ep-proj-123-4",
|
||
"overall_score": 85.5,
|
||
"passed": true,
|
||
"dimension_scores": {
|
||
"character_consistency": 88,
|
||
"plot_coherence": 82,
|
||
"dialogue_quality": 90
|
||
},
|
||
"issues": [
|
||
{
|
||
"id": "issue-1",
|
||
"type": "character_inconsistency",
|
||
"dimension": "character_consistency",
|
||
"severity": "medium",
|
||
"location": {
|
||
"episode": 4,
|
||
"scene": 2,
|
||
"line": 15
|
||
},
|
||
"description": "角色行为与设定不符",
|
||
"suggestion": "建议修改为...",
|
||
"auto_fix_available": true
|
||
}
|
||
],
|
||
"new_foreshadowing": [...],
|
||
"resolved_threads": [...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 获取可用的审核维度
|
||
|
||
```http
|
||
GET /api/v1/review/dimensions
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 添加自定义规则
|
||
|
||
```http
|
||
POST /api/v1/review/custom-rules
|
||
```
|
||
|
||
**请求体**:
|
||
|
||
```json
|
||
{
|
||
"project_id": "proj-123",
|
||
"rule": {
|
||
"name": "对话自然性检查",
|
||
"description": "检查对话是否过于生硬",
|
||
"trigger_condition": "对话包含超过3个连续的形容词",
|
||
"severity": "medium"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 删除自定义规则
|
||
|
||
```http
|
||
DELETE /api/v1/review/custom-rules/{rule_id}
|
||
```
|
||
|
||
---
|
||
|
||
## 错误处理
|
||
|
||
所有 API 在出错时返回以下格式:
|
||
|
||
```json
|
||
{
|
||
"detail": "错误描述信息"
|
||
}
|
||
```
|
||
|
||
**常见 HTTP 状态码**:
|
||
|
||
| 状态码 | 说明 |
|
||
|-------|------|
|
||
| 200 | 成功 |
|
||
| 201 | 创建成功 |
|
||
| 204 | 成功(无内容) |
|
||
| 400 | 请求参数错误 |
|
||
| 404 | 资源不存在 |
|
||
| 422 | 数据验证失败 |
|
||
| 500 | 服务器内部错误 |
|
||
|
||
---
|
||
|
||
## 使用示例
|
||
|
||
### Python 示例
|
||
|
||
```python
|
||
import requests
|
||
|
||
BASE_URL = "http://localhost:8000/api/v1"
|
||
|
||
# 列出所有 Skills
|
||
response = requests.get(f"{BASE_URL}/skills")
|
||
skills = response.json()
|
||
print(skills)
|
||
|
||
# 测试 Skill
|
||
response = requests.post(
|
||
f"{BASE_URL}/skills/dialogue-writer-ancient/test",
|
||
json={
|
||
"test_input": "请帮我创作一段古风对话",
|
||
"temperature": 0.7
|
||
}
|
||
)
|
||
result = response.json()
|
||
print(result["response"])
|
||
|
||
# 创建项目
|
||
response = requests.post(
|
||
f"{BASE_URL}/projects",
|
||
json={
|
||
"name": "我的古风剧集",
|
||
"agent_id": "series-creation-agent",
|
||
"global_context": {...}
|
||
}
|
||
)
|
||
project = response.json()
|
||
print(project)
|
||
```
|
||
|
||
### JavaScript 示例
|
||
|
||
```javascript
|
||
const BASE_URL = "http://localhost:8000/api/v1";
|
||
|
||
// 列出所有 Skills
|
||
const response = await fetch(`${BASE_URL}/skills`);
|
||
const skills = await response.json();
|
||
console.log(skills);
|
||
|
||
// 测试 Skill
|
||
const result = await fetch(`${BASE_URL}/skills/dialogue-writer-ancient/test`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
},
|
||
body: JSON.stringify({
|
||
test_input: "请帮我创作一段古风对话",
|
||
temperature: 0.7
|
||
})
|
||
});
|
||
const data = await result.json();
|
||
console.log(data.response);
|
||
|
||
// 创建项目
|
||
const project = await fetch(`${BASE_URL}/projects`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
},
|
||
body: JSON.stringify({
|
||
name: "我的古风剧集",
|
||
agent_id: "series-creation-agent",
|
||
global_context: {...}
|
||
})
|
||
});
|
||
const projectData = await project.json();
|
||
console.log(projectData);
|
||
```
|
||
|
||
---
|
||
|
||
## 附录
|
||
|
||
### Skill 类型说明
|
||
|
||
- **builtin**: 平台内置的 Skill,用户不可修改
|
||
- **user**: 用户自定义的 Skill,可以编辑和删除
|
||
|
||
### 项目状态说明
|
||
|
||
- **draft**: 草稿状态
|
||
- **active**: 活跃项目
|
||
- **completed**: 已完成
|
||
- **archived**: 已归档
|
||
|
||
### 剧集状态说明
|
||
|
||
- **pending**: 待创作
|
||
- **in_progress**: 创作中
|
||
- **completed**: 已完成
|
||
- **needs-review**: 需要审核
|
||
- **failed**: 创作失败
|
||
|
||
### 审核问题严重程度说明
|
||
|
||
- **low**: 低优先级问题
|
||
- **medium**: 中等优先级问题
|
||
- **high**: 高优先级问题
|