Alibaba Cloud Model Studio lets you call models through APIs. You can connect using OpenAI-compatible interfaces or the DashScope SDK.
This topic uses Qwen as an example to guide you through the process of calling a model API. You will learn how to:
Get an API key
Set up your local development environment
Call the Qwen API
Account settings
Create an account: If you do not have an Alibaba Cloud account, create one first.
Select a region and deployment mode: Model Studio is available in the Singapore, US (Virginia), and China (Beijing) regions. Your choice of region affects the model service's response speed, cost, available models, and default throttling. For more information, see Select region and deployment mode.
Complete account verification: This step is required only if you want to activate the service in the China (Beijing) region. You can skip this step if you activate the service in the Singapore or US (Virginia) region.
Use your Alibaba Cloud account to complete account verification:
Choose Individual Verification or Upgrade to Enterprise, and click Verify now.
In the Additional Information section of the page that appears, select Yes for Purchase cloud resources or enable acceleration inside the Chinese mainland.
For other items, see Account verification overview.
Activate Model Studio: Use your Alibaba Cloud account to go to the Model Studio (Singapore, Virginia, or Beijing) console. After you read and agree to the Terms of Service, Model Studio is automatically activated. If the Terms of Service are not displayed, the service is already activated.
Create an API key: Go to the Key Management (Singapore, Virginia, or Beijing) page and click Create API Key. You can then use the API key to call the model.
When you create a new API key, we recommend that you set the Associated Workspace to Default workspace. To use an API key from a sub-workspace, a root account administrator must grant authorization for the model in that workspace (for example, this topic uses the
Qwen-Plusmodel). For more information, see Authorize a sub-workspace to call models.
Set the API key as an environment variable
Set your API key as an environment variable to avoid exposing the key in your code and reduce the risk of leaks.
Choose a programming language
Choose a familiar language or tool to call the model API.
Python
Step 1: Configure the Python environment
Check your Python version
Configure a virtual environment (Optional)
Install the OpenAI Python SDK or DashScope Python SDK
Step 2: Call the model API
OpenAI Python SDK
If you have installed Python and the OpenAI Python SDK, follow these steps to send your API request.
Create a new file named
hello_qwen.py.Copy the following code to
hello_qwen.pyand save the file.import os from openai import OpenAI try: client = OpenAI( # API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key # If the environment variable is not configured, replace the following line with: api_key="sk-xxx", using your Model Studio API key. api_key=os.getenv("DASHSCOPE_API_KEY"), # Note: The base_url is different for each region. The example below uses the base_url for the Singapore region. # - Singapore: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 # - US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1 # - China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1 base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", ) 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) except Exception as e: print(f"Error message: {e}") print("For more information, see the documentation: https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code")Run
python hello_qwen.pyorpython3 hello_qwen.pyfrom the command line.If the message
No such file or directoryis displayed, you must specify the full file path.After running the command, you will see the following output:
I am a large-scale language model developed by Alibaba Cloud. My name is Qwen.
DashScope Python SDK
If you have installed Python and the DashScope Python SDK, follow these steps to send your API request.
Create a new file named
hello_qwen.py.Copy the following code to
hello_qwen.pyand save the file.import os from dashscope import Generation import dashscope # Note: The base_url is different for each region. The example below uses the base_url for the Singapore region. # - Singapore: https://dashscope-intl.aliyuncs.com/api/v1 # - US (Virginia): https://dashscope-us.aliyuncs.com/api/v1 # - China (Beijing): https://dashscope.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1' messages = [ {'role': 'system', 'content': 'You are a helpful assistant.'}, {'role': 'user', 'content': 'Who are you?'} ] response = Generation.call( # API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key # If the environment variable is not configured, replace the following line with: api_key = "sk-xxx", using your Model Studio API key. api_key=os.getenv("DASHSCOPE_API_KEY"), model="qwen-plus", messages=messages, result_format="message" ) if response.status_code == 200: print(response.output.choices[0].message.content) else: print(f"HTTP status code: {response.status_code}") print(f"Error code: {response.code}") print(f"Error message: {response.message}") print("For more information, see the documentation: https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code")Run
python hello_qwen.pyorpython3 hello_qwen.pyfrom the command line.NoteThe command in this example must be run in the directory where the Python file is located. To run it from any location, specify the full file path.
After running the command, you will see the following output:
I am a large-scale language model from Alibaba Cloud. My name is Qwen.
Node.js
Step 1: Configure the Node.js environment
Check the Node.js installation status
Install the model calling SDK
Step 2: Call the model API
Create a new
hello_qwen.mjsfile.Copy the following code into the file.
import OpenAI from "openai"; try { const openai = new OpenAI( { // API keys for the Singapore, US (Virginia), and China (Beijing) regions are different. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key // If the environment variable is not configured, replace the following line with: apiKey: "sk-xxx", using your Model Studio API key. apiKey: process.env.DASHSCOPE_API_KEY, // Note: The base_url is different for each region. The example below uses the base_url for the Singapore region. // - Singapore: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 // - US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1 // - China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1 baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1" } ); const completion = await openai.chat.completions.create({ model: "qwen-plus", messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: "Who are you?" } ], }); console.log(completion.choices[0].message.content); } catch (error) { console.log(`Error message: ${error}`); console.log("For more information, see the documentation: https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code"); }Run the following command from the command line to send the API request:
node hello_qwen.mjsNoteThe command in this example must be run in the directory where the
hello_qwen.mjsfile is located. To run it from any location, specify the full file path.Make sure that the SDK is installed in the same directory as the
hello_qwen.mjsfile. If the SDK and the file are in different directories, the errorCannot find package 'openai' imported from xxxis reported.
After the command runs successfully, you will see the following output:
I am a language model from Alibaba Cloud. My name is Qwen.
Java
Step 1: Configure the Java environment
Check your Java version
Install the model calling SDK
Step 2: Call the model API
You can run the following code to call the model API.
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
// Note: The base_url is different for each region. The example below uses the base_url for the Singapore region.
// - Singapore: https://dashscope-intl.aliyuncs.com/api/v1
// - US (Virginia): https://dashscope-us.aliyuncs.com/api/v1
// - China (Beijing): https://dashscope.aliyuncs.com/api/v1
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("Who are you?")
.build();
GenerationParam param = GenerationParam.builder()
// API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace the following line with: .apiKey("sk-xxx"), using your Model Studio API key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Model list: https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
.model("qwen-plus")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("Error message: "+e.getMessage());
System.out.println("For more information, see the documentation: https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code");
}
System.exit(0);
}
}After running the code, you will see the corresponding output:
I am a large-scale language model developed by Alibaba Cloud. My name is Qwen.curl
You can call models on the Model Studio platform using the OpenAI-compatible HTTP method or the DashScope HTTP method. For a list of models, see Models.
If the environment variable is not configured, replace -H "Authorization: Bearer $DASHSCOPE_API_KEY" \ with -H "Authorization: Bearer sk-xxx" \ and use your Model Studio API key.
OpenAI compatible HTTP
The URL in the code example is for the "International (Singapore)" region. If you use a model in the "Chinese mainland (Beijing)" region, you must replace the URL with https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
You can run the following command to send an API request:
After sending the API request, you will receive the following response:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "I am a large-scale language model from Alibaba Cloud. My name is Qwen."
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 22,
"completion_tokens": 16,
"total_tokens": 38
},
"created": 1728353155,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-39799876-eda8-9527-9e14-2214d641cf9a"
}DashScope HTTP
The URL in the code example is for the Singapore region.
If you use a model in the US (Virginia) region, you must replace the URL with
https://dashscope-us.aliyuncs.com/api/v1/services/aigc/text-generation/generation.If you use a model in the China (Beijing) region, you must replace the URL with
https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation.
You can run the following command to send an API request:
After sending the API request, you will receive the following response:
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "I am a large-scale language model from Alibaba Cloud. My name is Qwen."
}
}
]
},
"usage": {
"total_tokens": 38,
"output_tokens": 16,
"input_tokens": 22
},
"request_id": "87f776d7-3c82-9d39-b238-d1ad38c9b6a9"
}Other languages
Call the model API
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type RequestBody struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
}
func main() {
// Create an HTTP client
client := &http.Client{}
// Build the request body
requestBody := RequestBody{
// Model list: https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
Model: "qwen-plus",
Messages: []Message{
{
Role: "system",
Content: "You are a helpful assistant.",
},
{
Role: "user",
Content: "Who are you?",
},
},
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
// Create a POST request. Note: The base_url is different for each region. The example below uses the base_url for the Singapore region.
// - Singapore: https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
// - US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
// - China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
req, err := http.NewRequest("POST", "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
// Set the request header
// API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace the following line with: apiKey := "sk-xxx", using your Model Studio API key.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
// Send the request
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// Read the response body
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
// Print the response content
fmt.Printf("%s\n", bodyText)
}
<?php
// Note: The base_url is different for each region. The example below uses the base_url for the Singapore region.
// - Singapore: https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
// - US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
// - China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
$url = 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions';
// API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace the following line with: $apiKey = "sk-xxx"; using your Model Studio API key.
$apiKey = getenv('DASHSCOPE_API_KEY');
// Set the request header
$headers = [
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json'
];
// Set the request body
$data = [
"model" => "qwen-plus",
"messages" => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "Who are you?"
]
]
];
// Initialize a 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);
// Execute the cURL session
$response = curl_exec($ch);
// Check for errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
// Close the cURL resource
curl_close($ch);
// Output the response
echo $response;
?>using System.Net.Http.Headers;
using System.Text;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
// API keys for the Singapore, US (Virginia), and China (Beijing) regions are not interchangeable. Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace the following line with: string? apiKey = "sk-xxx"; using your Model Studio API key.
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("API Key not set. Make sure the 'DASHSCOPE_API_KEY' environment variable is set.");
return;
}
// Note: The base_url is different for each region. The example below uses the base_url for the Singapore region.
// - Singapore: https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
// - US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
// - China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
string url = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions";
// Model list: https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
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);
// Output 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 the request header
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}";
}
}
}
}API reference
FAQ
What to do if the error Model.AccessDenied is reported after I call a model API?
A: This error occurs because you are using an API key from a sub-workspace. A sub-workspace cannot access applications or models in the default workspace. To use a model such as Qwen-Plus, a root account administrator must grant authorization to the sub-workspace, see Set model calling permissions.
Next steps
View more models | The example code uses the qwen-plus model. Model Studio also supports other Qwen models. For a list of supported models and their corresponding API references, see Models. |
Learn about advanced usage | The sample code covers only basic Q&A. To learn about advanced features of the Qwen API, such as streaming output, structured output, and function calling, see the Overview of text generation models folder. |
Try the model online | If you want to interact with the model through a dialog box, similar to the experience on Qwen Chat, you can visit the Playground (Singapore, Virginia, or Beijing). |











