---
title: "大模型API价格对比怎么做：只看每百万token单价会算错的5个地方"
description: "不再列一张很快过时的价格表，讲清大模型API价格对比的方法：输入输出分开算、输出输入价格比、上下文、缓存与批处理、tokenizer 差异，附可复查的价格快照、计算示例和比价核对表。"
url: https://cdnping.org/blog/llm-api-pricing-how-to-compare
language: zh-CN
published: 2026-10-22
category: "模型观察"
tags: ["大模型API","价格对比","token计费","成本优化","OpenRouter"]
source: cdnping.org
license: Free to quote and summarize with a link to the url above.
---
# 大模型API价格对比怎么做：只看每百万token单价会算错的5个地方

做大模型API价格对比，不能只拿“每百万 token 多少钱”排个序。要把输入价和输出价分开，按你自己业务的输入输出比例算出“每次请求多少钱”，再把缓存、批处理、重试和 tokenizer 差异算进去。同一组模型，换一种负载，便宜和贵的顺序可能整个反过来。

下面先用一份可以复查的价格快照说明单价之间差多少，再讲最容易算错的 5 个地方，最后给一张能直接照着填的核对表。

## 现在的大模型 API 单价大概差多少？

我们用 cdnping 在 2026-10-17 抓取的 OpenRouter 公开模型目录做参照。这一天目录里共有 376 个模型；cdnping 重点跟踪其中 8 家厂商的 16 个最新模型（含同一模型的不同版本），下面看它们的目录价（美元 / 百万 token）。这里不写模型名，只看区间和比例，因为具体型号几周就会换一轮。

| 项目 | 快照中的范围 |
|---|---|
| 输入价 | 约 0.1 到 4 美元 / 百万 token |
| 输出价 | 约 0.47 到 12 美元 / 百万 token |
| 输出价 ÷ 输入价 | 16 个里有 15 个在 3 到 5 倍之间，1 个约 39 倍 |
| 上下文上限 | 多数在 100 万 token 左右，少数为 50 万和约 26 万 |

从表里能读出两件事。一是输入价最高和最低差了约 40 倍，选对档位比在同档里抠几分钱影响大。二是那个输出价约是输入价 39 倍的模型，输入价在快照里属于偏低的一档，输出价却接近最高档。只看输入价，它像是便宜货；只要你的任务输出多，它就不便宜了。

这些数字是 OpenRouter 的目录价，不一定等于各厂商官网的价格，也不包含各家的缓存、批处理等折扣。正式比价前请以官方价格页为准。实时的价格和可用率可以在 cdnping 的[模型监测](/models)查看，调价记录在[官网动态](/changes)里逐行保留。

## 第 1 个坑：输入价和输出价为什么要分开算？

快照里 16 个模型全部对输入和输出分别定价，而且输出都比输入贵。只拿其中一个数比，或者把两者简单相加，都会失真。

正确的算法是按单次请求计算：

```
单次成本 = 输入 token 数 × 输入单价 / 1,000,000
         + 输出 token 数 × 输出单价 / 1,000,000
```

下面用快照里的三组真实价格点做示例（模型名隐去，记作 A、B、C），再假设两种典型负载。负载是示例，不是统计数据。

- A：输入 0.304，输出 11.936
- B：输入 4，输出 12
- C：输入 2，输出 10

| 每 1000 次请求的成本（美元） | A | B | C |
|---|---|---|---|
| 检索问答：输入 8000 / 输出 300 | 约 6.01 | 约 35.60 | 约 19.00 |
| 长文生成：输入 500 / 输出 3000 | 约 35.96 | 约 38.00 | 约 31.00 |

检索问答这类“读得多、写得少”的任务，A 只有 C 的三分之一左右；换成“读得少、写得多”的生成任务，A 反而比 C 贵。所以第一步不是查价格，而是先统计自己的请求里输入和输出各占多少。

## 第 2 个坑：输出价是输入价几倍，为什么要单独看？

输出输入价格比决定了模型对哪类任务“友好”。比值在 3 到 5 倍的模型，两类任务的成本排序比较稳定；比值很高的模型，成本对输出长度非常敏感。

有一类输出常被忽略：推理模型的思考过程。不少推理模型会把思考部分计入输出 token，界面上不一定显示，账单上却会体现。是否计费、怎么计，以各家官方文档为准。比较推理模型时，要用真实请求看一下返回的 usage 字段里输出 token 到底有多少，而不是按最终答案的长度估。

## 第 3 个坑：上下文上限和长上下文价格怎么影响成本？

上下文上限本身不收钱，但它决定了你需不需要额外的工程成本。快照里多数模型的上限在 100 万 token 左右，个别只有约 26 万。如果你的任务要塞进整个代码仓库或长文档，上限小的模型要切块、做检索，多出来的请求次数和重复输入都要算钱。

另外，有的厂商对超过某个长度的请求使用更高的单价。这类分段价格在汇总表里通常看不到，需要去官方价格页找“long context”或类似的说明。

## 第 4 个坑：缓存和批处理折扣该怎么算进去？

提示缓存（prompt caching）对重复前缀的输入按更低的价格计费，对系统提示很长、同一份文档反复问的场景影响很大。批处理接口则用更长的完成时间换折扣，适合离线任务。

这两项的折扣力度、最小缓存长度、缓存写入是否另收费，各家规则都不同，这里不列具体数字。算法上可以这样处理：

