Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Compatible OpenAI - Chat

Dernière mise à jour :Oct 13, 2026

Les modèles Qwen disponibles sur Model Studio prennent en charge les interfaces compatibles avec OpenAI. Vous pouvez migrer votre code OpenAI existant vers Model Studio en modifiant uniquement la clé API, l'URL de base et le nom du modèle.

Informations sur la compatibilité

BASE_URL

Le paramètre BASE_URL correspond au point de terminaison réseau permettant d'accéder au service de modèle. Lorsque vous utilisez l'interface compatible OpenAI avec Model Studio, configurez le paramètre BASE_URL comme suit.

Lorsque vous effectuez des appels via le SDK OpenAI ou d'autres SDK compatibles OpenAI, utilisez le paramètre BASE_URL suivant :

Singapore: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
Virginia: https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
Beijing: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
Hong Kong (China): https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1
Japan (Tokyo): https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1

Lorsque vous effectuez des appels via HTTP, utilisez le point de terminaison complet suivant :

Singapore: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Virginia: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Beijing: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Hong Kong (China): POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Japan (Tokyo): POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions

ImportantModel Studio a introduit des noms de domaine spécifiques aux espaces de travail pour les régions Pékin, Singapour et Hong Kong (Chine), offrant de meilleures performances et une stabilité accrue. Migrez vers les nouveaux noms de domaine :

  • Région Pékin : migrez de https://dashscope.aliyuncs.com vers https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Région Singapour : migrez de https://dashscope-intl.aliyuncs.com vers https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
  • Région Hong Kong (Chine) : migrez de https://cn-hongkong.dashscope.aliyuncs.com vers https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com

Remplacez {WorkspaceId} par votre ID d'espace de travail réel.

Dépannage des échecs d'appel : Si un appel via l'interface compatible OpenAI échoue avec une erreur 404, 401, 403 ou une erreur de connexion, vérifiez les configurations suivantes :

Appels interrégionaux

Une clé API Model Studio est liée à la région dans laquelle elle a été créée. Lorsque vous appelez l'URL de base d'une région, vous devez utiliser une clé API créée dans cette même région. Une clé API provenant d'une autre région sera rejetée avec une erreur d'authentification.

Cette règle s'applique à toutes les régions disposant d'un point de terminaison, notamment Chine (Pékin), États-Unis (Virginie), Singapour et Japon (Tokyo), ainsi que Chine (Hong Kong). Créez la clé API dans la console de la région dont vous utilisez le point de terminaison.

Par exemple, si vous utilisez une clé API créée dans la région Chine (Pékin) pour appeler le point de terminaison États-Unis (Virginie), la requête renvoie un code HTTP 401 avec le message d'erreur Incorrect API key provided et le code d'erreur invalid_api_key. Cette erreur indique que la clé API et le point de terminaison appartiennent à des régions différentes, et non que la clé API est invalide ou manque d'autorisations.

Modèles pris en charge

Modèles pris en charge : modèles de langage large Qwen (éditions commerciales et open source), Qwen-VL, Qwen-Coder, Qwen-Omni, Qwen-Math, DeepSeek , Kimi , GLM , MiniMax .

Qwen-Audio ne prend pas en charge le protocole compatible OpenAI. Utilisez plutôt le protocole DashScope.

Appel via le SDK OpenAI

Prérequis

  • Python est installé sur votre machine.
  • La dernière version du SDK OpenAI est installée.
# If the following command fails, replace pip with pip3
pip install -U openai
  • Vous avez activé Model Studio et obtenu une clé API. Pour plus d'instructions, consultez la section Obtenir une clé API.
  • (Recommandé) Configurez la clé API en tant que variable d'environnement afin de réduire le risque d'exposition de la clé. Vous pouvez également la configurer directement dans le code, mais cela augmente le risque d'exposition.
  • Sélectionnez le modèle que vous souhaitez utiliser dans la liste des modèles pris en charge.

Utilisation

Les exemples suivants montrent comment utiliser le SDK OpenAI pour accéder aux modèles Qwen sur Model Studio.

Exemple sans streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是谁?'}]
        )
    print(completion.model_dump_json())

