feat(vision): #2200 V2图片分析快速路径 OCR+lite JSON VLM并行 目标单图<3s/8图<15s #2200
Reference in New Issue
Block a user
Delete Branch "feat/vision-v2-fast-path"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
灵应直接指令(10-05):图片分析专用API组合方案直接干,优先火山引擎视觉智能API,人体属性/商品检测/图像标签/OCR四并行,结果代码组装portrait_prompt,VLM保留为fallback,目标单图1-3秒、8图<15秒。
API 选型说明(关键决策)
经过火山引擎官方文档/控制台/API 全量盘点,火山云端公开HTTP API实际可用的结构化视觉能力只有 OCR:
tools-sync/ocr,Bearer鉴权,同步)按灵应「遇到选型决策点按最优方案执行」指令,采用务实方案:专用API(OCR)+ 极快VLM强约束JSON(弥补缺失3类)+ pro VLM兜底。
架构
新模块
apps/worker/worker_app/tasks/vision/:vlm_fast_json.py:doubao-seed-2.1-lite 调用,system prompt 极致精简只给JSON schema+强约束(禁止自然语言、禁止markdown、禁止解释),temperature=0.1,max_tokens=350,timeout=8socr_volc.py:火山MediaKitPOST /api/v1/tools-sync/ocr,Bearer鉴权,timeout=8s,返回去重文本列表assembler.py:字段映射+portrait_prompt模板拼接(60-100字穿搭描述,适配Seedream纯文生图),输出dict字段与旧_normalize()完全一致fast_path.py:analyze_image_v2():单图2路并行(OCR + lite JSON VLM),fast_timeout=10s;结果不可用/失败自动降级复用旧_analyze_single_imagelite/pro竞速VLManalyze_images_v2():外层8图全并发(VISION_V2_IMG_WORKERS可调,默认8)_step_image_analysis()增加灰度开关VISION_V2_ENABLED(默认 false 走旧V1竞速路径;true走V2快速路径)。下游零改动:输出 dict 字段(name/brand/category/appearance/packaging/text_on_package/key_features/scene/mood/portrait_prompt/summary/_source)与旧 VLM
_normalize()格式完全一致,信任链 t2i / intent_parsing / script_generation 不需要任何改动。性能预期
环境变量
VISION_V2_ENABLED=true:开启V2快速路径(默认false走V1)VISION_V2_IMG_WORKERS=8:外层图片并发数(默认8)VISION_V2_FAST_TIMEOUT=10:单图fast路径总超时(默认10s)VISION_V2_FAST_JSON_TIMEOUT=8:lite JSON VLM单次超时(默认8s)VISION_V2_OCR_TIMEOUT=8:OCR单次超时(默认8s)风险与回滚
VISION_V2_ENABLED=false立即回退到V1测试计划
VISION_V2_ENABLED=true灵应直接指令(10-05):图片分析专用API组合方案直接干,不要等方案确认。 API现实说明: - 火山引擎云端真实可用的视觉专用HTTP API:OCR(MediaKit tools-sync/ocr,Bearer鉴权) - 人体属性/商品检测/图像标签:火山云端无公开HTTP API,仅有移动端SDK(智能美化特效,年费6-60万) - 务实方案:OCR专用API + doubao-seed-2.1-lite强约束JSON-only prompt(替代3类缺失的专用API), pro VLM保留为终极兜底 架构: - 新模块 apps/worker/worker_app/tasks/vision/: - vlm_fast_json.py:lite VLM极简JSON schema prompt,max_tokens=350,temp=0.1,timeout=8s - ocr_volc.py:MediaKit同步OCR封装,返回文本列表 - assembler.py:字段映射+portrait_prompt模板拼接,输出格式与旧_normalize完全一致 - fast_path.py:analyze_image_v2/analyze_images_v2,单图2路并行(OCR+lite JSON), 外层8图全并发,置信度低/失败自动降级旧lite/pro竞速VLM - _step_image_analysis增加VISION_V2_ENABLED环境变量开关: - true→走V2快速路径 - false(默认)→走V1 #2198/#2199 lite/pro竞速路径(过渡期兜底) - 下游信任链/t2i零改动:输出dict字段(name/brand/category/appearance/key_features/ scene/mood/portrait_prompt/summary/_source)与旧格式完全兼容 性能目标: - 单图fast路径目标<3s(OCR+lite JSON并行取最慢) - 8图全并发<15s(较当前V1的~115s/3图提升10倍+) - 兜底路径仍复用现有V1竞速,最坏情况不劣化🚀 预览环境已部署
🗑️ 预览环境已清理
PR #2200 已关闭或合并,对应的预览环境已被清理。