公式的使用边界
附录 B 的公式都是近似模型,不是精确预测。
它们的用途是:在拿不到完整数据时,给出数量级与方向;在拿到数据后,验证观测是否离谱。代入值都是示例,读者应换成自己的参数。
所有金额使用整数微元,所有延迟使用毫秒。公式中的除法向上取整,避免成本被低估。
一、单次请求成本
成本 = ceil(输入 token × 输入单价 / 1,000,000)
+ ceil(输出 token × 输出单价 / 1,000,000)
变量:
| 变量 | 含义 | 示例值 |
|---|---|---|
| 输入 token | 系统提示 + 历史 + 检索 + 问题 | 1,800 |
| 输出 token | 实际生成长度 | 300 |
| 输入单价 | 每百万 token 的微元 | 2,500 |
| 输出单价 | 每百万 token 的微元 | 10,000 |
代入示例:
输入成本 = 1800 × 2500 / 1,000,000 = 4.5 → 5 微元
输出成本 = 300 × 10000 / 1,000,000 = 3 → 3 微元
单次成本 = 8 微元
边界:不含重试、缓存折扣、批处理折扣与失败请求。完整成本见第三节。
对应章节:9.1。
二、上下文构成
输入 token = 系统提示 + 历史 + 检索片段 + 工具结果 + 用户问题
历史部分通常按轮次线性增长:
历史 token ≈ 平均每轮 token × 保留轮数
十轮示例(每轮 90 token):
| 保留轮数 | 历史 token | 总输入(其余 220) |
|---|---|---|
| 3 | 270 | 490 |
| 5 | 450 | 670 |
| 10 | 900 | 1,120 |
判据:历史占比超过总输入 50% 时,优先考虑摘要或滑窗,而不是继续扩容上下文。
对应章节:3.1、3.3。
三、重试放大
实际成本 = 单次成本 × (1 + 重试率 × 平均重试次数)
示例:
| 单次成本 | 重试率 | 平均重试次数 | 实际成本 |
|---|---|---|---|
| 8 微元 | 2% | 1.0 | 8.16 |
| 8 微元 | 9% | 1.5 | 9.08 |
| 8 微元 | 20% | 2.0 | 11.20 |
注意:重试还消耗延迟预算。重试率上升时,延迟与成本同时恶化,不是线性叠加。
对应章节:9.1、12.1。
四、缓存净收益
净收益 = 命中次数 × 单次成本
- 未命中次数 × 单次成本 × 失效率修正
- 缓存存储与查找成本
简化判据:
命中率 > (缓存开销 / 单次成本) / (1 - 失效率)
示例:单次成本 8 微元,缓存开销折合每次 1 微元,失效率 5%:
阈值命中率 = (1 / 8) / 0.95 ≈ 13.2%
命中率低于 13.2% 时,缓存不划算。
边界:失效率包含过期结果、键冲突与租户串数据。误命中的代价往往高于未命中。
对应章节:5.1、5.3。
五、批处理盈亏平衡
离线总成本 = 作业固定开销 + 条数 × 单条离线成本
在线总成本 = 条数 × 单条在线成本
盈亏平衡条数 = 作业固定开销 / (单条在线成本 - 单条离线成本)
示例:在线 636 微元,离线 429 微元,作业开销 50,000 微元:
盈亏平衡 = 50,000 / (636 - 429) ≈ 242 条
判据:预计条数小于盈亏平衡点时,不要为这批任务单独搭离线链路。
对应章节:7.1、7.3。
六、级联阈值
级联期望成本 = 小模型成本 + (1 - 小模型通过率) × 大模型成本
直接成本 = 大模型成本
盈亏平衡通过率:
通过率 > 小模型成本 / 大模型成本
示例:小模型 2 微元,大模型 10 微元:
阈值通过率 = 2 / 10 = 20%
小模型通过率高于 20%,级联就比全部走大模型便宜。通过率低于 20% 时,级联反而更贵。
注意:通过率必须按“能力 + 输入类型”分层统计,整体通过率会掩盖局部失效。
对应章节:6.3。
七、容量换算
日请求数 = 日活 × 人均请求数
峰值 QPS = 日请求数 / 86,400 × 峰值系数
并发 = 峰值 QPS × 平均停留时间(秒)
示例:
| 变量 | 值 |
|---|---|
| 日活 | 1,000,000 |
| 人均请求 | 3 |
| 峰值系数 | 4 |
| 平均停留 | 2.5 秒 |
日请求 = 3,000,000
峰值 QPS = 3,000,000 / 86,400 × 4 ≈ 138.9
并发 = 138.9 × 2.5 ≈ 347.2 → 348
判据:并发按峰值计算,不按平均;余量另加,通常 30%。
对应章节:8.1、8.2。
八、token 需求换算
日 token = 日请求数 × 单次平均 token
峰值 token/秒 = 日 token / 86,400 × 峰值系数
示例(单次输入 1,800、输出 300,日请求 3,000,000):
日 token = 3,000,000 × 2,100 = 6.3e9
峰值 token/秒 = 6.3e9 / 86,400 × 4 ≈ 291,667
注意:输入与输出的吞吐能力不同,要分别与供应商配额比较。
对应章节:8.1、8.3。
九、配额映射
租户配额(token/月) = 月度预算 / 加权单价
租户并发 = 租户峰值 QPS × 平均停留时间
共享池 = 总容量 - Σ 保底配额
示例:
| 租户 | 月度预算 | 加权单价(微元/千 token) | 配额(千 token) |
|---|---|---|---|
| A | 1,000,000 | 6 | 166,667 |
| B | 400,000 | 6 | 66,667 |
| C | 100,000 | 6 | 16,667 |
判据:保底配额之和不应超过总容量的 80%,否则共享池失去弹性。
对应章节:8.3。
十、成本归因分解
总成本变化 = 用量变化 + 单价变化 + 结构变化 + 重试变化
逐项拆解:
用量变化 = (本期请求数 - 基期请求数) × 基期单次成本
单价变化 = 本期请求数 × (本期单次成本 - 基期单次成本)
结构变化 = 本期请求数 × (本期加权单价 - 基期加权单价)
重试变化 = 本期请求数 × 基期单次成本 × (本期重试率 - 基期重试率)
示例(请求数 +100%,单次成本 +20%,重试率 2%→9%):
| 来源 | 贡献 |
|---|---|
| 用量 | +100% |
| 单价 | +20% |
| 重试 | +7% |
三项相乘,账单约为基期的 2.6 倍。只看用量,会低估 60%。
对应章节:9.2、9.3。
十一、量化收益估算
量化后成本 ≈ 原成本 × (1 - 单价降幅)
质量损失 = 原通过率 - 量化后通过率
净收益 = 成本节省 - 质量损失带来的返工成本
示例:单价降 50%,通过率从 94% 降到 89%,返工成本折算每次 3 微元:
每百次节省 = 100 × 8 × 0.5 = 400 微元
返工增加 = 5 × 3 = 15 微元
净收益 = 385 微元
判据:净收益为正且质量损失在可接受区间,才考虑量化。
对应章节:6.1。
十二、十分钟估算表
拿到一个新能力,用这张表快速估算:
1. 单次输入 token: ______
2. 单次输出 token: ______
3. 输入单价(微元/百万): ______
4. 输出单价(微元/百万): ______
5. 单次成本: (1×3 + 2×4) / 1,000,000
6. 日请求数: ______
7. 日成本: 5 × 6
8. 峰值系数: ______
9. 峰值 QPS: 6 / 86,400 × 8
10. 并发: 9 × 平均停留秒数
11. 重试率: ______
12. 实际日成本: 7 × (1 + 11 × 平均重试次数)
十二行填完,数量级就有了。它不替代真实测量,但能在需求评审时挡住明显不成立的方案。
小结
公式的作用不是精确预测,而是让讨论有共同的数量基础。
同一个公式,两个人代入不同的峰值系数与重试率,会得到完全不同的结论。这时应该先对齐参数,而不是争论公式。参数来自观测,公式只负责把观测翻译成决策。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。