大模型应用上线后的第一个意外往往是账单。与传统的 CPU/内存成本不同,Token 成本会随着对话轮次、上下文长度和重试次数近乎线性增长,而团队在开发阶段几乎不会注意到它。把模型调用当作一种需要治理的资源,是应用进入生产前必须补上的一课。

一、先把成本拆成可分析的结构
只看月度总额无法优化。建议先按四个维度打标,让每一笔调用都能被归因:
| 维度 | 说明 | 作用 |
|---|---|---|
| 入 / 出 Token | 输出 Token 通常单价高出数倍 | 区分提示词与回答的成本占比 |
| 业务场景 | 客服问答、文档摘要、代码补全 | 定位高耗场景 |
| 调用来源 | 线上用户 / 内部工具 / 评测任务 | 避免研发与评测吃掉生产预算 |
| 模型版本 | 不同规格的模型单价差异很大 | 验证路由策略是否有效 |
很多团队在拆完之后才发现:真正拉高成本的不是核心业务,而是自动评测任务、内测环境和无上限的上下文截断策略。
二、四个实际有效的降本手段
1. 控制上下文,而不是“能塞就塞”
把全部历史对话与全部检索结果都拼进提示词,是最常见的浪费源。可行的做法包括:对历史对话做摘要而非完整保留;对检索结果做重排后只取 Top-N(而不是靠相关度阈值凑满上下文);对长文档先分块筛选再拼接。
这一步的收益通常最大,而且往往能同时提升效果,因为无关内容本身就是干扰项。
2. 缓存:区分精确命中与语义命中
精确缓存(对完整请求做哈希)实现简单、不会出错,适合固定模板类调用;语义缓存能命中改写过的相似问题,收益更大,但存在误命中风险,必须设置相似度阈值并保留降级路径。
需要注意:缓存的命中率需要按场景分别看。客服场景可能很高,而代码生成场景可能几乎为零,共用一个平均值会误导优化方向。
3. 模型路由:不要用最大模型处理所有请求
可行的分层策略是:先用规则或轻量模型判断请求复杂度,简单请求走小模型,复杂请求走大模型;或者在流式返回中发现低置信度时再升级到更强的模型重试。
路由的收益很直接,但风险同样明显:必须能度量不同路径的效果差异,否则会变成“成本降了但质量也降了”而无人知道。
4. 控制输出长度
输出 Token 单价最高,而“请详细说明”这类提示词会显著拉长回答。对结构化场景(如信息抽取、分类),应强制使用结构化输出并限制最大长度,而不是依赖模型自律。
三、可观测性该盯什么
大模型应用的可观测性与传统服务不同,建议至少覆盖:
- 每次调用的 Token 量与耗时:按场景与模型版本分组,而不是全局平均。
- 重试与降级次数:重试是成本的黑洞,一次失败往往意味着同样的提示词被重复计费。
- 上下文长度分布:分布上移往往意味着某处逻辑没截断好。
- 效果信号:如引用命中率、用户采纳率、人工纠正比例。成本优化必须与效果指标同时看。
实务中建议建立一个简单规则:任何降本改动上线前,必须同时给出成本变化与效果变化两个数字。只报成本的优化很容易在几个月后变成质量事故。
四、从开发阶段就建规矩
大模型应用的成本治理,前期成本极低而后期代价很高。三条建议:一是在开发与测试环境使用小模型或模拟层,避免研发流量污染成本数据;二是每个功能上线时就要估算单次调用成本与日均调用量;三是为评测与内部工具单独分配额度,避免它们吃掉生产预算。
把模型调用当作有成本、有配额、有监控的基础资源来管理,应用才有可能从“能跑”变成“能持续跑”。
