首页 › cost-hacks › 活不急就对半砍:被忽视的Batch五折

活不急就对半砍:被忽视的Batch五折

一句话信息差:OpenAI、Anthropic、Google 给你留了一扇"五折门"——同样的模型、同样的 prompt、同样的输出质量,只要你愿意把结果等一晚上,账单直接砍一半。问题是,绝大多数团队压根没用。

导语:五折就摆在门口,没人推

你每天用 chat.completions 实时调用 GPT 或 Claude,付的是全价。但你可能不知道,同一个 API key、同一套 SDK,换一个 endpoint、把请求攒成一批扔进去,所有 token 价格直接打五折——输入、输出都打。

这不是什么灰色技巧,是官方正大光明写在定价页上的:OpenAI Batch API、Anthropic Message Batches API、Google Gemini Batch API,三家的政策几乎一模一样——异步、24 小时内出结果、统一 50% off。

海外一篇 2026 年的对比文章原话是:"这不是四舍五入的误差,这是对半。"但紧接着它点出最扎心的认知差:"大多数团队根本没用它。" 原因只有一个——他们以为 Batch 只配给超大公司跑百万级任务。错了。你夜里跑的打标签、做分类、翻译、批量 embedding、跑 eval、处理文档,全都能进。

这篇文章就拆给你看:三家到底多少钱、哪些活该进队列、怎么叠加到 75% off、给你能直接抄的代码。Round 4,成本优化,咱们把"五折"这个被忽视的开关彻底说透。

一、认知差:五折门到底是什么

先讲清楚它"是"什么、"不是"什么,因为误解挡住了 90% 的人。

Batch API 是什么:你把一批请求写成一个 .jsonl 文件(每行一个完整请求),上传,系统给你一个 batch id。请求进入异步队列,在 24 小时内处理完,你再去拉结果文件。中间你可以关电脑、睡觉、干别的。

Batch API 不是什么: - ❌ 不是只能给大企业用的——一个人、一批 100 条也能投。 - ❌ 不是质量打折——同一个模型、同样的输出,只是慢。 - ❌ 不是要你重写 prompt——请求格式和实时接口几乎一样。 - ✅ 唯一的代价:不能立刻拿到结果。

所以问题就变成一句灵魂拷问:这个请求,真的需要 1 秒内返回吗?

如果你诚实地盘点一下自己 API 账单里的调用,会发现一个惊人的事实——有 40%~50% 的请求根本不急。海外那篇对比文章直接给了判断:情感分析、分类、批量打标、文档摘要、翻译、批量 embedding、跑评测集……这些"批处理型"的活,全都是 Batch 的完美客户。它们被困在实时通道里,纯粹是因为写代码的时候顺手就调了同步接口。

这一顺手,就是一倍的钱。

二、价格差:三家五折的真实数字

别信"五折"两个字就完了,咱们看 2026 年的实际单价(每 100 万 token,美元)。

OpenAI Batch API(统一五折,2026 已覆盖 GPT-5.4 全系列)

模型 实时输入价 Batch 输入价 实时输出价 Batch 输出价
GPT-4o $2.50/M $1.25/M $10.00/M $5.00/M
GPT-4o mini $0.15/M $0.075/M $0.60/M $0.30/M
GPT-5.4(2026) $2.50/M $1.25/M $15.00/M $7.50/M
GPT-5.4-nano $0.20/M $0.10/M $1.25/M $0.625/M

Anthropic Message Batches API(统一五折,单批最多 1 万请求)

模型 实时输入价 Batch 输入价 实时输出价 Batch 输出价
Claude Sonnet 4 $3.00/M $1.50/M $15.00/M $7.50/M
Claude Haiku 4 $0.80/M $0.40/M $4.00/M $2.00/M

Google Gemini Batch API

核心算账(用原文最直白的话):如果你现在每月在 GPT-4o 上花 $5,000,把其中能异步的活切到 Batch,prompt 不用改一个字、模型不用换一个,账单直接掉到 $2,500。海外一家做成本归因的公司 PerUnit 在自己的 case study 里写得更具体——靠把异步负载切到 Batch,他们一次省下了 $1,800+。

注意那个字眼:"prompt 不用改、模型不用换"。这是五折门最香的地方——它不动你的业务逻辑,只动你的钱包。

三、方法差:哪些活该进队列,哪些不能

不是所有活都能进。判断标准只有一条:结果能不能等到明天。

flowchart TD
    A[一次 API 请求] --> B{用户在等这 1 秒吗?}
    B -->|是, 实时| C[走实时通道<br/>全价, 保留原样]
    B -->|否, 后台| D{明天看到结果<br/>可以接受吗?}
    D -->|不行| C
    D -->|可以| E[✅ 进 Batch 队列<br/>五折]
    E --> F[投递时间: 当晚定时任务]
    F --> G[队列处理: 24h 内]
    G --> H[拉取结果入库]
    H --> I[账单: 砍半]

    style C fill:#ffd6d6
    style E fill:#d6ffe0
    style I fill:#fff3b3

绝对不能进 Batch 的场景(红线): - 用户正在对话里等回复的实时 chat - 流式输出(streaming)场景 - Agent 多轮决策中需要立刻拿到下一步的环节 - 任何 SLA 要求秒级响应的接口

完美适配 Batch 的场景(金矿): - 批量分类 / 情感分析:几万条评论、工单、社媒帖子打标签 - 批量 embedding:给知识库切片生成向量(这是 RAG 最贵的隐性成本之一) - 文档处理:合同抽取、财报解析、发票识别、批量 OCR 后理解 - 翻译:整站本地化、文档批量翻译 - 跑评测 / eval:换模型时跑测试集(这活本来就过夜跑) - 内容生成:SEO 长尾页、产品描述批量生成 - 数据清洗:地址归一化、实体抽取、去重判断