if __name__ == '__main__':
    get_response()

Le résultat suivant est renvoyé :

{
    "id": "chatcmpl-xxx",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "我是来自阿里云的超大规模预训练模型,我叫千问。",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null
            }
        }
    ],
    "created": 1716430652,
    "model": "qwen3.8-max",
    "object": "chat.completion",
    "system_fingerprint": null,
    "usage": {
        "completion_tokens": 18,
        "prompt_tokens": 22,
        "total_tokens": 40
    }
}

Exemple avec streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # 如果您没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",

    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是谁?'}],
        stream=True,
        # 通过以下设置,在流式输出的最后一行展示token使用信息
        stream_options={"include_usage": True}
        )
    for chunk in completion:
        print(chunk.model_dump_json())

if __name__ == '__main__':
    get_response()

Le résultat suivant est renvoyé :

{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":"assistant","tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"我是","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"来自","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"阿里","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"云的大规模语言模型","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":",我叫千问。","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":null,"tool_calls":null},"finish_reason":"stop","index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":{"completion_tokens":16,"prompt_tokens":22,"total_tokens":38}}

Exemple d'appel d'outil

L'exemple suivant illustre l'appel d'outil (appel de fonction) via l'interface compatible OpenAI, en utilisant un outil de requête météo et un outil de requête horaire. Le code exemple prend en charge les appels d'outils multi-tours.

from openai import OpenAI
from datetime import datetime
import json
import os

client = OpenAI(
    # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# 定义工具列表,模型在选择使用哪个工具时会参考工具的name和description
tools = [
    # 工具1 获取当前时刻的时间
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "当你想知道现在的时间时非常有用。",
            # 因为获取当前时间无需输入参数,因此parameters为空字典
            "parameters": {}
        }
    },
    # 工具2 获取指定城市的天气
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "当你想查询指定城市的天气时非常有用。",
            "parameters": {
                "type": "object",
                "properties": {
                    # 查询天气时需要提供位置,因此参数设置为location
                    "location": {
                        "type": "string",
                        "description": "城市或县区,比如北京市、杭州市、余杭区等。"
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# 模拟天气查询工具。返回结果示例:"北京今天是雨天。"
def get_current_weather(location):
    return f"{location}今天是雨天。 "

# 查询当前时间的工具。返回结果示例:"当前时间:2024-04-15 17:15:18。"
def get_current_time():
    # 获取当前日期和时间
    current_datetime = datetime.now()
    # 格式化当前日期和时间
    formatted_time = current_datetime.strftime('%Y-%m-%d %H:%M:%S')
    # 返回格式化后的当前时间
    return f"当前时间:{formatted_time}。"

# 封装模型响应函数
def get_response(messages):
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=messages,
        tools=tools
        )
    return completion.model_dump()

def call_with_messages():
    print('\n')
    messages = [
            {
                "content": input('请输入:'),  # 提问示例:"现在几点了?" "一个小时后几点" "北京天气如何?"
                "role": "user"
            }
    ]
    print("-"*60)
    # 模型的第一轮调用
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\n第{i}轮大模型输出信息:{first_response}\n")
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    # 如果不需要调用工具,则直接返回最终答案
    if assistant_output['tool_calls'] == None:  # 如果模型判断无需调用工具,则将assistant的回复直接打印出来,无需进行模型的第二轮调用
        print(f"无需调用工具,我可以直接回复:{assistant_output['content']}")
        return
    # 如果需要调用工具,则进行模型的多轮调用,直到模型判断无需调用工具
    while assistant_output['tool_calls'] != None:
        # 如果判断需要调用查询天气工具,则运行查询天气工具
        if assistant_output['tool_calls'][0]['function']['name'] == 'get_current_weather':
            tool_info = {"name": "get_current_weather", "role":"tool"}
            # 提取位置参数信息
            location = json.loads(assistant_output['tool_calls'][0]['function']['arguments'])['location']
            tool_info['content'] = get_current_weather(location)
        # 如果判断需要调用查询时间工具,则运行查询时间工具
        elif assistant_output['tool_calls'][0]['function']['name'] == 'get_current_time':
            tool_info = {"name": "get_current_time", "role":"tool"}
            tool_info['content'] = get_current_time()
        print(f"工具输出信息:{tool_info['content']}\n")
        print("-"*60)
        messages.append(tool_info)
        assistant_output = get_response(messages)['choices'][0]['message']
        if  assistant_output['content'] is None:
            assistant_output['content'] = ""
        messages.append(assistant_output)
        i += 1
        print(f"第{i}轮大模型输出信息:{assistant_output}\n")
    print(f"最终答案:{assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

Paramètres de requête

Les paramètres de requête sont alignés sur l'interface OpenAI. Le tableau suivant décrit les paramètres actuellement pris en charge :

Parameter

Type

Default

Description

model

string

-

The model to use. For available models, see Supported models.

messages

array

-

The conversation history between the user and the model. Each array element has the format {"role": role, "content": content}. Valid roles: system, user, assistant. Only messages[0] supports the system role. In general, user and assistant roles alternate, and the last element must have the user role.

top_p (optional)

float

-

The nucleus sampling probability threshold. For example, a value of 0,8 keeps only the smallest set of tokens whose cumulative probability is at least 0.8. Valid values: (0, 1.0). Higher values increase randomness; lower values increase determinism.

temperature (optional)

float

-

Controls the randomness and diversity of model responses. Higher values flatten the probability distribution, selecting more low-probability tokens for more diverse output. Lower values sharpen the distribution, favoring high-probability tokens for more deterministic output. Valid values: [0, 2). A value of 0 is not recommended.

presence_penalty (optional)

float

-

Controls repetition across the entire generated sequence. Higher values reduce repetition. Valid values: [-2.0, 2.0].

Supported only on Qwen commercial models and open-source models qwen1,5 and later.

n (optional)

integer

1

The number of responses to generate. Valid values: 1-4. For scenarios that require multiple responses (such as creative writing or ad copy), set a larger n value. > A larger n value does not increase input token consumption but does increase output token consumption. > Currently supported only on qwen-plus. When the tools parameter is provided, n is fixed at 1.

max_tokens (optional)

integer

-

The maximum number of tokens the model can generate. For example, if the model supports up to 2k output tokens, you can set this to 1k to prevent overly long responses. Different models have different output limits. See the model list for details.

seed (optional)

integer

-

The random seed for generation, used to control randomness of model output. Supports unsigned 64-bit integers.

stream (optional)

boolean

False

Controls whether to use streaming output. When streaming is enabled, the interface returns a generator. Iterate over it to get results, where each output is the incremental sequence generated.

stop (optional)

string or array

None

Controls precise stopping of content generation. Generation stops automatically when the model is about to produce the specified string or token_id. Can be a string or array type. When string type: generation stops when the model is about to produce the specified stop word. When array type: array elements can be token_ids, strings, or arrays of token_ids. Generation stops when the generated token or its token_id matches an element in stop.

When stop is array type, you cannot mix token_ids and strings as elements.

tools (optional)

array

None

The tool library available for the model to call. During a function call flow, the model selects one tool from this library. Each tool has the following structure: type (string, currently only "function" is supported), function (object with keys: name, description, parameters). The name field is the function name (letters, numbers, underscores, and hyphens; max 64 characters). The description field describes when and how the model should call the function. The parameters field is a valid JSON Schema describing the function parameters. If empty, the function takes no input. The type field within parameters supports common JSON Schema types: string, number, integer, boolean, array, and object. When using array type, specify element types with items. Both the function call initiation turn and the tool result submission turn require the tools parameter. Currently supported models: qwen-plus and qwen-max.

The tools parameter cannot be used with stream=True simultaneously.

stream_options (optional)

object

None

Configures whether to display token usage in streaming output. Only takes effect when stream is True. To count tokens in streaming mode, set stream_options={"include_usage": True}.

Paramètres de réponse

Parameter

Type

Description

Notes

id

string

L'ID généré par le système pour cette requête.

-

model

string

Le nom du modèle utilisé pour cette requête.

-

system_fingerprint

string

La version de configuration utilisée par l'environnement d'exécution du modèle. Actuellement non pris en charge ; renvoie une chaîne vide.

-

choices

array

Les détails du contenu généré par le modèle.

-

choices[i].finish_reason

string

La raison de l'arrêt de la génération. Valeurs : null (génération en cours), stop (arrêt dû à une condition d'arrêt), length (arrêt dû au dépassement de la longueur maximale).

-

choices[i].message

object

Le message produit par le modèle.

-

choices[i].message.role

string

Le rôle du modèle. Valeur fixe : assistant.

-

choices[i].message.content

string

Le texte généré par le modèle.

-

choices[i].index

integer

Le numéro de séquence du résultat généré. Par défaut : 0.

-

created

integer

L'horodatage (en secondes) du résultat généré.

-

usage

object

Informations de facturation indiquant la consommation de jetons pour cette requête.

-

usage.prompt_tokens

integer

Le nombre de jetons du texte saisi par l'utilisateur.

-

usage.completion_tokens

integer

Le nombre de jetons de la réponse générée par le modèle.

-

usage.total_tokens

integer

La somme de usage.prompt_tokens et usage.completion_tokens.

-

Appel via le SDK langchain_openai

Prérequis

  • Python est installé sur votre machine.
  • Le SDK langchain_openai est installé.
# If the following command fails, replace pip with pip3
pip install -U langchain_openai
  • Vous avez activé Model Studio et obtenu une clé API. Pour obtenir des instructions, consultez la rubrique Obtenir une clé API.
  • (Recommandé) Configurez la clé API en tant que variable d'environnement afin de réduire les risques d'exposition de la clé. Vous pouvez également la configurer directement dans le code, mais cela augmente les risques d'exposition.
  • Sélectionnez le modèle que vous souhaitez utiliser dans la liste des modèles pris en charge.

Utilisation

Les exemples suivants montrent comment utiliser le SDK langchain_openai pour accéder aux modèles Qwen sur Model Studio.

Sortie non diffusée (non-streaming)

La sortie non diffusée utilise la méthode invoke :

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1", # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        model="qwen3.8-max"  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是谁?"}
    ]
    response = llm.invoke(messages)
    print(response.json())

if __name__ == "__main__":
    get_response()

Le résultat suivant est renvoyé :

{
    "content": "我是来自阿里云的大规模语言模型,我叫千问。",
    "additional_kwargs": {},
    "response_metadata": {
        "token_usage": {
            "completion_tokens": 16,
            "prompt_tokens": 22,
            "total_tokens": 38
        },
        "model_name": "qwen-plus",
        "system_fingerprint": "",
        "finish_reason": "stop",
        "logprobs": null
    },
    "type": "ai",
    "name": null,
    "id": "run-xxx",
    "example": false,
    "tool_calls": [],
    "invalid_tool_calls": []
}

Sortie en flux continu (streaming)

La sortie en flux continu utilise la méthode stream . Vous n'avez pas besoin de configurer séparément un paramètre de flux.

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",   # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        model="qwen3.8-max",   # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        stream_usage=True
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是谁?"},
    ]
    response = llm.stream(messages)
    for chunk in response:
        print(chunk.model_dump_json())

