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.comvershttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Région Singapour : migrez de
https://dashscope-intl.aliyuncs.comvershttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com - Région Hong Kong (Chine) : migrez de
https://cn-hongkong.dashscope.aliyuncs.comvershttps://{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 |
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: |
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: 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 |
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 :
-
Dans les paramètres du fournisseur du client, sélectionnez Custom provider.
-
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/v1et 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.comreste disponible, mais utilisez autant que possible le domaine spécifique à l'espace de travail. -
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.
-
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. -
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. |