Request body | Text inputPythonimport os
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# The preceding URL is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Who are you?'}
]
response = dashscope.Generation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-plus", # This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
messages=messages,
result_format='message'
)
print(response)
Java// Use DashScope SDK version 2.12.0 or later.
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.utils.JsonUtils;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
// The preceding URL is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.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()
// If the environment variable is not configured, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/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(JsonUtils.toJson(result));
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// Use a logging framework to record the exception information.
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}
PHP (HTTP)<?php
// The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
$url = "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
$apiKey = getenv('DASHSCOPE_API_KEY');
$data = [
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
"model" => "qwen-plus",
"input" => [
"messages" => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "Who are you?"
]
]
],
"parameters" => [
"result_format" => "message"
]
];
$jsonData = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode == 200) {
echo "Response: " . $response;
} else {
echo "Error: " . $httpCode . " - " . $response;
}
curl_close($ch);
?>
Node.js (HTTP)DashScope does not provide an SDK for the Node.js environment. To make calls using the OpenAI Node.js SDK, see the OpenAI section in this topic. import fetch from 'node-fetch';
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
const apiKey = process.env.DASHSCOPE_API_KEY;
const data = {
model: "qwen-plus", // This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
input: {
messages: [
{
role: "system",
content: "You are a helpful assistant."
},
{
role: "user",
content: "Who are you?"
}
]
},
parameters: {
result_format: "message"
}
};
fetch('https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation', {
// The preceding URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log(JSON.stringify(data));
})
.catch(error => {
console.error('Error:', error);
});
C# (HTTP)using System.Net.Http.Headers;
using System.Text;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
// If the environment variable is not configured, replace the following line with your Model Studio API key: string? apiKey = "sk-xxx";
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-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;
}
// Set the request URL and content.
// The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
string url = "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
string jsonContent = @"{
""model"": ""qwen-plus"",
""input"": {
""messages"": [
{
""role"": ""system"",
""content"": ""You are a helpful assistant.""
},
{
""role"": ""user"",
""content"": ""Who are you?""
}
]
},
""parameters"": {
""result_format"": ""message""
}
}";
// Send the request and get the response.
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// Print the result.
Console.WriteLine(result);
}
private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
{
using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
{
// Set the request headers.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// Send the request and get the response.
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// Process the response.
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"Request failed: {response.StatusCode}";
}
}
}
}
Go (HTTP)DashScope does not provide an SDK for Go. To make calls with the OpenAI Go SDK, refer to the OpenAI-Go section of this topic. package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type Input struct {
Messages []Message `json:"messages"`
}
type Parameters struct {
ResultFormat string `json:"result_format"`
}
type RequestBody struct {
Model string `json:"model"`
Input Input `json:"input"`
Parameters Parameters `json:"parameters"`
}
func main() {
// Create an HTTP client.
client := &http.Client{}
// Build the request body.
requestBody := RequestBody{
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
Model: "qwen-plus",
Input: Input{
Messages: []Message{
{
Role: "system",
Content: "You are a helpful assistant.",
},
{
Role: "user",
Content: "Who are you?",
},
},
},
Parameters: Parameters{
ResultFormat: "message",
},
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
// Create a POST request.
// The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
req, err := http.NewRequest("POST", "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
// Set the request headers.
// If the environment variable is not configured, replace the following line with your Model Studio API key: apiKey := "sk-xxx"
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-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)
}
curlNote that the API keys for the Singapore and Beijing regions are different. For more information, see Preparations: Obtain and configure an API key The following example uses the URL for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation. curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-plus",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters": {
"result_format": "message"
}
}'
Streaming outputFor more information, see Streaming output. Pythonimport os
import dashscope
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: 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?'}
]
responses = dashscope.Generation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv('DASHSCOPE_API_KEY'),
# This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
model="qwen-plus",
messages=messages,
result_format='message',
stream=True,
incremental_output=True
)
for response in responses:
print(response)
Javaimport java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.utils.JsonUtils;
import io.reactivex.Flowable;
import java.lang.System;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static void handleGenerationResult(GenerationResult message) {
System.out.println(JsonUtils.toJson(message));
}
public static void streamCallWithMessage(Generation gen, Message userMsg)
throws NoApiKeyException, ApiException, InputRequiredException {
GenerationParam param = buildGenerationParam(userMsg);
Flowable<GenerationResult> result = gen.streamCall(param);
result.blockingForEach(message -> handleGenerationResult(message));
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// If the environment variable is not configured, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
.model("qwen-plus")
.messages(Arrays.asList(userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.incrementalOutput(true)
.build();
}
public static void main(String[] args) {
try {
// The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with: https://dashscope.aliyuncs.com/api/v1
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
streamCallWithMessage(gen, userMsg);
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}
curl# ======= Important =======
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
# === Delete this comment before execution ====
curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-SSE: enable" \
--data '{
"model": "qwen-plus",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters": {
"result_format": "message",
"incremental_output":true
}
}'
Image inputFor more information about using large models to analyze images, see Visual understanding. Pythonimport os
import dashscope
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/rabbit.png"},
{"text": "What are these?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
api_key=os.getenv('DASHSCOPE_API_KEY'),
# This example uses qwen-vl-max. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
model='qwen-vl-max',
messages=messages
)
print(response)
Java// Copyright (c) Alibaba, Inc. and its affiliates.
import java.util.Arrays;
import java.util.Collections;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1"; // The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1;
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/rabbit.png"),
Collections.singletonMap("text", "What are these?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// If the environment variable is not configured, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
// The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// This example uses qwen-vl-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
.model("qwen-vl-plus")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curlAPI keys are different for the Singapore and Beijing regions. For more information, see Preparations: Obtain and configure an API key The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/rabbit.png"},
{"text": "What are these?"}
]
}
]
}
}'
Video inputThe following code shows an example of how to input video frames. For more information, such as how to input video files, see Visual understanding. Pythonimport os
# DashScope SDK version 1.20.10 or later is required.
import dashscope
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# If the model is from the Qwen2.5-VL series and an image list is provided, you can set the fps parameter. This indicates that the image list is extracted from the original video every 1/fps seconds.
{"video":["https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"text": "Describe the specific process in this video"}]}]
response = dashscope.MultiModalConversation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen2.5-vl-72b-instruct', # This example uses qwen2.5-vl-72b-instruct. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/models.
messages=messages
)
print(response["output"]["choices"][0]["message"].content[0]["text"])
Java// DashScope SDK version 2.18.3 or later is required.
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen2.5-vl-72b-instruct"; // This example uses qwen2.5-vl-72b-instruct. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/models.
public static void videoImageListSample() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage systemMessage = MultiModalMessage.builder()
.role(Role.SYSTEM.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant.")))
.build();
// If the model is from the Qwen2.5-VL series and an image list is provided, you can set the fps parameter. This indicates that the image list is extracted from the original video every 1/fps seconds.
Map<String, Object> params = Map.of(
"video", Arrays.asList("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"),
"fps",2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "Describe the specific process in this video")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// If the environment variable is not configured, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(systemMessage, userMessage)).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
videoImageListSample();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curlThe API keys for the Singapore and Beijing regions are different. For more information, see Preparations: Obtain and configure an API key The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen2.5-vl-72b-instruct",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"
],
"fps":2
},
{
"text": "Describe the specific process in this video"
}
]
}
]
}
}'
Tool callingFor the complete Function calling workflow code, see Overview of text generation models. Pythonimport os
import dashscope
# The following is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
tools = [
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Useful when you want to know the current time.",
"parameters": {}
}
},
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Useful when you want to query the weather in a specific city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "A city or district, such as Beijing, Hangzhou, or Yuhang District."
}
}
},
"required": [
"location"
]
}
}
]
messages = [{"role": "user", "content": "What's the weather like in Hangzhou?"}]
response = dashscope.Generation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv('DASHSCOPE_API_KEY'),
# This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
model='qwen-plus',
messages=messages,
tools=tools,
result_format='message'
)
print(response)
Javaimport java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.alibaba.dashscope.aigc.conversation.ConversationParam.ResultFormat;
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.tools.FunctionDefinition;
import com.alibaba.dashscope.tools.ToolFunction;
import com.alibaba.dashscope.utils.JsonUtils;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.victools.jsonschema.generator.Option;
import com.github.victools.jsonschema.generator.OptionPreset;
import com.github.victools.jsonschema.generator.SchemaGenerator;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfig;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder;
import com.github.victools.jsonschema.generator.SchemaVersion;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public class GetWeatherTool {
private String location;
public GetWeatherTool(String location) {
this.location = location;
}
public String call() {
return location+" is sunny today.";
}
}
public class GetTimeTool {
public GetTimeTool() {
}
public String call() {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String currentTime = "Current time: " + now.format(formatter) + ".";
return currentTime;
}
}
public static void SelectTool()
throws NoApiKeyException, ApiException, InputRequiredException {
SchemaGeneratorConfigBuilder configBuilder =
new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON);
SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES)
.without(Option.FLATTENED_ENUMS_FROM_TOSTRING).build();
SchemaGenerator generator = new SchemaGenerator(config);
ObjectNode jsonSchema_weather = generator.generateSchema(GetWeatherTool.class);
ObjectNode jsonSchema_time = generator.generateSchema(GetTimeTool.class);
FunctionDefinition fdWeather = FunctionDefinition.builder().name("get_current_weather").description("Get the weather for a specified region")
.parameters(JsonUtils.parseString(jsonSchema_weather.toString()).getAsJsonObject()).build();
FunctionDefinition fdTime = FunctionDefinition.builder().name("get_current_time").description("Get the current time")
.parameters(JsonUtils.parseString(jsonSchema_time.toString()).getAsJsonObject()).build();
Message systemMsg = Message.builder().role(Role.SYSTEM.getValue())
.content("You are a helpful assistant. When asked a question, use tools wherever possible.")
.build();
Message userMsg = Message.builder().role(Role.USER.getValue()).content("Weather in Hangzhou").build();
List<Message> messages = new ArrayList<>();
messages.addAll(Arrays.asList(systemMsg, userMsg));
GenerationParam param = GenerationParam.builder()
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
.model("qwen-plus")
.messages(messages)
.resultFormat(ResultFormat.MESSAGE)
.tools(Arrays.asList(
ToolFunction.builder().function(fdWeather).build(),
ToolFunction.builder().function(fdTime).build()))
.build();
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
// The preceding URL is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
GenerationResult result = gen.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
SelectTool();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(String.format("Exception %s", e.getMessage()));
}
System.exit(0);
}
}
curlThe API keys for the Singapore and Beijing regions are different. For more information, see Preparations: Obtain and configure an API key The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation. curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-plus",
"input": {
"messages": [{
"role": "user",
"content": "What's the weather like in Hangzhou?"
}]
},
"parameters": {
"result_format": "message",
"tools": [{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Useful when you want to know the current time.",
"parameters": {}
}
},{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Useful when you want to query the weather in a specific city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "A city or district, such as Beijing, Hangzhou, or Yuhang District."
}
}
},
"required": ["location"]
}
}]
}
}'
Asynchronous invocation# Your DashScope Python SDK version must be 1.19.0 or later.
import asyncio
import platform
import os
import dashscope
from dashscope.aigc.generation import AioGeneration
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# The preceding URL is the base URL for the Singapore region. If you use a model in the China (Beijing) region, replace the base URL with: https://dashscope.aliyuncs.com/api/v1
async def main():
response = await AioGeneration.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv('DASHSCOPE_API_KEY'),
# This example uses qwen-plus. You can replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/en/model-studio/getting-started/models.
model="qwen-plus",
messages=[{"role": "user", "content": "Who are you?"}],
result_format="message",
)
print(response)
if platform.system() == "Windows":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(main())
Text extractionFor more information about text extraction with the Qwen-OCR model, see Text extraction. Python# use [pip install -U dashscope] to update sdk
import os
import dashscope
# The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role":"user",
"content":[
{
"image":"https://prism-test-data.oss-cn-hangzhou.aliyuncs.com/image/car_invoice/car-invoice-img00040.jpg",
"min_pixels": 3136,
"max_pixels": 6422528,
}
]
}
]
params = {
"ocr_options":{
# Set a built-in task for information extraction. You do not need to provide a prompt. The model uses the built-in prompt for the task.
"task": "key_information_extraction",
"task_config": {
"result_schema": {
"Seller Name": "",
"Buyer Name": "",
"Price Before Tax": "",
"Organization Code": "",
"Invoice Code": ""
}
}
}
}
response = dashscope.MultiModalConversation.call(model='qwen-vl-ocr',
messages=messages,
**params,
# The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key=os.getenv('DASHSCOPE_API_KEY'))
print(response.output.choices[0].message.content[0]["ocr_result"])
Javaimport java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.OcrOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.google.gson.JsonObject;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://prism-test-data.oss-cn-hangzhou.aliyuncs.com/image/car_invoice/car-invoice-img00040.jpg");
// The maximum pixel threshold for the input image. If this value is exceeded, the image is scaled down proportionally until the total number of pixels is less than max_pixels.
map.put("max_pixels", "6422528");
// The minimum pixel threshold for the input image. If the total number of pixels is less than this value, the image is scaled up proportionally until the total number of pixels is greater than min_pixels.
map.put("min_pixels", "3136");
// Enable the automatic image rotation feature.
map.put("enable_rotate", true);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map
)).build();
// Create the main JSON object.
JsonObject resultSchema = new JsonObject();
resultSchema.addProperty("Seller Name", "");
resultSchema.addProperty("Buyer Name", "");
resultSchema.addProperty("Price Before Tax", "");
resultSchema.addProperty("Organization Code", "");
resultSchema.addProperty("Invoice Code", "");
// Set a built-in task for information extraction. You do not need to provide a prompt. The model uses the built-in prompt for the task.
OcrOptions ocrOptions = OcrOptions.builder()
.task(OcrOptions.Task.KEY_INFORMATION_EXTRACTION)
.taskConfig(OcrOptions.TaskConfig.builder()
.resultSchema(resultSchema)
.build())
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// If the environment variable is not configured, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-vl-ocr")
.message(userMessage)
.ocrOptions(ocrOptions)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("ocr_result"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curlThe API keys for the Singapore and Beijing regions are different. For more information, see Preparations: Obtain and configure an API key The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-vl-ocr",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"image": "https://prism-test-data.oss-cn-hangzhou.aliyuncs.com/image/car_invoice/car-invoice-img00040.jpg",
"min_pixels": 3136,
"max_pixels": 6422528,
"enable_rotate": true
}
]
}
]
},
"parameters": {
"ocr_options": {
"task": "key_information_extraction",
"task_config": {
"result_schema": {
"Seller Name": "",
"Buyer Name": "",
"Price Before Tax": "",
"Organization Code": "",
"Invoice Code": ""
}
}
}
}
}
'
Document understandingPythonimport os
import dashscope
# Currently, the qwen-long-latest model can be called only in the China (Beijing) region.
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
messages = [
{'role': 'system', 'content': 'you are a helpful assisstant'},
# Replace '{FILE_ID}' with the file ID from your conversation scenario.
{'role':'system','content':f'fileid://{FILE_ID}'},
{'role': 'user', 'content': 'What is this article about?'}]
response = dashscope.Generation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-long-latest",
messages=messages,
result_format='message'
)
print(response)
Javaimport os
import dashscope
# Currently, the qwen-long-latest model can be called only in the China (Beijing) region.
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
messages = [
{'role': 'system', 'content': 'you are a helpful assisstant'},
# Replace '{FILE_ID}' with the file ID from your conversation scenario.
{'role':'system','content':f'fileid://{FILE_ID}'},
{'role': 'user', 'content': 'What is this article about?'}]
response = dashscope.Generation.call(
# If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-long-latest",
messages=messages,
result_format='message'
)
print(response)
curlCurrently, the document understanding model is available only in the Beijing region. Replace {FILE_ID} with the file ID from your conversation scenario. curl --location "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-long-latest",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "system",
"content": "fileid://{FILE_ID}"
},
{
"role": "user",
"content": "What is this article about?"
}
]
},
"parameters": {
"result_format": "message"
}
}'
|
model string (Required) The name of the model to use. Supported models: Qwen large language models (commercial and open-source versions), Qwen-VL, and Qwen-Coder. For more information about model names and billing, see Model List. |
messages array (Required) The context for the model, arranged in conversational order. When you make an HTTP call, place messages in the input object. Message types System Message object (Optional) A system message that defines the role, tone, task objective, or constraints for the model. It is usually the first element in the messages array. Do not set a system message for QwQ models. Setting a system message for QVQ or Qwen-OCR models has no effect. Properties content string (Required) The message content. role string (Required) The role of the message. The value must be system. User Message object (Required) A user message that provides questions, instructions, or context to the model. Properties content string or array (Required) The message content. The value is a string for text-only input. The value is an array for multimodal input, such as images, or when explicit caching is enabled. Properties text string (Required) The text input. image string (Optional) The image file used as input for image understanding with a Qwen-VL model. The value can be the URL or local path of the image. For more information about how to use a local file as input, see Local file (Qwen-VL) or Local file (QVQ). Example: {"image":"https://xxxx.jpeg"} enable_rotate boolean (Optional) Defaults to false Specifies whether to automatically correct the image orientation when you call the Qwen-OCR model. Valid values: Example: {"image":"https://xxxx.jpeg","enable_rotate": True} video array or string (Optional) The video used as input for a Qwen-VL model or a QVQ model. For more information about how to use a local file as input, see Local file (Qwen-VL) or Local file (QVQ). Examples: Image list: {"video":["https://xx1.jpg",...,"https://xxn.jpg"]} Video file: {"video":"https://xxx.mp4"}
Some Qwen-VL models support video file input. For more information, see Video understanding (Qwen-VL). QVQ models can directly accept video files as input. fps float (Optional) Specifies the number of frames extracted per second. This parameter has two functions: This parameter controls the frame extraction frequency for video inputs. One frame is extracted every fps1 seconds. This applies to the Qwen-VL model and the QVQ model. This feature informs the model of the time interval between adjacent frames to help the model better understand the temporal dynamics of a video. It supports both video files and image lists as input and is suitable for scenarios such as event time localization or creating segmented content summaries. This is supported by the Qwen2.5-VL, Qwen3-VL, and QVQ models.
Qwen2.5-VL series models qwen-vl-max series: qwen-vl-max-latest, qwen-vl-max-2025-04-08 and later models. qwen-vl-plus series: qwen-vl-plus-latest, qwen-vl-plus-2025-01-25 and later models. Open source series: qwen2.5-vl models.
This parameter is used with the video parameter. The value must be in the range of (0.1, 10). The default value is 2.0. Examples: To pass an image list: {"video":["https://xx1.jpg",...,"https://xxn.jpg"],"fps":2} To pass a video file: {"video": "https://xx1.mp4","fps":2}
A higher `fps` value is suitable for scenarios with high-speed motion, such as sporting events and action movies. A lower `fps` value is suitable for long videos or scenarios where the content is relatively static. The OpenAI-compatible protocol does not support this parameter. By default, one frame is extracted from a video file every 0.5 seconds to generate an image list. min_pixels integer (Optional) This parameter is supported by the Qwen-OCR, QVQ, and Qwen-VL models. It specifies the minimum pixel count for an input image. If the pixel count of the input image is less than min_pixels, the image is enlarged until its pixel count exceeds min_pixels. Value range for min_pixels Qwen3-VL: Default: 65536. Minimum: 4096. qwen-vl-max-0813, qwen-vl-plus-0815, and : The default and minimum value is 4096.
Qwen-OCR, QVQ, and other Qwen2.5-VL models: The default and minimum value is 3136.
Example: {"image":"https://xxxx.jpeg","min-pixels": 65536} max_pixels integer (Optional) This parameter is supported by the Qwen-OCR, QVQ, and Qwen-VL models. It specifies the maximum pixel count for an input image. If the pixel count is between [min_pixels, max_pixels], the model uses the original image. If the pixel count is larger than max_pixels, the image is reduced until its pixel count is less than max_pixels. Value range for max_pixels For Qwen-OCR models: Default: 6422528. Maximum: 23520000. For Qwen-VL and QVQ models, this depends on the following conditions:
Example: {"image":"https://xxxx.jpeg","max-pixels": 2621440} cache_control object (Optional) Enables the explicit cache feature. This parameter is supported only by models that use the explicit cache feature. Properties type string(Required) The value must be ephemeral. role string (Required) The role of the user message. The value must be user. Assistant Message object (Optional) The model's response to the user message. Properties content string (Optional) The message content. This parameter is optional only when the tool_calls parameter is specified in the assistant message. role string (Required) The value must be assistant. partial boolean (Optional) Specifies whether to enable partial mode. For more information, see Partial mode. Supported models Qwen-Max series qwen3-max, qwen3-max-2025-09-23, qwen3-max-preview (non-thinking mode), qwen-max, qwen-max-latest, and snapshot models from qwen-max-2025-01-25 or later Qwen-Plus series (non-thinking mode) qwen-plus, qwen-plus-latest, and snapshot models from qwen-plus-2025-01-25 or later Qwen-Flash series (non-thinking mode) qwen-flash, and snapshot models from qwen-flash-2025-07-28 or later Qwen-Coder series qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-480b-a35b-instruct, qwen3-coder-30b-a3b-instruct Qwen-VL series qwen3-vl-plus series (non-thinking mode) qwen3-vl-plus, and snapshot models from qwen3-vl-plus-2025-09-23 or later qwen3-vl-flash series (non-thinking mode) qwen3-vl-flash, and snapshot models from qwen3-vl-flash-2025-10-15 or later qwen-vl-max series qwen-vl-max, qwen-vl-max-latest, and snapshot models from qwen-vl-max-2025-04-08 or later qwen-vl-plus series qwen-vl-plus, qwen-vl-plus-latest, and snapshot models from qwen-vl-plus-2025-01-25 or later
Qwen-Turbo series (non-thinking mode) qwen-turbo, qwen-turbo-latest, and snapshot models from qwen-turbo-2024-11-01 or later Qwen open-source series Qwen3 open-source models (non-thinking mode), Qwen2.5 series text models, Qwen3-VL open-source models (non-thinking mode)
tool_calls array (Optional) The tool and input parameter information that the model returns after a function calling request. This array contains one or more objects and is retrieved from the tool_calls field in the previous model response. Properties id string The ID of the tool call. type string The type of the tool. Currently, only function is supported. function object The tool and its input parameter information. Properties name string The name of the tool. arguments string The input parameter information, which is a JSON-formatted string. index integer The index of the current tool call object in the tool_calls array. Tool Message object (Optional) The output from the tool. Properties content string (Required) The output of the tool function. The value must be a string. role string (Required) The value must be tool. tool_call_id string (Optional) The ID of the tool call to which this message is a response. This ID links the tool output to the model's original request and corresponds to the `id` field in response.output.choices[0].message.tool_calls[$index]["id"]. |
temperature float (Optional) The sampling temperature controls the diversity of the generated text. A higher temperature value results in more diverse text. A lower value results in more deterministic text. Value range: [0, 2) For HTTP calls, place the temperature parameter in the parameters object. Do not modify the default temperature value for QVQ models. |
top_p float (Optional) This parameter specifies the probability threshold for nucleus sampling and controls the diversity of the generated text. A higher top_p value generates more diverse text. A lower value generates more deterministic text. Value range: (0, 1.0]. Default top_p values Qwen3 (non-thinking mode), Qwen3-Instruct series, Qwen3-Coder series, qwen-max series, qwen-plus series (non-thinking mode), qwen-flash series (non-thinking mode), qwen-turbo series (non-thinking mode), qwen open-source series, qwen-vl-max-2025-08-13, Qwen3-VL (non-thinking mode): 0.8. : 0.01. qwen-vl-plus series, qwen-vl-max, qwen-vl-max-latest, qwen-vl-max-2025-04-08, qwen2.5-vl-3b-instruct, qwen2.5-vl-7b-instruct, qwen2.5-vl-32b-instruct, qwen2.5-vl-72b-instruct: 0.001. QVQ series, qwen-vl-plus-2025-07-10, qwen-vl-plus-2025-08-15 : 0.5. qwen3-max-preview (thinking mode), Qwen3-Omni-Flash series: 1.0. Qwen3 (thinking mode), Qwen3-VL (thinking mode), Qwen3-Thinking, QwQ series, Qwen3-Omni-Captioner: 0.95 In the Java SDK, this parameter is named topPtop_p in the parameters object. Do not modify the default top_p value for the QVQ model. |
top_k integer (Optional) This parameter specifies the size of the candidate set for sampling during generation. For example, a value of 50 means that only the 50 tokens with the highest scores form the candidate set for sampling. A larger value increases randomness, and a smaller value increases determinism. If the value is set to None or is greater than 100, the top_k policy is disabled and only the top_p policy is active. The value must be greater than or equal to 0. Default top_k values QVQ series, qwen-vl-plus-2025-07-10, and qwen-vl-plus-2025-08-15: 10. QwQ series: 40. other qwen-vl-plus series, models released before qwen-vl-max-2025-08-13, qwen-vl-ocr, qwen2.5-omni-7b: 1. Qwen3-Omni-Flash series: 50. All other models: 20. In the Java SDK, the parameter is named topK. When you make an HTTP call, specify the parameter as top_k in the parameters object. Do not change the default top_k value for QVQ models. |
enable_thinking boolean (Optional) Specifies whether to enable thinking mode when you use a hybrid thinking model. This parameter applies to the Qwen3 and Qwen3-VL models. For more information, see Deep thinking. Valid values: true: Enabled
If this parameter is enabled, the thinking content is returned in the reasoning_content field. false: Disabled
For the default value for each model, see Supported models. In the Java SDK, the parameter is enableThinking. When you make an HTTP call, place enable_thinking in the parameters object. |
thinking_budget integer (Optional) Specifies the maximum length of the thinking process. This parameter applies to the commercial and open-source versions of the Qwen3-VL and Qwen3 models. For more information, see Limit thinking length. The default value is the maximum chain-of-thought length of the model. For more information, see Model List. For the Java SDK, the parameter is thinkingBudget. For HTTP calls, add thinking_budget to the parameters object. The default value is the model's maximum chain-of-thought length. |
enable_code_interpreter boolean (Optional) Defaults to false Specifies whether to enable the Code Interpreter feature. This feature is available only for the qwen3-max-preview model in thinking mode. For more information, see Code Interpreter. Valid values: The Java SDK does not support this parameter. For HTTP calls, you can place the enable_code_interpreter parameter in the parameters object. |
repetition_penalty float (Optional) Controls the degree of repetition in the generated text. A higher value for this parameter reduces repetition. A value of 1.0 indicates that no penalty is applied. The value must be greater than 0. In the Java SDK, use repetitionPenaltyrepetition_penalty in the parameters object. When you extract text using the qwen-vl-plus_latest, or qwen-vl-plus_2025-01-25 models, set repetition_penalty to 1.0. For the Qwen-OCR model, the default value of repetition_penalty is 1.05. Do not change this value because it significantly affects model performance. Do not change the default repetition_penalty value for the QVQ model. |
presence_penalty float (Optional) Controls the repetition of content in the generated text. The value ranges from -2.0 to 2.0. A positive value reduces repetition, and a negative value increases it. You can increase this value for scenarios that require diversity and creativity, such as creative writing or brainstorming. You can decrease this value for scenarios that require consistency and term accuracy, such as technical documents or formal text. Default presence_penalty values qwen3-max-preview (thinking mode), Qwen3 (non-thinking mode), Qwen3-Instruct series, qwen3-0.6b/1.7b/4b (thinking mode), QVQ series, qwen-max, qwen-max-latest, qwen-max-latest qwen2.5-vl series, qwen-vl-max series, qwen-vl-plus, Qwen3-VL (non-thinking mode): 1.5. qwen-vl-plus-latest, qwen-vl-plus-2025-08-15: 1.2. qwen-vl-plus-2025-01-25: 1.0. qwen3-8b/14b/32b/30b-a3b/235b-a22b (thinking mode), qwen-plus/qwen-plus-latest/2025-04-28 (thinking mode), qwen-turbo/qwen-turbo/2025-04-28 (thinking mode): 0.5. All others: 0.0. How it works If the value is positive, the model applies a penalty to tokens that already exist in the text. The penalty is applied regardless of how many times a token has appeared. This reduces the likelihood of these tokens reappearing, which in turn reduces content repetition and increases word diversity. Example Prompt: Translate the following text into Chinese: “This movie is good. The plot is good, the acting is good, the music is good, and overall, the whole movie is just good. It is really good, in fact. The plot is so good, and the acting is so good, and the music is so good.” Parameter value: 2.0: This film is exceptional. The storyline is compelling, the performances are outstanding, and the score is beautiful. Overall, the entire movie is a masterpiece. It is truly superb. The plot is brilliantly crafted, the acting is top-notch, and the music is simply divine. Parameter value: 0.0: This movie is good. The plot is good, the acting is good, and the music is also good. Overall, the whole movie is quite good. In fact, it is really great. The plot is very good, the acting is also excellent, and the music is equally wonderful. Parameter value: -2.0: This movie is good. The plot is good, the acting is good, and the music is good. Overall, the whole movie is good. It is really good, in fact. The plot is so good, the acting is so good, and the music is so good. When extracting text with the qwen-vl-plus-2025-01-25 model, set `presence_penalty` to 1.5. Do not change the default `presence_penalty` value for QVQ models. The Java SDK does not support this parameter. When you make an HTTP call, place presence_penalty in the parameters object. |
vl_high_resolution_images boolean (Optional) Defaults to false. Specifies whether to enable the high-resolution mode for images. In this mode, the token limit for a single input image is increased to 16,384 tokens. For more information, see Process high-resolution images. vl_high_resolution_images: true: Uses a fixed resolution policy and ignores the max_pixels setting. If an image exceeds the pixel limit, it is scaled down to fit within the limit.
Click to view the pixel limits for each model When vl_high_resolution_images is set to true, the pixel limits vary by model: For Qwen3-VL series, qwen-vl-max-0813, qwen-vl-plus-0815, and models: 16777216 (Each Token corresponds to 32*32 pixels, and the total pixel count is calculated as 16384*32*32) For QVQ series, Qwen2.5-VL series models: 12845056 (Each Token corresponds to 28*28 pixels, and the total pixel count is calculated as 16384*28*28)
When vl_high_resolution_images is set to false, the actual resolution is capped by a pixel limit. This limit is the greater of the max_pixels value and a default value. If an image exceeds this limit, it is scaled down to fit. Click to view the default pixel limits for each model When vl_high_resolution_images is set to false, the default pixel limits vary by model: For Qwen3-VL series, qwen-vl-max-2025-08-13 and later, qwen-vl-plus-2025-08-15, and : 2621440 (2560*32*32, meaning the default Token limit is 2560) For QVQ series, Qwen2.5-VL series models: 1003520 (1280*28*28, meaning the default Token limit is 1280)
For the Java SDK, use vlHighResolutionImages. Version 2.20.8 or later is required. When you make an HTTP call, place the vl_high_resolution_imagesparameters object. |
vl_enable_image_hw_output boolean (Optional) Defaults to false Specifies whether to return the height and width of the input image after the model scales it. If set to true, the model returns the height and width of the scaled image. When streaming output is enabled, this information is returned in the last data block (chunk). This parameter is supported by the Qwen-VL model. In the Java SDK, this parameter is named vlEnableImageHwOutput, and the minimum required version is 2.20.8. When you make an HTTP call, place vl_enable_image_hw_output in the parameters object. |
ocr_options object (Optional) Specifies the parameters to configure when you call a built-in task using the Qwen-OCR model. Properties task string (Required) The name of the built-in task. Valid values are: "text_recognition": General text recognition "key_information_extraction": Key information extraction "document_parsing": Document parsing "table_parsing": Table parsing "formula_recognition": Formula recognition "multi_lan": Multilingual recognition "advanced_recognition": Advanced recognition
task_config array (Optional) This parameter is used when the task is set to "key_information_extraction". Properties result_schema object (Required) Specifies the fields to extract. The value must be a JSON structure with a maximum of three nested layers. Specify only the JSON object keys and leave their values empty. Example: "result_schema" : {
"recipient_information" : {
"recipient_name" : "",
"recipient_phone_number" : "",
"recipient_address":""
}
}
The corresponding class in the Java SDK is OcrOptions. The minimum required version for the DashScope Python SDK is 1.22.2, and the minimum required version for the Java SDK is 2.18.4. For HTTP calls, place the ocr_options object inside the parameters object. |
max_input_tokens integer (Optional) The maximum number of tokens in the input. This parameter is supported only by the qwen-plus-0728/latest model. Default for qwen-plus-latest: 129,024 The default value may change to 1,000,000 in the future. Default for qwen-plus-2025-07-28: 1,000,000
The Java SDK does not currently support this parameter. When you make HTTP calls, you can specify max_input_tokens in the parameters object. |
max_tokens integer (Optional) Specifies the maximum number of tokens to generate. If the output exceeds this limit, generation stops, and the finish_reason field in the response is set to length. The default and maximum values are the model's maximum output length. For more information, see Model List. Use this parameter to set the maximum output length for generated content, such as summaries or keywords. This helps reduce costs and shorten response times. When the max_tokens limit is reached, the value of the response's finish_reason field is length. For the qwen-vl-ocr model, the max_tokens parameter (maximum output length) defaults to 4096. To increase this value to the 4097–8192 range, send a request by email to [email protected]. Include the following information: your Alibaba Cloud account ID, image type (such as document, E-commerce, or contract images), model name, estimated QPS and total daily requests, and the percentage of requests where the output length is expected to exceed 4096 tokens. max_tokens does not limit the length of the model's chain-of-thought.
In the Java SDK, this parameter is named maxTokens. For Qwen-VL and OCR models, the parameter is named maxLength. However, maxTokens is also supported in version 2.18.4 and later. For HTTP calls, place max_tokens in the parameters |
seed integer (Optional) The random number seed. It ensures that results are reproducible for the same input and parameters. If you use the same seed value and other parameters in a call, the model attempts to return the same result. Valid values: [0,2<sup>31</sup>−1]. For HTTP calls, place the seed parameter in the parameters object. |
stream boolean (Optional) Defaults to false Specifies whether to stream the response. Valid values: This parameter is supported only by the Python SDK. To use streaming output with the Java SDK, call the streamCall API. To use streaming output over HTTP, set X-DashScope-SSE to enable in the header. The Qwen3 commercial model (in thinking mode), Qwen3 open-source models, QwQ, and QVQ support only streaming output. |
incremental_output boolean (Optional) Defaults to false. However, the default value is true for models such as Qwen3-Max, Qwen3-VL, Qwen3 open-source edition, QwQ, and QVQ. This parameter specifies whether to enable incremental output in streaming output mode. To enable this feature, set the parameter to true. Parameter values: false: Each output contains the entire sequence that is generated up to that point. The final output is the complete result. I
I like
I like apple
I like apple.
true (Recommended): Enables incremental output. Subsequent outputs do not include previously sent content. You can read these segments sequentially in real time to retrieve the complete result. I
like
apple
.
In the Java SDK, the parameter is incrementalOutput. When you make an HTTP call, add incremental_output to the parameters object. The QwQ model and the Qwen3 model in thinking mode support only a value of true. Because the default value for the Qwen3 commercial model is false, you must set this parameter to true when you use the Qwen3 commercial model in thinking mode. The Qwen3 open-source edition model does not support a value of false for this parameter. |
response_format object (Optional) Defaults to {"type": "text"} Specifies the format of the response. Valid values are {"type": "text"} and {"type": "json_object"}. If you set this parameter to {"type": "json_object"}, the model returns a standard JSON string. For more information, see Structured output. If you set this parameter to {"type": "json_object"}, you must also instruct the model in the prompt to output content in JSON format. For example, you can use a prompt such as "Output in JSON format." Otherwise, an error occurs. In the Java SDK, this parameter is named responseFormat. When you make an HTTP call, place the response_format parameter in the parameters object. |
output_format string (Optional) Defaults to "model_detailed_report" Specifies the output format. This parameter is valid only when you use the Qwen deep-research model (qwen-deep-research). Valid values: "model_detailed_report": A detailed research report of approximately 6,000 words. "model_summary_report": A summary research report of approximately 1,500 to 2,000 words.
|
result_format string (Optional) Defaults to text. However, for the Qwen3-Max, Qwen3-VL, QwQ, Qwen3 open-source (except for qwen3-next-80b-a3b-instruct), and models, the default value is message. Specifies the format of the returned data. You can set this parameter to message to simplify multi-turn conversations. The platform will update the default value to message in a future release. In the Java SDK, this parameter is named resultFormatresult_format in the parameters object. If you use the Qwen-VL, QVQ, OCR, or models, setting this parameter to text has no effect. This parameter must be set to message for the Qwen3-Max, Qwen3-VL, and Qwen3 models in thinking mode. For Qwen3 commercial models, the default value is text. You must set this parameter to message. If you use the Java SDK to call a Qwen3 open-source model, the model returns the response in the message format, even if you specify text |
logprobs boolean (Optional) Defaults to: false. Specifies whether to return the log probabilities of the output tokens. Valid values: true
Back false
Does not return
Supported models: When you make HTTP calls, place logprobs in the parameters object. |
top_logprobs integer (Optional) Defaults to: 0. Specifies the number of tokens with the highest probability to return at each generation step. Valid values: [0, 5] This parameter is effective only when logprobs is set to true. In the Java SDK, the parameter is called topLogprobs. For HTTP calls, place top_logprobs in the parameters object. |
n integer (Optional) Defaults to: 1. Specifies the number of responses to generate. The valid range is 1-4. For scenarios that require multiple responses, such as creative writing and ad copy, you can set a larger value for n. This parameter is supported only for the qwen-plus, Qwen3 (non-thinking mode) models. The value is fixed to 1 when the tools parameter is specified. Setting a larger value for n does not increase input token consumption, but it increases output token consumption. For HTTP calls, place n in the parameters object. |
stop string or array (Optional) Specifies the stop words. When the model generates a string or a token_id specified in stop, generation stops immediately. You can pass sensitive words to control the model's output. If `stop` is an array, do not include both token_id values and strings as elements. For example, ["Hello",104307] is an invalid value. For HTTP calls, place the stop parameter in the parameters object. |
tools array (Optional) An array of one or more tool objects that the model can call in Function Calling. For more information, see Function Calling. When you use tools, you must set result_format to message. You can set the tools parameter when you make a function calling request or submit the results of a tool execution. Properties type string (Required) The type of the tool. Only function is supported. function object (Required) Properties name string (Required) The name of the tool function. The name can contain only letters, numbers, underscores, and hyphens. The maximum length is 64 characters. description string (Required) The description of the tool function. The model uses this description to decide when and how to call the function. parameters object (Required) The parameters of the tool function. The parameters must be in a valid JSON Schema format. For more information, see the JSON Schema documentation. If this object is empty, the function does not have any input parameters. When you make an HTTP call, place the tools parameter inside the parameters object. The qwen-vl model series are not currently supported. |
tool_choice string or object (Optional) Defaults to: auto. The tool selection policy. You can set this parameter to force the model to call a specific tool or to disable all tool calls. auto
The model selects a tool automatically. none
To temporarily disable tool calling for a specific request, set the tool_choice parameter to none. {"type": "function", "function": {"name": "the_function_to_call"}}
To force the model to call a specific tool, set the tool_choice parameter to {"type": "function", "function": {"name": "the_function_to_call"}}, where the_function_to_call is the name of the function to call. Forcing a tool call is not supported when the model is in thinking mode.
In the Java SDK, this is called toolChoice. When calling via HTTP, you can place tool_choice in the parameters object. |
parallel_tool_calls boolean (Optional) The default value is false. Specifies whether to enable parallel tool calling. Valid values: true: Enabled
false: Disabled.
For more information, see Parallel tool calling. In the Java SDK, specify the parallelToolCalls. For HTTP calls, specify the parallel_tool_calls parameter in the parameters object. |