在写作、代码生成、报告总结这类工作流中,输出 token 的实际成本远高于输入。当输入被缓存而输出不能缓存时,输出占总账单的比例更大。如果预算只看输入价格,可能会严重低估真实成本。
什么情况下输出比输入更贵
并不是每个 API 调用都是输入重负载。输入和输出的成本比例取决于任务类型:
| 工作流 | 典型输入 | 典型输出 | 成本驱动 |
|---|---|---|---|
| 文本分类 | 短 | 极短(标签) | 输入 |
| FAQ 回答 | 短到中 | 短 | 平衡 |
| 内容写作 | 短指令 | 长文章 | 输出 |
| 代码生成 | 短描述 | 长代码块 | 输出 |
| 报告生成 | 简短提示 | 长结构化响应 | 输出 |
| 多轮客服 | 中等历史 | 短到中 | 输入,但输出会累积 |
在输出密集型工作流中,每百万输出 token 的价格可能是输入的好几倍,输出成了预算的主要部分。
为什么输出成本更难控制
输入 token 更容易预测。你知道系统提示词长度、用户消息长度和上下文大小。输出 token 取决于模型、任务复杂度和模型响应方式。
导致输出 token 增加的因素:
- 冗长的解释
- 重复的格式
- 不必要的细节
- 多个草稿或替代方案
- 结构化输出中的额外空白和格式
- 错误恢复和重试也会产生输出
一个简单的搜索查询可能只需 100 个输入 token 和 50 个输出 token。一个代码生成任务可能需要 500 个输入 token 和 3000 个输出 token。成本比例完全反过来了。
控制输出成本的方法
1. 按任务类型设置最大输出
不要对每个任务用同样的输出限制。按预期输出长度分类:
分类 → 50 token
短回答 → 200 token
摘要 → 500 token
代码生成 → 2000 token
长文章 → 4000 token
2. 尽量使用结构化输出
JSON、YAML 或短格式输出的 token 数通常远低于散文说明。如果下游系统只需要结构化数据,直接要求结构化输出。
3. 输入缓存不解决输出问题
输入缓存只降低输入成本。如果你的工作流是输出密集型,缓存帮助有限。即使输入被大量缓存,也要按全额输出价格预算。
4. 上线后测量输出
上线后跟踪:
- 每类任务平均输出 token
- 每个模型的输出与输入比例
- 成功和重试任务的输出长度
用 AI API 账单核对指南 对比预期输出量和实际输出量。
预算示例:输出密集型工作流
假设一个内容生成工作流每月产生 100 篇文章:
| 假设 | 值 |
|---|---|
| 每篇文章输入 | 300 token |
| 每篇文章输出 | 2500 token |
| 月文章数 | 100 |
| 输入缓存 | 60% 命中率 |
即使有 60% 的输入缓存,输出成本仍然占主导,因为输出 token 单价更高且数量更多。
用 文本模型计算器 比较不同模型的总成本,而不是只看输入价格。用 价格表 核对各模型的输出价格。Token 预算模板 可以单独跟踪输入行和输出行。
FAQ
输出总是比输入贵吗?
不总是,但输出密集型工作流会让输出占主导。请查看你的模型价格表确认。
换模型能降低输出成本吗?
有时可以。一个输出质量相近但输出价格更低的模型,能显著降低总账单。要比较每个完成任务的总成本,而不是只看输入价格。
输出可以缓存吗?
输出缓存不是标准功能。重点应该放在应用层控制输出长度上。