Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:Compatible con OpenAI - Batch Chat

Última actualización: Oct 12, 2026

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

  1. Enviar solicitud: El cliente envía una solicitud y establece una conexión.

  2. Cola y espera: La solicitud entra en una cola mientras el cliente mantiene la conexión.

  3. 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)

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-flash y qwen3.5-omni-plus.
  • Algunos modelos admiten el modo de pensamiento. Activar este modo genera tokens de pensamiento y aumenta los costos.
  • Los modelos de las series qwen3.8, qwen3.7, qwen3.6 y qwen3.5 tienen el modo de pensamiento activado de forma predeterminada. Si utiliza un modelo de pensamiento híbrido, debe configurar explícitamente el parámetro enable_thinking. Configure este parámetro en true para activar el modo o en false para desactivarlo.
  • En el cuerpo de la solicitud JSONL, enable_thinking es un parámetro de nivel superior de body y debe colocarse al mismo nivel que model. No lo coloque dentro de extra_body.

Uso

Requisitos previos

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 solicitud
import 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 respuesta
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!

Java

Ejemplo de solicitud
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()
                // 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 respuesta
ChatCompletion{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 solicitud
import 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 solicitud
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 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 respuesta
I 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 solicitud
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
    {
        // 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 solicitud

Establezca 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_thinking segú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

  1. ¿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.

  2. ¿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.

  3. ¿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