if __name__ == "__main__":
    get_response()

Le résultat suivant est renvoyé :

{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "我是", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "来自", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "阿里", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "云", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "的大规模语言模型", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": ",我叫通", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "义千问。", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {"finish_reason": "stop"}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": {"input_tokens": 22, "output_tokens": 16, "total_tokens": 38}, "tool_call_chunks": []}

Pour plus de détails sur la configuration des paramètres, consultez la section Paramètres de requête . Les paramètres sont définis dans l'objet ChatOpenAI.

Appel via HTTP

Vous pouvez appeler Model Studio via des requêtes HTTP et recevoir des réponses structurées de la même manière que les réponses HTTP OpenAI.

Prérequis

  • Vous avez activé Model Studio et obtenu une clé API. Pour obtenir des instructions, consultez la rubrique Obtenir une clé API.
  • (Recommandé) Configurez la clé API en tant que variable d'environnement afin de réduire les risques d'exposition de la clé. Vous pouvez également la configurer directement dans le code, mais cela augmente les risques d'exposition.

Endpoint

Singapore: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Virginia: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Beijing: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Hong Kong (China): POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions

Exemples de requêtes

Les exemples suivants utilisent des commandes cURL pour appeler l'API.

RemarqueSi vous n'avez pas configuré votre clé API en tant que variable d'environnement, remplacez $DASHSCOPE_API_KEY par votre clé API réelle.

