對於資料標註、內容產生等無需即時響應的情境,即時推理API存在成本高、並發受限的問題。阿里雲百鍊的批量對話(Batch Chat)API ,保持了與即時API一致的同步調用方式,您只需發起請求等待最終結果返回。目前該功能享有官網限時 5 折優惠,能將您的推理成本直接降低 50%。
本介面僅支援提交單個請求。如需一次性傳入多個請求,可通過檔案方式提交,詳情請參考OpenAI相容-Batch(檔案輸入)。
工作原理
請求提交:用戶端發起請求並建立串連。
串連保持:請求進入隊列排隊,用戶端保持串連等待。
同步返回:請求處理完成後,服務端通過之前持續連線,將完整結果一次性返回給用戶端。
如果超過最長等待時間,串連將自動斷開並返回逾時錯誤。
適用範圍
中國內地
在中國內地部署模式下,存取點與資料存放區均位於北京地區,模型推理計算資源僅限於中國內地。
文本產生模型:qwen3.5-plus、qwen3.5-flash、qwen3-max、qwen-plus、qwen-flash、deepseek-v3.2
映像與視頻理解模型:qwen3.5-plus、qwen3.5-flash、qwen3-vl-plus、qwen3-vl-flash
部分模型支援思考模式,開啟後會產生思考
tokens導致成本增加。qwen3.5系列模型(如qwen3.5-plus、qwen3.5-flash)預設開啟思考模式。建議使用混合思考模型時,顯式設定enable_thinking參數(true開啟/false關閉)。
如何使用
前提條件
已開通阿里雲百鍊服務,並已擷取 API Key。
建議配置API Key到環境變數中以降低API Key的泄露風險。
若通過OpenAI SDK進行調用,需要安裝SDK。
pip3 install -U openai
步驟1:配置 API 端點
只需修改 API 端點(base_url),即可輕鬆將現有的即時推理請求切換至批量推理。請根據調用方式,配置正確的 API 端點。
SDK配置:將base_url設定為https://batch.dashscope.aliyuncs.com/compatible-mode/v1
HTTP調用:請求端點為POST https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
步驟2:發起調用
此處以文本對話為例,展示如何調用 Batch Chat 介面。
請求的預設等待逾時時間為3600秒(1小時),在多數情況下無需額外配置。
下方樣本展示如何主動設定一個自訂的逾時時間(60-3600秒)作為參考。
Python
請求樣本
import os
from openai import OpenAI
client = OpenAI(
# 若沒有配置環境變數,可用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險.
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://batch.dashscope.aliyuncs.com/compatible-mode/v1", # 阿里雲百鍊Batch chat API 的 URL
).with_options(timeout=1800.0) # 設定1800秒(30分鐘)的等待時間,最長3600秒
completion = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是誰?"},
]
)
print(completion.choices[0].message.content)響應樣本
我是千問,阿里巴巴集團旗下的超大規模語言模型。我能夠回答問題、創作文字,比如寫故事、寫公文、寫郵件、寫劇本、邏輯推理、編程等等,還能表達觀點,玩遊戲等。如果你有任何問題或需要協助,歡迎隨時告訴我!Java
請求樣本
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
import java.time.Duration;
public class Main {
public static void main(String[] args) {
OpenAIClient client = OpenAIOkHttpClient.builder()
// 若沒有配置環境變數,可用百鍊API Key將下行替換為:.apiKey("sk-xxx")。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.baseUrl("https://batch.dashscope.aliyuncs.com/compatible-mode/v1") // # 阿里雲百鍊Batch chat API 的 URL
.timeout(Duration.ofSeconds(1800)) // 設定等待時間1800秒(半小時),最長3600秒
.build();
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.addUserMessage("你是誰")
.model("qwen-plus")
.build();
try {
ChatCompletion chatCompletion = client.chat().completions().create(params);
System.out.println(chatCompletion);
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
e.printStackTrace();
}
}
}響應樣本
ChatCompletion{id=chatcmpl-a12c115e-15fc-94f9-a984-81bd65f0527b, choices=[Choice{finishReason=stop, index=0, logprobs=, message=ChatCompletionMessage{
content=我是千問,阿里巴巴集團旗下的超大規模語言模型。我可以協助你回答問題、創作文字、提供資訊查詢等服務。很高興認識你!, refusal=, role=assistant, annotations=, audio=, functionCall=, toolCalls=, additionalProperties={}}, additionalProperties={}}], created=1763609020, model=qwen-plus, object_=chat.completion, serviceTier=, systemFingerprint=, usage=CompletionUsage{completionTokens=33, promptTokens=10, totalTokens=43, completionTokensDetails=, promptTokensDetails=, additionalProperties={}}, additionalProperties={}}Node.js
請求樣本
import OpenAI from "openai";
const openai = new OpenAI(
{
// 若沒有配置環境變數,請用百鍊API Key將下行替換為:apiKey: "sk-xxx",但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://batch.dashscope.aliyuncs.com/compatible-mode/v1", // 阿里雲百鍊Batch chat API的 URL
// 在這裡添加逾時設定 (單位:毫秒)
// 1800秒 * 1000 = 1,800,000 毫秒,最長支援 3,600,000 毫秒
timeout: 1800 * 1000,
}
);
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen-plus", //此處以qwen-plus為例,可按需更換模型名稱。
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "你是誰?" }
],
});
console.log(JSON.stringify(completion))
}
main();響應樣本
{
"created": 1763618557,
"usage": {
"completion_tokens": 80,
"prompt_tokens": 22,
"total_tokens": 102
},
"model": "qwen-plus",
"id": "chatcmpl-af23c086-8662-91eb-b236-892032ddee92",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "我是千問,由阿里雲研發的超大規模語言模型。我能夠回答問題、創作文字,如寫故事、公文、郵件、劇本等,還能進行邏輯推理、編程,表達觀點,玩遊戲等。我支援多種語言,包括中文、英文、德語、法語、西班牙語等。如果你有任何問題或需要協助,歡迎隨時告訴我!"
}
}
],
"object": "chat.completion"
}Go
請求樣本
package main
import (
"context"
"os"
"time"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(os.Getenv("DASHSCOPE_API_KEY")),
// 阿里雲百鍊Batch chat API 的 URL
option.WithBaseURL("https://batch.dashscope.aliyuncs.com/compatible-mode/v1"),
)
// 設定逾時時間:1800秒 = 30分鐘,最長支援3600秒
ctx, cancel := context.WithTimeout(context.Background(), 3600*time.Second)
defer cancel()
chatCompletion, err := client.Chat.Completions.New(
ctx, openai.ChatCompletionNewParams{
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("你是誰"),
},
Model: "qwen-plus",
},
)
if err != nil {
panic(err.Error())
}
println(chatCompletion.Choices[0].Message.Content)
}
響應樣本
我是千問,由阿里雲研發的超大規模語言模型。我可以產生各種類型的文本,如文章、故事、詩歌、故事等,並能夠根據不同的情境和需求進行變換和擴充。此外,我還能夠回答各種問題,提供協助和解決方案。很高興為您服務!C#(HTTP)
請求樣本
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program
{
private static readonly HttpClient httpClient = new HttpClient
{
// 設定逾時時間:1800秒 = 30分鐘,最長支援3600秒
Timeout = TimeSpan.FromSeconds(1800)
};
static async Task Main(string[] args)
{
// 若沒有配置環境變數,請用百鍊API Key將下行替換為:string? apiKey = "sk-xxx";
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("API Key 未設定。請確保環境變數 'DASHSCOPE_API_KEY' 已設定。");
return;
}
// 佈建要求 URL 和內容
string url = "https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"; // Batch chat API 的 URL
// 此處以qwen-plus為例,可按需更換模型名稱。
string jsonContent = @"{
""model"": ""qwen-plus"",
""messages"": [
{
""role"": ""system"",
""content"": ""You are a helpful assistant.""
},
{
""role"": ""user"",
""content"": ""你是誰?""
}
]
}";
// 發送請求並擷取響應
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// 輸出結果
Console.WriteLine(result);
}
private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
{
using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
{
// 佈建要求頭
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// 發送請求並擷取響應
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// 處理響應
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"請求失敗: {response.StatusCode}";
}
}
}
}響應樣本
{
"created": 1763620689,
"usage": {
"completion_tokens": 60,
"prompt_tokens": 22,
"total_tokens": 82
},
"model": "qwen-plus",
"id": "chatcmpl-db85828d-af47-97a3-a2f4-120b8f7d72d3",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "我是千問,阿里巴巴集團旗下的超大規模語言模型。我能夠回答問題、創作文字,比如寫故事、寫公文、寫郵件、寫劇本、邏輯推理、編程等等,還能表達觀點,玩遊戲等。如果你有任何問題或需要協助,歡迎隨時告訴我!"
}
}
],
"object": "chat.completion"
}PHP(HTTP)
請求樣本
<?php
// 設定Batch Chat 請求 的 URL
$url = 'https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';
// 若沒有配置環境變數,請用百鍊API Key將下行替換為:$apiKey = "sk-xxx";
$apiKey = getenv('DASHSCOPE_API_KEY');
// 佈建要求頭
$headers = [
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json'
];
// 佈建要求體
$data = [
// 此處以qwen-plus為例,可按需更換模型名稱。
"model" => "qwen-plus",
"messages" => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "你是誰?"
]
]
];
// 初始化cURL會話
$ch = curl_init();
// 設定cURL選項
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// 在此處設定Batch chat 請求的逾時時間:1800秒 = 30分鐘,最長支援3600秒
curl_setopt($ch, CURLOPT_TIMEOUT, 1800);
// 執行cURL會話
$response = curl_exec($ch);
// 檢查是否有錯誤發生
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
// 關閉cURL資源
curl_close($ch);
// 輸出響應結果
echo $response;
?>響應樣本
{
"created": 1763621824,
"usage": {
"completion_tokens": 81,
"prompt_tokens": 22,
"total_tokens": 103
},
"model": "qwen-plus",
"id": "chatcmpl-b25aeb86-5cfe-93ea-ab03-aa3de1381c23",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "我是千問,由阿里雲研發的超大規模語言模型。我能夠回答問題、創作文字,如寫故事、公文、郵件、劇本等,還能進行邏輯推理、編程,甚至表達觀點和玩遊戲。我支援多種語言,包括但不限於中文、英文、德語、法語、西班牙語等。如果你有任何問題或需要協助,歡迎隨時告訴我!"
}
}
],
"object": "chat.completion"
}curl
請求樣本
設定最長等待時間max-time為1800秒,最長支援3600秒。
curl -X POST https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
--max-time 1800 \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你是誰?"
}
]
}'響應樣本
{
"created": 1763622152,
"usage": {
"completion_tokens": 79,
"prompt_tokens": 22,
"total_tokens": 101
},
"model": "qwen-plus",
"id": "chatcmpl-daa344d2-60df-9b79-81a4-28c9a10a0a0e",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "我是千問,阿里巴巴集團旗下的超大規模語言模型。我能夠回答問題、創作文字,如寫故事、公文、郵件、劇本等,還能進行邏輯推理、編程,表達觀點,玩遊戲等。我支援多種語言,包括但不限於中文、英文、德語、法語、西班牙語等。如果你有任何問題或需要協助,歡迎隨時告訴我!"
}
}
],
"object": "chat.completion"
}使用限制
等待時間:提交請求後,會同步等待結果,服務端最長會保持串連3600秒(1小時)。可根據實際需求設定自訂逾時時間,取值範圍為60-3600秒。
並發限制:單個賬戶為每個模型最多可維持10,000個等待中的請求。超出此限制的新請求將被拒絕並返回相應錯誤碼,直到有請求完成並釋放出可用位置。
調用速率:單個賬戶提交請求的頻率上限為 1000 QPS(10,000次 / 10秒)。
此上限為系統設定的理論最大值。在實際調用中,API的可用資源會受到整體系統負載的動態影響,建議您在代碼中實現重試邏輯。
計費說明
計費單價:按成功請求的輸入和輸出Token計費,目錄價與對應模型即時調用價格一致。官網限時為 Batch Chat 調用提供 5 折優惠,其最終費用為即時調用價格的 50%,具體請參見模型列表。
計費範圍:僅對任務中成功執行的請求進行計費。任何失敗的請求(包括系統錯誤或逾時)均不計費。
錯誤碼
如果模型調用失敗並返回報錯資訊,請參見錯誤資訊進行解決。
常見問題
Batch Chat 請求耗時和即時 API 比較有區別嗎?
有區別。Batch Chat 請求需要排隊等待調度,因此端到端耗時通常高於即時 API。請求在服務端最長等待時間為1小時,逾時未執行將自動斷開並返回錯誤。
如何選擇使用 Batch Chat 還是Batch File?
當商務邏輯需要以 API 同步調用的方式、高並發地提交大量獨立的對話請求時,選擇 Batch Chat。當需要處理的是包含大量請求的單個大檔案,並且可以接受非同步擷取結果檔案,則選擇 Batch File。
Batch Chat 能保證請求全部完成嗎?
不保證。Batch Chat 使用的是 Batch 資源,完成情況取決於系統資源分派情況。如果系統資源繁忙,請求可能在隊列中等待。若超過最長等待時間仍未被調度執行,串連將逾時斷開,此時請求不會被計費,可以稍後重試。
相關文檔
查看模型即時調用的完整參數列表,請參閱OpenAI Chat。
如需通過提交檔案進行批量處理,並非同步擷取結果,請參閱OpenAI相容-Batch(檔案輸入)。