fix: 技能库删除单位换算硬规则(4个技能)
- model-auto-config/auto-api-pricing-config/model-onboarding/platform-architecture - 定价按文档原文记录+单位如实标注,不预设不换算 - 单位吻合由测试记账核对暴露,差异交用户决策
This commit is contained in:
parent
94de38b22f
commit
f7d44d18df
@ -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/缓存/视频秒/按次/积分)+ 单位表
|
||||
|
||||
@ -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 计价(缓存拆分仅当文档明确列出缓存价)
|
||||
|
||||
|
||||
@ -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 语义使用,若单位不一致测试阶段记账核对会暴露,届时人工决策)。
|
||||
|
||||
## 验证
|
||||
|
||||
|
||||
@ -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、改策略后必须重启(进程内缓存)
|
||||
- 测试不过不上线;测试必查调用成功 + 记账四项,缺流水即失败
|
||||
|
||||
@ -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)
|
||||
|
||||
限流窗口与记账按(账号,端点)对;多账号轮转 + 主备容错。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user