返回博客

成本优化指南

批量任务中的思考 token:effort、上限、阶段预算

思考 token 按输出计费并计入 max_tokens。了解如何给它们设上限,并用便宜模型估算 40,000 项的批量任务。

作者:CheapTokens Team发布于 5 分钟阅读

封面:批量任务中按输出计费的思考 token
本页内容
  1. 思考 token 在账单上是什么样
  2. Effort:一个旋钮,不是预算
  3. 一个真实流水线:一个模型指挥,另一个做批量
  4. 估算批量处理
  5. 你今天就能拉的杠杆
  6. 按阶段设置 effort:一条简短规则

思考 token 按输出 token 计费,而且即使你从未看到它们,它们也会计入 max_tokens。因此,一个大任务的账单取决于模型思考了多少,而不仅仅是它可见答案有多长。真正重要的两个杠杆是输出上限和任务拆分:用便宜模型做批量处理,只在组装阶段用更强的模型。

如果你的 agent 运行了十分钟,账单却比任务本身还大,这就是第一个该检查的地方。

思考 token 在账单上是什么样#

以一个分类器为例,它为每条评论回答 keep 或 drop。可见答案只有一个词;我们为它预算约 20 个输出 token。假设模型先推理,花了 600 个 token 做这件事。你在屏幕上看到 20 个 token,却要为 620 个付费。

Anthropic 的 effort 页面(2026 年 11 月 5 日查看)对此说得很明确:即使思考内容没有被返回,思考也会计入 max_tokens,而 max_tokens 是总输出(思考加响应文本)的硬性上限。输出侧也是每 token 定价更高的一侧,这就是为什么这很伤。

猜数字

一个模型思考了 600 个 token,然后写出 20 个 token 的答案。计费多少输出 token?

显示答案

答案: 620

620。思考和答案都是输出;无论可见与否,你都要为整个流付费。

可见答案与计费输出对比
示例:20 个 token 的可见答案旁边是 620 个计费输出 token(仅为说明的假设)

把它乘以 40,000 条评论,不可见的部分就占了账单的大头。关于请求两侧的基础知识,见输入 token 与输出 token。

Effort:一个旋钮,不是预算#

Anthropic 的 Messages API 用 output_config.effort 设置 effort。不设值时,应用模型的默认值。级别有 max、xhigh、high、medium 和 low。大多数模型默认是 high;Claude Opus 5.5 和 Claude Haiku 5.5 默认是 medium。

同一页面上有三个细节值得记住:

  • Effort 作用于每一个输出 token,无论是否思考。更低的 effort 也意味着更少、更简洁的工具调用,这对 agent 很重要。
  • low 适合更简单的任务和子 agent。
  • Effort 是行为信号,不是严格的 token 预算。它引导模型,但不承诺具体数字。硬性限制是 max_tokens。

所以 effort 是控制模型多努力的旋钮,而输出上限是围栏。在两者都可用的地方,你两者都要。关于思考为什么更贵的通俗解释,有一个入门版本:推理 effort 与思考 token 详解。

一个真实流水线:一个模型指挥,另一个做批量#

AI 研究者、OpenAI 联合创始人 Andrej Karpathy 在 2026 年 10 月 31 日描述了他的 HN 视频流水线(帖子)。Claude Opus 5.5 在 Medium effort(其默认值)下下载了所有 Hacker News 评论,将它们缩小到约 40,000 条推荐 YouTube 视频的评论,并构建了一个网站,包含 2007 到 2026 年间 150 个主题下的 6,454 个视频。Sonnet 在 Claude Code 工作流中遍历评论,过滤垃圾信息并找出推荐。据他所说,整个流程现在大约需要两小时。

帖子没有给出 token 数,也没有成本,所以没有价格可引用。它展示的是形态:更强的模型以中等 effort 坐在顶层,决定构建什么;更便宜的模型磨完重复的部分。注意 token 去了哪里。指挥是少数几个大而罕见的步骤。过滤是数万个微小、相同的步骤。

