Batch API 适合大量、非实时的请求,例如夜间分类、离线摘要或评测。它不是循环同步调用:你先准备 JSONL 文件,上传并创建批任务,完成后再下载结果。结果顺序不保证与输入一致,所以必须使用唯一 custom_id 对账。
准备可追踪的 JSONL
每行是一个完整请求,并且同一输入文件只使用一个目标模型。示例保存为 batch.jsonl:

{"custom_id":"ticket-001","method":"POST","url":"/v1/responses","body":{"model":"gpt-6-astra","input":"把这句话分为咨询或投诉:物流三天没更新"}}
{"custom_id":"ticket-002","method":"POST","url":"/v1/responses","body":{"model":"gpt-6-astra","input":"把这句话分为咨询或投诉:支持哪些付款方式"}}
custom_id 应来自你的稳定业务主键或单独生成的任务键,不能使用行号后又在中途重新排序。
上传并创建批任务
from openai import OpenAI
client = OpenAI()
with open("batch.jsonl", "rb") as source:
input_file = client.files.create(file=source, purpose="batch")
batch = client.batches.create(
input_file_id=input_file.id,
endpoint="/v1/responses",
completion_window="24h",
metadata={"job": "ticket-classify-20261001"},
)
print(batch.id, batch.status)
完成后按 custom_id 对账
轮询批任务直到终态,分别读取 output_file_id 和 error_file_id。逐行解析结果,以 custom_id 关联原记录,再记录成功、失败和可重试原因。验收时确认输入两条、成功加失败合计两条,并且 ticket-001 和 ticket-002 各出现一次。
常见失败
- JSONL 一行跨多行,导致文件无法校验。
- 重复 custom_id,结果无法可靠回填。
- 把需要立即回复用户的请求放进批处理。
- 只下载成功文件,遗漏错误文件和失败原因。
官方当前说明批处理是异步任务,并有固定完成窗口和专用限制;具体费用和支持端点会变化,上线前应重新核对文档。
本文依据 2026 年 10 月 1 日官方 Batch API 指南,未提交你的真实批文件,也未验证你的项目配额。
相关问题
输出会保持输入顺序吗?
不能依赖顺序。必须用 custom_id 对回原始记录。
可以在 Batch 中使用 stream=true 吗?
批任务按异步结果文件处理,不应按实时流式响应设计。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31257.html