forked from opc-2026-youth-w2/track-98
AI+文娱、AI+教育等
- Python 100%
| .forgejo/workflows | ||
| demo | ||
| examples | ||
| knowledge | ||
| src | ||
| tests | ||
| .gitignore | ||
| AI精品短剧创作引擎_Specs.md | ||
| config.example.yaml | ||
| CONTRIBUTING.md | ||
| convert_to_word.py | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| submissions.json | ||
| SUBMISSIONS.md | ||
| WAVE2_SKILLS.md | ||
云匠引擎 快速开始
文件结构
drama-engine/
├── src/
│ ├── pipeline_orchestrator.py # 调度脚本(核心)
│ └── experts/ # 专家数据包
│ ├── character_forger.md # §1 角色铸造师
│ ├── emotion_weaver.md # §2 情感编织师
│ ├── structure_architect.md # §3 结构建筑师
│ ├── dialogue_master.md # §4 对白大师
│ ├── episode_writer.py # §5 分集编剧
│ ├── format_craftsman.py # §6 格式工匠
│ ├── quality_auditor.py # §7 质量审计
│ ├── commercial_packager.md # ⑧ 商业包装
│ ├── revision_editor.py # §9 改稿编辑
│ ├── commander.md # ⑩ 实战指挥
│ ├── scene_craftsman.md # ⑪ 场景工匠
│ ├── world_forger.md # ⑫ 世界观锻造
│ ├── quote_extractor.md # ⑬ 金句萃取
│ ├── commercial_operator.md # ⑭ 商业操盘
│ └── quality_director.md # ⑮ 品控总监
└── README.md
快速使用
1. 配置 LLM API
# 设置环境变量
export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="https://api.openai.com/v1" # 或其他兼容API
# 或在代码中配置
llm_config = {
"platform": "openai",
"api_key": "your-api-key",
"base_url": "https://api.openai.com/v1"
}
2. 运行引擎
from pipeline_orchestrator import PipelineOrchestrator, LLMAPIAdapter, ExecutionMode
# 初始化
adapter = LLMAPIAdapter({"platform": "openai"})
orchestrator = PipelineOrchestrator(adapter, experts_base_path="./experts")
# 准备项目
project = {
"name": "岭上之路",
"genre": "男频/职场/励志",
"synopsis": "一个大专生在深圳打拼,从底层销售做到上市公司CEO的故事...",
"target_audience": "18-35岁男性",
"episode_count": 30,
"theme": "逆袭、奋斗、兄弟情"
}
# 执行完整链路
results = orchestrator.execute(project, mode=ExecutionMode.FULL, parallel=True)
# 获取执行报告
report = orchestrator.get_execution_report()
print(report)
# 获取最终剧本
if "format_craftsman" in results:
script = results["format_craftsman"].output.get("formatted_script", "")
print(script)
3. 执行模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
FULL |
完整链路(15专家全部跑) | 从零开始创作 |
EPISODE_ONLY |
仅分集开发(到§5) | 已有创意,需要分集 |
SCRIPT_ONLY |
仅剧本开发(§5→§7) | 已有分集大纲,需要剧本 |
POLISH_ONLY |
仅精修(§9) | 已有剧本,需要优化 |
EVALUATE_ONLY |
仅评估(§7) | 只想评估质量 |
依赖关系图
Layer 0: ⑩实战指挥(总调度)
↓
Layer 1: ①角色铸造 ─┐
⑫世界观锻造 ─┼─→ 可并行
⑧商业包装 ──┘
↓
Layer 2: ②情感编织(依赖①)
↓
Layer 3: ③结构建筑(依赖②)
↓
Layer 4: ④对白大师(依赖①③)─┐
⑪场景工匠(依赖④)──┘→ 可并行
↓
Layer 5: ⑤分集编剧(依赖①②③④)
↓
Layer 6: ⑥格式工匠(依赖⑤)─┐
⑬金句萃取(依赖④⑤)─┘→ 可并行
↓
Layer 7: ⑦质量审计(依赖所有创作专家)
↓
Layer 8: ⑨改稿编辑(依赖⑦)─┐
⑭商业操盘(依赖⑧)──┘→ 可并行
↓
Layer 9: ⑮品控总监(依赖⑦⑭)
输出示例
每个专家的输出都是JSON格式,包含在 results 字典中:
{
"character_forger": {
"status": "success",
"output": {
"characters": [...],
"protagonist": {...}
},
"execution_time": 12.5
},
"episode_writer": {
"status": "success",
"output": {
"episodes": [...],
"episode_scripts": [...]
},
"execution_time": 45.2
},
...
}
自定义扩展
添加新专家
from pipeline_orchestrator import ExpertConfig
# 在 _register_experts() 中添加
self._register(ExpertConfig(
expert_id="my_expert",
name="我的专家",
layer=5, # 依赖层级
dependencies=["episode_writer"], # 依赖的专家
system_prompt_file="my_expert.md",
input_schema={"episodes": "list"},
output_schema={"result": "dict"}
))
自定义 LLM 适配器
class MyLLMAdapter(LLMAPIAdapter):
def call(self, system_prompt, user_prompt, **kwargs):
# 实现你的API调用逻辑
return response
注意事项
- API Key: 确保
OPENAI_API_KEY环境变量已设置 - 文件路径:
experts_base_path指向专家配置文件目录 - 并行执行:
parallel=True会并行执行同层无依赖专家 - 错误处理: 可选专家(
optional=True)失败不会阻塞流水线 - JSON输出: 所有专家必须输出严格JSON格式,否则解析失败
故障排查
问题:JSON解析失败
- 检查专家prompt是否明确要求输出JSON
- 在prompt末尾添加"请严格按照JSON格式输出"
问题:依赖缺失
- 检查
dependencies列表是否正确 - 确保上游专家执行成功
问题:执行超时
- 增加LLM API的
timeout参数 - 减少
max_tokens限制
下一步
- 接入实际的LLM API(OpenAI/Coze/本地模型)
- 添加前端界面
- 实现结果持久化
- 添加重试机制
- 支持断点续跑