fix(viral-script): 分镜生成关豆包思考模式+放宽超时,根治reasoning超时fallback #2303

Merged
xiaoxia merged 2 commits from fix/viral-storyboard-disable-thinking into develop 2026-10-15 02:01:00 +08:00
Owner

根因(运维容器内直连ark探测实锤)

seed-2-1-pro 对 v6 编导级分镜的长 prompt(sys=5418+user=400+example=4047字,要求输出2500+tokens)默认开启 thinking/reasoning 模式:

  • 探测B(thinking默认):150s内 1096 chunks 全是 reasoning_content(5494字),content 0字
  • 探测C(thinking={type:disabled} / enable_thinking=False):+2.1s 出第一个content chunk,91s 流完全部 3669字 content,finish=length(撞max_tokens正常)

90s 流式 deadline 到期时模型还在思考 → raw 空 → attempt失败 → SDK重试再90s → 总deadline 300s爆 → fallback。

昨天 18:50 那次能收到部分内容,是 v5 脏 prompt 指令更短、思考时间短一些,给人"流式能出内容"的错觉。

修改

  1. _call_llm_once 加 enable_thinking 参数,同步/流式/同步降级三处都透传到 client.chat_completion/chat_completion_stream
  2. _step_script_generation 的 attempts 循环统一传 enable_thinking=False(分镜是模板填充式生成,不需要长推理)
  3. 超时按关思考后的真实耗时放宽:fast_tmo 90→120s,pro_tmo 120→150s,总deadline 300→450s(环境变量可覆盖)
  4. ai_client.py 流式delta处理加 reasoning_content 注释
  5. 默认超时注释更新,说明基于关思考实测

验证

  • 82 viral 单测全过(其余16851单测全过,2个musetalk失败是环境ffprobe问题与本次无关)
  • 运维同容器probe实证:关思考后 TTFT=2.1s、91s流完3669字
  • 撞max_tokens=2500的finish=length被#2297截断检测兜住,自动流转fast-0.6(max_tokens=3200)续跑

预期部署后 staging v2验证脚本:fast-0.8/0.6 2s出chunk、60-90s完整输出、parse多镜头、used_fallback=False。

cc @运维 合入后直接重跑v2验证脚本即可,不用改脚本。

## 根因(运维容器内直连ark探测实锤) seed-2-1-pro 对 v6 编导级分镜的长 prompt(sys=5418+user=400+example=4047字,要求输出2500+tokens)默认开启 thinking/reasoning 模式: - 探测B(thinking默认):150s内 1096 chunks 全是 reasoning_content(5494字),content 0字 - 探测C(thinking={type:disabled} / enable_thinking=False):+2.1s 出第一个content chunk,91s 流完全部 3669字 content,finish=length(撞max_tokens正常) 90s 流式 deadline 到期时模型还在思考 → raw 空 → attempt失败 → SDK重试再90s → 总deadline 300s爆 → fallback。 昨天 18:50 那次能收到部分内容,是 v5 脏 prompt 指令更短、思考时间短一些,给人"流式能出内容"的错觉。 ## 修改 1. _call_llm_once 加 enable_thinking 参数,同步/流式/同步降级三处都透传到 client.chat_completion/chat_completion_stream 2. _step_script_generation 的 attempts 循环统一传 enable_thinking=False(分镜是模板填充式生成,不需要长推理) 3. 超时按关思考后的真实耗时放宽:fast_tmo 90→120s,pro_tmo 120→150s,总deadline 300→450s(环境变量可覆盖) 4. ai_client.py 流式delta处理加 reasoning_content 注释 5. 默认超时注释更新,说明基于关思考实测 ## 验证 - 82 viral 单测全过(其余16851单测全过,2个musetalk失败是环境ffprobe问题与本次无关) - 运维同容器probe实证:关思考后 TTFT=2.1s、91s流完3669字 - 撞max_tokens=2500的finish=length被#2297截断检测兜住,自动流转fast-0.6(max_tokens=3200)续跑 预期部署后 staging v2验证脚本:fast-0.8/0.6 2s出chunk、60-90s完整输出、parse多镜头、used_fallback=False。 cc @运维 合入后直接重跑v2验证脚本即可,不用改脚本。
xiaoxia added 1 commit 2026-10-15 01:35:35 +08:00
fix(viral-script): 分镜生成关豆包思考模式+放宽超时,根治reasoning超时导致的fallback
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 0s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 54s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m39s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m4s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m8s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
47382c1d06
## 根因
运维在 staging worker 容器内直连 ark 端点探测:seed-2-1-pro 在 v6 编导级分镜的
长 prompt(sys=5418+user=400+example=4047 字,要求输出 2500+ tokens)下,默认开启
thinking/reasoning 模式——150s 流完全部是 reasoning_content(5494字),content 0 字。
90s 流式 deadline 到期时模型还在思考 → raw 为空 → attempt 失败 → SDK 重试再烧 90s
→ 总 deadline 300s 爆 → fast-0.6 被跳过 → _fallback_script 输出 9 字垃圾口播。

