OpenAI相容-Batch(檔案輸入)
阿里雲百鍊提供與 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://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
百鍊為新加坡地區推出了業務空間專屬網域名稱,能夠為推理請求提供卓越的效能和更高的穩定性,建議遷移至新網域名稱:從 https://dashscope-intl.aliyuncs.com 遷移至 https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com,其中 {WorkspaceId} 為您的業務空間 ID,可在百鍊控制台的業務空間詳情頁面查看。現有網域名稱仍可正常使用。
適用範圍
新加坡
支援的模型:qwen-max、qwen-plus、qwen-flash、qwen-turbo。
華北2(北京)
支援的模型:
-
文本產生模型:千問 Max、Plus、Flash、Long 的穩定版本及其部分
latest版本,以及 QwQ 系列(qwq-plus)和部分第三方模型(deepseek-r1、deepseek-v3.2、deepseek-v3)。 -
多模態模型:千問 VL Max、Plus、Flash的穩定版本及其部分
latest版本,以及千問 OCR 模型。 -
文本向量模型: text-embedding-v4 模型。
-
在Batch 情境下,
qwen3.7-max、qwen3.7-plus、qwen3.6-plus、qwen3.6-flash、qwen3.5-plus和qwen3.5-flash單次請求的上下文Token 數最大支援 256K。 -
部分模型支援思考模式,開啟後會產生思考
tokens導致成本增加。 -
qwen3.7、qwen3.6和qwen3.5系列模型預設開啟思考模式。建議使用混合思考模型時,顯式設定enable_thinking參數(true開啟/false關閉)。 -
在 JSONL 請求體中,
enable_thinking為body的頂層參數,須與model同級傳入,不能放在extra_body中。
快速開始
在處理正式任務前,使用測試模型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、Base 64 編碼傳入方式:
{"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 步:運行代碼
根據使用的程式設計語言,選擇以下範例程式碼並儲存到輸入檔案的同一目錄下,然後運行。代碼將完成檔案上傳、建立任務、輪詢狀態和下載結果的完整流程。
如需調整檔案路徑或其他參數,請根據實際情況修改代碼。
複用已有檔案 ID:檔案上傳後返回的 ID(如 file-batch-xxx)可重複使用。如果輸入內容不變,無需每次重新上傳,直接用已有 ID 建立任務即可:
batch = client.batches.create(
input_file_id="file-batch-xxx", # 直接使用已有檔案 ID,無需重新上傳
endpoint="/v1/chat/completions",
completion_window="24h"
)可通過 client.files.list(purpose="batch") 介面查詢已上傳的 Batch 檔案 ID。
第 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":"Hello!"}]}}
{"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、Base 64 編碼傳入方式。
{"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 類型、編碼方法)請參見傳入本地檔案(Base 64 編碼或檔案路徑)。
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使用流程分為四步:上傳檔案、建立任務、查詢任務狀態、下載結果。
1. 上傳檔案
2. 建立 Batch 任務
3. 查詢與管理 Batch 任務
4. 下載Batch結果檔案
進階功能
配置任務完成通知
長時間啟動並執行任務使用輪詢會消耗不必要的資源。建議配置非同步通知,系統在任務完成後主動通知。
任務完成通知功能僅支援在北京地區配置。
Callback 回調:在建立任務時指定一個公網可訪問的 URL
EventBridge 訊息佇列:與阿里雲生態深度整合,無需公網 IP
方式一:Callback 回調
方式二:EventBridge 訊息佇列
應用於生產環境
檔案管理
定期調用 OpenAI-File刪除檔案介面刪除不需要的檔案,避免達到檔案儲存體上限(10000個檔案或100GB)
對於大型檔案,推薦將其儲存在阿里雲OSS中
任務監控
優先使用 Callback 或 EventBridge 非同步通知
輪詢間隔 > 1分鐘,使用指數退避策略
錯誤處理
實現完整的異常處理機制,涵蓋網路錯誤、API 錯誤等
下載並分析
error_file_id的錯誤詳情對於常見錯誤碼,參考錯誤碼進行解決
成本最佳化
合并小任務到一個批次
合理設定
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 調用。