大模型 API 成本到底花在哪
很多团队做大模型应用,一开始不注意成本,跑了一个月账单出来吓一跳。大模型 API 按 Token 计费,输入输出都算钱。一个对话应用如果每轮都把完整历史加上系统提示加上 RAG 文档全塞进去,一次请求可能几千 Token。一天几千次请求,一个月就是几百万 Token——钱就是这么烧没的。
成本优化的核心思路不是「少用大模型」,而是「让合适的任务用合适的模型」。简单问题用小模型便宜又快,复杂问题才用大模型。这就是模型路由的基本思路。
成本优化不是砍预算,是把钱花在刀刃上——简单任务别用旗舰模型,那是浪费。
- Token 成本输入和输出分别计费,输出通常比输入贵。
- 模型分级按任务复杂度选不同规格的模型,不一刀切用最大模型。
- 模型路由根据问题类型自动判断该用哪个模型。
- 成本监控持续跟踪 Token 消耗,设置预算告警。
Token 计费的拆解逻辑
大模型 API 的计费分输入和输出两部分。输入是你发给模型的所有 Token(系统提示加对话历史加 RAG 文档),输出是模型生成的 Token。通常输出比输入贵 3-5 倍。所以缩短输出比缩短输入更省钱。
# 成本计算示例
# 假设某模型输入 $0.01/千Token,输出 $0.03/千Token
# 一次请求:
# 输入:系统提示 500 + 历史对话 2000 + RAG 文档 3000 = 5500 Token
# 输出:模型回答 500 Token
# 成本 = 5500 * 0.01/1000 + 500 * 0.03/1000
# = $0.055 + $0.015 = $0.07
# 一天 1000 次请求 = $70,一个月 = $2100
# 如果把 RAG 文档从 3000 压到 1000 Token:
# 输入变成 3500,每次省 $0.02,一个月省 $600
模型分级:不是所有任务都要最大模型
大模型厂商都有不同规格的模型:旗舰版效果最好但最贵,轻量版便宜但能力弱一点。很多团队不管什么任务都用旗舰模型,这是最大的浪费。实际上,80% 的日常任务用轻量模型就够了,只有 20% 的复杂任务需要旗舰模型。
| 任务类型 | 推荐模型 | 为什么 |
|---|---|---|
| 简单问答、分类 | 轻量版 | 能力足够,便宜快 |
| 摘要、改写 | 轻量到中端 | 不需要最强推理 |
| 代码生成、推理 | 旗舰版 | 需要强推理能力 |
| 多轮复杂任务 | 旗舰版 | 长上下文加推理都要 |
模型路由:自动选最合适的模型
模型路由就是写一个路由逻辑:收到用户问题后,先判断这个问题属于哪类,然后自动选对应的模型。简单分类问题直接用轻量模型,复杂推理问题才升级到旗舰模型。这个路由逻辑可以用规则写,也可以用一个小模型来判断。
# 模型路由的基本逻辑
def route_model(question):
# 规则路由:先看问题特征
if is_simple_faq(question):
return "轻量模型"
elif is_code_task(question):
return "旗舰模型"
elif is_long_context(question):
return "长上下文模型"
else:
return "中端模型"
# 更智能的做法:用小模型做路由判断
# router = 小模型
# complexity = router.classify(question)
# if complexity == "simple": use_light()
# elif complexity == "medium": use_mid()
# else: use_flagship()
上下文压缩省钱
输入 Token 是成本大头。上下文越短,每次请求越便宜。上下文压缩的方法在前面上下文工程那篇已经讲过——历史摘要、长文档截取、RAG 精排后只送最相关的几段。这些方法直接减少输入 Token,立竿见影。
- 模型路由简单问题用小模型,单次成本降 80%。
- 上下文压缩输入 Token 砍半,直接省钱。
- 缓存重复请求相同问题直接返回缓存,零成本。
缓存与批量调用
很多用户会问相似的问题——「怎么退款」「发票怎么开」。这些高频问题的回答可以缓存下来,下次有人问直接返回缓存结果,不用再调模型。批量调用也能省钱——厂商对批量请求通常有折扣,适合离线处理任务。
成本监控与预算控制
成本优化的前提是看得见钱花在哪。你要按天、按用户、按功能模块统计 Token 消耗,发现哪个模块烧钱最多就先优化它。设置月度预算上限,超了自动告警甚至降级——别等账单出来才发现超支了三倍。
模型路由是成本优化的最大杠杆——把 80% 的简单请求从旗舰模型降到轻量模型,总成本直接砍半。