Para escenarios no relacionados con el tiempo real, como anotación de datos y generación de contenido, la API de Batch Chat ofrece una alternativa de bajo costo y alta concurrencia utilizando el mismo método de llamada síncrona. Descuento por tiempo limitado del 50% disponible.
Esta API solo admite envíos de solicitudes individuales. Para enviar múltiples solicitudes a la vez, empaquételas en un archivo. Consulte Compatible con OpenAI - Batch (entrada de archivo).
Funcionamiento
-
Enviar solicitud: El cliente envía una solicitud y establece una conexión.
-
Cola y espera: La solicitud entra en una cola mientras el cliente mantiene la conexión.
-
Devolver resultado: El servidor devuelve el resultado completo a través de la conexión establecida después del procesamiento.
La conexión se desconecta con un error de tiempo de espera si se excede el tiempo máximo de espera.
Disponibilidad
China (Beijing)
- Modelos de generación de texto: qwen3.8-max, qwen3.8-flash, qwen3.7-max, qwen3.7-plus, qwen3.6-plus, qwen3.7-flash, qwen3.6-flash, qwen3.5-plus, qwen3.5-flash, qwen-plus, qwen-flash
- Modelos de comprensión de imágenes y videos: qwen3.8-max, qwen3.8-flash, qwen3.7-plus, qwen3.6-plus, qwen3.7-flash, qwen3.6-flash, qwen3.5-plus, qwen3.5-flash, qwen3.5-omni-plus, qwen3-vl-plus
Importante
- En el escenario de procesamiento por lotes, el máximo de tokens de contexto por solicitud es 256 K para
qwen3.8-max,qwen3.8-flash,qwen3.7-max,qwen3.7-plus,qwen3.6-plus,qwen3.7-flash,qwen3.6-flash,qwen3.5-plus,qwen3.5-flashyqwen3.5-omni-plus. - Algunos modelos admiten el modo de pensamiento. Activar este modo genera
tokensde pensamiento y aumenta los costos. - Los modelos de las series
qwen3.8,qwen3.7,qwen3.6yqwen3.5tienen el modo de pensamiento activado de forma predeterminada. Si utiliza un modelo de pensamiento híbrido, debe configurar explícitamente el parámetroenable_thinking. Configure este parámetro entruepara activar el modo o enfalsepara desactivarlo. - En el cuerpo de la solicitud JSONL,
enable_thinkinges un parámetro de nivel superior debodyy debe colocarse al mismo nivel quemodel. No lo coloque dentro deextra_body.
Uso
Requisitos previos
-
Active Alibaba Cloud Model Studio y obtenga una clave de API.
Configure la clave de API como variable de entorno para reducir el riesgo de filtración.
-
Para usar el SDK de OpenAI, instálelo:
pip3 install -U openai
Paso 1: Configurar el endpoint de la API
Cambie de inferencia en tiempo real a por lotes modificando el endpoint de la API (base_url) según su método de llamada:
SDK: Establezca base_url en https://batch.dashscope.aliyuncs.com/compatible-mode/v1
HTTP: POST https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
Paso 2: Realizar una llamada
Los siguientes ejemplos muestran cómo llamar a la API de Batch Chat. El tiempo de espera predeterminado es de 3600 segundos (1 hora); no se necesita configuración adicional en la mayoría de los casos.
Rango de tiempo de espera personalizado: 60–3600 segundos.
Python
Ejemplo de solicitudimport os
from openai import OpenAI
client = OpenAI(
# If environment variable not set, replace with api_key="sk-xxx".
# Avoid hard-coding API keys in production to reduce leak risk.
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://batch.dashscope.aliyuncs.com/compatible-mode/v1", # Batch Chat API endpoint
).with_options(timeout=1800.0) # Timeout: 1800s (30 min). Max: 3600s.
completion = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
]
)
print(completion.choices[0].message.content)
Ejemplo de respuestaI am Qwen, a large-scale language model from Alibaba Group. I can answer questions, create text such as stories, official documents, emails, and scripts, perform logical reasoning, write code, and more. I can also express opinions and play games. If you have any questions or need help, feel free to let me know!
Java
Ejemplo de solicitudimport 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()
// If environment variable not set, replace with .apiKey("sk-xxx").
// Avoid hard-coding API keys in production to reduce leak risk.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.baseUrl("https://batch.dashscope.aliyuncs.com/compatible-mode/v1") // Batch Chat API endpoint
.timeout(Duration.ofSeconds(1800)) // Timeout: 1800s (30 min). Max: 3600s.
.build();
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.addUserMessage("Who are you?")
.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();
}
}
}
Ejemplo de respuestaChatCompletion{id=chatcmpl-a12c115e-15fc-94f9-a984-81bd65f0527b, choices=[Choice{finishReason=stop, index=0, logprobs=, message=ChatCompletionMessage{
content=I am Qwen, a large-scale language model from Alibaba Group. I can help you answer questions, create text, and provide information query services. It's nice to meet you!, 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
Ejemplo de solicitudimport OpenAI from "openai";
const openai = new OpenAI(
{
// If environment variable not set, replace with apiKey: "sk-xxx".
// Avoid hard-coding API keys in production to reduce leak risk.
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://batch.dashscope.aliyuncs.com/compatible-mode/v1", // Batch Chat API endpoint
// Timeout in milliseconds: 1800s = 1,800,000ms. Max: 3,600,000ms.
timeout: 1800 * 1000,
}
);
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen-plus", // Replace with your model name as needed
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Who are you?" }
],
});
console.log(JSON.stringify(completion))
}
main();
Ejemplo de respuesta{
"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": "I am Qwen, a large-scale language model developed by Alibaba Cloud. I can answer questions and create text, such as stories, official documents, emails, and scripts. I can also perform logical reasoning, write code, express opinions, and play games. I support multiple languages, including Chinese, English, German, French, and Spanish. If you have any questions or need help, feel free to let me know!"
}
}
],
"object": "chat.completion"
}
Go
Ejemplo de solicitudpackage 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 endpoint
option.WithBaseURL("https://batch.dashscope.aliyuncs.com/compatible-mode/v1"),
)
// Timeout: 1800s (30 min). Max: 3600s.
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("Who are you?"),
},
Model: "qwen-plus",
},
)
if err != nil {
panic(err.Error())
}
println(chatCompletion.Choices[0].Message.Content)
}
Ejemplo de respuestaI am Qwen, a large-scale language model developed by Alibaba Cloud. I can generate various types of text, such as articles, stories, and poems, and can adapt and expand them for different scenarios and needs. In addition, I can answer various questions and provide help and solutions. I am happy to be of service!
C# (HTTP)
Ejemplo de solicitudusing 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
{
// Timeout: 1800s (30 min). Max: 3600s.
Timeout = TimeSpan.FromSeconds(1800)
};
static async Task Main(string[] args)
{
// If environment variable not set, replace with: string? apiKey = "sk-xxx";
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("API Key is not set. Make sure the 'DASHSCOPE_API_KEY' environment variable is set.");
return;
}
// Set the request URL and content
string url = "https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"; // Batch Chat API endpoint
// Replace with your model name as needed
string jsonContent = @"{
""model"": ""qwen-plus"",
""messages"": [
{
""role"": ""system"",
""content"": ""You are a helpful assistant.""
},
{
""role"": ""user"",
""content"": ""Who are you?""
}
]
}";
// Send the request and get the response
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// Print the result
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"))
{
// Set request headers
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// Send the request and get the response
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// Process the response
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"Request failed: {response.StatusCode}";
}
}
}
}
Ejemplo de respuesta{
"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": "I am Qwen, a large-scale language model from Alibaba Group. I can answer questions, create text such as stories, official documents, emails, and scripts, perform logical reasoning, write code, and more. I can also express opinions and play games. If you have any questions or need help, feel free to let me know!"
}
}
],
"object": "chat.completion"
}
PHP (HTTP)
Ejemplo de solicitud<?php
// Set the URL for the Batch Chat request
$url = 'https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';
// If environment variable not set, replace with: $apiKey = "sk-xxx";
$apiKey = getenv('DASHSCOPE_API_KEY');
// Set request headers
$headers = [
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json'
];
// Set the request body
$data = [
// Replace with your model name as needed
"model" => "qwen-plus",
"messages" => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "Who are you?"
]
]
];
// Initialize cURL session
$ch = curl_init();
// Set cURL options
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);
// Timeout: 1800s (30 min). Max: 3600s.
curl_setopt($ch, CURLOPT_TIMEOUT, 1800);
// Execute cURL session
$response = curl_exec($ch);
// Check for errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
// Close cURL resource
curl_close($ch);
// Print the response
echo $response;
?>
Ejemplo de respuesta{
"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": "I am Qwen, a large-scale language model developed by Alibaba Cloud. I can answer questions and create text, such as stories, official documents, emails, and scripts. I can also perform logical reasoning, write code, and even express opinions and play games. I support multiple languages, including but not limited to Chinese, English, German, French, and Spanish. If you have any questions or need help, feel free to let me know!"
}
}
],
"object": "chat.completion"
}
curl
Ejemplo de solicitudEstablezca max-time en 1800 segundos. Máximo: 3600 segundos.
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": "Who are you?"
}
]
}'
Ejemplo de respuesta{
"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": "I am Qwen, a large-scale language model from Alibaba Group. I can answer questions and create text, such as stories, official documents, emails, and scripts. I can also perform logical reasoning, write code, express opinions, and play games. I support multiple languages, including but not limited to Chinese, English, German, French, and Spanish. If you have any questions or need help, feel free to let me know!"
}
}
],
"object": "chat.completion"
}
Limitaciones
-
Tiempo de espera: Máximo 3600 segundos (1 hora) para espera síncrona. Configure un tiempo de espera personalizado: 60–3600 segundos.
-
Límites de concurrencia: Máximo 10,000 solicitudes pendientes por modelo por cuenta. Las solicitudes que excedan este límite serán rechazadas con un código de error. Solo se aceptan nuevas solicitudes después de que se completen las solicitudes pendientes.
-
Tasa de llamadas: Máximo 1000 QPS por cuenta, o 10,000 llamadas cada 10 segundos.
Solo máximo teórico. La disponibilidad real depende de la carga del sistema. Implemente lógica de reintentos.
Facturación
- Precio unitario: Facturación basada en tokens de entrada/salida en solicitudes exitosas. El precio de lista coincide con el precio de llamada en tiempo real. Descuento por tiempo limitado del 50% disponible en el sitio web oficial. Consulte Lista de modelos.
- Alcance de facturación: Solo se facturan las solicitudes exitosas. Las solicitudes fallidas (errores del sistema o tiempos de espera agotados) no se facturan.
Nota
- La inferencia por lotes es un elemento de facturación separado. Admite el Plan de ahorros de propósito general de IA, pero no descuentos, como suscripción (otros planes de ahorros) o cuotas gratuitas para nuevos usuarios. Tampoco admite funciones como caché de contexto.
- Algunos modelos, como qwen3.5-plus y qwen3.5-flash, tienen el modo de pensamiento habilitado de forma predeterminada. Este modo genera tokens de pensamiento adicionales, que se facturan al precio de tokens de salida y aumentan los costos. Para controlar los costos, establezca el parámetro
enable_thinkingsegún la complejidad de la tarea. Para más información, consulte Pensamiento profundo.
Códigos de error
Si la llamada al modelo falla y devuelve un mensaje de error, consulte Códigos de error para su resolución.
FAQ
-
¿Existe alguna diferencia en el tiempo de solicitud entre Batch Chat y la API en tiempo real?
Sí. Las solicitudes se ponen en cola para su programación, por lo que el tiempo de extremo a extremo suele ser mayor que en la API en tiempo real. Espera máxima: 1 hora. La conexión se desconecta con un error si se excede el tiempo de espera.
-
¿Cómo elijo entre Batch Chat y Batch File?
Elija Batch Chat para muchas solicitudes de diálogo independientes con alta concurrencia mediante llamadas síncronas. Elija Batch File para procesar un solo archivo grande con muchas solicitudes mediante recuperación asíncrona.
-
¿Garantiza Batch Chat que se completarán todas las solicitudes?
No. La finalización depende de la asignación de recursos compartidos. Las solicitudes pueden entrar en cola si los recursos están ocupados. La conexión agota el tiempo de espera si no se ejecuta dentro del tiempo máximo de espera. Las solicitudes con tiempo de espera agotado no se facturan; reintente más tarde.
Referencias
- Lista completa de parámetros para llamadas a modelos en tiempo real: Compatible con OpenAI - Chat.
- Procesamiento por lotes mediante envío de archivos con resultados asíncronos: Compatible con OpenAI - Batch (entrada de archivo).