昨天 18:50 那次能收到部分内容,是因为 v5 脏 prompt 指令更短、思考时间短一些,
给人"流式能出内容"的错觉,掩盖了 reasoning 才是根因。

## 修复
1. **分镜 LLM 调用显式传 enable_thinking=False**:
   - _call_llm_once 加 enable_thinking 参数,同步/流式/同步降级三处都透传到 client
   - _step_script_generation 的 attempts 循环统一传 enable_thinking=False
   - 分镜是模板填充式生成(规则+few-shot示例→按格式输出),不需要长推理
   - 运维探测 C 实证:关思考后 TTFT 从 100s+ 降到 2.1s,91s 流完 3669 字 content
2. **超时按关思考后的真实耗时放宽**:
   - fast_tmo 90→120s,pro_tmo 120→150s,总 deadline 300→450s
   - 关思考后 fast 60~90s 可完成,120s 留 margin;pro 3500 tokens 留 150s
   - 环境变量 VIRAL_VIDEO_SCRIPT_FAST_TIMEOUT/PRO_TIMEOUT/TOTAL_DEADLINE 可线上应急覆盖
3. ai_client.py 流式 delta 处理处加注释说明 reasoning_content 字段和关思考的用途
   (不改现有逻辑:content_piece 已经只取 delta.content,reasoning_content 本来就
   不会被拼到 raw 里——问题是它占满了 90s deadline)
4. _call_llm_once docstring 补充 enable_thinking 说明
5. 默认超时注释更新,说明基于关思考实测设值

## 验证
- 82 viral 单测全过
- 运维同容器 probe 实测:thinking=disabled TTFT=2.1s,91s 完整输出 3669 字 content,
  finish=length(撞 max_tokens=2500 正常,被 #2297 finish_reason=length 检测兜住,
  自动流转到 fast-0.6 max_tokens=3200 续跑)
- 其余 16851 个单测全过(2 个 musetalk 失败是环境 ffprobe 问题,与本次改动无关)

预期部署后 staging v2 验证脚本:fast-0.8 或 fast-0.6 2.1s 出首个 content chunk、
60~90s 完整输出、parse 出多镜头、used_fallback=False。

🚀 预览环境已部署

项目 详情
PR号 #2303
预览链接 https://pr-2303.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2303 | | 预览链接 | [https://pr-2303.preview.xiaoxiajianji.com](https://pr-2303.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-10-15 01:39:20 +08:00
style: auto-format with black + isort + ruff + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 58s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m33s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m41s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m58s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m12s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m51s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 4m33s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Failing after 4m53s
AI Code Review / AI Code Review (pull_request) Successful in 6m44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 9m35s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m36s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 38s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m7s
f2f01be5eb
xiaoxia merged commit 0e668fda8c into develop 2026-10-15 02:01:00 +08:00

🗑️ 预览环境已清理

PR #2303 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #2303 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.