用户纠正:wan3.0全能参考三种媒体一个不传=纯文生视频(t2v),完全合法(文档明示
「prompt和media必填其一」「文生视频不传入任何媒体文件」)。此前required=True把
合法t2v/部分组合模式堵死,且无条件渲染发出"media": []空数组(文档t2v形态不带
media键,API未承诺接受空数组,不能赌)。
- _build_param_schema: 媒体字段一律required=False(prompt保持必填作锚);
纯参考模型空媒体提交由API拒绝+test_model_call当场暴露,非静默失败
- r2v合成模板media键包Jinja条件:有媒体渲染media键,零媒体整个省略,
两形态逐字对齐官方API参考(wan3-video-generation-api-reference已核实)
- 拼接空格防"{{%"词法错(单测实抓)
- _dry_render_check增零媒体形态干跑(StrictUndefined下测空数组[],不测缺键)
- 单测9项:零媒体省略/部分组合/三模态顺序/干跑/schema非必填
pipeline-platform
产线平台内部 agent 模块(宿主不装则零接触)。
内容
- 能力包
pipeline_platform/platform_ability.py:pipeline_id=platform_general- platform_llm_status — 模型治理状态(供应商/账号余额/模型定价)
- fetch_model_doc — 抓取模型 API 文档(SSRF 防护:仅公网域名)
- extract_llm_api_spec — LLM 通读文档提取配置规格(端点/协议/定价)
- apply_llm_config — 写入配置(幂等:供应商按名复用、模型按 (vendor, vendor_model_id) 只更新定价)
- platform_modules — 平台模块清单
- 前端入口
wwwroot/agent_platform/index.ui:主菜单「平台内部助手」(仅管理员可见) - 技能随 pipeline-core
skills_library/pipelines/platform_general/分发(平台架构地图 + 模型自动配置工作流)
权限
所有工具仅 owner.superuser / owner.admin 可用,代码层硬门禁(每个 handler 入口校验
RBAC 角色),不依赖 prompt。菜单入口同样 Jinja {% if is_admin %} 门控。
定价真实性规则
- 定价只允许来自文档原文,文档没写一律 null(禁止编造)
- 单位统一「元/千tokens」(元/百万 ÷1000)
- 非 openai_compat 协议的模板存档但运行时不可调,如实告知
宿主集成(已接入)
pipeline-app/build.sh:clone/pip install/wwwroot 软链列表已含本模块pipeline-app/app/pipeline_app.py:load_pipeline_platform()(在 load_pipeline_service 之后)
Description