Sortie non diffusée (non-streaming)

# 以下为新加坡地域URL,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是谁?"
        }
    ]
}'

Le résultat suivant est renvoyé :

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "我是来自阿里云的大规模语言模型,我叫千问。"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 11,
        "completion_tokens": 16,
        "total_tokens": 27
    },
    "created": 1715252778,
    "system_fingerprint": "",
    "model": "qwen3.8-max",
    "id": "chatcmpl-xxx"
}

Sortie en flux continu (streaming)

Pour utiliser la sortie en flux continu, définissez le paramètre stream sur true dans le corps de la requête.

# 以下为新加坡地域URL,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是谁?"
        }
    ],
    "stream":true
}'

Le résultat suivant est renvoyé :

data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"finish_reason":null,"delta":{"content":"我是"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"来自"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"阿里"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"云的大规模语言模型"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":",我叫千问。"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":""},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: [DONE]

Pour plus de détails sur les paramètres, consultez la section Paramètres de requête .

Réponse d'erreur

Lorsqu'une requête échoue, la réponse inclut les champs code et message indiquant la cause :

{
    "error": {
        "message": "Incorrect API key provided. ",
        "type": "invalid_request_error",
        "param": null,
        "code": "invalid_api_key"
    }
}

Configuration d'un client tiers

