成本优化指南
批量任务中的思考 token:effort、上限、阶段预算
思考 token 按输出计费并计入 max_tokens。了解如何给它们设上限,并用便宜模型估算 40,000 项的批量任务。

思考 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?
你的猜测
02,000
显示答案
答案: 620
620。思考和答案都是输出;无论可见与否,你都要为整个流付费。

把它乘以 40,000 条评论,不可见的部分就占了账单的大头。关于请求两侧的基础知识,见输入 token 与输出 token。
Effort:一个旋钮,不是预算#
Anthropic 的 Messages API 用 output_ 设置 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 便宜。
| 模型 | 输入 $/1M | 输出 $/1M | 每次请求 | 40,000 次请求 | OpenRouter,40,000 次请求 |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000038 | $0.152 | $0.267 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000043 | $0.17 | $0.532 |
| MiniMax-M2.7 | $0.05 | $0.15 | $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.02$0.04 | $0.152 | $4.56 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.17 | $5.10 |
| MiniMax-M2.7$0.05$0.15 | $0.42 | $12.60 |
你今天就能拉的杠杆#
不同 API 暴露不同的思考控制,所以这里给出到处都有效的:硬性上限、短答案指令和阶段拆分。
在 CheapTokens 上做批量处理的最小请求。基础 URL 是 https:/,模型 id 是文档里的完整那个:
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.:那个数字就是该请求的输出账单。上限把思考和可见答案一起围住。如果 finish_reason 是 length 且内容为空,说明上限在答案出现前就用完了:提高它,或要求更短的答案。在几条评论上检查 usage.,然后把上限设在真实最大值稍上方。上限和停止序列的细节在削减输出 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:一条简短规则#
批量处理从低开始,一次提高一个阶段。保留你自己评估认为值得的数字,而不是听起来最安全的那个。强模型应该看到一个小而已经过滤过的集合;便宜模型应该看到其余所有。



