LLM Batch API 批处理全攻略:OpenAI 与 Anthropic 接入指南,离线任务成本直降 50%
为什么批处理能砍掉一半账单
在线推理(real-time inference)的定价逻辑里,你为"即时响应"付了溢价。OpenAI 和 Anthropic 的 Batch API 本质上是一笔交易:你放弃严格的延迟保证,换来 50% 的 token 折扣。
这个折扣并非营销数字。OpenAI Batch API 的官方承诺是 Standard 定价的 50% off,且结果在 24 小时内返回;Anthropic Message Batches 同样提供 50% 折扣,处理窗口最长也是 24 小时。两家策略高度一致,背后原因相同:批量任务可以填满 GPU 的空闲时段,提升集群利用率,节省下来的算力成本直接分给用户。
适合批处理的任务有一个共同特征:结果不需要实时消费。典型场景包括:
- 大规模文本分类、情感分析(数万条 SKU 评论一次性跑完)
- 离线文档摘要、知识库向量化前的预处理
- A/B 测试中的批量 prompt 评估
- 定时报告生成(每日、每周跑一次)
- 数据集标注与质量审核
反过来,聊天机器人、实时翻译、流式代码补全这类需要毫秒级响应的场景,不适合走 Batch API。
OpenAI Batch API:从 JSONL 到结果拉取
OpenAI 的批处理流程分三步:上传文件 → 创建 Batch → 轮询并下载结果。
第一步:构造 JSONL 请求文件
每一行是一个独立的 JSON 对象,包含 custom_id(用于对应结果)、method、url 和 body:
{"custom_id":"req-001","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-5.4-mini","messages":[{"role":"user","content":"为以下评论打情感标签:非常好用,强烈推荐"}],"max_tokens":20}}
{"custom_id":"req-002","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-5.4-mini","messages":[{"role":"user","content":"为以下评论打情感标签:快递太慢了,差评"}],"max_tokens":20}}
单个 Batch 文件上限是 100 MB,单次最多 50,000 条请求。
第二步:上传文件并创建 Batch
# 上传文件
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="batch" \
-F file="@requests.jsonl"
# 创建 Batch,返回 batch_id
curl https://api.openai.com/v1/batches \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input_file_id":"file-abc123","endpoint":"/v1/chat/completions","completion_window":"24h"}'
第三步:轮询状态并下载
Batch 状态会经历 validating → in_progress → completed。拿到 output_file_id 后直接下载:
# 查询状态
curl https://api.openai.com/v1/batches/batch_xyz \
-H "Authorization: Bearer $OPENAI_API_KEY"
# 下载结果
curl https://api.openai.com/v1/files/file-output123/content \
-H "Authorization: Bearer $OPENAI_API_KEY" -o results.jsonl
输出 JSONL 里每行包含对应 custom_id,方便与输入一一映射。失败的请求会出现在单独的 error_file_id 里,建议每次都检查。
Anthropic Message Batches:SDK 优先的接入方式
Anthropic 的批处理 API 设计更贴近 Python SDK 工作流,推荐直接用官方库操作。
构造请求列表并提交
import anthropic
client = anthropic.Anthropic()
batch = client.messages.batches.create(
requests=[
{
"custom_id": "review-001",
"params": {
"model": "claude-haiku-4-5", # 轻量模型跑批量分类更经济
"max_tokens": 50,
"messages": [{"role": "user", "content": "情感分析:物流很快,包装完好"}]
}
},
{
"custom_id": "review-002",
"params": {
"model": "claude-haiku-4-5",
"max_tokens": 50,
"messages": [{"role": "user", "content": "情感分析:收到破损,客服态度差"}]
}
}
]
)
print(batch.id) # msgbatch_xxxxxxxx
轮询与结果处理
import time
while True:
status = client.messages.batches.retrieve(batch.id)
if status.processing_status == "ended":
break
time.sleep(60) # 每分钟检查一次即可,无需高频轮询
# 流式读取结果
for result in client.messages.batches.results(batch.id):
if result.result.type == "succeeded":
print(result.custom_id, result.result.message.content[0].text)
else:
print(f"失败: {result.custom_id}, 原因: {result.result.error}")
Anthropic Message Batches 单次上限是 10,000 条请求,或请求体总大小 32 MB,比 OpenAI 的限额小,处理超大批量时需要自己做分片逻辑。
两家方案横向对比
| 维度 | OpenAI Batch API | Anthropic Message Batches |
|---|---|---|
| 折扣力度 | 50% | 50% |
| 单批上限(请求数) | 50,000 | 10,000 |
| 单批上限(文件大小) | 100 MB | 32 MB |
| 结果窗口 | 24 小时内 | 24 小时内 |
| 接入方式 | REST + JSONL 文件 | SDK 优先 / REST |
| 支持模型 | GPT-5.5、GPT-5.4、GPT-5.4-mini 等 | Claude Opus 4.8、Sonnet 4.6、Haiku 4.5 |
| 错误处理 | 独立 error file | 结果流中 type 字段区分 |
| 取消操作 | 支持 cancel | 支持 cancel |
选型建议:任务量超过 10,000 条/批次,或已有 JSONL 处理管线,优先用 OpenAI;团队技术栈以 Python 为主、任务量适中,Anthropic SDK 的写法更简洁,错误处理也更直观。两家模型能力各有侧重,实际项目里完全可以混用——成本敏感的分类任务跑 GPT-5.4-mini 或 Haiku 4.5,需要复杂推理的跑 GPT-5.5 或 Opus 4.8。
上生产前必须做的三件事
1. 幂等性设计:custom_id 要全局唯一,建议用 {task_type}-{record_id}-{timestamp} 格式,方便失败后重跑时去重,不会误判已完成的条目。
2. 失败率监控:正常批次的失败率应低于 1%。如果某批次失败率超过 5%,先检查 prompt 是否触发了内容策略,再检查 token 上限设置是否过小导致截断。
3. 成本上限预估:提交前用在线 API 抽样 100 条,统计平均 token 消耗,再乘以批处理折后价估算总费用。50,000 条 × 平均 500 tokens × GPT-5.4-mini 批处理价格,比上生产后看账单要稳得多。
批处理降本的逻辑很清晰,但实际落地时往往卡在 API Key 管理、多模型切换、账单可视化这些"最后一公里"问题上。我自己团队现在统一走 XycAi 词元平台,一个 OpenAI 兼容 endpoint 直接覆盖 OpenAI、Anthropic、DeepSeek 等 200+ 模型,Claude Code 和 Codex 也能一键接入,不用维护多套 Key。GPT 和 Claude 官方模型的批处理价格在此基础上还有额外折扣(低至官方价 1.4 折起),对跑大批量离线任务的团队来说账单差异相当可观,感兴趣可以直接去看看。
一个 API 接入 200+ 全球 AI 模型
GPT · Claude · Gemini 官方模型低至 1.4 折起,持大模型算法备案号,CN2 直连低至 5ms,可开全球合规发票。
立即体验 XycAi →