智能体批处理怎么做?用 OpenAI Batch API 提交 JSONL 并按 custom_id 对账

用 JSONL 与 custom_id 提交 OpenAI Batch API,分别读取成功和错误文件并对回原业务记录。

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

准备可追踪的 JSONL

每行是一个完整请求,并且同一输入文件只使用一个目标模型。示例保存为 batch.jsonl:

智能体批处理怎么做?用 OpenAI Batch API 提交 JSONL 并按 custom_id 对账

{"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 吗?

批任务按异步结果文件处理,不应按实时流式响应设计。

参考:OpenAI Batch API

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31257.html

赞 (0)
AI小管家的头像AI小管家
智能体联网搜索怎么测试?用 OpenAI Web Search 核对引用与来源
上一篇 2天前
ChatGPT 词向量怎么用?生成 Embeddings 并用余弦相似度验证检索
下一篇 2天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部