三个阶段:批量处理、上限、组装
拆分任务的形态:便宜模型做批量处理,答案设上限,只在组装时用更强模型

同样的拆分适用于任何一对模型。如果你想要过滤提示词本身,它在用 LLM 过滤 4 万条评论里;关于决定哪个请求去哪个模型,见模型路由,便宜优先。

估算批量处理#

以下是我们自己的假设,不是 Karpathy 的数字:40,000 条评论,每条约 150 个输入 token(指令加评论),每条约 20 个输出 token(一个标签和几个词)。

  • 输入:40,000 × 150 = 6,000,000 token
  • 输出:40,000 × 20 = 800,000 token

在 DeepSeek-V4-Flash 上,这一轮花费 $0.17。表格展示了我们服务的每个模型上的相同工作负载;总计(输入和输出一起算),每一个都比 OpenRouter 便宜。

模型 每次请求 40,000 次请求 OpenRouter,40,000 次请求
GLM-5.3-Flash $0.0000038 $0.152 $0.267
DeepSeek-V4-Flash $0.0000043 $0.17 $0.532
MiniMax-M2.7 $0.000011 $0.42 $5.04

每次请求 150 个输入 token 和 20 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。

现在让模型在回答前为每条评论思考 600 个 token,即每项 620 个输出 token:40,000 × 620 = 24,800,000 个输出 token。同样的处理在 DeepSeek-V4-Flash 上变成 $2.57。输入相同,如果模型为每条评论思考 600 个 token,输出侧增长三十一倍。这种思考是否值得,要由你自己的评估来说;对于一个词的保留/丢弃判断,这是首先该在更低级别或加上限测试的东西。

用你自己的数字来玩:每请求 token 数和请求数,计算器使用实时价格。

成本计算器

批量处理:40,000 条评论,短标签

每次请求的输入 token 数: 150 · 每次请求的输出 token 数: 20 · 每日请求数: 40,000

模型每天每月
GLM-5.3-Flash$0.152$4.56
DeepSeek-V4-Flash$0.17$5.10
MiniMax-M2.7$0.42$12.60

你今天就能拉的杠杆#

不同 API 暴露不同的思考控制,所以这里给出到处都有效的:硬性上限、短答案指令和阶段拆分。

在 CheapTokens 上做批量处理的最小请求。基础 URL 是 https://api.cheaptokens.dev/v1,模型 id 是文档里的完整那个:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 1024,
    "messages": [
      {"role": "system", "content": "Reply with exactly one word: keep or drop."},
      {"role": "user", "content": "Comment: this talk on compilers changed how I think, youtube.com/watch?v=example"}
    ]
  }'

读取响应中的 usage.completion_tokens:那个数字就是该请求的输出账单。上限把思考和可见答案一起围住。如果 finish_reason 是 length 且内容为空,说明上限在答案出现前就用完了:提高它,或要求更短的答案。在几条评论上检查 usage.completion_tokens,然后把上限设在真实最大值稍上方。上限和停止序列的细节在削减输出 token里,句子中途截断的解释在为什么答案在句子中途停止里。

DeepSeek-V4-Flash 每个答案最多允许 32,768 个输出 token,上下文 380K,所以 1,024 的上限是选择,不是限制。GLM-5.3-Flash(8,192 输出,390K 上下文)和 MiniMax-M2.7(8,192 输出,180K 上下文)符合同样的模式。按阶段选择上限。

比较

Agent 循环设置

之前

每一步都以最高 effort 运行且无上限。模型在每次工具调用前写很长的推理,计费输出远高于可见答案。

之后

子 agent 和简单分类以低 effort 运行,或使用短答案指令和 max_tokens 上限。只有组装步骤获得更多空间,而且只有在你自己的评估显示有收益时才这样。

想在一页上看到全部,实时价格表在CheapTokens 定价,请求格式在文档里。

按阶段设置 effort:一条简短规则#

批量处理从低开始,一次提高一个阶段。保留你自己评估认为值得的数字,而不是听起来最安全的那个。强模型应该看到一个小而已经过滤过的集合;便宜模型应该看到其余所有。