2026-01-25 19:27:44 +08:00

735 lines
11 KiB
Markdown
Raw Permalink 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 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**: 高优先级问题