对照前面那条信息差——你账单里 40%~50% 的调用,大概率落在这堆里。

四、操作差:直接抄的代码

OpenAI Batch 最小可用流程(Python):

# Step 1: 把请求写成 jsonl,每行一个,带 custom_id
# batch_requests.jsonl
# {"custom_id":"req-001","method":"POST","url":"/v1/chat/completions",
#  "body":{"model":"gpt-4o","messages":[{"role":"user","content":"总结: ..."}],"max_tokens":200}}
# {"custom_id":"req-002","method":"POST","url":"/v1/chat/completions",
#  "body":{"model":"gpt-4o","messages":[{"role":"user","content":"情感分类: ..."}],"max_tokens":10}}

# Step 2: 上传文件 + 创建 batch
with open("batch_requests.jsonl", "rb") as f:
    batch_file = client.files.create(file=f, purpose="batch")

batch = client.batches.create(
    input_file_id=batch_file.id,
    endpoint="/v1/chat/completions",
    completion_window="24h",          # ← 就这行, 五折的钥匙
)
print(f"Batch ID: {batch.id}")        # 存好它

# Step 3: 明天来取结果
batch = client.batches.retrieve(batch.id)
if batch.status == "completed":
    output = client.files.content(batch.output_file_id)
    # output 里就是按 custom_id 对应的结果

Anthropic Message Batches 类似,单批最多塞 10,000 个请求、单个文件最多 100,000 个请求。逻辑一致:攒文件 → 创建 batch → 24h 内取结果。

国内对应提醒:智谱 GLM、通义、DeepSeek 目前对 Batch 异步通道的官方支持力度不及海外三家统一。所以如果你的负载天然异步(比如夜里跑批),用海外 Batch 是当下最稳的省钱姿势;如果必须走国产实时通道,就转向之前几轮讲过的路由层、语义缓存那几把刀。

五、叠加砍法:五折只是起点,能叠到 75% off

Batch 五折,是第一层。真正会省钱的人,会把它和 prompt caching 叠起来。

Prompt caching 的账(以 Anthropic 为例): - 缓存写入:基准价的 1.25 倍(一次性,把长前缀存进去) - 缓存命中读取:基准价的 0.1 倍(也就是打一折)

叠加之后:当你的批量请求共享一个长前缀(system prompt、长文档、few-shot 示例),缓存命中那部分先打一折,再走 Batch 整体打五折。tokenmix 的 2026 指南给的结论是:Batch + prompt caching 叠加,最高可省 75%+。

flowchart LR
    A[原价 token] --> B[缓存命中前缀<br/>读 0.1x]
    A --> C[未命中/输出 token]
    B --> D[再走 Batch<br/>x0.5]
    C --> D
    D --> E["最终: 比原价省<br/>50%~75%+"]

    style D fill:#d6ffe0
    style E fill:#fff3b3

三层叠加才是终极形态(参考前面几轮"九成请求不用请大模型"的思路):

  1. 路由层:简单问题先甩给 nano/haiku 小模型
  2. Batch 层:剩下的异步活统一五折
  3. 缓存层:共享前缀再砍一折

三层叠下来,同样一笔活,账单从 100% 压到个位数百分比完全可能。Batch 就是这块拼图里最容易被忽略、却最省事的一块——它不改业务、不改 prompt,只改 endpoint 和一个 completion_window="24h"。

六、信息差总结

维度 你以为的 实际上的(信息差)
价格 实时调用是唯一价,全价付费 异步活可走 Batch,统一五折
门槛 Batch 只配大公司百万级任务 一批 100 条也能投,一个人就能用
质量 五折肯定降智 同模型同输出,只是慢
适用面 只有少数场景能用 40%~50% 的调用根本不急
省幅 五折到顶 叠 prompt caching 可达 75% off
改动 要重写业务逻辑 只改 endpoint + 一个 window 参数
到账时间 真要等满 24 小时 队列空时常远早于 24h 返回

七、行动指南(今晚就能做)

  1. 盘点账单:拉最近 7 天 API 调用日志,给每类请求标"是否需要 <1 秒返回"。
  2. 切出异步活:把分类、打标、embedding、翻译、eval、文档处理这类剥离出来——它们就是金矿。
  3. 写个过夜定时任务:晚上自动把白天攒下的异步请求打包成 jsonl,投 Batch。
  4. 叠加缓存 + 小模型:长前缀开 prompt caching,简单活先路由给 nano/haiku。
  5. 监控实际返回时间:你会发现大多数 batch 远不需要等满 24h,业务体感几乎无感。
  6. 算一笔:按你账单里异步活的占比 × 50%,就是这一步的月省额度。

一句话收尾:会调 API 是入门,知道同一个 API 有个五折的"晚上班次"才是信息差。 你的账单里,有近一半的钱,本来可以等到明天再付。

参考来源

完成摘要

下一步计划

  1. Round 5(trending):可挖"海外社区本周吵翻的某场 AI 经济/工具辩论",与本文的"五折"形成话题呼应。
  2. 如需深化:可单独拆一篇"Batch + prompt caching + 路由三层叠加实操真账本"(use-cases 方向),用一个真实后台跑批的账单数据落地。
  3. 优先级:先确认本轮 Batch 主题未被近 3 天覆盖(已核对历史列表,方向独立);如采纳,建议连续 2-3 轮围绕"API 账单优化"成系列,形成复利阅读。

注意事项

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入