Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Referência da API DashScope

Última atualização: Nov 05, 2026

É possível chamar os modelos Qwen por meio da API DashScope. Este tópico descreve os parâmetros de entrada e saída e fornece exemplos de chamada.

Singapore

Endereço de requisição HTTP:

  • Modelos de texto simples, como qwen-plus: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Modelos multimodais, como qwen3.7-plus ou qwen3-vl-plus: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Python code

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

Java code

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

US (Virginia)

Endereço de requisição HTTP:

  • Modelos de texto simples: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Modelos Qwen-VL: POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Python code

import os
import dashscope

# A configuração abaixo refere-se à região EUA (Virgínia). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="us-east-1",
)

Java code

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1";

China (Beijing)

Endereço de requisição HTTP:

  • Modelos de texto simples, como qwen-plus: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Modelos multimodais, como qwen3.7-plus ou qwen3-vl-plus: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Python code

import os
import dashscope

# A configuração abaixo refere-se à região China (Pequim). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

Java code

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";

Hong Kong (China)

Endereço de requisição HTTP:

  • Modelos de texto simples, como qwen-plus: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Modelos multimodais, como qwen3.7-plus ou qwen3-vl-plus: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Python code

import os
import dashscope

# A configuração abaixo refere-se à região China (Hong Kong). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-hongkong",
)

Java code

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1";

Germany (Frankfurt)

Endereço de requisição HTTP:

  • Para modelos de texto simples, como qwen-plus: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Para modelos multimodais, como qwen3.7-plus ou qwen3-vl-plus: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Python code

import os
import dashscope

# A configuração abaixo refere-se à região Alemanha (Frankfurt). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="eu-central-1",
)

Java code

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";

Japan (Tokyo)

Endereço de requisição HTTP:

  • Modelos de texto simples, como qwen-plus: POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
  • Modelos multimodais, como qwen3.7-plus ou qwen3-vl-plus: POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

O base_url para a configuração de chamada do SDK é o seguinte:

Código Python

import os
import dashscope

# A configuração abaixo refere-se à região Japão (Tóquio). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-northeast-1",
)

Código Java

  • Método 1:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1");
  • Método 2:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1";

Substitua {WorkspaceId} pelo seu workspace ID real.

É necessário obtain an API key e configure it as an environment variable. Caso utilize o DashScope SDK para realizar chamadas, também é preciso install the DashScope SDK.

ImportanteO Alibaba Cloud Model Studio disponibilizou domínios específicos por workspace para as regiões China (Beijing), Singapore e China (Hong Kong). Os novos domínios dedicados oferecem desempenho superior e maior estabilidade para requisições de inferência. Recomendamos a migração para os novos domínios:

  • China (Beijing): de https://dashscope.aliyuncs.com para https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapore: de https://dashscope-intl.aliyuncs.com para https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
  • China (Hong Kong): de https://cn-hongkong.dashscope.aliyuncs.com para https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com

O {WorkspaceId} corresponde ao ID do seu workspace, disponível na página Workspace Details no console do Alibaba Cloud Model Studio. O domínio existente permanece totalmente funcional.

Corpo da requisição

Entrada de texto

Python

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

messages = [
    {'role': 'system', 'content': [{'text': 'You are a helpful assistant.'}]},
    {'role': 'user', 'content': [{'text': 'Who are you?'}]}
]
response = client.multimodal.chat.create(
    # Este exemplo usa o qwen3.8-max. Você pode substituí-lo por outro nome de modelo conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/getting-started/models
    model="qwen3.8-max",
    messages=messages,
    )
print(response)

Java

// We recommend that you use DashScope SDK V2.12.0 or later.
import java.util.Arrays;
import java.util.Collections;
import java.lang.System;
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.protocol.Protocol;

