大模型 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 砍半,直接省钱。
  • 缓存重复请求相同问题直接返回缓存,零成本。