You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.1 KiB
3.1 KiB
剧本解析切换回 GPT-4o Mini 模型
日期: 2026-02-09
类型: 配置调整
影响范围: 剧本解析 AI 任务
背景
在尝试使用 Gemini 2.5 Flash 进行剧本解析时,发现 Gemini 模型返回的是自然语言解释而非 JSON 格式数据,导致解析失败。
问题表现
AI 返回内容:
好的,我将根据您提供的剧本内容,将其拆解为结构化的 JSON 格式场景和镜头信息。
由于剧本中没有明确的镜头细节(如景别、运镜、时长),我将根据剧本描述和电影叙事惯例进行合理推断和补充...
错误信息:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
根本原因
- Gemini 模型不支持 OpenAI 的
response_format={'type': 'json_object'}参数 - Gemini 倾向于返回自然语言解释,即使在 System Prompt 中要求 JSON 格式
- 需要针对 Gemini 模型进行专门的 Prompt 优化和响应处理
解决方案
临时方案:切换回 GPT-4o Mini 模型
- GPT-4o Mini 支持
response_format参数,能够强制返回 JSON 格式 - 稳定可靠,已经过充分测试
- 性价比高,适合剧本解析任务
长期方案(待实施):
-
优化 AIHubMix Provider,针对 Gemini 模型:
- 在 System Prompt 中添加更强的 JSON 格式约束
- 实现响应后处理,提取 JSON 内容
- 添加重试机制
-
优化 AI Skill Prompt:
- 在 Prompt 开头和结尾都强调"只返回 JSON,不要任何解释"
- 提供 JSON 示例
- 使用更明确的格式要求
修改内容
1. 修改剧本解析 API 默认模型
文件: server/app/api/v1/screenplays.py
# 修改前
model='gemini-2.5-flash', # 使用 Gemini 2.5 Flash(性价比最高,支持结构化输出)
# 修改后
model='gpt-4o-mini', # 使用 GPT-4o Mini(稳定可靠,JSON 格式输出)
2. 重启服务
docker restart jointo-server-app
测试验证
测试步骤
- 上传剧本文件
- 触发剧本解析
- 验证 AI 返回 JSON 格式数据
- 验证元素和分镜正确创建
预期结果
- ✅ AI 返回标准 JSON 格式
- ✅ 角色、场景、道具正确提取
- ✅ 分镜正确生成
- ✅
scene_count和character_count正确更新
后续计划
-
短期(1-2 周):
- 监控 GPT-4o Mini 的解析质量和成本
- 收集用户反馈
-
中期(1 个月):
- 实现 Gemini 模型的专门优化
- 添加模型选择功能(让用户选择使用哪个模型)
-
长期(2-3 个月):
- 实现多模型对比测试
- 根据任务类型自动选择最优模型
- 实现模型降级和重试机制
相关文档
技术债务
- 实现 Gemini 模型的 JSON 格式优化
- 添加模型选择 UI
- 实现多模型对比测试框架
- 优化 AI Skill Prompt 以支持更多模型