Claude Message Batches API
如果你的任务不要求实时返回,Message Batches 基本应该优先进入候选。Anthropic 官方文档里给得很明确,Batch usage 按标准 API 价格的 50% 计费,这对大批量离线任务很实在。
1. 核心优势
- 成本降低 50%:所有通过 Batch 接口处理的任务,费用直接减半。
- 超大规模处理:Anthropic 当前文档写的是单个 batch 最多 100,000 个 message requests,或 256 MB 大小,以先达到的为准。
- 异步完成:大多数 batch 会在 1 小时内结束,但官方仍给出最长 24 小时 的处理窗口。
2. 工作流程
- 准备请求文件:创建一个
.jsonl文件,每行是一个标准的 Messages API 请求对象。 - 上传文件:将文件通过 API 上传到 Anthropic 平台。
- 创建 Batch:启动批处理任务。
- 轮询状态:等待任务完成。
- 下载结果:任务完成后下载包含所有回复的结果文件。
3. 代码示例 (Python)
步骤 1:准备 JSONL 文件
{"custom_id": "request-1", "params": {"model": "claude-3-5-sonnet-20240620", "max_tokens": 100, "messages": [{"role": "user", "content": "翻译为英文:你好"}]}}
{"custom_id": "request-2", "params": {"model": "claude-3-5-sonnet-20240620", "max_tokens": 100, "messages": [{"role": "user", "content": "翻译为英文:再见"}]}}
步骤 2:发起批处理
import anthropic
client = anthropic.Anthropic()
# 1. 创建批处理任务
batch = client.beta.messages.batches.create(
requests=[
# ... 这里也可以直接传入字典列表
]
)
# 2. 获取任务状态
print(batch.status) # 'processing', 'ended', 等
4. 适用场景
- 离线数据标注:给成千上万条评论打标签。
- 批量内容生成:一次性生成 1000 个 SEO 标题。
- 大规模翻译:将整个网站的本地化文件进行翻译。
- 历史数据重处理:用最新的 Claude 3.5 模型重新运行之前的任务。
5. 注意事项
- 非实时性:最长处理时间为 24 小时。如果你的应用需要用户等待几秒钟就拿到结果,请使用常规 API。
- 模型支持:官方 API 页面列出的支持范围已经覆盖 Claude Sonnet 4、Opus 4 等主线模型。
- 错误处理:如果 batch 中某些请求失败,结果文件中会包含对应的错误信息,不会影响其他请求。
再补一个真实项目里很重要的点:batch 更像“离线生产线”,不是“偷偷替代在线接口”的办法。只要用户在等结果,就别拿它硬顶在线请求。
官方参考
- Create a message batch: https://docs.anthropic.com/en/api/creating-message-batches
- Batch processing guide: https://docs.anthropic.com/en/docs/build-with-claude/batch-processing