Claude Batch API 批量调用指南
Claude Batch API 允许你批量发送大量请求,享受 50% 的费用折扣。适用于数据处理、内容生成、批量分析等不需要实时响应的场景。本文详细介绍 Batch API 的使用方法和最佳实践。
Batch API 概述
Batch API 与实时 API 的核心区别:
- 价格优势:所有模型均可享受 50% 折扣
- 处理时间:批量任务在 24 小时内完成(通常更快)
- 不占用实时配额:不受 RPM/TPM 限流影响
- 适合大规模任务:单次最多 100,000 个请求
使用流程
- 准备请求列表(JSONL 格式)
- 创建批量任务
- 轮询任务状态
- 下载结果
Python 完整示例
1. 准备请求
import anthropic
import json
client = anthropic.Anthropic(
api_key="your-api-key",
base_url="https://claude4u.com/v1"
)
# 准备批量请求
requests = []
articles = ["文章1内容...", "文章2内容...", "文章3内容..."]
for i, article in enumerate(articles):
requests.append({
"custom_id": f"summary-{i}",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 512,
"messages": [
{"role": "user", "content": f"请用100字总结以下文章:\n\n{article}"}
]
}
})
2. 创建批量任务
# 创建 Batch
batch = client.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")
print(f"状态: {batch.processing_status}")
3. 轮询状态并获取结果
import time
# 等待完成
while True:
batch = client.batches.retrieve(batch.id)
print(f"状态: {batch.processing_status}")
if batch.processing_status == "ended":
break
time.sleep(30) # 每30秒检查一次
# 获取结果
results = client.batches.results(batch.id)
for result in results:
print(f"ID: {result.custom_id}")
if result.result.type == "succeeded":
print(f"回复: {result.result.message.content[0].text}")
else:
print(f"失败: {result.result.error}")
Batch API 价格对比
使用 Batch API 的费用仅为实时 API 的一半:
- Claude Sonnet 4:输入 $1.5/MTok(原 $3),输出 $7.5/MTok(原 $15)
- Claude Opus 4:输入 $7.5/MTok(原 $15),输出 $37.5/MTok(原 $75)
- Claude Haiku 3.5:输入 $0.4/MTok(原 $0.8),输出 $2/MTok(原 $4)
适用场景
- 数据标注:批量对文本进行分类、打标签、情感分析
- 内容生成:批量生成商品描述、SEO 文章、邮件模板
- 数据提取:从大量文档中批量提取结构化信息
- 代码审查:批量分析代码文件,生成审查报告
- 翻译任务:批量翻译多语言文档
提示:通过 claude4u.com 轻舟 AI 中转服务使用 Batch API,可以享受中转站的额外折扣叠加 Batch 50% 折扣,并通过后台统一监控所有批量任务的进度和费用。
最佳实践
- 合理分批:虽然单次最多 100,000 请求,但建议按 1,000-10,000 分批,便于错误排查
- 设置 custom_id:用有意义的 ID 标识每个请求,方便结果匹配
- 错误处理:部分请求可能失败,需要检查每个结果的状态
- 选择合适的模型:批量任务通常对速度要求不高,可以用更强的模型获得更好的质量
注意:Batch API 不支持流式输出,且结果需要在 29 天内下载。请确保及时获取和保存结果数据。对于需要实时响应的场景,请使用标准 Messages API。
轻舟 AI