阿里云百炼提供与 OpenAI 兼容的 Batch File API,支持以文件方式批量提交任务,系统将异步执行,任务完成或达到最长等待时间时返回结果,费用仅为实时调用的 50%。适用于数据分析、模型评测等对时效性要求不高但需要大批量处理的业务。
如需在控制台操作,请参见批量推理。
工作流程
前提条件
支持通过OpenAI SDK(Python、Node.js)或HTTP API调用 Batch File接口。
获取 API Key:获取并配置 API Key 到环境变量
安装SDK(可选):若使用 SDK 调用,请安装 OpenAI SDK
服务端点
中国内地:
https://dashscope.aliyuncs.com/compatible-mode/v1国际:
https://dashscope-intl.aliyuncs.com/compatible-mode/v1
适用范围
中国内地
服务部署范围为中国内地时,数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
支持的模型
文本生成模型:千问 Max、Plus、Flash、Turbo、Long 的稳定版本及其部分
latest版本,以及 QwQ 系列(qwq-plus、qwq-32b-preview)和部分第三方模型(deepseek-r1、deepseek-v3.2、deepseek-v3)。多模态模型:千问 VL Max、Plus、Flash、OCR的稳定版本及其部分
latest版本,以及千问 Omni 模型。文本向量模型:所有版本的 text-embedding 模型。
在Batch 场景下,
qwen3.6-plus、qwen3.5-plus和qwen3.5-flash单次请求的输入 Token 数最大支持 256K。部分模型支持思考模式,开启后会产生思考
tokens导致成本增加。qwen3.6-plus和qwen3.5系列模型(如qwen3.5-plus、qwen3.5-flash)默认开启思考模式。建议使用混合思考模型时,显式设置enable_thinking参数(true开启/false关闭)。
国际
服务部署范围为国际时,数据存储位于新加坡接入地域,模型推理计算资源在全球范围内动态调度(不含中国内地)。
支持的模型:qwen-max、qwen-plus、qwen-turbo。
快速开始
在处理正式任务前,可使用测试模型batch-test-model进行全链路闭环测试。测试模型会跳过推理过程,直接返回一个固定的成功响应,用于验证 API 调用链路和数据格式是否正确。
测试模型(batch-test-model)的限制:
测试文件需满足输入文件要求,且文件大小不超过 1 MB,行数不超过100行。
并发限制:最大并行任务数 2 个。
费用:测试模型不产生模型推理费用。
第 1 步:准备输入文件
准备一个名为test_model.jsonl的文件,内容如下:
{"custom_id":"1","method":"POST","url":"/v1/chat/ds-test","body":{"model":"batch-test-model","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"你好!有什么可以帮助你的吗?"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/ds-test","body":{"model":"batch-test-model","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}多模态模型(如 qwen-vl-plus)支持文件 URL、Base64 编码传入方式:
{"custom_id":"image-url","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"}},{"type":"text","text":"请描述这张图片"}]}]}}
{"custom_id":"image-base64","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD..."}},{"type":"text","text":"请描述这张图片"}]}]}}第 2 步:运行代码
根据使用的编程语言,选择以下示例代码并将其保存在输入文件的同一目录下,然后运行。代码将完成文件上传、创建任务、轮询状态和下载结果的完整流程。
如需调整文件路径或其他参数,请根据实际情况修改代码。
第 3 步: 验证测试结果
任务成功完成后,结果文件result.jsonl会包含固定响应{"content":"This is a test result."}:
{"id":"a2b1ae25-21f4-4d9a-8634-99a29926486c","custom_id":"1","response":{"status_code":200,"request_id":"a2b1ae25-21f4-4d9a-8634-99a29926486c","body":{"created":1743562621,"usage":{"completion_tokens":6,"prompt_tokens":20,"total_tokens":26},"model":"batch-test-model","id":"chatcmpl-bca7295b-67c3-4b1f-8239-d78323bb669f","choices":[{"finish_reason":"stop","index":0,"message":{"content":"This is a test result."}}],"object":"chat.completion"}},"error":null}
{"id":"39b74f09-a902-434f-b9ea-2aaaeebc59e0","custom_id":"2","response":{"status_code":200,"request_id":"39b74f09-a902-434f-b9ea-2aaaeebc59e0","body":{"created":1743562621,"usage":{"completion_tokens":6,"prompt_tokens":20,"total_tokens":26},"model":"batch-test-model","id":"chatcmpl-1e32a8ba-2b69-4dc4-be42-e2897eac9e84","choices":[{"finish_reason":"stop","index":0,"message":{"content":"This is a test result."}}],"object":"chat.completion"}},"error":null}执行正式任务
输入文件要求
格式:UTF-8 编码的 JSONL(每行一个独立 JSON 对象)
规模限制:单文件 ≤ 50,000 个请求,且 ≤ 500 MB
单行限制:每个 JSON 对象 ≤ 6 MB,且不超过模型上下文长度
一致性要求:同一文件内所有请求须使用相同模型及思考模式(如适用)
唯一标识:每个请求必须包含文件内唯一的 custom_id 字段,用于结果匹配
场景1:文本对话
示例文件内容:
{"custom_id":"1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"你好!有什么可以帮助你的吗?"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}场景2:图像与视频理解
多模态模型(如 qwen-vl-plus)支持文件 URL、Base64 编码传入方式。
{"custom_id":"image-url","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"}},{"type":"text","text":"请描述这张图片"}]}]}}
{"custom_id":"image-base64","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD..."}},{"type":"text","text":"请描述这张图片"}]}]}}
{"custom_id":"video-url","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"video","video":"https://example.com/video.mp4"},{"type":"text","text":"描述这个视频"}]}]}}
{"custom_id":"video-base64","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"video","video":["data:image/jpeg;base64,{frame1}","data:image/jpeg;base64,{frame2}","data:image/jpeg;base64,{frame3}"]},{"type":"text","text":"描述这个视频"}]}]}}
{"custom_id":"multi-image-url","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"https://example.com/image1.jpg"}},{"type":"image_url","image_url":{"url":"https://example.com/image2.jpg"}},{"type":"text","text":"对比这两张图片"}]}]}}
{"custom_id":"multi-image-base64","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-vl-plus","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/jpeg;base64,{image1_base64}"}},{"type":"image_url","image_url":{"url":"data:image/jpeg;base64,{image2_base64}"}},{"type":"text","text":"对比这两张图片"}]}]}}示例中的 Base64 字符串已省略,使用下方 Python 代码生成完整编码即可。
完整说明(包括文件限制、MIME 类型、编码方法)请参见传入本地文件(Base64 编码或文件路径)。
JSONL 批量生成工具
使用以下工具可快速生成 JSONL 文件。
1. 修改输入文件
可直接修改用于测试的
test_model.jsonl文件,将 model 参数设置为需要使用的正式模型,并设置 url 字段:模型类型
url
文本生成/多模态模型
/v1/chat/completions文本向量模型
/v1/embeddings或使用上方的“JSONL 批量生成工具”为正式任务生成一个新的文件。关键是确保
model和url字段正确。
2. 修改快速开始的代码
输入文件路径更改为您的文件名
将 endpoint 参数值修改为与输入文件中 url 字段一致的值
3. 运行代码并等待结果
任务成功后,成功的请求结果将保存在本地的 result.jsonl 文件中。如果部分请求失败,错误详情将保存在 error.jsonl 文件中。
成功结果(
output_file_id):每一行对应一个成功的原始请求,包含custom_id和response。{"id":"3a5c39d5-3981-4e4c-97f2-e0e821893f03","custom_id":"req-001","response":{"status_code":200,"request_id":"3a5c39d5-3981-4e4c-97f2-e0e821893f03","body":{"created":1768306034,"usage":{"completion_tokens":654,"prompt_tokens":14,"total_tokens":668},"model":"qwen-plus","id":"chatcmpl-3a5c39d5-3981-4e4c-97f2-e0e821893f03","choices":[{"finish_reason":"stop","index":0,"message":{"role":"assistant","content":"你好!杭州西湖是中国著名的风景名胜区,位于浙江省杭州市西部,因此得名“西湖”。它是中国十大风景名胜之一,也是世界文化遗产(2011年被联合国教科文组织列入《世界遗产名录》),以其秀丽的自然风光与深厚的人文底蕴闻名于世。\n\n### 一、自然景观\n西湖三面环山,一面邻城,湖面面积约6.39平方公里,形似如意,碧波荡漾。湖中被孤山、白堤、苏堤、杨公堤等自然或人工分隔成多个水域,形成“一山二塔三岛三堤”的格局。\n\n主要景点包括:\n- **苏堤春晓**:北宋大文豪苏东坡任杭州知州时主持疏浚西湖,用挖出的淤泥堆筑成堤,后人称为“苏堤”。春天桃红柳绿,景色如画。\n- **断桥残雪**:位于白堤东端,是白蛇传中“断桥相会”的发生地,冬日雪后银装素裹,尤为著名。\n- **雷峰夕照**:雷峰塔在夕阳映照下金光熠熠,曾是“西湖十景”之一。\n- **三潭印月**:湖中小瀛洲上的三座石塔,中秋夜可在塔内点灯,月影、灯光、湖光交相辉映。\n- **平湖秋月**:位于白堤西端,是观赏湖上明月的绝佳地点。\n- **花港观鱼**:以赏花和观鱼著称,园内牡丹、锦鲤相映成趣。\n\n### 二、人文历史\n西湖不仅风景优美,还承载着丰富的历史文化:\n- 自唐宋以来,众多文人墨客如白居易、苏东坡、林逋、杨万里等在此留下诗篇。\n- 白居易曾主持修建“白堤”,疏浚西湖,造福百姓。\n- 西湖周边有众多古迹,如岳王庙(纪念民族英雄岳飞)、灵隐寺(千年古刹)、六和塔、龙井村(中国十大名茶龙井茶的产地)等。\n\n### 三、文化象征\n西湖被誉为“人间天堂”的代表,是中国传统山水美学的典范。它融合了自然美与人文美,体现了“天人合一”的哲学思想。许多诗词、绘画、戏曲都以西湖为题材,成为中国文化的重要符号。\n\n### 四、旅游建议\n- 最佳游览季节:春季(3-5月)桃红柳绿,秋季(9-11月)天高气爽。\n- 推荐方式:步行、骑行(环湖绿道)、乘船游湖。\n- 周边美食:西湖醋鱼、龙井虾仁、东坡肉、片儿川等。\n\n总之,杭州西湖不仅是一处自然美景,更是一座活着的文化博物馆,值得细细品味。如果你有机会到杭州,一定不要错过这个“淡妆浓抹总相宜”的人间仙境。"}}],"object":"chat.completion"}},"error":null} {"id":"628312ba-172c-457d-ba7f-3e5462cc6899","custom_id":"req-002","response":{"status_code":200,"request_id":"628312ba-172c-457d-ba7f-3e5462cc6899","body":{"created":1768306035,"usage":{"completion_tokens":25,"prompt_tokens":18,"total_tokens":43},"model":"qwen-plus","id":"chatcmpl-628312ba-172c-457d-ba7f-3e5462cc6899","choices":[{"finish_reason":"stop","index":0,"message":{"role":"assistant","content":"春风拂柳绿, \n夜雨润花红。 \n鸟语林间闹, \n山川处处同。"}}],"object":"chat.completion"}},"error":null}失败详情(
error_file_id):包含处理失败的请求行信息和错误原因,可参考错误码进行排查。
具体流程
Batch API 的使用流程分为四个步骤:上传文件、创建任务、查询任务状态、下载结果。
如果您的数据已存储在阿里云OSS中,可以跳过上传文件步骤,直接在创建Batch任务时使用OSS文件路径。详情请参见使用 OSS 文件创建 Batch 任务。
1. 上传文件
2. 创建 Batch 任务
3. 查询与管理 Batch 任务
4. 下载Batch结果文件
进阶功能
使用 OSS 文件创建 Batch 任务
对于大型文件,推荐将其存储在阿里云 OSS 中,并通过 input_file_id 直接引用,以避免本地上传的限制。
方式一:使用文件 URL
将具有公共读权限或预签名授权的 OSS 文件 URL 直接作为 input_file_id:
batch_job = client.batches.create(
input_file_id="https://your-bucket.oss-cn-beijing.aliyuncs.com/file.jsonl?Expires=...",
endpoint="/v1/chat/completions",
completion_window="24h"
)方式二:使用资源标识符(推荐)
完成 OSS 授权
参阅从OSS导入文件配置说明的授权和添加标签步骤。
参数配置
使用
oss:{region}:{bucket}/{file_path}格式的 OSS 资源标识符:batch_job = client.batches.create( input_file_id="oss:cn-beijing:your-bucket/path/to/file.jsonl", endpoint="/v1/chat/completions", completion_window="24h" )
建议:
使用与阿里云百炼服务同地域 Bucket(
cn-beijing)可利用阿里云内网传输,降低网络延迟、提升稳定性并避免跨地域流量费用。方式二更安全,依赖 RAM 授权而非公开 URL。
配置任务完成通知
对于长时间运行的任务,轮询会消耗不必要的资源。建议使用异步通知机制,系统会在任务完成后主动通知。
任务完成通知功能仅支持在北京地域配置。
Callback 回调:在创建任务时指定一个公网可访问的 URL
EventBridge 消息队列:与阿里云生态深度集成,无需公网 IP
方式一:Callback 回调
方式二:EventBridge 消息队列
应用于生产环境
文件管理
定期调用 OpenAI-File删除文件接口删除不需要的文件,避免达到文件存储上限(10000个文件或100GB)
对于大型文件,推荐将其存储在阿里云 OSS 中
任务监控
优先使用 Callback 或 EventBridge 异步通知
轮询间隔 > 1分钟,使用指数退避策略
错误处理
实现完整的异常处理机制,包括网络错误、API错误等
下载并分析
error_file_id的错误详情对于常见错误码,参考错误信息进行解决
成本优化
将时效性要求不高的任务迁移到 Batch API
合并小任务到一个批次
合理设置
completion_window提供更多调度灵活性
实用工具
CSV 转 JSONL
JSONL 结果转 CSV
接口限流
接口 | 限流(主账号级别) |
创建任务 | 1000 次/分钟,最大并发 1000 个 |
查询任务 | 1000 次/分钟 |
查询任务列表 | 100 次/分钟 |
取消任务 | 1000 次/分钟 |
计费说明
计费单价:所有成功请求的输入和输出Token,单价均为对应模型实时推理价格的50%,具体请参见模型列表。
计费范围:
仅对任务中成功执行的请求进行计费。
文件解析失败、任务执行失败、或行级错误请求均不产生费用。
对于被取消的任务,在取消操作前已成功完成的请求仍会正常计费。
批量推理为独立计费项,支持AI 通用型节省计划,但不支持预付费(节省计划)、新人免费额度等优惠,以及上下文缓存等功能。
部分模型(如 qwen3.5-plus、qwen3.5-flash)默认开启思考模式,会产生额外的思考tokens,并按输出token价格计费,导致成本增加。建议根据任务复杂度设置enable_thinking参数以控制成本,具体请参考深度思考。
错误码
如果调用失败并返回报错信息,请参见错误信息进行解决。
常见问题
如何选择使用 Batch Chat 还是Batch File?
当需要处理的是包含大量请求的单个大文件,并且可以接受异步获取结果文件,选择 Batch File。当业务逻辑需要以 API 同步调用的方式、高并发地提交大量独立的对话请求时,则选择 Batch Chat。
Batch File调用如何计费?需要单独购买吗?
答:Batch是一种调用方式,采用后付费模式,根据任务中成功请求的Token使用量计费,无需额外购买套餐。
提交的Batch File是按顺序执行的吗?
答:不是。后台采用动态调度机制,系统会根据当前整体的计算资源负载来安排任务执行,不保证严格遵循提交顺序。在资源紧张时,任务启动和执行可能会有延迟。
提交的Batch File需要多长时间完成?
答:执行时间取决于系统资源分配情况和您的任务规模。若任务在您设定的 completion_window内未能完成,其状态将变为expired,此时未处理的请求将不会再执行,也不会产生费用。
场景建议:对模型推理时效性有严格要求的场景,建议使用实时调用;对于处理大规模数据且对时效性有一定容忍度的场景,推荐使用Batch调用。