From f7d44d18dfb88fcb6223537534cdf5e06f20b78e Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 2 Sep 2026 17:50:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8A=80=E8=83=BD=E5=BA=93=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8D=95=E4=BD=8D=E6=8D=A2=E7=AE=97=E7=A1=AC=E8=A7=84?= =?UTF-8?q?=E5=88=99(4=E4=B8=AA=E6=8A=80=E8=83=BD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - model-auto-config/auto-api-pricing-config/model-onboarding/platform-architecture - 定价按文档原文记录+单位如实标注,不预设不换算 - 单位吻合由测试记账核对暴露,差异交用户决策 --- .../common/auto-api-pricing-config/SKILL.md | 8 +++++--- .../references/pricing-patterns.md | 18 +++++++++++------- .../common/model-auto-config/SKILL.md | 10 ++++++---- .../common/model-onboarding/SKILL.md | 8 +++++--- .../common/platform-architecture/SKILL.md | 2 +- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/skills_library/pipelines/platform_general/common/auto-api-pricing-config/SKILL.md b/skills_library/pipelines/platform_general/common/auto-api-pricing-config/SKILL.md index 395df98..607b8b5 100644 --- a/skills_library/pipelines/platform_general/common/auto-api-pricing-config/SKILL.md +++ b/skills_library/pipelines/platform_general/common/auto-api-pricing-config/SKILL.md @@ -47,8 +47,10 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, platform_llm_st ## 定价生成规则(硬规则) -- 单位:YAML 里 `unit_prices` 用人类可读值 + `unit: 百万` + `unit_values: {百万: 1000000}`; - 文档「元/百万tokens」直接落数值,「元/千tokens」×1000 换算 +- 单位:**按文档原文记录,不换算**。`unit_prices` 用文档数值,`unit` 用文档单位名, + `unit_values` 按该单位的实际 token/计量数设分母(如 文档「元/千tokens」→ + `unit: 千` + `unit_values:{千:1000}`;文档「元/百万」→ `unit: 百万` + `{百万:1000000}`)。 + 引擎按 `amount = unit_prices × usage / unit_value` 计算,单位配错由测试记账暴露 - **区间下界含 0 必须用 `=~`**(`0 =~ 128000`);`~=` 会排除 0 值导致计费为 0 - 键名是 `pricings`(复数);`unit_values` 只放实际用到的单位 - 缓存价:**只有定价文档明确列出缓存命中价才配置**(拆 `uncache_tokens`/`cached_tokens` 两因子); @@ -63,4 +65,4 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, platform_llm_st - `references/uapi-templates.md` — 协议模板库(从生产真实配置提炼):openai_compat 流式/多模态、 dashscope 异步、任务轮询型、音乐/3D 特殊响应、upapp/uapiio 样例 -- `references/pricing-patterns.md` — 定价 YAML 五类模板(token/缓存/视频秒/按次/积分)+ 单位换算表 +- `references/pricing-patterns.md` — 定价 YAML 五类模板(token/缓存/视频秒/按次/积分)+ 单位表 diff --git a/skills_library/pipelines/platform_general/common/auto-api-pricing-config/references/pricing-patterns.md b/skills_library/pipelines/platform_general/common/auto-api-pricing-config/references/pricing-patterns.md index 64e16b4..eae3839 100644 --- a/skills_library/pipelines/platform_general/common/auto-api-pricing-config/references/pricing-patterns.md +++ b/skills_library/pipelines/platform_general/common/auto-api-pricing-config/references/pricing-patterns.md @@ -20,17 +20,21 @@ pricing_item(旧表,参考) spec_value / pricing_unit / pricing_amount / cost_a 新配置统一走 `pricing_data` YAML;`pricing_item` 是历史遗留,了解即可。 -## 单位换算表(元 → YAML unit_prices) +## 单位表(按文档原文记录,不换算) -| 文档单位 | 换算 | YAML 落法 | +引擎公式:`amount = unit_prices × usage / unit_value`。`unit_values` 是单位的计量数, +**按文档单位如实设置**,不做数值换算: + +| 文档单位 | `unit` | `unit_values` 落法 | |---|---|---| -| 元/百万tokens | 直接 | `unit_prices: 6.0` + `unit: 百万` + `unit_values:{百万:1000000}` | -| 元/千tokens | ×1000 | `unit_prices: 6.0` + `unit: 百万`(先×1000 再落百万) | -| 元/秒(视频/音频) | 直接 | `unit_prices: 1.6` + `unit: 秒` | -| 元/次 | 直接 | `unit_prices: 0.2` + `unit: 次` | -| 元/张(图片) | 直接 | `unit_prices: 0.2` + `unit: 次`(按张=按次) | +| 元/百万tokens | `百万` | `{百万: 1000000}` | +| 元/千tokens | `千` | `{千: 1000}` | +| 元/秒(视频/音频) | `秒` | `{秒: 1}` | +| 元/次 | `次` | `{次: 1}` | +| 元/张(图片) | `次` | `{次: 1}`(按张=按次,在 description 注明) | **禁止** `6e-06` 这种科学计数法——引擎会二次除法算错。 +文档没有的单位不要发明;计量数配错会在测试记账阶段暴露。 ## 模板 1:文本模型 token 计价(缓存拆分仅当文档明确列出缓存价) diff --git a/skills_library/pipelines/platform_general/common/model-auto-config/SKILL.md b/skills_library/pipelines/platform_general/common/model-auto-config/SKILL.md index 1cdff38..0d85650 100644 --- a/skills_library/pipelines/platform_general/common/model-auto-config/SKILL.md +++ b/skills_library/pipelines/platform_general/common/model-auto-config/SKILL.md @@ -16,7 +16,7 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, platform_llm_st 2. **提取**:`extract_llm_api_spec(doc_text)` → 结构化规格。重点核对: - `endpoints[].base_url / region`(domestic 国内 / international 国际) - `protocol`:能走 `/chat/completions` 的一律 `openai_compat` - - `models[].price_*`:单位统一**元/千tokens**。文档给「元/百万」必须 ÷1000,保留6位小数 + - `models[].price_*`:按文档原文记录,单位在 description 中如实标注(如「元/百万tokens」),禁止换算 - `models[].cost_*`:供应商成本,未知时与 price 相同 3. **确认**:把端点、协议、每个模型的定价摘要给用户确认后再落库。 4. **落库**:`apply_llm_config(spec)`(幂等:供应商按名复用、模型按 @@ -25,17 +25,19 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, platform_llm_st ## 硬规则 - **定价真实性**:文档没写价格的模型 → 价格填 `null` 并在 description 注明,绝不编数字。 -- **单位换算**:元/百万tokens ÷ 1000 = 元/千tokens。 +- **单位**:价格按文档原文记录,单位如实标注在 description;禁止自行换算——单位是否吻合由上线测试阶段的记账核对验证。 - **缓存价**:仅当定价文档明确列出缓存命中价时记录;未列就不配置,禁止从输入价推导缓存价。 - **thinking 模式**:开源模型思考/非思考输出价不同且平台计费时无法区分 → 取较高(思考)价兜底,并在 description 注明。 - **协议限制**:非 `openai_compat` 的模型,模板会存档但运行时暂不可被产线调用, `apply` 返回的 `runtime_note` 必须如实转告用户。 - **端点去重**:同供应商已有端点不重复添加(apply 内部已合并,确认时留意新增数)。 -## 定价示例(换算) +## 定价示例(按文档原文) 文档:「输入 2 元/百万tokens,输出 6 元/百万tokens」 -→ price_input = 0.002,price_output = 0.006(元/千tokens)。 +→ price_input = 2,price_output = 6,description 注明「单位:元/百万tokens」。 +**不换算**——单位语义由人工确认阶段决定(注意:llm_model 四价在结算代码中按 +元/千token 语义使用,若单位不一致测试阶段记账核对会暴露,届时人工决策)。 ## 验证 diff --git a/skills_library/pipelines/platform_general/common/model-onboarding/SKILL.md b/skills_library/pipelines/platform_general/common/model-onboarding/SKILL.md index 90fd7c9..74f68ba 100644 --- a/skills_library/pipelines/platform_general/common/model-onboarding/SKILL.md +++ b/skills_library/pipelines/platform_general/common/model-onboarding/SKILL.md @@ -31,7 +31,7 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, platform_llm_st |---|---|---| | llm_vendor | 供应商 + 端点目录 | endpoints JSON: [{base_url, region, timeout}],全球端点配一次 | | llm_api_profile | 适配模板 | **按协议×能力去重**,同 (protocol, capability) 复用,勿重复建 | -| llm_model | 模型目录 | vendor_model_id + profile_id + ppid + 四价(元/千token) | +| llm_model | 模型目录 | vendor_model_id + profile_id + ppid + 四价(按文档原文记录;结算代码按 /1000 语义计费,单位吻合由测试记账核对) | | llm_account | 供应商账号 | api_key(AES) + endpoint_ids(选用端点下标) + balance(成本侧钱包) | | llm_org_policy | 机构策略 | 主模型 + 备链 + 端点偏好;**有它才启用治理** | | llm_org_quota / llm_user_quota | 机构池/个人额度 | 余额+限流,预授权从这里冻结 | @@ -122,7 +122,9 @@ asyncio.run(m()) **测试通过判据(四项缺一不可)**: - [ ] `CALL_OK`:模型真实返回内容(不是报错/空) - [ ] `llm_usage` 有新流水且 `status=ok`(status=failed 即未通过) -- [ ] `charge = req_tokens/1000×price_input + resp_tokens/1000×price_output`(售价侧金额与四价吻合,核对 llm_model 定价) +- [ ] `charge` 与配置口径一致:将 llm_model 落库的四价代入引擎结算公式(`govern_settle`), + `charge` 应等于引擎实际计算值;**口径以落库配置为准,不预设任何单位**—— + 若与文档标注单位明显不符,如实报告差异并交用户决策,禁止自行改价 - [ ] 账号 `balance` 减少 ≈ `cost`(成本侧扣减生效) 任一项不通过:**禁止进入上线步骤**,先查根因(见故障对照表)。 @@ -164,7 +166,7 @@ asyncio.run(m()) ## 硬规则 -- 定价只来自文档原文(参见 auto-api-pricing-config 技能);缓存价/折扣价未列不配 +- 定价只来自文档原文,**按文档原文记录、不换算不推导**(参见 auto-api-pricing-config 技能);缓存价/折扣价未列不配 - apikey 只在 `llm_account`(AES),**不写进技能/日志/回报文本** - 改 apikey、改策略后必须重启(进程内缓存) - 测试不过不上线;测试必查调用成功 + 记账四项,缺流水即失败 diff --git a/skills_library/pipelines/platform_general/common/platform-architecture/SKILL.md b/skills_library/pipelines/platform_general/common/platform-architecture/SKILL.md index 7f8b439..6ec75ba 100644 --- a/skills_library/pipelines/platform_general/common/platform-architecture/SKILL.md +++ b/skills_library/pipelines/platform_general/common/platform-architecture/SKILL.md @@ -38,7 +38,7 @@ role(角色执行)/ pm(审核复盘)/ qc(门禁)/ failed(失败处 1. **供应商**(llm_vendor):协议 + 端点目录(base_url/region/timeout,全球端点配一次) 2. **账号**(llm_account):选端点 + 独立充值记账,api_key 单层 AES 加密 3. **适配模板**(llm_api_profile):按协议×能力去重(request/response/param_schema) -4. **模型目录**(llm_model):vendor_model_id + 能力 + 模板引用 + 四价(price_in/out、cost_in/out,元/千tokens) +4. **模型目录**(llm_model):vendor_model_id + 能力 + 模板引用 + 四价(price_in/out、cost_in/out;按文档原文记录,结算代码按 /1000 语义计费) 5. **客户配置**(llm_org_policy):主备模型 + 端点偏好(any/prefer/must × domestic/intl) 限流窗口与记账按(账号,端点)对;多账号轮转 + 主备容错。