公式的使用边界
附录 B 的公式都是近似模型。用途有两个:拿不到完整数据时给数量级,拿到数据后判断观测是否离谱。
所有金额用整数微元,延迟用毫秒,除法向上取整。代入值来自本卷“回声”编排案例,均为示例值,不代表线上结果;读者应换成自己的参数。
先统一分母。编排里最常见的错误,是把“每次调用成本”当成“每次成功交付成本”,两者可能差一倍以上。
一、交接 token 成本
交接 token = 结构化字段 + 必填证据 + 版本标识
单次交接成本 = ceil(交接 token × 输入单价 / 1,000,000)
总交接成本 = 单次交接成本 × 交接次数
变量:
| 变量 | 含义 | 示例值 |
|---|---|---|
| 交接 token | 一次节点间契约载荷 | 820 |
| 输入单价 | 每百万 token 的微元 | 2,500 |
| 交接次数 | 串行边数,通常为 n-1 | 4 |
代入示例:
单次交接 = 820 × 2,500 / 1,000,000
= 2.05 → 3 微元
总交接 = 3 × 4 = 12 微元
边界:820 是契约载荷,不是完整上下文;不含重试、人工阅读与序列化开销。交接字段越多,下游节点的输入越贵,这笔账要算进下游,而不是只记在边上。
对应章节:2.1、2.2。
二、复用回本线
单次复用节省 = 共享上下文 × (1 - 缓存折扣)
回本线 = 交接 token / 单次复用节省
变量:
| 变量 | 含义 | 示例值 |
|---|---|---|
| 共享上下文 | 每次调用都会带上的公共前缀 | 3,200 token |
| 缓存折扣 | 缓存命中后的价格折扣 | 90% |
| 交接 token | 不复用时的逐次契约载荷 | 820 |
代入示例:
单次复用节省 = 3,200 × 0.9 = 2,880 token 当量
回本线 = 820 / 2,880 = 28.47%
解释:复用率高于 28.47%,共享上下文划算;低于这条线,逐次交接更便宜。
一百次调用的对账(示例):
复用 40 次:节省 = 40 × 2,880 = 115,200
交接 100 次:成本 = 100 × 820 = 82,000
净收益 = 115,200 - 82,000 = 33,200 token 当量
边界:要求前缀稳定、缓存真实命中;不含失效、跨租户隔离与误命中成本。复用率的分母是“可复用调用数”,不是全部调用数;分母换了,回本线也会变。
对应章节:2.2、4.1、4.2。
三、整链成功率
P_chain = P_1 × P_2 × ... × P_n (独立假设)
示例对照:
| 节点数 | 单节点 97% | 单节点 99% |
|---|---|---|
| 3 | 91.27% | 97.03% |
| 5 | 85.87% | 95.10% |
| 8 | 78.37% | 92.27% |
五个节点、其中一个是 90%、其余 97%:
P_chain = 0.90 × 0.97^4 = 79.70%
边界:独立性是强假设。同模型、同供应商、同上下文的失败高度相关,实际整链成功率通常低于乘积。重试会改变公式,见第五节;部分交付会把“整链失败”拆成“降级成功”,见 5.2。
对应章节:5.1、5.3、10.2。
四、单步失败预算
单步成功率 = P_chain^(1/n)
单步失败预算 = 1 - P_chain^(1/n)
代入示例(五步链路,首轮整链目标约五成,允许一次返工):
单步成功率 = 0.498^(1/5) = 0.8698 → 86.98%
单步失败预算 = 1 - 0.8698 = 13.02%
三步、整链目标 90% 的对照:
单步成功率 = 0.9^(1/3) = 96.55%
单步失败预算 = 3.45%
边界:等分预算是起点,不是终点。安全、校验、支付类节点应更严;长尾节点可以更松。相关性会让实际预算更紧,不能把 13.02% 直接抄到每个节点上。
对应章节:5.3、8.1。
五、重试放大
期望尝试次数 = 1 / (1 - p_fail) (几何分布)
受预算约束的尝试 = min(1 + r_max, 1 / (1 - p_fail))
实际成本 = 单次成本 × 期望尝试次数
实际延迟 ≈ 成功延迟 + (尝试次数 - 1) × (失败延迟 + 退避)
代入示例:
p_fail = 13.02%
期望尝试 = 1 / 0.8698 = 1.15 次
实际成本 = 3,786 × 1.15 = 4,354 微元
额外延迟 = 0.15 × (800 + 200) = 150ms
边界:只适用于幂等节点;非幂等动作重试会产生重复副作用。重试还消耗下游配额,可能触发限流,形成重试风暴。r_max 是编排级预算,不是单节点可以自行突破的上限。
对应章节:5.3、9.2。
六、并行分支期望延迟
all: E[all] ≈ max(E[T_i]) + join
any: E[any] ≈ min(E[T_i])
quorum k: E[k of n] ≈ 第 k 个顺序统计量
若各分支独立且服从同一指数分布(均值 1/λ),有闭式近似:
E[all] = H_n / λ
E[any] = 1 / (nλ)
E[k of n] = (H_n - H_{n-k}) / λ
H_n = 1 + 1/2 + ... + 1/n
四条分支、均值各 300ms 的示例:
all: H4 = 2.0833 → 625ms
any: 300 / 4 = 75ms
quorum 3/4: (2.0833 - 1) × 300 = 325ms
边界:指数分布对 LLM 延迟偏乐观,真实分布有长尾;all 应看 p95,而不是均值。分支相关时,any 的收益会明显缩水。汇合、去重与仲裁开销另计。
本卷案例中,拆成两节点后多出两次交接,按 35ms/次计约 70ms,端到端从 1,200ms 升到 1,269ms(+5.79%,示例值);延迟上升与交接开销同量级,说明瓶颈不在模型生成。
对应章节:3.2、6.1。
七、节点预算分配与裁剪顺序
节点预算_i = 总预算 × 历史成本_i / 历史总成本
单位微元边际收益_i = Δ质量_i / Δ成本_i
默认裁剪顺序(从先到后):
1. 冗余并行分支:n 降到 k
2. 非关键路径的长上下文
3. 命中率低于回本线的缓存
4. 可离线节点
5. 降级到更小模型
6. 校验与安全节点(设下限,最后才动)
示例:总预算 5,000 微元,超支 500。四个节点历史成本为 A 2,000、B 1,500、C 1,000、D 500:
D 裁 250(-50%)
C 裁 150(-15%)
B 裁 100(-6.7%)
A 裁 0
校验节点保留 300 下限
合计裁减 500
边界:预算是上限,不是必须花完的目标。裁上下文可能推高重试率,反而更贵;裁掉校验节点会把成本转移到事故。每一刀都要用边际收益排序,而不是按比例平均。
对应章节:8.1、8.2、8.3。
八、每次成功交付成本
总成本 = Σ(节点成本 × 尝试次数) + 交接成本 + 人工成本 + 固定开销
成功交付数 = 总任务数 × P_chain
每次成功交付成本 = 总成本 / 成功交付数
代入示例:
总任务 = 1,000
单任务节点成本 = 3,786 微元
固定开销 = 200,000 微元
P_chain = 49.8%
总成本 = 3,786,000 + 200,000 = 3,986,000
成功交付 = 1,000 × 0.498 = 498
每次成功交付 = 3,986,000 / 498 = 8,004 微元
名义单次 3,786 微元,实际每次成功交付 8,004 微元,是名义值的 2.11 倍。差额来自失败任务与固定开销,不是单价上涨。
边界:部分交付要单独计价;退款、返工与人工成本要计入;分母不能用“调用次数”。对外报价若按名义单次成本定,失败率一高就会亏损。
对应章节:8.3、7.1、5.2。
九、公式联用顺序
八个公式不能乱代。推荐顺序:
1. 定分母:任务数 / 成功交付数
2. 算交接:820 × 交接次数
3. 算复用:3,200 × 0.9,与 820 比较
4. 算整链:P_1 × ... × P_n
5. 反解单步:P_chain^(1/n)
6. 加重试:× 1/(1 - p_fail)
7. 加并行:max / min / 第 k 个顺序统计量
8. 摊固定成本:÷ 成功交付数
联用后的对账案例(示例):
改动:单次大模型调用拆成“小模型 + 校验”两节点
成本:4,240 → 3,786 微元(-10.71%)
延迟:1,200 → 1,269ms(+5.79%)
交接:新增两次,35ms/次,约 70ms
整链:五步,单步失败预算 13.02%
对不上时,先查分母与重试,再查缓存是否真命中,最后才怀疑模型。
小结
公式不负责替你做决定,只负责把决定的代价算出来。
同一个 13.02%,可以是“每步都必须做到”,也可以是“关键步骤 3%、长尾步骤 20%”,取决于你把失败预算分给谁。同一个 28.47%,在稳定前缀下是回本线,在跨租户上下文里可能根本不成立。
先写清楚分母,再代入数字。分母错了,后面每一步都很精确地错。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。