速度还是智商?API延迟与成本的三方权衡,90%团队只算了一边

📅 2026/10/27 ✍️ 小文 📖 约 1 分钟

模型选型时最常被忽略的一件事:延迟、质量、成本三者不是线性关系,而且用户对延迟的感知是非线性的。本文给出可落地的加权评分模型与实测数据。

选模型时,大家习惯做一张表:价格、跑分、上下文长度。然后选一个“性价比最高”的。这个流程有个系统性缺陷——它把延迟当成了一个可接受的常量,实际上延迟是用户流失的主因。

延迟不是线性的

先看一组我们统计的交互式产品数据(首字延迟 TTFT 与任务完成率的关系):

TTFT用户中途放弃率连点重试率
< 0.8s1.2%0.4%
0.8–1.5s2.8%1.1%
1.5–3s6.4%3.9%
3–5s14.7%11.2%
> 5s29.3%22.8%

拐点在 1.5 秒和 3 秒。跨过3秒,放弃率翻倍;跨过5秒,近三成用户直接走掉。

也就是说,延迟的价格不是线性的,是阶梯式的。从1.4秒优化到1.2秒几乎没有意义,从5.2秒优化到2.8秒价值巨大。

三种延迟成分要分开看

很多团队测“延迟”时只测了端到端总时长,结果优化方向搞错。必须拆成三段:

第一段:TTFT(首字延迟)。由输入长度、队列、网络RTT决定。影响用户是否觉得“它开始动了”。 第二段:TPS(输出速度)。由模型规模、推理服务配置决定。影响用户是否觉得“它在流畅输出”。 第三段:总时长。等于 TTFT + 输出token数 / TPS。

三段各自的优化手段完全不同:

  • TTFT 高 → 缩短输入、减小系统提示、启用缓存、换更快的区域节点
  • TPS 低 → 降低推理精度、换小模型、开启投机解码(speculative decoding)
  • 总时长高 → 减少输出token,这往往是最快见效的

第三条被严重低估。实测中,一份输出从 1200 token 压到 600 token,总时长砍掉一半,而质量损失远小于换成小模型。合理的做法是给每个场景定义最大输出预算,并在系统提示中明确要求“先给结论,再给理由,不要复述题目”。

一个可用的加权评分

不要用单一指标排序,用加权分。我们自己在用的公式:

Score = Quality^2 × 0.5
      + LatencyScore × 0.3
      + CostScore × 0.2

三个分项都归一化到 0~1,其中:

  • Quality:在你的任务集上的正确率,不是公开跑分。注意用平方——质量不达标时其他两项没有意义。
  • LatencyScore:按上面的阶梯做分段映射,而不是线性倒数。1.5秒以内满分,超过3秒线性降到0。
  • CostScore:1 - 单条成本 / 预算上限。

权重不是固定的,按场景调:

场景Quality²LatencyCost
实时对话/客服0.450.450.10
代码补全0.350.550.10
后台批处理0.650.050.30
内容生成(非实时)0.600.100.30

注意代码补全的延迟权重最高——补全场景下用户容忍度在 500ms 级别,模型再好,慢半秒就没人用。

三个常见的算错

算错一:用平均值代替 P95。 平均值好看但没用。一个 99% 请求 300ms、1% 请求 12 秒的系统,用户体验是灾难。选型时看 P95,最好看 P99。

算错二:忽略输出长度差异。 不同模型的默认啰嗦程度差异巨大。同样任务,A 模型输出 400 token,B 模型 900 token,即使 B 的单价便宜一半,总成本也持平,但延迟翻倍。比较时应当固定输出长度(或用stop序列控制)。

算错三:把限流当过客。 峰值时被限流降级的那部分请求,成本会转移到重试上,实际延迟翻倍。选型时必须测高并发下的表现,而不是单请求跑分。

结论:延迟是可以“买”的

一个务实的判断:如果你的场景是实时交互,延迟预算应该先定,再选模型。

先确定“TTFT ≤ 1.2s,总时长 ≤ 3s”,然后在这个约束下找质量最高的模型,而不是先选最好的模型再去优化延迟。前者是工程问题,后者是无底洞。

三者权衡的本质,是承认你要的不是最强模型,而是在你的延迟约束下最强的模型。这个约束一旦写清楚,选型就从玄学变成了算术。

📤 分享到