首页 偏方 N° T3

Streaming + Tool use 真实成本拆解

流式返回不是省 token,是省延迟。但很多团队把它和 tool use 一起用时没算清楚账。本文用 5 个生产 case 拆给你看。

关键事实

  1. 流式不会改变 token 消耗——输入输出 token 数跟非流式一样
  2. 流式改变的是 TTFT(Time To First Token)——从 ~2 秒降到 ~200 毫秒
  3. 流式 + tool use 的成本陷阱在「反复 stream 同样 prefix」

定价对比(Claude 3.5 Sonnet)

模式InputOutput流式加价
非流式$3/M$15/M
流式$3/M$15/M0

流式本身不贵。成本陷阱在下面。

5 个生产 case

Case 1:纯聊天流式(最常见)

input:  1k token
output: 500 token
成本:   1k × 3 + 500 × 15 = $10.5/M

流式 vs 非流式总成本一样。流式只省 TTFT。

Case 2:Tool use 失败重试

第 1 次:  input 5k + output 2k(含 tool_call 错)= $45
第 2 次:  input 5k + output 1k(修正后成功)= $30
总共:    $75

流式在重试时浪费了——第 1 次 stream 输出 2k token 全是废的。

对策:tool use 失败时不流式(直接 non-streaming 重试,省首 token 延迟但省 token)。

Case 3:长 output(>4k token)

input:  2k
output: 5k
成本:   2k × 3 + 5k × 15 = $81/M

流式在这个 case 下用户感知最好——第一个 token 200ms 出现,之后持续输出。

适合用流式

Case 4:多 tool use 嵌套

tool 1 → tool 2 → tool 3 → 总结
input 累加:  3k + 4k + 5k = 12k
output:      200 + 200 + 200 + 800 = 1.4k

关键问题:每层 tool 调用的 input prefix 都包含之前所有内容。流式对这种情况没影响——token 数固定。

Case 5:流式 + 用户中断

用户关掉浏览器 / 切走 30 秒
agent 还在 stream 输出
但 token 已经算了

流式在用户中断时最浪费——output token 已经返回并计费,用户没看到。

对策

  • 加 user activity 监测(visibility API / focus 事件)
  • 用户 5 秒不活动 → 暂停流式

决策树

你的 case
├── 纯聊天 < 2k output
│   └── 用流式(改善体验,成本不变)
├── 长 output > 4k
│   └── 用流式(必须流式,否则首字延迟太高)
├── Tool use 多步
│   ├── 重试概率高
│   │   └── 第 1 次用流式(看响应),第 2 次起非流式
│   └── 重试概率低
│       └── 流式
├── 实时(用户在看)
│   └── 流式
└── 后台批处理
    └── 非流式(流式 0 收益)

写在最后

流式不是 token 优化,是延迟优化。把它当延迟工具用,别当 token 工具用。

真正省 token 的是 T2 · prompt cache + T1 · system prompt 压缩。流式只是锦上添花。

下一篇:Sonnet 4.5 vs 3.5 怎么算账。