# 推理 token 怎么计费：避免重复计算与短回答误判

> 区分可见回答、推理 token 与不同 API 的 usage 口径，用可复算示例避免重复计费统计，并衡量真正完成任务的成本。

_发布 2026-09-29 · 更新 2026-09-29 · [KeepRouter Editorial](https://keeprouter.com/editorial-policy#editorial-team) · 5 分钟阅读_

![展示 token、缓存、重试、回退与归属的多模型 API 成本账本](https://keeprouter.com/editorial/blog/control-multi-model-api-costs.png)

_在明确工作量假设下，比较合格任务的完整成本。示意图，不代表厂商报价。_

模型使用推理 token 时，短回答也可能产生较多生成费用。应先确认具体 API 和模型的用量规则：有的字段是总量中的组成部分，有的接口把需要相加的类别分开返回。把每个数字都当成独立费用，会重复计算。

这里讨论的是核算方法，不意味着 OpenAI、Gemini 与兼容网关具有相同参数和计费行为。

## 先确认当前接口的口径

[OpenAI 推理文档](https://developers.openai.com/api/docs/guides/reasoning)说明推理 token 按输出计费，并占用上下文。如果某个输出总量已经包含推理部分，就不能再次相加。

[Google 当前 thinking 文档](https://ai.google.dev/gemini-api/docs/thinking)列出 Interactions API 的 `usage.total_output_tokens` 与 `usage.total_thought_tokens`，并说明按输出加思考计算响应费用。在该文档口径下两项相加，不是下文 OpenAI 风格的内含明细；不能仅因为字段都含有 output，就套用另一种 API 的公式。

| 核对问题 | 作用 |
| --- | --- |
| 推理是否已经包含在输出总量中？ | 避免重复加总 |
| 字段是明细还是独立类别？ | 防止总数和分项同时计费 |
| 缓存 token 是否已包含在输入中？ | 正确区分普通与缓存费率 |
| 哪个模型、哪条线路生成记录？ | 选择对应规则与价格 |
| 任务失败前是否已发生生成？ | 失败任务仍可能有用量 |

保留用于核对的原始 usage，避免混入敏感响应正文。先理解字段，再做统一格式转换。

## 复算一次重复统计

假设某条 OpenAI 风格记录有 1,000 个总输出 token，其中 800 个为推理，200 个为可见答案。假设输出每百万 10 美元，则输出费用为 0.01 美元；按 1,800 个收费，就把推理部分算了两次。

```python
from decimal import Decimal

output_total = 1_000
reasoning_detail = 800
price_per_million = Decimal("10")
correct = Decimal(output_total) * price_per_million / 1_000_000
wrong = Decimal(output_total + reasoning_detail) * price_per_million / 1_000_000
assert correct == Decimal("0.01")
assert wrong == Decimal("0.018")
```

示例价格是假设值，且只计算输出，不能作为 Gemini 或其他接口的通用公式。输入、缓存、工具与其他计费操作仍需按各自规则核对。

反过来，只计算屏幕上显示的文字，同样会漏算。这个例子中，可见部分只有 200 个 token。本地对答案重新分词，无法可靠重建内部推理用量。

## 用任务结果决定推理强度

选中的模型和线路如果支持推理配置，就在同一工作负载上比较不同设置。参数名称和可选值并不统一，兼容聊天接口也不代表保留了所有原生推理能力。

可以设计一个结果可核对的题目：虚构运输规则 A 排除岛屿配送，后续例外规则 B 明确允许 Island A。通过条件是应用例外，同时引用两条规则 ID。再加入一个只需直接查询的简单问题。

比较每种受支持配置的合格答案、实际计费用量和耗时。复杂冲突判断可能值得更多推理，简单查询却未必。测试过程中保持任务比例不变，否则费用变化也可能来自样本变化。

## 避免输出上限制造付费失败

不同模型的输出上限与推理预算相互作用不同。预算过小，可能在生成可用答案前耗尽。空响应或未完成状态不能证明没有计算。

分别记录结束状态、usage 和业务验收结果。失败后先区分生成空间不足、参数不支持、上下文缺失还是传输异常，再决定是否增加预算。[流式排错指南](/zh/blog/llm-streaming-interrupted)也说明，已有文字不等于回答完成。

重试必须进入同一业务任务的总账。第一次花费 0.01 美元、成功重试花费 0.02 美元，这个任务的模型费用就是 0.03 美元，不能只展示成功那次。

## 用可核对记录完成选型

从[模型目录](/models)选择能力匹配的候选，用 [API 成本计算器](/tools/api-cost-calculator)做支持类别的预算，再用有限样本核对真实用量与费用。计算器不能恢复丢失的 usage，也不能替未定义字段决定计费规则。

在质量相当时，比较每个合格任务的成本与延迟。记录 API、模型版本、线路、推理设置和测试日期；其中任何一项改变，都应重跑样本。这样才能把推理强度变成可判断的支出决策。

## 常见问题

### 看不到推理内容也会计费吗？

对于对推理用量计费的模型与接口，是的。应查看具体 usage 和价格规则，不能用可见答案长度代替完整生成用量。

### 应该把推理 token 加到输出 token 上吗？

只有接口把两者定义为独立计费类别时才相加。如果输出总量已包含推理，再加一次就会重复统计。

### 降低推理强度一定降低任务成本吗？

不一定。如果合格率下降、重试增加，完成任务反而可能更贵。应在同一质量标准下统计全部尝试。

## 参考的一手资料

_本文最近复核 2026-09-29_

1. [OpenAI reasoning accounting](https://developers.openai.com/api/docs/guides/reasoning)
2. [Gemini thinking and pricing](https://ai.google.dev/gemini-api/docs/thinking)

## 继续阅读

- [RAG 每次查询多少钱：别只计算生成 token](https://keeprouter.com/zh/blog/rag-api-cost-per-query.md)
- [LLM 流式输出中断：区分 SSE、超时和完成状态](https://keeprouter.com/zh/blog/llm-streaming-interrupted.md)
- [api cost calculator](https://keeprouter.com/tools/api-cost-calculator)

## 用你的工作量估算费用

选择型号并填写预计用量，先把估算与一条小规模真实请求对上，再扩大使用。

[估算 API 费用](https://keeprouter.com/tools/api-cost-calculator)

[创建 Key，测试免费模型](https://keeprouter.com/login?returnTo=%2Fconsole%2Fkeys%3Fmodel%3Dfree)

免费测试使用 free 模型；其他付费型号需要足够预付额度。

[全部文章](https://keeprouter.com/zh/blog.md) · [模型与价格](https://keeprouter.com/models.md)