public class Main {
    public static MultiModalConversationResult callWithMessage() throws ApiException, NoApiKeyException, UploadFileException {
        // The following is the base_url for the Singapore region. When making a call, replace {WorkspaceId} with your actual workspace ID. The URLs for different regions vary.
        MultiModalConversation conv = new MultiModalConversation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
        MultiModalMessage systemMsg = MultiModalMessage.builder()
                .role(Role.SYSTEM.getValue())
                .content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant.")))
                .build();
        MultiModalMessage userMsg = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(Collections.singletonMap("text", "Who are you?")))
                .build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // If you have not configured an environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
                // The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // This example uses qwen3.8-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("qwen3.8-max")
                .messages(Arrays.asList(systemMsg, userMsg))
                .build();
        return conv.call(param);
    }
    public static void main(String[] args) {
        try {
            MultiModalConversationResult result = callWithMessage();
            System.out.println(JsonUtils.toJson(result));
        } catch (ApiException | NoApiKeyException | UploadFileException 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
$url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation";
// The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
$apiKey = getenv('DASHSCOPE_API_KEY');

$data = [
    // This example uses qwen3.8-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" => "qwen3.8-max",
    "input" => [
        "messages" => [
            [
                "role" => "system",
                "content" => [["text" => "You are a helpful assistant."]]
            ],
            [
                "role" => "user",
                "content" => [["text" => "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)

O DashScope não fornece um SDK para o ambiente Node.js. Para fazer chamadas usando o OpenAI Node.js SDK, consulte a seção OpenAI neste tópico.

import fetch from 'node-fetch';
// The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain 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: "qwen3.8-max", // This example uses qwen3.8-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
    input: {
        messages: [
            {
                role: "system",
                content: [{"text": "You are a helpful assistant."}]
            },
            {
                role: "user",
                content: [{"text": "Who are you?"}]
            }
        ]
    },
    parameters: {
        result_format: "message"
    }
};

fetch('https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-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 you have not configured an environment variable, replace the following line with your Model Studio API key: string? apiKey = "sk-xxx";
        // The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain 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("The API key is not set. Make sure that the 'DASHSCOPE_API_KEY' environment variable is set.");
            return;
        }

        // Set the request URL and content.
        string url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation";
        // This example uses qwen3.8-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
        string jsonContent = @"{
            ""model"": ""qwen3.8-max"",
            ""input"": {
                ""messages"": [
                    {
                        ""role"": ""system"",
                        ""content"": [{""text"": ""You are a helpful assistant.""}]
                    },
                    {
                        ""role"": ""user"",
                        ""content"": [{""text"": ""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)

O DashScope não fornece um SDK para Go. Para fazer chamadas usando o OpenAI Go SDK, consulte a seção OpenAI-Go neste tópico.

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
)

type ContentItem struct {
    Text string `json:"text"`
}

type Message struct {
    Role    string        `json:"role"`
    Content []ContentItem `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 qwen3.8-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: "qwen3.8-max",
        Input: Input{
            Messages: []Message{
                {
                    Role:    "system",
                    Content: []ContentItem{{Text: "You are a helpful assistant."}},
                },
                {
                    Role:    "user",
                    Content: []ContentItem{{Text: "Who are you?"}},
                },
            },
        },
        Parameters: Parameters{
            ResultFormat: "message",
        },
    }

    jsonData, err := json.Marshal(requestBody)
    if err != nil {
        log.Fatal(err)
    }

    // Create a POST request.
    req, err := http.NewRequest("POST", "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation", bytes.NewBuffer(jsonData))
    if err != nil {
        log.Fatal(err)
    }

    // Set the request headers.
    // If you have not configured an environment variable, replace the following line with your Model Studio API key: apiKey := "sk-xxx"
    // The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain 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)
}

curl

Substitua {WorkspaceId} pelo seu workspace ID real.

As chaves de API para as regiões Singapore, US (Virginia) e China (Beijing) são diferentes. Para mais informações, consulte Obtain an API key

curl --location "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen3.8-max",
    "input":{
        "messages":[
            {
                "role": "system",
                "content": [{"text": "You are a helpful assistant."}]
            },
            {
                "role": "user",
                "content": [{"text": "Who are you?"}]
            }
        ]
    },
    "parameters": {
        "result_format": "message"
    }
}'

Saída em streaming

Para mais informações, consulte Streaming output.

Modelos de geração de texto

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

messages = [
    {'role':'system','content':'you are a helpful assistant'},
    {'role': 'user','content': 'Who are you?'}
]
responses = client.chat.completions.create(
    # Este exemplo usa o qwen-plus; você pode substituí-lo por qualquer outro modelo de geração de texto conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/getting-started/models
    model="qwen-plus",
    messages=messages,
    stream=True,
    # A saída em streaming é incremental por padrão: cada chunk contém apenas o conteúdo recém-gerado.
    )
for response in responses:
    print(response.choices[0].delta.content, end="")
import 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 you have not configured an environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
                // The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain 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; replace with any other text-generation model 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 {
            Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.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 --location "https://{WorkspaceId}.ap-southeast-1.maas.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
    }
}'

Modelos multimodais

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

messages = [
    {
        "role": "user",
        "content": [
            {"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
            {"text": "What is depicted in the image?"}
        ]
    }
]

responses = client.multimodal.chat.create(
    # Você pode substituir por outro modelo multimodal e modificar as messages conforme necessário.
    model='qwen3-vl-plus',
    messages=messages,
    stream=True,
    # A saída em streaming é incremental por padrão: cada chunk contém apenas o conteúdo recém-gerado.
    )

full_content = ""
print("Streaming output content:")
for response in responses:
    if response.choices[0].delta.content:
        print(response.choices[0].delta.content)
        full_content += response.choices[0].delta.content
print(f"Full content: {full_content}")
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 io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }
    public static void streamCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        // must create mutable map.
        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("text", "What is depicted in the image?"))).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // The API keys for the Singapore/US (Virginia) and China (Beijing) regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
                // If you have not configured an environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-vl-plus")  //  You can replace this with another multimodal model and modify the messages accordingly.
                .messages(Arrays.asList(userMessage))
                .incrementalOutput(true)
                .build();
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(item -> {
            try {
                var content = item.getOutput().getChoices().get(0).getMessage().getContent();
                    // Check if content exists and is not empty.
                if (content != null &&  !content.isEmpty()) {
                    System.out.println(content.get(0).get("text"));
                    }
            } catch (Exception e){
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
    "model": "qwen3-vl-plus",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [
                    {"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
                    {"text": "What is depicted in the image?"}
                ]
            }
        ]
    },
    "parameters": {
        "incremental_output": true
    }
}'

Entrada de imagem

Para mais informações sobre como usar modelos grandes de linguagem (LLMs) para analisar imagens, consulte Image and video understanding.

Python

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

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 = client.multimodal.chat.create(
    # Este exemplo usa o qwen3-vl-plus. Você pode substituí-lo por outro nome de modelo conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/getting-started/models
    model='qwen3-vl-plus',
    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://{WorkspaceId}.ap-southeast-1.maas.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 you have not configured the environment variable, replace the next line with .apiKey("sk-xxx") and use your Model Studio API key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // This example uses qwen3-vl-plus. You can replace it with another model name as needed. For a list of models, visit https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
                .model("qwen3-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);
    }
}

curl

Substitua {WorkspaceId} pelo seu workspace ID real.

As chaves de API para as regiões Singapore, US (Virginia) e China (Beijing) são diferentes. Para obter uma chave de API, consulte Get an API key

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3-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?"}
                ]
            }
        ]
    }
}'

Entrada de vídeo

Os exemplos a seguir mostram como inserir frames de vídeo. Para mais informações sobre outros métodos, como inserir um arquivo de vídeo, consulte Visual understanding.

Python

import os
# A versão do SDK do DashScope deve ser 2.0.1 ou posterior.
import dashscope
from dashscope.v2 import DashScopeError

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

messages = [{"role": "user",
             "content": [
                  # Para modelos da série Qwen2.5-VL, quando é passada uma lista de imagens, é possível configurar o parâmetro fps para indicar que as imagens são extraídas do vídeo original a cada 1/fps segundos.
                 {"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 events in this video"}]}]
try:
    response = client.multimodal.chat.create(
        # Este exemplo usa o qwen3-vl-plus. Você pode substituí-lo por outro nome de modelo conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/models
        model='qwen3-vl-plus',
        messages=messages
    )
    print(response)
except DashScopeError as e:
    print(f"Código de status HTTP: {e.status_code}")
    print(f"Código de erro: {e.code}")
    print(f"Mensagem de erro: {e.message}")
    print("Consulte a documentação: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

Java

// The DashScope SDK version must be 2.18.3 or later.
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 {
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }
    private static final String MODEL_NAME = "qwen3-vl-plus"; // This example uses qwen3-vl-plus. Replace it with another model name as needed. For a list of models, see https://www.alibabacloud.com/help/zh/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 you use a model from the Qwen2.5-VL series and input a list of images, you can set the fps parameter. This parameter specifies that the images are 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 events in this video")))
                .build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // If you have not configured the environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
                // API keys are different for the Singapore/Virginia and Beijing regions. To obtain an API key, see https://www.alibabacloud.com/help/zh/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);
    }
}

curl

Substitua {WorkspaceId} pelo seu workspace ID real.

As chaves de API são diferentes para as regiões Singapore, US (Virginia) e China (Beijing). Para mais informações, consulte Get an API key

curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
  "model": "qwen3-vl-plus",
  "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 events in this video"
          }
        ]
      }
    ]
  }
}'

Chamada de ferramentas

Para o código completo do fluxo de chamada de função, consulte Overview.

Python

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "Useful for getting the current time.",
            "parameters": {}
        }
    },
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Useful for getting the weather in a specific city.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city or district, such as Beijing, Hangzhou, or Yuhang District."
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]
messages = [{"role": "user", "content": [{"text": "What is the weather like in Hangzhou?"}]}]
response = client.multimodal.chat.create(
    # Este exemplo usa o qwen3.8-max. Você pode substituí-lo por outro modelo conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/getting-started/models
    model='qwen3.8-max',
    messages=messages,
    tools=tools,
)
print(response)

Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.alibaba.dashscope.aigc.conversation.ConversationParam.ResultFormat;
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 java.util.Collections;
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.utils.Constants;

public class Main {
    // The following is the base URL for the Singapore region. When making a call, replace {WorkspaceId} with your actual workspace ID. The URL varies by region.
    static {Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";}
    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("Gets the weather for a specified area")
                .parameters(JsonUtils.parseString(jsonSchema_weather.toString()).getAsJsonObject()).build();
        FunctionDefinition fdTime = FunctionDefinition.builder().name("get_current_time").description("Gets the current time")
                .parameters(JsonUtils.parseString(jsonSchema_time.toString()).getAsJsonObject()).build();
        MultiModalMessage systemMsg = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                .content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant. When asked a question, use tools wherever possible.")))
                .build();
        MultiModalMessage userMsg = MultiModalMessage.builder().role(Role.USER.getValue()).content(Arrays.asList(Collections.singletonMap("text", "Weather in Hangzhou"))).build();
        List<MultiModalMessage> messages = new ArrayList<>();
        messages.addAll(Arrays.asList(systemMsg, userMsg));
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // The API keys for the Singapore, Virginia, and Beijing regions are different. To get an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // This example uses qwen3.8-max. You can replace it with another model as needed. For a list of models, visit: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
                .model("qwen3.8-max")
                .messages(messages)
                .tools(Arrays.asList(
                        ToolFunction.builder().function(fdWeather).build(),
                        ToolFunction.builder().function(fdTime).build()))
                .build();
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalConversationResult result = conv.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);
    }
}

curl

Substitua {WorkspaceId} pelo seu workspace ID real.

As chaves de API para as regiões Singapore, US (Virginia) e China (Beijing) são diferentes. Para mais informações, consulte Get an API key

A URL a seguir é para a região Singapore.

curl --location "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen3.8-max",
    "input": {
        "messages": [{
            "role": "user",
            "content": [{"text": "What is the weather like in Hangzhou?"}]
        }]
    },
    "parameters": {
        "result_format": "message",
        "tools": [{
            "type": "function",
            "function": {
                "name": "get_current_time",
                "description": "Useful for getting the current time.",
                "parameters": {}
            }
        },{
            "type": "function",
            "function": {
                "name": "get_current_weather",
                "description": "Useful for getting the weather in a specific city.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "The city or district, such as Beijing, Hangzhou, or Yuhang District."
                        }
                    }
                },
                "required": ["location"]
            }
        }]
    }
}'

Invocação assíncrona

# A versão do SDK do DashScope para Python deve ser 2.0.1 ou posterior.
import asyncio
import platform
import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
aclient = dashscope.AsyncClient(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys das regiões Singapura, EUA (Virgínia) e China (Pequim) são diferentes. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)
async def main():
    response = await aclient.multimodal.chat.create(
        # Este exemplo usa o qwen3.8-max. Você pode substituí-lo por outro nome de modelo conforme necessário. Para ver a lista de modelos, consulte https://www.alibabacloud.com/help/model-studio/getting-started/models
        model="qwen3.8-max",
        messages=[{"role": "user", "content": [{"text": "Who are you?"}]}],
    )
    print(response)

if platform.system() == "Windows":
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(main())

Compreensão de documentos

Python

import os
import dashscope

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
# Atualmente, o modelo qwen-long está disponível apenas na região China (Pequim).
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha a seguir pela sua API Key do Model Studio: api_key="sk-xxx"
    # As API Keys são diferentes para cada região. Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)
messages = [
        {'role': 'system', 'content': 'you are a helpful assistant'},
        # Substitua {FILE_ID} pelo file-id usado no seu cenário real de conversa.
        {'role':'system','content':'fileid://{FILE_ID}'},
        {'role': 'user', 'content': 'What is this article about?'}]
response = client.chat.completions.create(
    model="qwen-long",
    messages=messages,
)
print(response)

Java

import os
import dashscope

# Currently, the qwen-long model can be called only in the China (Beijing) region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
        {'role': 'system', 'content': 'you are a helpful assistant'},
        # Replace '{FILE_ID}' with the file-id used in your actual 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",
    messages=messages,
    result_format='message'
)
print(response)

curl

Atualmente, apenas a região China (Beijing) suporta a chamada do modelo de compreensão de documentos.

Substitua {FILE_ID} pelo ID do arquivo usado no seu cenário real de conversa.

curl --location "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "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"
    }
}'

modelstring(Obrigatório)

Nome do modelo a ser utilizado.

Os modelos suportados incluem os modelos de linguagem grande Qwen (edições comerciais e open source), Qwen-VL, Qwen-Coder, modelos matemáticos, DeepSeek, Kimi, GLM e MiniMax.

Para nomes específicos de modelos e detalhes de faturamento, consulteSelect a model.

messagesarray(Obrigatório)

Contexto transmitido ao modelo de linguagem grande (LLM), organizado em ordem conversacional.

Em chamadas via HTTP, coloque messages dentro do objeto input.

Tipos de mensagem

Mensagem do sistemaobject (Opcional)

Mensagem de sistema usada para definir a função, o tom, os objetivos da tarefa ou as restrições do LLM. Geralmente, ocupa a primeira posição no array messages.

Não recomendamos definir uma mensagem de sistema para modelos QwQ. Para modelos QVQ, a mensagem de sistema não tem efeito.

Propriedades

contentstring(Obrigatório)

Conteúdo da mensagem.

rolestring(Obrigatório)

Função da mensagem de sistema. O valor é fixo como system.

Mensagem do usuárioobject(Obrigatório)

Mensagem do usuário utilizada para enviar perguntas, instruções ou contexto ao modelo.

Propriedades

contentstring or array(Obrigatório)

Conteúdo da mensagem. Se a entrada for apenas texto, este parâmetro será uma string. Caso a entrada inclua dados multimodais, como imagens, ou se o cache explícito estiver ativado, este parâmetro será um array.

Propriedades

textstring(Obrigatório)

Texto de entrada.

imagestring (Opcional)

Arquivo de imagem para compreensão de imagens. É possível transmitir uma imagem de três formas:

  • URL pública: link de imagem acessível publicamente.
  • Codificação Base64 da imagem, no formato data:image/<format>;base64,<data>.
  • Arquivo local: caminho absoluto de um arquivo local.

Modelos aplicáveis: Qwen-VL, QVQ

Exemplo: {"image":"https://xxxx.jpeg"}

videoarray or string (Opcional)

Vídeo a ser transmitido ao utilizar um Qwen-VL model ou um QVQ model.

  • Ao transmitir uma lista de imagens, o tipo é array.
  • Ao transmitir um arquivo de vídeo, o tipo é string.

Para transmitir um arquivo local, consulte Local file.

Exemplos:

  • Lista de imagens: {"video":["https://xx1.jpg",...,"https://xxn.jpg"]}
  • Arquivo de vídeo: {"video":"https://xxx.mp4"}

fpsfloat(Opcional)

Número de quadros a extrair por segundo. O valor deve estar no intervalo de [0,1, 10]. O valor padrão é 2,0.

Descrição

O parâmetro fps possui duas funções:

  • Quando a entrada é um arquivo de vídeo, este parâmetro controla a frequência de extração de quadros. Um quadro é extraído a cada f p s 1 ​ segundos.

    Aplica-se a Qwen-VL models e QVQ models.

  • Informa ao modelo o intervalo de tempo entre quadros adjacentes, ajudando-o a compreender melhor a dinâmica temporal do vídeo. Isso se aplica tanto a entradas de arquivos de vídeo quanto a listas de imagens. Esse recurso é adequado para cenários como localização temporal de eventos ou resumo de conteúdo por segmento.

    Suportado pelos modelos Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, Qwen2.5-VL e QVQ.

Um valor maior de fps é indicado para cenários com movimento rápido, como eventos esportivos e filmes de ação. Já um valor menor de fps é mais adequado para vídeos longos ou cenários com conteúdo relativamente estático.

Exemplos

  • Transmitindo uma lista de imagens: {"video":["https://xx1.jpg",...,"https://xxn.jpg"],"fps":2}
  • Transmitindo um arquivo de vídeo: {"video": "https://xx1.mp4","fps":2}

max_framesinteger(Opcional)

Número máximo de quadros que podem ser extraídos de um vídeo. Se a quantidade de quadros calculada com base em fps exceder max_frames, o sistema ajustará automaticamente a extração para distribuir os quadros uniformemente dentro do limite de max_frames. Isso garante que o total de quadros não ultrapasse o limite definido.

Faixa de valores

  • Séries qwen3.7, qwen3.6, qwen3.5: O valor máximo e padrão é 8000.
  • Séries qwen3-vl-plus: O valor máximo e padrão é 2000.

Valor de exemplo

{"type": "video_url","video_url": {"url":"https://xxxx.mp4"},"max_frame": 2000}

Em chamadas com uma API compatível com OpenAI, não é possível personalizar o parâmetro max_frames. A API utiliza automaticamente o valor padrão de cada modelo.

min_pixelsinteger(Opcional)

Define o limiar mínimo de pixels para a imagem de entrada ou quadros de vídeo. Se o total de pixels de uma imagem ou quadro de vídeo for inferior a min_pixels, a imagem ou quadro será ampliado até que seu total de pixels seja superior a min_pixels.

Faixa de valores

  • Entrada de imagem:
    • Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL: O valor padrão e mínimo é 65536.
    • série open source Qwen2.5-VL e modelos da série QVQ: O valor padrão e mínimo é 3136.
  • Entrada de arquivo de vídeo ou lista de imagens:
    • Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL (edições comerciais e open source): O valor padrão é 65536 e o valor mínimo é 4096.
    • série open source Qwen2.5-VL e modelos da série QVQ: O valor padrão é 50176 e o valor mínimo é 3136.

Exemplos

  • Entrada de imagem: {"type": "image_url","image_url": {"url":"https://xxxx.jpg"},"min_pixels": 65536}
  • Entrada de arquivo de vídeo: {"type": "video_url","video_url": {"url":"https://xxxx.mp4"},"min_pixels": 65536}
  • Entrada de lista de imagens: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"min_pixels": 65536}

max_pixelsinteger(Opcional)

Define o limiar máximo de pixels para a imagem de entrada ou quadros de vídeo. Se o total de pixels de uma imagem ou vídeo de entrada estiver dentro do intervalo [min_pixels, max_pixels], o modelo reconhece a imagem original. Caso o total de pixels da imagem de entrada seja maior que max_pixels, a imagem será reduzida até que o total de pixels fique abaixo de max_pixels.

Faixa de valores

  • Entrada de imagem:

    O valor de max_pixels depende se o parâmetro vl_high_resolution_images está ativado.

    • Se vl_high_resolution_images for False:

      • Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL: O valor padrão é 2621440 e o valor máximo é 16777216.
      • série open source Qwen2.5-VL e modelos da série QVQ: O valor padrão é 1003520 e o valor máximo é 12845056.
    • Se vl_high_resolution_images for True:

      • Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL: max_pixels é inválido. O máximo de pixels para a imagem de entrada é fixo em 16777216.
      • série open source Qwen2.5-VL e modelos da série QVQ: max_pixels é inválido. O máximo de pixels para a imagem de entrada é fixo em 12845056.
  • Entrada de arquivo de vídeo ou lista de imagens:
    • qwen3.7 series, qwen3.6 series, qwen3.5 series, qwen3-vl-plus series: O valor padrão é 655360 e o valor máximo é 2048000.
    • Outros modelos open source Qwen3-VL: O valor padrão é 655360 e o valor máximo é 786432.
    • série open source Qwen2.5-VL e modelos da série QVQ: O valor padrão é 501760 e o valor máximo é 602112.

Exemplos

  • Entrada de imagem: {"type": "image_url","image_url": {"url":"https://xxxx.jpg"},"max_pixels": 8388608}
  • Entrada de arquivo de vídeo: {"type": "video_url","video_url": {"url":"https://xxxx.mp4"},"max_pixels": 655360}
  • Entrada de lista de imagens: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"max_pixels": 655360}

total_pixelsinteger(Opcional)

Limita o total de pixels de todos os quadros extraídos de um vídeo (pixels de um único quadro × número total de quadros). Se o total de pixels do vídeo exceder esse limite, o sistema reduzirá os quadros do vídeo, garantindo ainda que o valor de pixels de um único quadro permaneça dentro do intervalo [min_pixels, max_pixels]. Aplica-se aos modelos Qwen-VL e QVQ.

Para vídeos longos com muitos quadros extraídos, recomenda-se reduzir adequadamente esse valor para diminuir o consumo de tokens e o tempo de processamento, embora isso possa resultar na perda de detalhes da imagem.

Faixa de valores

  • Séries qwen3.7, qwen3.6, qwen3.5: O valor padrão e máximo é 819200000. Este valor corresponde a 800000 tokens de imagem (1 token de imagem por 32×32 pixels).
  • Séries qwen3-vl-plus: O valor padrão e máximo é 134217728. Este valor corresponde a 131072 tokens de imagem (1 token de imagem por 32×32 pixels).
  • Outros modelos open source Qwen3-VL: O valor padrão e mínimo é 67108864. Este valor corresponde a 65536 tokens de imagem (1 token de imagem por 32×32 pixels).
  • série open source Qwen2.5-VL e modelos da série QVQ: O valor padrão e mínimo é 51380224. Este valor corresponde a 65536 tokens de imagem (1 token de imagem por 28×28 pixels).

Exemplos

  • Entrada de arquivo de vídeo: {"type": "video_url","video_url": {"url":"https://xxxx.mp4"},"total_pixels": 134217728}
  • Entrada de lista de imagens: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"total_pixels": 134217728}

cache_controlobject(Opcional)

Suportado apenas por modelos que aceitam explicit caching. Utilizado para ativar o cache explícito.

Propriedades

type string(Obrigatório)

O valor deve ser ephemeral.

rolestring(Obrigatório)

Função da mensagem do usuário. O valor deve ser user.

Mensagem do assistente object(Opcional)

Resposta do modelo à mensagem do usuário.

Propriedades

contentstring(Opcional)

Conteúdo da mensagem. Este campo é opcional apenas se o parâmetro tool_calls for especificado na mensagem do assistente.

rolestring(Obrigatório)

O valor deve ser assistant.

partialboolean(Opcional)

Especifica se o modo parcial deve ser ativado. Para mais informações e uma lista de modelos suportados, consulte Partial mode.

tool_calls array(Opcional)

Informações da ferramenta e dos parâmetros de entrada retornadas após iniciar uma chamada de função. Contém um ou mais objetos. Obtido a partir do campo tool_calls da resposta anterior do modelo.

Propriedades

id string

ID da resposta da ferramenta.

type string

Tipo da ferramenta. Atualmente, apenas function é suportado.

function object

Informações da ferramenta e dos parâmetros de entrada.

Propriedades

name string

Nome da ferramenta.

arguments string

Informações dos parâmetros de entrada, no formato de string JSON.

index integer

Índice das informações da ferramenta atual no array tool_calls.

Mensagem da ferramentaobject (Opcional)

Informações de saída da ferramenta.

Propriedades

contentstring(Obrigatório)

Conteúdo de saída da função da ferramenta. Deve estar no formato de string.

rolestring(Obrigatório)

O valor deve ser tool.

tool_call_idstring(Opcional)

ID retornado após iniciar uma chamada de função. Pode ser recuperado usando response.output.choices[0].message.tool_calls[$index]["id"]. Serve para marcar a ferramenta correspondente à mensagem da ferramenta.

temperaturefloat(Opcional)

Temperatura de amostragem que controla a diversidade do texto gerado pelo modelo.

Valores mais altos resultam em textos mais diversos, enquanto valores mais baixos produzem textos mais determinísticos.

Intervalo de valores: [0, 2)

Ao chamar via HTTP, coloque temperature no objeto parameters.

Não recomendamos modificar o valor padrão de temperature para modelos QVQ.

top_pfloat(Opcional)

Limiar de probabilidade para amostragem de núcleo, que controla a diversidade do texto gerado pelo modelo.

Um valor top_p mais alto resulta em texto mais diverso, enquanto um valor mais baixo gera texto mais determinístico.

Intervalo de valores: (0, 1.0].

No SDK Java, este parâmetro é topP. Ao chamar via HTTP, coloque top_p no objeto parameters.

Não recomendamos modificar o valor padrão de top_p para modelos QVQ.

top_kinteger(Opcional)

Tamanho do conjunto de candidatos para amostragem durante a geração. Por exemplo, se você definir este parâmetro como 50, apenas os 50 tokens com as maiores pontuações em uma única geração formarão o conjunto de candidatos para amostragem aleatória. Um valor maior aumenta a aleatoriedade, enquanto um valor menor aumenta o determinismo. Um valor None ou superior a 100 indica que a estratégia top_k não está ativada e apenas a estratégia top_p terá efeito.

O valor deve ser maior ou igual a 0.

Valores padrão de top_k

Série QVQ: 10

Série QwQ: 40

Todos os outros modelos: 20

Série GLM (fornecida pela Alibaba Cloud): 20

As séries DeepSeek, Kimi e MiniMax não suportam o parâmetro top_k.

No SDK Java, este parâmetro é topK. Ao chamar via HTTP, coloque top_k no objeto parameters.

Não recomendamos modificar o valor padrão de top_k para modelos QVQ.

enable_thinking boolean (Opcional)

Define se o modo de pensamento deve ser ativado para um modelo de pensamento híbrido. Aplica-se aos modelos Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5, Qwen3 e Qwen3-VL, além das séries DeepSeek-V4-Pro/V4-Flash, DeepSeek-V3.2/V3.2-exp/V3.1, Kimi-K2.6/K2.5 e GLM. A série DeepSeek-V4 possui o modo de pensamento ativado por padrão. É possível ajustar o esforço de inferência com o parâmetro reasoning_effort.

Valores válidos:

  • true: Recurso ativado.

    Se ativado, o conteúdo de pensamento é retornado no campo reasoning_content.

  • false: Desativado

Para os valores padrão de diferentes modelos, consulte Supported models.

No SDK Java, este parâmetro é enableThinking. Ao chamar via HTTP, coloque enable_thinking no objeto parameters.

preserve_thinking boolean (Opcional) O valor padrão é false. (Valor padrão para qwen3.8-max:true)

Define se o reasoning_content das mensagens do assistente no histórico da conversa deve ser anexado à entrada do modelo. Indicado para cenários em que o modelo precisa consultar o processo de pensamento histórico.

Atualmente suportado por qwen3.7-max, qwen3.7-max-2026-05-20 e snapshots subsequentes, qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.8-flash, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.6-flash-2026-04-16, qwen3.8-max (ativado por padrão), kimi-k2.6 (implantado no Alibaba Cloud Model Studio), kimi-k2.7-code (implantado no Alibaba Cloud Model Studio, ativado por padrão), kimi/kimi-k2.7-code-highspeed (fornecido pela Moonshot AI, ativado por padrão) e kimi/kimi-k2.7-code (fornecido pela Moonshot AI, ativado por padrão).

Importante (qwen3.8-max): Ao usar qwen3.8-max, preserve_thinking tem como padrão true. Você deve enviar de volta todo o reasoning_content histórico no campo reasoning_content. NÃO concatene reasoning_content no campo content. Isso pode degradar o desempenho do modelo.

  • Se as mensagens históricas não contiverem reasoning_content, ativar este parâmetro não causará erro.
  • Quando ativado, o reasoning_content da conversa histórica é incluído na contagem de tokens de entrada e é faturado.

Ao chamar via HTTP, coloque preserve_thinking no objeto parameters. O SDK Java não é suportado.

thinking_budget integer (Opcional)

Comprimento máximo do processo de pensamento. Aplica-se aos modelos Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, Qwen3, GLM e Kimi, exceto kimi-k3 e kimi-k3.1-pro, que não suportam este parâmetro. Para mais informações, consulte Limit thinking length.

O valor padrão corresponde ao comprimento máximo da cadeia de pensamento do modelo. Para mais informações, consulte Select a model.

No SDK Java, este parâmetro é thinkingBudget. Ao chamar via HTTP, coloque thinking_budget no objeto parameters.

O valor padrão corresponde ao comprimento máximo da cadeia de pensamento do modelo.

reasoning_effort string (Opcional)

Controla a intensidade de inferência dos modelos. Os valores válidos e padrões variam conforme o modelo.

kimi-k3.1-pro (implantado no Alibaba Cloud Model Studio): O valor padrão é max.

  • max (padrão): Raciocínio profundo
  • high: Raciocínio aprimorado
  • medium: Raciocínio moderado
  • low: Raciocínio leve

enable_thinking tem o valor padrão true. Você pode definir como false para desativar o pensamento, mas é recomendável mantê-lo ativado, pois desativá-lo afeta significativamente a qualidade da saída do modelo.

Séries DeepSeek-V4 e GLM (Valor padrão: high)

Valores válidos: high (inferência de alta intensidade) e max (inferência de intensidade máxima). low e medium são mapeados para high, e xhigh é mapeado para max.

Aplica-se a glm-5.2, glm-5.1, glm-5, deepseek-v4-pro.

qwen3.8-max: Valor padrão:xhigh

Valores válidos:

  • xhigh (padrão): Inferência de intensidade máxima
  • medium: Inferência padrão
  • low: Inferência de baixa intensidade

Mapeamento de valores padrão OpenAI: max é mapeado para xhigh, high é mapeado para xhigh, minimal é mapeado para low e none é mapeado para enable_thinking=False.

Definir valores diferentes dos valores válidos e mapeados acima causará um erro.

Para a série qwen3.8, reasoning_effort e thinking_budget não podem ser definidos simultaneamente. Definir ambos causará um erro. No entanto, eles suportam conversão mútua:

  • Quando thinking_budget não está definido, os níveis de reasoning_effort são mapeados automaticamente para thinking_budget: low corresponde a 4096, medium corresponde a 16384 e xhigh corresponde a 262144.
  • Quando reasoning_effort não está definido, thinking_budget é mapeado automaticamente de volta para reasoning_effort: 0–4096 corresponde a low, 4097–16384 corresponde a medium e 16385–262144 corresponde a xhigh.
  • Quando nenhum dos dois está definido, o thinking_budget padrão (131072) e o reasoning_effort padrão (xhigh) são usados.

Ao chamar via HTTP, coloque reasoning_effort no objeto parameters.

tool_stream boolean (Opcional) O valor padrão é false.

Este parâmetro afeta apenas o comportamento de saída em streaming de parâmetros de ferramentas complexas e é eficaz somente em chamadas com streaming. Parâmetros de ferramentas simples, onde todos os tipos de parâmetros são strings, podem usar streaming desde que as chamadas com streaming estejam ativadas. tool_stream não tem efeito sobre eles. Ferramentas complexas são aquelas em que alguns tipos de parâmetros na definição da ferramenta são arrays ou objetos. Atualmente, apenas as séries Qwen e GLM suportam isso.

Lista de suporte da série Qwen:
  • Série qwen-max: Modalidade de texto das séries qwen3.8-max e qwen3.7-max
  • Série qwen-plus: Modalidade de texto das séries qwen3.7-plus e qwen3.6-plus, e todas as modalidades da série qwen3.5-plus
  • Série qwen-flash: Todas as modalidades das séries qwen3.8-flash, qwen3.7-flash, qwen3.6-flash e qwen3.5-flash
Referência de uso da série Qwen:
  • tool_stream=false: Parâmetros de ferramentas complexas são gerados de uma só vez. Este é o comportamento padrão, e o formato complexo é mais preciso.
  • tool_stream=true: Parâmetros de ferramentas complexas são transmitidos via streaming. Isso evita o risco de timeout para formatos complexos.

Ferramentas complexas são aquelas em que alguns tipos de parâmetros na definição da ferramenta são arrays ou objetos.

Lista de suporte da série GLM: glm-5 e glm-5.1.

Referência de uso da série GLM:
  • tool_stream=false: Parâmetros de ferramentas são gerados de uma só vez. Este é o comportamento padrão, e o formato complexo é mais preciso.
  • tool_stream=true: Parâmetros de ferramentas são transmitidos via streaming. Isso evita o risco de timeout para formatos complexos.

Ao chamar via HTTP, coloque tool_stream no objeto parameters.

enable_code_interpreter boolean (Opcional) O valor padrão é false.

Define se o recurso de interpretador de código deve ser ativado. Para mais informações, consulte Code interpreter.

Valores válidos:

  • true: Ativa o recurso.
  • false: Desativa o recurso.

O SDK Java não é suportado. Ao chamar via HTTP, coloque enable_code_interpreter no objeto parameters.

clear_thinkingboolean(Opcional) O valor padrão é false.

Controla se o reasoning_content (processo de pensamento) de turnos anteriores deve ser usado como entrada de contexto para o modelo em uma conversa de múltiplos turnos. Suportado apenas pelos modelos da série GLM: glm-5.2, glm-5.1, glm-5.

  • true: Ativa o recurso. Ignora o reasoning_content de turnos anteriores e usa apenas texto visível, chamadas de ferramentas e resultados como entrada de contexto. Isso pode reduzir o comprimento do contexto e o custo.
  • false (padrão): Desativa o recurso. Mantém o reasoning_content de turnos anteriores e o fornece ao modelo junto com o contexto. Se quiser ativar o pensamento preservado, você deve passar o reasoning_content histórico completamente, sem modificações e em sua ordem original nas mensagens. Omissão, corte, reescrita ou reordenação degrada o desempenho ou impede que o recurso tenha efeito.

repetition_penaltyfloat(Opcional)

Penalidade para repetição de sequências consecutivas durante a geração do modelo. Um valor repetition_penalty mais alto pode reduzir a repetição na saída do modelo. Um valor de 1.0 indica nenhuma penalidade. O valor deve ser maior que 0.

No SDK Java, este parâmetro é repetitionPenalty. Ao chamar via HTTP, coloque repetition_penalty no objeto parameters.

Não recomendamos modificar o valor padrão de repetition_penalty para modelos QVQ.

presence_penaltyfloat(Opcional)

Controla a repetição de conteúdo quando o modelo gera texto.

Intervalo de valores: [-2.0, 2.0]. Valores positivos reduzem a repetição, enquanto valores negativos a aumentam.

Em cenários que exigem diversidade, diversão ou criatividade, como escrita criativa ou brainstorming, aumente este valor. Em cenários que enfatizam consistência e precisão terminológica, como documentos técnicos ou textos formais, diminua este valor.

Valores padrão de presence_penalty

Qwen3.8 (modo sem pensamento), Qwen3.7 (modo sem pensamento), Qwen3.6 (modo sem pensamento), Qwen3.5-Omni, Qwen3.5 (modo sem pensamento), Qwen3 (modo sem pensamento), Série Qwen3-Instruct/1.7b/4b (modo de pensamento), série QVQ, qwen-max, série qwen2.5-vlQwen3-VL (sem pensamento): 1.5;

qwen-plus/qwen-plus-latest/2025-04-28 (modo de pensamento): 0.5;

Todos os outros são 0.0.

Série DeepSeek (fornecida pela Alibaba Cloud): versão destilada deepseek-r1-distill-qwen: 1;

Série Kimi (fornecida pela Alibaba Cloud): kimi-k2.7-code, kimi-k2.6, kimi-k2.5: 0.0;

Série Kimi (fornecida pela Moonshot AI): 0.0;

Série MiniMax (fornecida pela Alibaba Cloud): MiniMax-M2.5: 0.0;

Outros modelos DeepSeek, Kimi, GLM e MiniMax não possuem valor padrão.

Como funciona

Se o valor do parâmetro for positivo, o modelo aplica uma penalidade aos tokens que já existem no texto. A penalidade não está relacionada ao número de vezes que o token aparece. Isso reduz a probabilidade de esses tokens reaparecerem, diminuindo a repetição de conteúdo e aumentando a diversidade vocabular.

Exemplo

Prompt: Traduza esta frase para chinês: "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."

Valor do parâmetro 2.0: This movie is great. The plot is fantastic, the acting is superb, and the music is also very beautiful. Overall, the entire film is just incredible. It is actually truly outstanding. The storyline is very exciting, the performances are excellent, and the soundtrack is so moving.

Valor do parâmetro 0.0: This movie is good. The plot is good, the acting is good, and the music is good. Overall, the whole movie is very good. In fact, it is really great. The plot is very good, the acting is also very excellent, and the music is equally outstanding.

Valor do parâmetro -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. In fact, it is really good. The plot is very good, the acting is very good, and the music is very good.

Não modifique o valor padrão de presence_penalty para modelos QVQ.

O SDK Java não suporta a definição deste parâmetro*.* Ao chamar via HTTP, coloque presence_penalty no objeto parameters.

vl_high_resolution_imagesboolean(Opcional) Valor padrão: false

Define se o limite de pixels para imagens de entrada deve ser aumentado para a contagem de pixels correspondente a 16384 tokens. Para mais informações, consulte Processing high-resolution images.

  • vl_high_resolution_images: true usa uma estratégia de resolução fixa e ignora a configuração max_pixels. Se a resolução for excedida, a contagem total de pixels da imagem será reduzida para permanecer dentro desse limite.

    Clique para visualizar os limites de pixels de cada modelo

    Quando vl_high_resolution_images é True, os limites de pixels variam conforme o modelo:

    • Para as séries Qwen3.8, Qwen3.7, Qwen3.6, série Qwen3.5, série Qwen3-VL e modelos , o valor é 16777216. (Cada Token corresponde a 32 32 pixels. O valor total é calculado como 1638432*32.)
    • Série QVQ, outros modelos da série Qwen2.5-VL: 12845056 (1 token corresponde a 28 28 pixels, o que equivale a 1638428*28)
  • Quando vl_high_resolution_images é false, o limite de pixels é determinado por max_pixels. Se a contagem de pixels da imagem de entrada exceder max_pixels, a imagem será reduzida para ficar dentro do limite de max_pixels. O limite padrão de pixels para cada modelo é o valor padrão de max_pixels.

No SDK Java, este parâmetro é vlHighResolutionImages (requer V2.20.8 ou posterior). Ao chamar via HTTP, coloque vl_high_resolution_images no objeto parameters.

vl_enable_image_hw_outputboolean(Opcional) O valor padrão é false.

Define se as dimensões da imagem redimensionada devem ser retornadas. O modelo redimensiona a imagem de entrada. Se você definir este parâmetro como True, ele retornará a altura e a largura da imagem redimensionada. Se a saída em streaming estiver ativada, essa informação será retornada no último chunk. Isso é suportado por Qwen-VL models.

No SDK Java, este parâmetro é vlEnableImageHwOutput. A versão mínima necessária do SDK Java é 2.20.8*.* Ao chamar via HTTP, coloque vl_enable_image_hw_output no objeto parameters.

max_tokensinteger(Opcional, será descontinuado)

Este parâmetro será descontinuado. Para novas integrações, use max_completion_tokens.

O significado deste parâmetro varia conforme o modelo:

  • deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731: Número máximo de tokens para a soma da resposta do modelo e do conteúdo da cadeia de pensamento. Se a saída do modelo exceder esse valor, a geração para antecipadamente e o finish_reason retornado é length.
  • glm-5.3: max_tokens é o número máximo de tokens para a soma da resposta do modelo e do conteúdo da cadeia de pensamento. Se a saída do modelo exceder esse valor, a geração será interrompida antecipadamente e o finish_reason retornado será length. O glm-5.3 ignora o parâmetro thinking_budget.
  • glm-5.2: Quando o parâmetro thinking_budget não é passado, max_tokens representa o número máximo de tokens para a soma da resposta do modelo e do conteúdo da cadeia de pensamento; se a saída exceder esse valor, a geração para antecipadamente com o finish_reason sendo length. Quando o parâmetro thinking_budget é passado, max_tokens representa o número máximo de tokens apenas para a resposta do modelo, e o número de tokens da parte da cadeia de pensamento é controlado separadamente por thinking_budget.
  • Outros modelos: Número máximo de tokens para a resposta do modelo. Se o conteúdo gerado exceder esse valor, a geração para antecipadamente e o finish_reason retornado é length.

Para os modelos GLM, os valores padrão e máximo estão listados na tabela a seguir. Para os demais modelos, os valores padrão e máximo correspondem ao comprimento máximo de saída do modelo.

FornecedorModeloValor padrãoValor máximo
Alibaba Cloudglm-5.3, glm-5.2, glm-5.2-fast-preview, glm-5.1, glm-565536131072
ZHIPU AIZHIPU/GLM-5.3, ZHIPU/GLM-5.265536131072

No SDK Java, este parâmetro é maxTokens. Para modelos Qwen-VL, ele é maxLength no SDK Java, mas versões posteriores à 2.18.4 também suportam a definição como maxTokens. Ao chamar via HTTP, coloque max_tokens no objeto parameters.

max_completion_tokensinteger(Opcional)

Comprimento máximo da saída do modelo, incluindo a cadeia de pensamento e a resposta do modelo. Se a saída do modelo exceder esse valor, a geração para antecipadamente e o finish_reason retornado é length.

Para os modelos GLM, consulte a tabela do parâmetro max_tokens para os valores padrão e máximo. Para os demais modelos, os valores padrão e máximo correspondem ao comprimento máximo de saída do modelo.

Diferença em relação a max_tokens: max_completion_tokens sempre limita a saída completa do modelo (cadeia de pensamento + resposta). O escopo específico de max_tokens varia conforme o modelo e a configuração de thinking_budget, como descrito acima. Para modelos de raciocínio, recomendamos o uso de max_completion_tokens.

Os seguintes modelos são suportados:

  • Qwen Max: Qwen3.7-Max e modelos posteriores
  • Qwen Plus: Qwen3.5-Plus e modelos posteriores
  • Qwen Flash: Qwen3.5-Flash e modelos posteriores
  • Kimi: kimi-k2.5 e modelos posteriores
  • GLM: Os modelos fornecidos pela Alibaba Cloud e pela ZHIPU AI listados na tabela anterior
  • MiniMax: MiniMax-M2.5 e modelos posteriores
  • DeepSeek: deepseek-v4-pro e modelos posteriores

Exceto pelos modelos GLM fornecidos pela ZHIPU AI listados na tabela anterior, os modelos acima não incluem outros modelos fornecidos diretamente por terceiros.

Pode haver uma diferença de até 10 tokens entre a contagem real de tokens de saída e o valor especificado em max_completion_tokens.

O SDK Java atualmente não suporta este parâmetro. Ao chamar via HTTP, coloque max_completion_tokens no objeto parameters.

seedinteger(Opcional)

Semente de número aleatório. Este parâmetro garante resultados reproduzíveis com a mesma entrada e parâmetros. Se você passar o mesmo valor de seed em uma chamada e os outros parâmetros permanecerem inalterados, o modelo retornará o mesmo resultado sempre que possível.

Intervalo de valores: [0,2<sup>31</sup>−1].

Ao chamar via HTTP, coloque seed no objeto parameters.

streamboolean(Opcional)O valor padrão é false.

Define se a resposta deve ser transmitida em streaming. Os valores válidos são:

  • false: O modelo gera todo o conteúdo e depois retorna o resultado de uma só vez.
  • true: O modelo gera e produz o conteúdo em tempo real. Isso significa que o modelo envia imediatamente um chunk de conteúdo assim que ele é gerado.

Este parâmetro é suportado apenas pelo SDK Python. Para implementar saída em streaming com o SDK Java, chame a interface streamCall. Para implementar saída em streaming via HTTP, especifique X-DashScope-SSE como enable no cabeçalho.

Qwen3 edição comercial (modo de pensamento), Qwen3 edição open source, QwQ e QVQ suportam apenas saída em streaming.

incremental_outputboolean(Opcional) O valor padrão é false. Para os modelos Qwen3-Max, Qwen3-VL, Qwen3 open source edition, QwQ e QVQ, o padrão é true.

Define se a saída incremental deve ser ativada no modo de streaming. Recomendamos definir este parâmetro como true.

Valores:

  • false: Cada saída contém toda a sequência gerada até o momento. A última saída corresponde ao resultado completo da geração.
I
I like
I like apple
I like apple.
  • true (recomendado): A saída é incremental. As saídas subsequentes não incluem o conteúdo já retornado anteriormente. É necessário ler esses fragmentos sequencialmente em tempo real para obter o resultado completo.
I
like
apple
.

No SDK Java, este parâmetro é incrementalOutput. Em chamadas via HTTP, inclua incremental_output no objeto parameters.

Os modelos QwQ e os modelos Qwen3 no modo de raciocínio aceitam apenas o valor true para este parâmetro. Como o valor padrão dos modelos da edição comercial do Qwen3 é false, defina-o manualmente como true ao usar o modo de raciocínio.

Os modelos da edição open source do Qwen3 não permitem definir este parâmetro como false.

response_formatobject (Opcional) O valor padrão é {"type": "text"}.

Formato do conteúdo retornado. Os valores válidos são:

  • {"type": "text"}: Retorna uma resposta em texto.
  • {"type": "json_object"}: Retorna uma string JSON em formato padrão.
  • {"type": "json_schema", "json_schema": {...}}: Retorna uma string JSON estritamente em conformidade com o JSON Schema especificado, o que permite controlar com precisão a estrutura da saída e os tipos dos campos.

Para mais informações, consulte Structured output. Os modos json_object e json_schema são compatíveis com modelos diferentes. Para mais informações, consulte Supported models.

Ao especificar {"type": "json_object"}, instrua explicitamente o modelo a gerar JSON no prompt, por exemplo: "Por favor, responda em formato JSON". Caso contrário, ocorrerá um erro. Ao especificar {"type": "json_schema", ...}, o prompt não precisa conter a palavra-chave JSON.

No SDK Java, este parâmetro é responseFormat. Em chamadas via HTTP, inclua response_format no objeto parameters.

Propriedades

typestring(Obrigatório)

Formato do conteúdo retornado. Os valores válidos são:

  • text: Retorna uma resposta em texto.
  • json_object: Retorna uma string JSON em formato padrão.
  • json_schema: Retorna uma string JSON estritamente em conformidade com a estrutura definida no campo json_schema.

json_schemaobject(Opcional)

Obrigatório quando type é json_schema. Define a estrutura JSON que a saída do modelo deve seguir. Para mais informações, consulte Obtendo saída estruturada.

Em chamadas via DashScope, é necessário construir o JSON Schema manualmente. Para o formato e exemplos, consulte Obtendo saída estruturada. O Java SDK ainda não é suportado.

Propriedades

namestring(Obrigatório)

O nome do schema.

schemaobject(Obrigatório)

O objeto JSON Schema que descreve a estrutura da saída. Use properties para definir a estrutura dos campos, required para listar os campos obrigatórios e additionalProperties para controlar se campos não definidos no schema podem ser retornados. Recomendamos definir additionalProperties como false, para que apenas os campos definidos sejam retornados. Tipos de dados compatíveis: string, number, integer, boolean, object, array e enum. Para mais informações, consulte Guia de configuração.

strictboolean(Opcional)

Indica se a estrutura definida por schema deve ser seguida estritamente. Recomendamos definir este parâmetro como true.

result_formatstring(Opcional)O valor padrão é text. Para os modelos Qwen3-Max, Qwen3-VL, QwQ e modelos open source do Qwen3, o padrão é message.

Formato dos dados retornados. Recomendamos definir este parâmetro como message para facilitar multi-turn conversations.

A plataforma unificará futuramente o valor padrão para message.

No SDK Java, este parâmetro é resultFormat. Em chamadas via HTTP, inclua result_format no objeto parameters.

Para os modelos Qwen-VL, QVQ, definir o valor como text não produz efeito.

Os modelos Qwen3-Max, Qwen3-VL e Qwen3 no modo de raciocínio aceitam apenas message. Como o valor padrão dos modelos da edição comercial do Qwen3 é text, é necessário defini-lo como message.

Ao usar o SDK Java para chamar um modelo open source do Qwen3 e passar text, a resposta ainda será retornada no formato message.

logprobs boolean (Opcional) O valor padrão é false.

Define se as probabilidades logarítmicas dos tokens de saída devem ser retornadas. Os valores válidos são:

  • true

    Retorna

  • false

    Não retorna.

Modelos compatíveis:

  • Modelos snapshot da série qwen-plus (exceto modelos da edição estável)
  • Série qwen3-vl-plus (incluindo modelos da edição estável)
  • Modelos open source do Qwen3

Em chamadas via HTTP, inclua logprobs no objeto parameters.

top_logprobs integer (Opcional) O valor padrão é 0.

Especifica a quantidade de tokens candidatos mais prováveis a serem retornados em cada etapa de geração.

Intervalo de valores: [0, 5]

Este parâmetro só tem efeito se logprobs for true.

No SDK Java, este parâmetro é topLogprobs. Em chamadas via HTTP, inclua top_logprobs no objeto parameters.

ninteger(Opcional) O valor padrão é 1.

Número de respostas a serem geradas. O intervalo de valores é 1-4. Para cenários que exigem múltiplas respostas, como escrita criativa ou textos publicitários, defina um valor maior para n.

Atualmente, apenas os modelos Qwen3 (non-thinking mode) são compatíveis. O valor é fixado em 1 se o parâmetro tools for enviado.

Definir um valor maior para n não aumenta o consumo de tokens de entrada, mas eleva o consumo de tokens de saída.

Em chamadas via HTTP, inclua n no objeto parameters.

stopstring ou array(Opcional)

Usado para especificar palavras de parada. Quando uma string ou token_id definido em stop aparece no texto gerado, a geração é interrompida imediatamente.

É possível enviar palavras sensíveis para controlar a saída do modelo.

Quando stop é um array, não é permitido combinar token_id e strings como elementos. Por exemplo, não é válido especificar ["Hello",104307].

Em chamadas via HTTP, inclua stop no objeto parameters.

toolsarray(Opcional)

Array contendo um ou mais objetos de ferramenta que o modelo pode chamar durante a invocação de funções. Para mais informações, consulte Function calling.

Ao usar tools, defina result_format como message.

O parâmetro tools é obrigatório ao iniciar a invocação de funções ou ao enviar resultados da execução de ferramentas.

Propriedades

typestring(Obrigatório)

Tipo da ferramenta. Atualmente, apenas function é suportado.

functionobject(Obrigatório)

Propriedades

namestring(Obrigatório)

Nome da função da ferramenta. Deve conter apenas letras e números, podendo incluir sublinhados e hifens. O comprimento máximo é de 64 caracteres.

descriptionstring(Obrigatório)

Descrição da função da ferramenta, que auxilia o modelo a decidir quando e como invocá-la.

parametersobject(Opcional) O valor padrão é {}.

Descrição dos parâmetros da ferramenta, que deve ser um JSON Schema válido. Para detalhes sobre JSON Schema, consulte este link. Se o parâmetro parameters estiver vazio, significa que a ferramenta não possui parâmetros de entrada, como uma ferramenta de consulta de hora.

Para melhorar a precisão das chamadas de ferramentas, recomendamos enviar parameters.

Em chamadas via HTTP, inclua tools no objeto parameters. Este recurso não é suportado temporariamente para as séries de modelos qwen-vl.

tool_choicestring ou object(Opcional) O valor padrão é auto.

Estratégia de seleção de ferramentas. Configure este parâmetro para forçar um método de chamada de ferramenta para um tipo específico de problema, como sempre usar uma determinada ferramenta ou desativar todas as ferramentas.

  • auto

    O LLM escolhe a estratégia de ferramentas autonomamente.

  • none

    Para desativar temporariamente as chamadas de ferramentas em uma solicitação específica, defina o parâmetro tool_choice como none.

  • {"type": "function", "function": {"name": "the_function_to_call"}}

    Para forçar a chamada de uma ferramenta específica, defina o parâmetro tool_choice como {"type": "function", "function": {"name": "the_function_to_call"}}, onde the_function_to_call é o nome da função da ferramenta especificada.

    Modelos no modo de raciocínio não suportam a chamada forçada de uma ferramenta específica.

No SDK Java, este parâmetro é toolChoice. Em chamadas via HTTP, inclua tool_choice no objeto parameters.

parallel_tool_calls boolean (Opcional) O valor padrão é false.

Define se as chamadas paralelas de ferramentas devem ser ativadas.

Valores válidos:

  • true: Ativado
  • false: Desativado.

Para mais informações sobre chamadas paralelas de ferramentas, consulte Parallel tool calls.

No SDK Java, este parâmetro é parallelToolCalls. Em chamadas via HTTP, inclua parallel_tool_calls no objeto parameters.

Objeto de resposta de chat (formatos de saída streaming e não-streaming são consistentes)

{
  "request_id": "902fee3b-f7f0-9a8c-96a1-6b4ea25af114",
  "output": {
    "text": null,
    "finish_reason": null,
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "role": "assistant",
          "content": "I am a large-scale language model developed by Alibaba Cloud, and my name is Qwen."
        }
      }
    ]
  },
  "usage": {
    "input_tokens": 22,
    "output_tokens": 17,
    "total_tokens": 39
  }
}

status_codestring

Código de status da requisição. O valor 200 indica sucesso; qualquer outro valor significa falha.

O SDK Java não retorna este parâmetro. Em caso de falha na chamada, uma exceção é lançada contendo o conteúdo de status_code e message.

request_idstring

ID exclusivo desta chamada.

O SDK Java retorna este parâmetro como requestId.

codestring

Código de erro. Este campo permanece vazio quando a chamada é bem-sucedida.

Apenas o SDK Python retorna este parâmetro.

outputobject

Informações sobre o resultado da chamada.

Properties

textstring

Resposta gerada pelo modelo. Se o parâmetro de entrada result_format estiver definido como text, o conteúdo da resposta será retornado neste campo.

finish_reasonstring

Este parâmetro não estará vazio se o parâmetro de entrada result_format for definido como text.

Quatro situações possíveis podem ocorrer:

  • null durante a geração
  • stop quando a saída do modelo termina naturalmente ou atinge uma condição de parada nos parâmetros de entrada
  • Processo encerrado porque a saída gerada excedeu o tamanho máximo.
  • Valor definido como tool_calls quando ocorre uma chamada de ferramenta.

choicesarray

Informações de saída do modelo. O parâmetro choices é retornado quando result_format é message.

Properties

finish_reasonstring

O valor pode ser um dos seguintes:

  • null durante a geração
  • stop quando a saída do modelo termina naturalmente ou atinge uma condição de parada nos parâmetros de entrada
  • Geração interrompida pelo motivo length, indicando que a saída é muito longa.
  • Motivo tool_calls sinaliza a ocorrência de uma chamada de ferramenta.

messageobject

Objeto de mensagem produzido pelo modelo.

Properties

rolestring

Função da mensagem de saída, que deve ser assistant.

contentstring or array

Conteúdo da mensagem de saída. Será um array ao utilizar modelos das séries qwen-vl ou qwen-audio, e uma string nos demais casos.

Este valor fica vazio se houver iniciação de function calling.

Properties

textstring

Conteúdo da mensagem de saída para modelos das séries qwen-vl ou qwen-audio.

image_hwarray

Ao ativar o parâmetro vl_enable_image_hw_output em um modelo da série Qwen-VL, dois cenários são possíveis:

  • Entrada de imagem: Retorna altura e largura da imagem em pixels.
  • Entrada de vídeo: Retorna um array vazio.

reasoning_content string

Conteúdo do raciocínio profundo do modelo.

tool_callsarray

O parâmetro tool_calls é gerado quando o modelo precisa invocar uma ferramenta.

Properties

functionobject

Nome da ferramenta invocada e seus parâmetros de entrada.

Properties

namestring

Nome da ferramenta que está sendo chamada.

argumentsstring

Parâmetros de entrada da ferramenta, formatados como uma string JSON.

Devido à aleatoriedade nas respostas do LLM, a string JSON de saída pode nem sempre atender aos requisitos da sua função. Recomendamos validar os parâmetros antes de passá-los para a função.

index integer

Índice do objeto tool_calls atual dentro do array tool_calls.

id string

ID desta resposta de ferramenta.

type string

Tipo da ferramenta, que deve ser function.

logprobsobject

Informações de probabilidade para o objeto choices atual.

Properties

content array

Array de tokens com informações de log de probabilidade.

Properties

token string

Token atual.

bytes array

Lista de bytes UTF-8 brutos do token atual. Útil para reconstruir com precisão o conteúdo de saída, especialmente ao lidar com emojis e caracteres chineses.

logprob float

Log de probabilidade do token atual. Um valor nulo indica probabilidade extremamente baixa.

top_logprobs array

Tokens mais prováveis na posição atual e seus respectivos logs de probabilidade. A quantidade de elementos corresponde ao parâmetro de entrada top_logprobs.

Properties

token string

Token atual.

bytes array

Lista de bytes UTF-8 brutos do token atual. Essencial para reconstruir fielmente o conteúdo de saída, principalmente no tratamento de emojis e caracteres chineses.

logprob float

Log de probabilidade do token atual. Valor nulo representa probabilidade extremamente baixa.

usagemap

Informações de tokens desta requisição de chat.

Properties

input_tokens integer

Comprimento do conteúdo de entrada do usuário após conversão para tokens. Para mais detalhes, consulte Additional information.

output_tokens integer

Comprimento do conteúdo de saída do modelo após conversão para tokens.

input_tokens_details object (Optional)

Detalhes sobre o comprimento do conteúdo de entrada convertido em tokens.

Properties

text_tokens integer (Optional)

Comprimento do texto de entrada após conversão para tokens.

image_tokens integer (Optional)

Comprimento da imagem de entrada após conversão para tokens.

video_tokens integer (Optional)

Comprimento do arquivo de vídeo ou lista de imagens de entrada após conversão para tokens.

total_tokens integer

Campo retornado para entradas de texto simples. Representa a soma de input_tokens e output_tokens.

image_tokens integer

Retornado quando o conteúdo de entrada inclui uma image. Indica o comprimento do conteúdo de imagem do usuário após conversão para tokens.

video_tokens integer

Presente quando o conteúdo de entrada contém um video. Corresponde ao comprimento do conteúdo de vídeo do usuário convertido em tokens.

audio_tokens integer

Disponível se o conteúdo de entrada incluir audio. Reflete o comprimento do conteúdo de áudio do usuário após conversão para tokens.

output_tokens_details object (Optional)

Detalhamento do comprimento da saída convertida em tokens. Apenas alguns modelos retornam este campo.

Properties

text_tokens integer (Optional)

Comprimento do texto de saída após conversão para tokens.

reasoning_tokens integer (Optional)

Extensão do processo de raciocínio convertida em tokens. Retornado exclusivamente por modelos de raciocínio.

audio_tokens integer (Optional)

Duração do áudio de saída em tokens. Campo específico para modelos com saída de áudio.

prompt_tokens_details object

Classificação detalhada dos tokens de entrada.

Properties

cached_tokens integer

Quantidade de tokens que atingiram o cache. Para saber mais sobre cache de contexto, veja Context cache.

cache_creation object

Dados sobre a criação de explicit cache.

Properties

ephemeral_5m_input_tokens integer

Quantidade de tokens usados para criar um cache explícito com validade de 5 minutos.

cache_creation_input_tokens integer

Volume de tokens consumidos na criação de um cache explícito.

cache_type string

Ao utilizar explicit caching, o valor será ephemeral. Caso contrário, este parâmetro não existirá.

Códigos de erro

Se a chamada do modelo falhar e retornar uma mensagem de erro, consulte Error codes para resolver o problema.