模型 API / 批量任务 Batch
批量任务 Batch
更新时间:2026-09-19
接口说明
把成千上万条请求打包成一个 JSONL 文件一次提交,24 小时内异步跑完。适合离线评测、批量打标、数据清洗这类不赶时间的场景。批量价按模型各自标注(模型详情页上标了 Batch 价的就按那个价结算,没标的按实时价)。兼容 OpenAI Batch API,官方 SDK 的 client.files.* / client.batches.* 直接可用。
完整流程
- ① 上传输入文件:POST /files(purpose=batch),拿到 file id
- ② 创建批任务:POST /batches,带上 input_file_id
- ③ 轮询状态:GET /batches/{batch_id},直到 status 变成 completed
- ④ 下载结果:GET /files/{output_file_id}/content
# ① 上传curl -X POST "https://www.wangyidaai.com/v1/files" \-H "Authorization: Bearer YOUR_API_KEY" \-F "purpose=batch" \-F "file=@requests.jsonl"# ② 建单curl -X POST "https://www.wangyidaai.com/v1/batches" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"input_file_id": "file-xxxxxxxx","endpoint": "/v1/chat/completions","completion_window": "24h"}'# ③ 查状态curl "https://www.wangyidaai.com/v1/batches/batch_xxxxxxxx" \-H "Authorization: Bearer YOUR_API_KEY"# ④ 取结果curl "https://www.wangyidaai.com/v1/files/file-yyyyyyyy/content" \-H "Authorization: Bearer YOUR_API_KEY"
输入文件格式
JSONL —— 每行一个独立的 JSON 对象,一行就是一次请求。custom_id 由你自己指定,用来把输出行映射回输入行(输出顺序不保证与输入一致)。
{"custom_id":"req-1","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-4o-mini","messages":[{"role":"user","content":"介绍一下量子纠缠"}],"max_tokens":500}}
{"custom_id":"req-2","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-4o-mini","messages":[{"role":"user","content":"介绍一下相对论"}],"max_tokens":500}}文件接口
/files/files/files/{file_id}/files/{file_id}/files/{file_id}/content| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| file | file | 必需 | multipart 文件字段,内容为 JSONL |
| purpose | string | 可选 | 只支持 batch,缺省即 batch |
批任务接口
/batches/batches/batches/{batch_id}/batches/{batch_id}/cancel| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| input_file_id | string | 必需 | 上一步上传得到的文件 id |
| endpoint | string | 可选 | 批内每行要打的路径,如 /v1/chat/completions。缺省取文件第一行的 url |
| completion_window | string | 可选 | 完成窗口,缺省 24h |
| metadata | object | 可选 | 自定义键值对,原样回显 |
status 取值:validating → in_progress → finalizing → completed,以及三个失败终态 failed / expired / cancelled。终态之后 output_file_id 与 error_file_id 才会出现(成功行与失败行分别在这两个文件里)。
计费
批量价怎么定
批量价 = 该模型的实时价 × Batch 折扣,输入与输出用同一个折扣系数。折扣按模型各自标注,没有一个全站统一的数字 —— 上游各家给的批量折扣并不一致,也有模型完全不打折。
去哪看:模型广场点进模型详情页,价格里的「Batch 输入价格」「Batch 输出价格」两行就是批量单价。标出来的价就是实际结算的价 —— 看得到这两行,批任务就按它扣;看不到,说明这个模型没有批量折扣,走 /batches 与实时调用同价(不是不能提交)。
阶梯计费的模型(价格按上下文长度分档的那些)没有单一的输入 / 输出价,所以标的不是两行价,而是档位表下面那句「每一档都 × 折扣」。结算同样是逐条请求各自落档、各自打折 —— 批里每条请求按它自己的上下文长度选档,不是拿整批的 token 总数去选。
扣费流程
- 提交时按输入文件估算并预扣额度(输入按文本估算,输出按每行声明的 max_tokens),预扣同样按批量价算
- 跑完后按输出文件里逐行的真实 usage 重新结算,与预扣多退少补
- 分组折扣照常生效,与 Batch 折扣相乘(详情页那两行按默认分组算,你所在分组另有折扣时再乘一次)
- 整批失败、被取消、或一行都没跑成时,预扣额度全额退还
- expired(超过完成窗口)会按已经跑完的那部分收费,剩下的退
限制与差异
- 单个文件最大 32MB,单批最多 50000 行
- 同一账号同时进行中的批任务最多 50 个
- purpose 只支持 batch(不支持 fine-tune / assistants / vision)
- 整批必须使用同一个 model —— 混模型请拆成多个批任务
- 文件(输入、输出、错误)默认保留 30 天,过期自动清理,请及时下载结果
没有找到想看的内容?联系我们 →