Vous pouvez appeler les modèles Model Studio depuis n'importe quel client tiers prenant en charge le protocole compatible OpenAI. Les étapes suivantes utilisent le client Zhipu à titre d'exemple :

  1. Dans les paramètres du fournisseur du client, sélectionnez Custom provider.

  2. Base URL : Saisissez l'URL de base utilisée par le SDK OpenAI pour votre région. Pour connaître l'URL de base de chaque région, consultez la section BASE_URL . L'URL de base se termine par /compatible-mode/v1 et n'inclut pas /chat/completions . Étant donné que les URL de base diffèrent selon les régions, utilisez celle correspondant à la région de votre clé API.

    Par exemple, pour la région Singapour, saisissez https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 . Remplacez {WorkspaceId} par votre ID d'espace de travail, que vous trouverez sur la page des détails de l'espace de travail dans la console Model Studio. Le domaine hérité https://dashscope.aliyuncs.com reste disponible, mais utilisez autant que possible le domaine spécifique à l'espace de travail.

  3. API Key : Saisissez la clé API Model Studio pour la région pointée par l'URL de base. Vous pouvez créer et obtenir une clé API sur la page de gestion des clés API de la console Model Studio.

  4. Model name : Saisissez le nom d'un grand modèle de langage prenant en charge le protocole compatible OpenAI. Pour consulter les modèles disponibles, reportez-vous à la section Modèles pris en charge . Par exemple, qwen3.7-plus . Ce nom de modèle est fourni à titre d'exemple uniquement et n'indique pas que le modèle offre un quota gratuit.

  5. Enregistrez la configuration et démarrez une conversation pour vérifier que le client tiers peut appeler le modèle.

Un appel peut renvoyer le code HTTP 400 avec error.message défini sur current user api does not support http call et error.type défini sur invalid_request_error . Cette erreur signifie que le modèle que vous avez saisi ne prend pas en charge les appels HTTP via l'interface compatible OpenAI. Remplacez-le par un modèle issu de la section Modèles pris en charge et réessayez.

Codes d'erreur

Error code

Description

400 - Invalid Request Error

La requête n'est pas valide. Consultez le message d'erreur pour plus de détails.

401 - Incorrect API key provided

La clé API est incorrecte.

429 - Rate limit reached for requests

Limite QPS ou QPM dépassée.

429 - You exceeded your current quota, please check your plan and billing details

Quota dépassé ou compte impayé.

500 - The server had an error while processing your request

Erreur serveur.

503 - The engine is currently overloaded, please try again later

Serveur surchargé. Réessayez ultérieurement.