上一提交只修了合成兜底路径;用权威文档示例重新apply会走真实示例路径, 该路径零媒体同样发出"media": []空数组。本次统一下沉: - 新增 _media_any_expr(mps):「任一媒体有值」Jinja布尔(字符串/数组归一), 合成/真实两路径共用 - _tpl_from_example: media数组token记录(键名,mps),替换阶段按json.dumps 逗号位置分三模式(首/中键带尾逗号,末键吃前逗号,独键直包)整键条件化 - 单测22项全绿:四种键位×(零媒体省略/三模态/字符串形态/干跑)+合成路径 +schema(媒体非必填/prompt必填/multiple/ratio六值枚举)
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