每日新闻 / 2026-07-01

LLM Batch API 批处理全攻略:OpenAI 与 Anthropic 接入指南,离线任务成本直降 50%

XycAi
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 的空闲时段,提升集群利用率,节省下来的算力成本直接分给用户。

适合批处理的任务有一个共同特征:结果不需要实时消费。典型场景包括:

反过来,聊天机器人、实时翻译、流式代码补全这类需要毫秒级响应的场景,不适合走 Batch API。


OpenAI Batch API:从 JSONL 到结果拉取

OpenAI 的批处理流程分三步:上传文件 → 创建 Batch → 轮询并下载结果

第一步:构造 JSONL 请求文件

每一行是一个独立的 JSON 对象,包含 custom_id(用于对应结果)、methodurlbody

{"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 →