LLM API 成本怎么比较:输入、输出与缓存 token 单价怎么看
比较 LLM API 成本,核心是先把账单拆成三个计价维度:输入 token、输出 token、缓存输入 token,再用你自己的调用量去乘对应单价。只看"每百万 token 多少钱"这一个数字,很容易选错模型——因为同一个模型的输入和输出单价可能差几十倍,缓存命中与否又能再差一个数量级。下面按"看懂单价 → 估算月成本 → 结合能力筛选"的顺序讲清楚。
为什么同一个模型会有三个单价
主流 LLM API 的计费结构基本一致:
- 输入单价(Input):你发给模型的 prompt 部分,包括系统提示、对话历史、检索到的文档。
- 输出单价(Output):模型生成的内容。绝大多数模型输出单价明显高于输入单价,因为生成是逐 token 串行计算的。
- 缓存输入单价(Cached Input):如果 prompt 前缀和上一次请求重复,部分供应商允许命中缓存,按更低的单价计费。
以 pricepertoken.com 收录的数据为例,DeepSeek 的 deepseek-v4.1-flash 输入 $0.003、输出 $0.180、缓存输入 $0.0028(单位:每百万 token)。输入和输出差了 60 倍,缓存输入又比普通输入低一个数量级。这意味着:
- 一个长输入、短输出的场景(比如文档分类、信息抽取),成本几乎全由输入单价决定;
- 一个短输入、长输出的场景(比如内容生成、代码补全),成本几乎全由输出单价决定;
- 一个反复使用同一段长 prompt 的场景(比如固定系统提示 + 固定知识库),缓存单价才是关键。
所以"哪个模型便宜"这个问题,脱离使用场景没有答案。
用调用量估算月成本
把三个单价套进一个简单公式:
月成本 ≈ 月输入 token 数 × 输入单价
+ 月输出 token 数 × 输出单价
+ 命中缓存的输入 token 数 × 缓存输入单价
+ 未命中缓存的输入 token 数 × 输入单价
注意缓存部分要拆开算:命中缓存的输入按缓存单价,没命中的仍按普通输入单价,两者相加才是总输入成本。
举个具体例子。假设你做一个客服问答机器人,每月 10 万次请求,每次平均输入 2000 token(其中 1500 token 是固定的产品知识库前缀,可命中缓存)、输出 300 token。用 deepseek-v4.1-flash 的单价:
| 项目 | 数量 | 单价(每百万 token) | 小计 |
|---|---|---|---|
| 缓存命中输入 | 1500 × 10万 = 1.5亿 | $0.0028 | $0.42 |
| 未命中输入 | 500 × 10万 = 0.5亿 | $0.003 | $0.015 |
| 输出 | 300 × 10万 = 0.3亿 | $0.180 | $5.40 |
| 合计 | 约 $5.84 |
可以看到,虽然输入 token 总量是输出的 6 倍多,但输出成本占了九成以上。如果换成输出单价更低的模型,这个场景的账单会明显下降;如果换成输入便宜但输出贵的模型,反而更贵。
验证方法:先跑一周真实流量,从供应商后台导出实际 token 用量(区分输入/输出/缓存),再按公式外推一个月。不要用"平均每次请求多少字"去猜,中英文、代码、JSON 的 token 折算比例差别很大。
别只看单价,先过能力门槛
单价再低,模型不满足需求也是浪费。pricepertoken.com 的筛选器把能力分成几类,选型时值得先按这些条件过滤:
- 上下文长度(Context):长文档、多轮对话、大代码库场景,上下文不够直接不可用。列表里从 16K 到 1.0M 都有。
- 工具调用(Tool Use):需要模型调用外部函数、走 Agent 流程的场景。
- 推理(Reasoning):复杂数学、多步逻辑任务。
- 视觉 / PDF 输入:需要处理图片或文档的场景。
- 开源(Open Source):有自部署或合规要求的场景。
筛选出满足能力的候选模型后,再在候选集内比单价,而不是在全量列表里找最便宜的那个。
同类模型横向对比的实操顺序
- 定场景:先判断你的负载是长输入型、长输出型还是高缓存命中型。
- 过能力筛:用上下文、工具调用、推理等条件缩小候选范围。
- 算加权单价:按你的输入/输出比例,把三个单价合成一个"有效单价",而不是直接比输入单价。
- 看更新时间:价格随模型版本变动,比较时以页面标注的最新官方价格为准。pricepertoken.com 页面显示"Last updated: October 4, 2026",并每日更新官方价格,用它做横向对比比翻各家官网更快。
- 小流量验证:选定 1–2 个候选后,用真实流量跑一周,核对实际账单和预估是否吻合。
常见卡点
- 把输入单价当成总成本:输出单价往往是输入的数倍到数十倍,只看输入会严重低估。
- 忽略缓存命中率:缓存单价虽低,但命中率取决于 prompt 前缀是否稳定。前缀里混入时间戳、随机 ID 会导致永远不命中。
- 用字符数代替 token 数:中文、代码、结构化数据的 token 折算差异大,估算偏差可能超过一倍。
- 忽略上下文长度对成本的影响:多轮对话如果不做历史裁剪,输入 token 会随轮次线性增长。
- 拿旧价格做决策:模型版本迭代快,价格和可用性都可能变,比较前先确认数据更新时间。
一句话总结:先按场景确定成本由哪个单价主导,再用真实 token 用量算加权成本,最后在满足能力门槛的候选里选——这样比出来的结果才和你的账单对得上。