```
有效输入单价 = 命中缓存比例 × 缓存读取单价
             + (1 - 命中缓存比例) × 普通输入单价
             + 缓存写入的额外成本（按写入次数摊）
```

命中比例要用真实日志统计，别按理想值估。Claude 的缓存规则和常见误区可以看这篇：[Claude API 提示缓存（prompt caching）怎么用才省钱](/blog/claude-prompt-caching-save-cost)。

## 第 5 个坑：同一段文字，为什么不同模型的 token 数不一样？

每个模型用自己的 tokenizer，同一段中文切出来的 token 数可能差不少。单价低一点的模型，如果同样的内容要多切出一截 token，省下的钱就被吃掉了。中文、代码、JSON 的差异尤其明显。

最直接的办法是拿你自己的真实样本去测。下面是一个通用的测法，适用于 OpenAI 兼容接口，把地址、密钥和模型名换成你要比的：

```bash
# 准备一段有代表性的真实输入，保存为 sample.txt
TEXT=$(python3 -c 'import json,sys;print(json.dumps(open("sample.txt").read()))')

curl -s "$BASE_URL/v1/chat/completions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$MODEL\",\"max_tokens\":1,\"messages\":[{\"role\":\"user\",\"content\":$TEXT}]}" \
  | python3 -c 'import json,sys;print(json.load(sys.stdin)["usage"])'
```

`max_tokens` 设成 1，几乎只花输入的钱（个别推理模型对这个参数有最小值或改用别的参数名，报错时按其文档调整）。对每个候选模型跑一遍，记下 `prompt_tokens`，然后用“token 数 × 单价”比，而不是只比单价。账单上的 token 数和你本地估算对不上时，可以按[AI API 账单对不上：token 计数口径与核对方法](/blog/relay-billing-token-mismatch)里的步骤逐项核对。

## 单价之外，还有哪些钱会算进账单？

### 失败和重试

请求失败后重试，前面已经发送的输入往往要再付一次。同一个模型在不同推理供应商上的可用率并不一样：在 cdnping 2026-10-17 的 OpenRouter 快照中，同一个模型的 36 条供应商线路，近 1 天可用率从约 88% 到 100% 不等。可用率低的那条线路，单价再低，也要乘上重试带来的放大系数。详细数据见[同一模型换个 OpenRouter 供应商，可用率能差多少](/blog/same-model-different-providers-uptime)，API 入口本身的探测结果可以在 [API 状态](/status) 页看。

### 量化版本

同一个模型名，不同供应商可能跑的是 fp8、fp4 等不同精度。便宜的那家如果用的是低精度版本，输出质量可能有差别，导致返工或多轮对话。怎么识别见[模型变笨还是换了供应商：推理供应商与 fp8、fp4 模型量化](/blog/llm-quantization-fp8-fp4-providers)。

### 计费单位不同

有的服务按 token 计价，有的按月订阅、按自定义额度单位计价。比如 AGI Plan（AGI Plan 是 cdnping 的商业合作方）用 CU 计量，1 CU 等于基准模型 1,000 个输出 token，按量付费时 1 元 = 500 CU，具体换算以 [agiplan.dev/pricing](https://agiplan.dev/pricing) 为准。比较这类服务时，同样要把它换算成“你的典型请求一次多少钱”，而不是拿套餐价和每百万 token 单价直接比。

## 能直接照着做的比价核对表

| 步骤 | 要做的事 | 产出 |
|---|---|---|
| 1 | 从日志里抽一周真实请求，统计平均输入、输出 token 和两者比例 | 你的负载画像 |
| 2 | 如果用推理模型，单独统计思考部分的输出 token | 实际输出长度 |
| 3 | 从官方价格页抄下候选模型的输入价、输出价、长上下文分段价 | 单价表（记下抄录日期） |
| 4 | 用上面的 curl 对同一批样本测 token 数 | 各模型的 token 系数 |
| 5 | 按“单次成本”公式算出每 1000 次请求的成本 | 基础成本 |
| 6 | 用真实日志估算缓存命中率，套入有效输入单价 | 折扣后成本 |
| 7 | 能离线跑的任务，按批处理价格另算一列 | 批处理成本 |
| 8 | 在 [/models](/models) 查目标供应商的可用率，估算重试放大 | 含重试的成本 |
| 9 | 抽样对比输出质量，确认便宜的方案不会带来返工 | 质量结论 |
| 10 | 订阅 [/changes](/changes) 的 RSS，价格页变动时重算一次 | 持续有效的结论 |

做完这张表，常见的结论不是“选最便宜的模型”，而是按任务分档：检索、分类、格式化用便宜的，长链路推理和复杂修改用贵的。具体怎么拆可以参考[多模型路由怎么做：按任务分流降低大模型成本，质量不明显下滑](/blog/multi-model-routing-save-cost)。

## 价格变了怎么知道？

搜索结果里常见的价格表不少停在几个月前，彼此数字也对不上：厂商调价后，转载的表很少有人跟着改。比起收藏一张表，更可靠的是盯住源头。cdnping 的[官网动态](/changes)监控多家官方价格页和更新日志，逐行记录增删；[模型监测](/models)会自动记录 OpenRouter 上的上架、下架和调价。三条线路怎么配合使用，见[大模型 API 价格变了怎么第一时间知道](/blog/track-llm-price-and-model-changes)。

本文的价格快照来自 cdnping 2026-10-17 对 OpenRouter 公开 API 的抓取，cdnping 从这一天才开始采集，历史很短，单价请以官方价格页的最新数字为准。
