yumoqing 549d671e99 fix(platform): 定价多因子校验+openai_compat模板生成器双缺陷(2026-09-06豆包pro配置实抓)
① apply_model_pricing「同一模型仅单因子」铁律与生产事实矛盾——token模型天然
多因子(输入/输出/缓存同方案,生产实证qwen3.8-max正常出账),豆包pro定价三次
被拒。改为因子族校验:token族(prompt/completion/uncache/cached_tokens)合并
一个方案;token族与按量族(duration/flat)禁混;prompt_tokens与uncache/cached
互斥(重复计价);同因子同维度多价拒绝。提取提示词factor枚举补uncache_tokens/
cached_tokens+缓存拆分规则(此前枚举缺缓存因子,助手只能硬塞导致混用误判)。
_build_pricing_yaml支持多因子:derived因子(uncache/cached)自动带derived表达式
定义,真实定价引擎验证:豆包pro三因子6/1.2/30计算精确匹配(0.000738/缓存场景0.01908)。

② _gen_templates openai_compat分支模板恒干跑失败:json.dumps包占位符生成
"{{temperature}}"——运行时ns(model/messages/extra/params/api_key/org_id)无
temperature,StrictUndefined干跑必崩→profiles恒空,运行时侥幸走内置模板。
且"messages":"{{messages}}"带引号渲染成repr字符串。改为对齐pipeline-llm
内置模板形态:model/messages|tojson无引号+extra白名单透传循环(传了才发)。
_dry_render_check补extra入ns(运行时注入,干跑缺它误报)。验证:干跑通过,
无extra/带extra/中文引号注入/指纹稳定四场景渲染全合法JSON。
2026-09-07 07:27:37 +08:00

pipeline-platform

产线平台内部 agent 模块(宿主不装则零接触)。

内容

  • 能力包 pipeline_platform/platform_ability.pypipeline_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 协议的模板存档但运行时不可调,如实告知

模板生成规则(补充)

  • 数值强转2026-09-06 真实调用实抓后加固):文档示例值为 int/float 的参数, request_template 渲染表达式加 |int/|float 强转——表单/agent 传参常为字符串 数字(如 duration="5"),直接 tojson 出带引号字符串会被 API 拒 InvalidParameter。bool 是 int 子类,先行排除不加强转(保 UI 真值语义)。 强转改变模板内容 → 形态指纹漂移 → apply 自动弃旧建新,属预期行为。

宿主集成(已接入)

  • pipeline-app/build.shclone/pip install/wwwroot 软链列表已含本模块
  • pipeline-app/app/pipeline_app.pyload_pipeline_platform()(在 load_pipeline_service 之后)
Description
No description provided
Readme 25 KiB