Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Compatible OpenAI - Batch Chat

Dernière mise à jour :Oct 11, 2026

Pour les scénarios non temps réel tels que l'annotation de données et la génération de contenu, l'API Batch Chat offre une alternative peu coûteuse et à haute concurrence utilisant la même méthode d'appel synchrone. Remise limitée de 50 % disponible.

Soumission de la demande : le client envoie une requête et établit une connexion.

Mise en file d'attente et attente : la requête est placée dans une file d'attente tandis que le client maintient la connexion active.

Retour du résultat : une fois le traitement terminé, le serveur renvoie l'intégralité du résultat via la connexion établie. La connexion est interrompue avec une erreur de délai d'expiration si le temps d'attente maximal est dépassé.

Disponibilité

Chine (Pékin)

Important

  • Dans le scénario de traitement par lots, le nombre maximal de jetons de contexte par requête est de 256 K pour 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, qwen3.5-omni-flash et qwen3.5-omni-plus.
  • Certains modèles prennent en charge le mode de réflexion. L'activation de ce mode génère des tokens de réflexion et augmente les coûts.
  • Les modèles des séries qwen3.8, qwen3.7, qwen3.6 et qwen3.5 ont le mode de réflexion activé par défaut. Si vous utilisez un modèle de réflexion hybride, vous devez définir explicitement le paramètre enable_thinking. Définissez ce paramètre sur true pour activer le mode ou sur false pour le désactiver.
  • Dans le corps de la requête JSONL, enable_thinking est un paramètre de premier niveau de body et doit être placé au même niveau que model. Ne le placez pas à l'intérieur de extra_body.

Utilisation

Prérequis

  • Activez Alibaba Cloud Model Studio et obtenez une clé API.

    Configurez la clé API en tant que variable d'environnement afin de réduire les risques de fuite.

  • Pour utiliser le SDK OpenAI, installez-le :

    pip3 install -U openai
    

Étape 1 : Configurez le point de terminaison de l'API

Basculez de l'inférence en temps réel vers l'inférence par lots en modifiant le point de terminaison de l'API (base_url) selon votre méthode d'appel :

SDK : définissez base_url sur https://batch.dashscope.aliyuncs.com/compatible-mode/v1

HTTP : POST https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

Étape 2 : Effectuez un appel

Les exemples suivants illustrent comment appeler l'API Batch Chat. Le délai d'expiration par défaut est de 3 600 secondes (1 heure) ; aucune configuration supplémentaire n'est nécessaire dans la plupart des cas.

Plage de délai d'expiration personnalisée : 60–3 600 secondes.

Python

Exemple de requête
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)
Exemple de réponse
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

Exemple de requête
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();
        }
    }
}
Exemple de réponse
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

Exemple de requête
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();
Exemple de réponse
{
    "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

Exemple de requête
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)
}
Exemple de réponse
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)

Exemple de requête
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}";
            }
        }
    }
}
Exemple de réponse
{
    "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)

Exemple de requête
<?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;
?>
Exemple de réponse
{
    "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

Exemple de requête

Définissez le paramètre max-time sur 1800 secondes. Maximum : 3600 secondes.

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?"
        }
    ]
}'
Exemple de réponse
{
    "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"
}

Cette API prend en charge uniquement les soumissions de requêtes uniques. Pour soumettre plusieurs requêtes simultanément, regroupez-les dans un fichier. Consultez OpenAI-compatible - Batch (entrée par fichier) .

Limites

  • Temps d'attente : durée maximale de 3600 secondes (1 heure) pour l'attente synchrone. Définissez un délai d'expiration personnalisé entre 60 et 3600 secondes.

  • Limites de concurrence : maximum de 10 000 requêtes en attente par modèle et par compte. Les requêtes dépassant cette limite sont rejetées avec un code d'erreur. Les nouvelles requêtes ne sont acceptées qu'une fois les requêtes en attente traitées.

  • Taux d'appels : maximum de 1000 QPS par compte, soit 10 000 appels toutes les 10 secondes.

    Il s'agit d'un maximum théorique. La disponibilité réelle dépend de la charge du système. Implémentez une logique de nouvelle tentative.

Facturation

  • Prix unitaire : facturation basée sur les jetons d'entrée et de sortie des requêtes abouties. Le prix catalogue correspond au tarif des appels en temps réel. Remise limitée de 50 % disponible sur le site officiel. Consultez la liste des modèles.
  • Périmètre de facturation : seules les requêtes abouties sont facturées. Les requêtes échouées (erreurs système ou délais d'expiration dépassés) ne sont pas facturées.

Remarque

  • L'inférence par lots constitue un poste de facturation distinct. Elle est éligible au plan d'économies polyvalent pour l'IA, mais n'est pas compatible avec les réductions telles que l'abonnement (autres plans d'économies) ni avec les quotas gratuits pour les nouveaux utilisateurs. Elle ne prend pas non plus en charge des fonctionnalités telles que le cache de contexte.
  • Certains modèles, comme qwen3,5-plus et qwen3,5-flash, activent le mode de réflexion par défaut. Ce mode génère des jetons de réflexion supplémentaires, facturés au tarif des jetons de sortie, ce qui augmente les coûts. Pour maîtriser vos dépenses, définissez le paramètre enable_thinking en fonction de la complexité de la tâche. Pour plus d'informations, consultez la section Réflexion approfondie.

Codes d'erreur

Si l'appel au modèle échoue et renvoie un message d'erreur, consultez les codes d'erreur pour résoudre le problème.

FAQ

  1. Existe-t-il une différence de temps de traitement des requêtes entre Batch Chat et l'API en temps réel ?

    Oui. Les requêtes sont mises en file d'attente pour être planifiées, ce qui allonge généralement le temps de traitement de bout en bout par rapport à l'API en temps réel. Le délai d'attente maximal est d'une heure. Si ce délai est dépassé, la connexion est interrompue avec une erreur.

  2. Comment choisir entre Batch Chat et Batch File ?

    Optez pour Batch Chat si vous devez traiter de nombreuses requêtes de dialogue indépendantes avec une forte concurrence via des appels synchrones. Privilégiez Batch File pour le traitement d'un seul fichier volumineux contenant de nombreuses requêtes, avec récupération asynchrone des résultats.

  3. Batch Chat garantit-il l'exécution de toutes les requêtes ?

    Non. L'exécution dépend de l'allocation des ressources partagées. Les requêtes peuvent rester en file d'attente si les ressources sont saturées. La connexion expire si la requête n'est pas exécutée dans le délai d'attente maximal. Les requêtes ayant expiré ne sont pas facturées ; veuillez réessayer ultérieurement.

Références