Model Studio provides API access to models through OpenAI-compatible interfaces and the DashScope SDK.
This topic guides you through calling the Qwen API. You'll learn how to:
-
Get an API key
-
Set up your local development environment
-
Call the Qwen API
Account setup
-
Create an account: If you don't have an Alibaba Cloud account, create one.
If you encounter issues, see Register an Alibaba Cloud account.
-
Activate Model Studio: Use your Alibaba Cloud account to go to Alibaba Cloud Model Studio. Read and accept the Terms of Service to activate the service. If no Terms of Service dialog appears, the service is already activated.
-
Get an API key: Go to the Key Management page and click Create API key. Then use the API key to call models.
Set your API key as an environment variable
Store your API key in an environment variable to avoid hardcoding credentials and reduce security risks.
Choose a development language
Select a language or tool to call model APIs.
Python
Step 1: Set up Python
Check Python version
Set up a virtual environment (Optional)
Install the OpenAI Python SDK or DashScope Python SDK
Step 2: Call the API
OpenAI Python SDK
Send an API request:
-
Create a file named
hello_qwen.py. -
Copy this code into
hello_qwen.pyand save it.import os from openai import OpenAI try: client = OpenAI( # If the environment variable is not configured, replace with: api_key="sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), 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("See: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code") -
Run
python hello_qwen.pyorpython3 hello_qwen.pyfrom the command line.If you see
No such file or directory, specify the full path to the file.The output is:
I am a large-scale language model developed by Alibaba Cloud. My name is Qwen.
DashScope Python SDK
If you installed Python and the DashScope Python SDK, follow these steps to send an API request.
-
Create a file named
hello_qwen.py. -
Copy this code into
hello_qwen.pyand save it.import os from dashscope import Generation import dashscope 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( # Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key # If the environment variable is not configured, replace with: api_key = "sk-xxx" 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("See: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code") -
Run
python hello_qwen.pyorpython3 hello_qwen.pyfrom the command line.NoteRun this command from the directory containing hello_qwen.py. To run it from any location, specify the full path to the file.
The output is:
I am a large-scale language model from Alibaba Cloud. My name is Qwen.
Node.js
Step 1: Set up your Node.js environment
Check your Node.js installation
Install the model calling SDK
Step 2: Call the model API
-
Create a file named
hello_qwen.mjs. -
Copy this code into the file.
import OpenAI from "openai"; try { const openai = new OpenAI( { // Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key // If the environment variable is not configured, replace with: apiKey: "sk-xxx" apiKey: process.env.DASHSCOPE_API_KEY, // Note: Base URLs are not interchangeable across regions. This example uses Singapore. // - 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("See: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code"); } -
Send the API request:
node hello_qwen.mjsNote-
Run this command from the directory containing
hello_qwen.mjs. To run it from any location, specify the full path to the file. -
Ensure the SDK is installed in the same directory as
hello_qwen.mjs. If they are in different directories, you will seeCannot find package 'openai' imported from xxx.
After successful execution, you will see the output:
I am a language model from Alibaba Cloud. My name is Qwen. -
Java
Step 1: Set up your Java environment
Check your Java version
Install the model calling SDK
Step 2: Call the API
Run this 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: Base URLs are not interchangeable across regions. This example uses Singapore.
// - 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()
// Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace with: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Model list: https://www.alibabacloud.com/help/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("See: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code");
}
System.exit(0);
}
}
The output is:
I am a large-scale language model developed by Alibaba Cloud. My name is Qwen.
curl
You can call models on Model Studio using either OpenAI-compatible HTTP endpoints or DashScope HTTP endpoints. For a list of models, see Model list.
If DASHSCOPE_API_KEY isn't set, replace -H "Authorization: Bearer $DASHSCOPE_API_KEY" with -H "Authorization: Bearer sk-xxx".
OpenAI-compatible HTTP
The URL in this example uses the Singapore region. If you use the China (Beijing) region, replace the URL with https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
Send the API request:
After sending the API request, you receive this 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 this example uses the Singapore region.
-
If you use the US (Virginia) region, replace the URL with
https://dashscope-us.aliyuncs.com/api/v1/services/aigc/text-generation/generation. -
If you use the China (Beijing) region, replace the URL with
https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation.
Send the API request:
After sending the API request, you receive this 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/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: Base URLs are not interchangeable across regions. This example uses Singapore.
// - 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 request headers
// Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace with: apiKey := "sk-xxx"
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
fmt.Printf("%s\n", bodyText)
}
<?php
// Note: Base URLs are not interchangeable across regions. This example uses Singapore.
// - 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';
// Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace with: $apiKey = "sk-xxx"
$apiKey = getenv('DASHSCOPE_API_KEY');
// Set request headers
$headers = [
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json'
];
// Set 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)
{
// Singapore, US (Virginia), and China (Beijing) API keys are not interchangeable. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key
// If the environment variable is not configured, replace with: string? apiKey = "sk-xxx"
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: Base URLs are not interchangeable across regions. This example uses Singapore.
// - 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/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 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);
// Handle the response
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"Request failed: {response.StatusCode}";
}
}
}
}API reference
-
For the input and output parameters, see Qwen API reference.
-
For other models, see Model list.
FAQ
How do I fix the Model.AccessDenied error after calling the model API?
A: This error occurs when you use an API key from a sub-workspace. A sub-workspace cannot access applications or models in the default workspace. Use your Alibaba Cloud account to authorize the sub-workspace, see Permissions.
Next steps
|
Explore more models |
The example code uses |
|
Learn advanced features |
The example code covers basic Q&A only. To learn more about the Qwen API, such as streaming output, structured output, and function calling, see Text generation model overview. |
|
Try models in the browser |
If you want to interact with models through a dialog box, like on Qwen Chat, go to the Playground (Singapore, US (Virginia), or China (Beijing)). |











