Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:Pensamiento profundo

Última actualización: Oct 19, 2026

Los modelos de pensamiento profundo razonan antes de responder, mejorando la precisión en tareas complejas como el razonamiento lógico y las matemáticas.

Este artículo describe cómo llamar al modelo de pensamiento profundo mediante la interfaz Chat Completion compatible con OpenAI o la interfaz DashScope. Para el uso de la API Responses, consulte: Pensamiento profundo.

Demostración

El siguiente es un ejemplo de conversación del modelo de Pensamiento Profundo, que muestra cómo el modelo primero realiza el razonamiento y luego da una respuesta.

Pregunta del usuario

¿Cuál es mayor, 9.9 o 9.11?

Proceso de pensamiento (campo reasoning_content)

Primero, la pregunta del usuario es: "¿Cuál es mayor, 9.9 o 9.11?", lo que parece ser una comparación de dos números: 9.9 y 9.11.

Necesito entender el significado de estos números. En matemáticas, 9.9 es equivalente a 9.90, y 9.11 es 9.11.

Para compararlos, debo tratarlos como decimales. 9.9 es 9 + 9/10 = 9.9, mientras que 9.11 es 9 + 11/100 = 9.11.

Ahora, compare 9.9 y 9.11: 9.9 es igual a 9.90 (porque 9.9 = 9.90), y 9.11 es 9.11. Ahora, compare 9.90 con 9.11: 9.90 es mayor que 9.11, porque 90/100 > 11/100.

Más precisamente: 9.9 = 99/10 = 990/100, 9.11 = 911/100, compare 990/100 con 911/100, obviamente 990 > 911, por lo que 990/100 > 911/100, por lo tanto 9.9 > 9.11.

También puedo observar directamente la parte decimal: la parte decimal de 9.9 es 0.9, y la parte decimal de 9.11 es 0.11. 0.9 es mayor que 0.11, porque 0.9 = 0.90 > 0.11.

Por lo tanto, 9.9 es mayor que 9.11.

Respuesta del modelo (campo content)

Conclusión: 9.9 es mayor que 9.11.

Uso

El Modelo de Pensamiento Profundo de Bailian se divide en dos modos:

  • Modo de pensamiento mixto: El pensamiento se puede habilitar o deshabilitar por solicitud, y los parámetros de control varían según el modelo. El siguiente ejemplo utiliza enable_thinking, los valores son los siguientes:

    • Establecido en true: el modelo piensa antes de responder;
    • Establecido en false: el modelo responde directamente;

    Compatible con OpenAI

    # 导入依赖与创建客户端...
    completion = client.chat.completions.create(
        model="qwen3.8-max", # 选择模型
        messages=[{"role": "user", "content": "你是谁"}],
        # 由于 enable_thinking 非 OpenAI 标准参数,需要通过 extra_body 传入
        extra_body={"enable_thinking":True},
        # 流式输出方式调用
        stream=True,
        # 使流式返回的最后一个数据包包含Token消耗信息
        stream_options={
            "include_usage": True
        }
    )
    

    DashScope

    La API de DashScope de la serie Qwen3.5 utiliza una interfaz multimodal; el siguiente ejemplo generará un error url error. Para el método de llamada, consulte Habilitar/Deshabilitar modo de pensamiento.

    # 导入依赖...
    
    response = MultiModalConversation.call(
        # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key = "sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 可按需更换为其它深度思考模型
        model="qwen3.8-max",
        messages=messages,
        enable_thinking=True,
        stream=True,
        incremental_output=True
    )
    
  • Modo solo de pensamiento: El modelo siempre piensa antes de responder y no se puede deshabilitar. Salvo que no necesita configurar el parámetro enable_thinking, el formato de la solicitud es consistente con el modo de pensamiento híbrido.

El contenido de pensamiento se devuelve a través del campo reasoning_content, y el contenido de la respuesta se devuelve a través del campo content. El pensamiento profundo requiere tiempo adicional de razonamiento. Los ejemplos de este artículo utilizan llamadas con streaming de forma predeterminada (recomendado, puede ver el proceso de pensamiento en tiempo real y evitar largas esperas). El modelo comercial de pensamiento profundo también admite salida sin streaming (síncrona). Para uso y precauciones, consulte las preguntas frecuentes a continuación; algunos modelos (como qwen3.5-122b-a10b, qwen3.5-27b y otras versiones de código abierto) solo admiten salida Stream, y la llamada sin streaming reportará un error.

Modelos compatibles

Qwen3.8

Serie Max de Qwen3.8 (Modo de pensamiento híbrido, modo de pensamiento activado por defecto): qwen3.8-max

Serie Flash de Qwen3.8 (Modo de pensamiento híbrido, modo de pensamiento activado por defecto): qwen3.8-flash

Serie de código abierto de Qwen3.8 (Modo de pensamiento híbrido, modo de pensamiento activado por defecto): qwen3.8-27b

Serie de código abierto Qwen3.8 (Solo admite modo de pensamiento): qwen3.8-2.4t-a95b

Serie Qwen3.8 Omni (Modo de pensamiento híbrido, modo de pensamiento habilitado de forma predeterminada): qwen3.8-omni-flash. Ajuste el esfuerzo de pensamiento mediante reasoning_effort. Para más información, consulte Configuración del modo de pensamiento.

Qwen3.7

Serie Qwen3.7 Max (Modo de pensamiento híbrido, modo de pensamiento habilitado de forma predeterminada): qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08

Serie Max de Qwen3.7 (Solo se admite el modo de pensamiento): qwen3.7-max-preview, qwen3.7-max-2026-05-17

Serie Plus de Qwen3.7 (Modo de pensamiento híbrido, modo de pensamiento activado por defecto): qwen3.7-plus, qwen3.7-plus-2026-05-26

Serie Flash de Qwen3.7 (Modo de pensamiento híbrido, modo de pensamiento activado por defecto): qwen3.7-flash, qwen3.7-flash-2026-07-15

Qwen3.6

Serie Plus de Qwen3.6 (Modo de Pensamiento Híbrido, Modo de pensamiento activado por defecto): qwen3.6-plus, qwen3.6-plus-2026-04-02

Serie Flash de Qwen3.6 (Modo de Pensamiento Híbrido, Modo de pensamiento activado por defecto): qwen3.6-flash, qwen3.6-flash-2026-04-16

Qwen3.6 Edición de Código Abierto: qwen3.6-35b-a3b

Qwen3.5

  • Edición Comercial
    • Serie Plus de Qwen3.5 (Modo de Pensamiento Híbrido, Modo de pensamiento activado por defecto): qwen3.5-plus, qwen3.5-plus-2026-02-15
    • Serie Flash de Qwen3.5 (Modo de pensamiento híbrido, Modo de pensamiento activado por defecto): qwen3.5-flash, qwen3.5-flash-2026-02-23

Qwen3

  • Versión comercial
    • Serie Qwen Plus (Modo de pensamiento híbrido, modo de pensamiento no habilitado de forma predeterminada): qwen-plus, qwen-plus-latest, qwen-plus-2025-04-28 y modelos snapshot posteriores
    • Serie Flash de Qwen (Modo de pensamiento híbrido, modo de pensamiento no activado por defecto): qwen-flash, qwen-flash-2025-07-28 y modelos snapshot posteriores

DeepSeek

  • deepseek-v4.1-flash-1017 admite pensamiento profundo.
  • Modo de pensamiento híbrido, modo de pensamiento activado por defecto: deepseek-v4.1-flash, deepseek-v4-pro
  • Modo solo pensamiento: modelos de destilación deepseek-r1

GLM

  • Modo solo pensamiento: glm-5.3
  • Modo de pensamiento híbrido, modo de pensamiento activado por defecto: glm-5.2, glm-5.2-fast-preview, glm-5.1, glm-5

Kimi

  • Modo de pensamiento híbrido, modo de pensamiento desactivado por defecto: kimi-k2.6, kimi-k2.5
  • Modo solo pensamiento: kimi-k2.7-code

MiniMax

Modo solo pensamiento: MiniMax-M2.5

Inicio rápido

Requisito previo para el uso de la API: Haberobtenido y configurado la clave de API y completadoConfigurar la clave de API en variables de entorno. Si realiza la llamada mediante SDK, necesitaInstalar el SDK de OpenAI o DashScope(el SDK de Java de DashScope requiere al menos la versión 2.19.4).

El siguiente código utiliza la llamada en streaming qwen3.8-max con el modo de pensamiento activado como ejemplo.

Compatible con OpenAI

Python

Código de ejemplo

from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

messages = [{"role": "user", "content": "你是谁"}]

completion = client.chat.completions.create(
    model="qwen3.8-max",  # 您可以按需更换为其它深度思考模型
    messages=messages,
    extra_body={"enable_thinking": True},
    stream=True,
    stream_options={
        "include_usage": True
    },
)

reasoning_content = ""  # 完整思考过程
answer_content = ""  # 完整回复
is_answering = False  # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    # 只收集思考内容
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content

    # 收到content,开始进行回复
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

Respuesta

====================思考过程====================

好的,用户问“你是谁”,我需要给出一个准确且友好的回答。首先,我要确认自己的身份,即千问,由阿里巴巴集团旗下的通义实验室研发。接下来,应该说明我的主要功能,比如回答问题、创作文字、逻辑推理等。同时,要保持语气亲切,避免过于技术化,让用户感觉轻松。还要注意不要使用复杂术语,确保回答简洁明了。另外,可能需要加入一些互动元素,邀请用户提问,促进进一步交流。最后,检查是否有遗漏的重要信息,比如我的中文名称“千问”和英文名称“Qwen”,以及所属公司和实验室。确保回答全面且符合用户期望。
====================完整回复====================

你好!我是千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以回答问题、创作文字、进行逻辑推理、编程等,旨在为用户提供高质量的信息和服务。你可以叫我Qwen,或者直接叫我千问。有什么我可以帮你的吗?

Node.js

Código de ejemplo

import OpenAI from "openai";
import process from 'process';

// 初始化 openai 客户端
const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY, // 从环境变量读取
    // 以下为新加坡地域base_url,若使用弗吉尼亚地域模型,需要将base_url换成https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
    // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'
});

let reasoningContent = '';
let answerContent = '';
let isAnswering = false;

async function main() {
    try {
        const messages = [{ role: 'user', content: '你是谁' }];
        const stream = await openai.chat.completions.create({
            model: 'qwen-plus',
            messages,
            stream: true,
            enable_thinking: true
        });
        console.log('\n' + '='.repeat(20) + '思考过程' + '='.repeat(20) + '\n');

        for await (const chunk of stream) {
            if (!chunk.choices?.length) {
                console.log('\nUsage:');
                console.log(chunk.usage);
                continue;
            }

            const delta = chunk.choices[0].delta;

            // 只收集思考内容
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                if (!isAnswering) {
                    process.stdout.write(delta.reasoning_content);
                }
                reasoningContent += delta.reasoning_content;
            }

            // 收到content,开始进行回复
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + '完整回复' + '='.repeat(20) + '\n');
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                answerContent += delta.content;
            }
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

main();

Respuesta

====================思考过程====================

好的,用户问“你是谁”,我需要回答我的身份。首先,我应该明确说明我是千问,由阿里云开发的超大规模语言模型。接下来,可以提到我的主要功能,比如回答问题、创作文字、逻辑推理等。还要强调我的多语言支持,包括中文和英文,这样用户知道我可以处理不同语言的请求。另外,可能需要解释一下我的应用场景,比如学习、工作和生活中的帮助。不过用户的问题比较直接,可能不需要太详细的信息,保持简洁明了。同时,要确保语气友好,邀请用户进一步提问。检查有没有遗漏的重要信息,比如我的版本或最新更新,但可能用户不需要那么详细。最后,确认回答准确无误,没有错误信息。
====================完整回复====================

我是千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等多种任务,支持中英文等多种语言。如果你有任何问题或需要帮,欢迎随时告诉我!

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 以下是新加坡base_url,如果使用北京地域的模型,需要将base_url替换为:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
# 如果使用弗吉尼亚地域的模型,需要将base_url替换为:https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
# === 执行时请删除该注释 ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "user",
            "content": "你是谁"
        }
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    },
    "enable_thinking": true
}'

Respuesta

data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

.....

data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":10,"completion_tokens":360,"total_tokens":370},"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

data: [DONE]

DashScope

La API de DashScope de la serie Qwen3.5 utiliza una interfaz multimodal; el siguiente ejemplo reportará un error url error. Para el método de llamada, consulte Habilitar/Deshabilitar modo de pensamiento profundo.

Python

Código de ejemplo

import os
from dashscope import MultiModalConversation
import dashscope

# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

messages = [{"role": "user", "content": [{"text": "你是谁?"}]}]

completion = MultiModalConversation.call(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key = "sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.8-max",
    messages=messages,
    enable_thinking=True,
    stream=True,
    incremental_output=True,
)

# 定义完整思考过程
reasoning_content = ""
# 定义完整回复
answer_content = ""
# 判断是否结束思考过程并开始回复
is_answering = False

print("=" * 20 + "思考过程" + "=" * 20)

for chunk in completion:
    # 如果思考过程与回复皆为空,则忽略
    content = chunk.output.choices[0].message.content
    reasoning = chunk.output.choices[0].message.reasoning_content
    if not content and reasoning == "":
        pass
    else:
        # 如果当前为思考过程
        if reasoning != "" and not content:
            print(reasoning, end="", flush=True)
            reasoning_content += reasoning
        # 如果当前为回复
        elif content:
            if not is_answering:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20)
                is_answering = True
            print(content[0]["text"], end="", flush=True)
            answer_content += content[0]["text"]

# 如果您需要打印完整思考过程与完整回复,请将以下代码解除注释后运行
# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(f"{answer_content}")

Respuesta

====================思考过程====================
好的,用户问:“你是谁?”我需要回答这个问题。首先,我要明确自己的身份,即千问,由阿里云开发的超大规模语言模型。接下来,要说明我的功能和用途,比如回答问题、创作文字、逻辑推理等。同时,要强调我的目标是成为用户的得力助手,提供帮助和支持。

在表达时,要保持口语化,避免使用专业术语或复杂句式。可以加入一些亲切的语气词,比如“你好呀~”,让对话更自然。另外,要确保信息准确,不遗漏关键点,比如我的开发者、主要功能和使用场景。

还要考虑用户可能的后续问题,比如具体的应用例子或技术细节,所以在回答中可以适当埋下伏笔,引导用户进一步提问。例如,提到“无论是日常生活的疑问还是专业领域的问题,我都能尽力提供帮助”,这样既全面又开放。

最后,检查回答是否流畅,有没有重复或冗余的信息,确保简洁明了。同时,保持友好和专业的平衡,让用户感受到既亲切又可靠。
====================完整回复====================
你好呀~我是千问,是阿里云开发的一款超大规模语言模型。我能够回答问题、创作文字、进行逻辑推理、编程等等,旨在为用户提供帮助和支持。无论是日常生活的疑问还是专业领域的问题,我都能尽力提供帮助。有什么我可以帮你的吗?

Java

Código de ejemplo

// dashscope SDK的版本 >= 2.19.4
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
        // 以下为新加坡地域base_url,若使用弗吉尼亚地域模型,需要将base_url换成https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1
        // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    private static StringBuilder reasoningContent = new StringBuilder();
    private static StringBuilder finalContent = new StringBuilder();
    private static boolean isFirstPrint = true;

    private static void handleMultiModalConversationResult(MultiModalConversationResult message) {
        String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
        List<Map<String, Object>> contentList = (List<Map<String, Object>>) message.getOutput().getChoices().get(0).getMessage().getContent();
        String content = (contentList != null && !contentList.isEmpty()) ? (String) contentList.get(0).get("text") : "";

        if (!reasoning.isEmpty()) {
            reasoningContent.append(reasoning);
            if (isFirstPrint) {
                System.out.println("====================思考过程====================");
                isFirstPrint = false;
            }
            System.out.print(reasoning);
        }

        if (!content.isEmpty()) {
            finalContent.append(content);
            if (!isFirstPrint) {
                System.out.println("\n====================完整回复====================");
                isFirstPrint = true;
            }
            System.out.print(content);
        }
    }
    private static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage userMsg) {
        return MultiModalConversationParam.builder()
                 // 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
                // 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3.8-max")
                .enableThinking(true)
                .incrementalOutput(true)
                .messages(Arrays.asList(userMsg))
                .build();
    }
    public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage userMsg)
            throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
        MultiModalConversationParam param = buildMultiModalConversationParam(userMsg);
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(message -> handleMultiModalConversationResult(message));
    }

    public static void main(String[] args) {
        try {
            MultiModalConversation conv = new MultiModalConversation();
            MultiModalMessage userMsg = MultiModalMessage.builder().role(Role.USER.getValue()).content(Arrays.asList(Collections.singletonMap("text", "你是谁?"))).build();
            streamCallWithMessage(conv, userMsg);
//             打印最终结果
//            if (reasoningContent.length() > 0) {
//                System.out.println("\n====================完整回复====================");
//                System.out.println(finalContent.toString());
//            }
        } catch (ApiException | NoApiKeyException | InputRequiredException | UploadFileException e) {
            logger.error("An exception occurred: {}", e.getMessage());
        }
        System.exit(0);
    }
}

Respuesta

====================思考过程====================
好的,用户问“你是谁?”,我需要根据之前的设定来回答。首先,我的角色是千问,阿里巴巴集团旗下的超大规模语言模型。要保持口语化,简洁易懂。

用户可能刚接触我,或者想确认我的身份。应该先直接回答我是谁,然后简要说明我的功能和用途,比如回答问题、创作文字、编程等。还要提到支持多语言,这样用户知道我可以处理不同语言的需求。

另外,根据指导方针,要保持拟人性,所以语气要友好,可能用表情符号增加亲切感。同时,可能需要引导用户进一步提问或使用我的功能,比如问他们需要什么帮助。

需要注意不要使用复杂术语,避免冗长。检查是否有遗漏的关键点,比如多语言支持和具体能力。确保回答符合所有要求,包括口语化和简洁。
====================完整回复====================
你好!我是千问,阿里巴巴集团旗下的超大规模语言模型。我能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等,还能表达观点,玩游戏等。我熟练掌握多种语言,包括但不限于中文、英文、德语、法语、西班牙语等。有什么需要我帮忙的吗?

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
# 以下为新加坡地域url,若使用北京地域的模型,需将url替换为:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# 若使用弗吉尼亚地域的模型,需要将base_url替换为:https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === 执行时请删除该注释 ===
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.8-max",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [{"text": "你是谁?"}]
            }
        ]
    },
    "parameters":{
        "enable_thinking": true,
        "incremental_output": true,
        "result_format": "message"
    }
}'

Respuesta

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"嗯","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"input_tokens":11,"output_tokens":3},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"input_tokens":11,"output_tokens":4},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:3
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用户","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":16,"input_tokens":11,"output_tokens":5},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:4
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"问","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":17,"input_tokens":11,"output_tokens":6},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:5
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"“","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":18,"input_tokens":11,"output_tokens":7},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
......

id:358
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"帮助","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"input_tokens":11,"output_tokens":362},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:359
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":",","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":374,"input_tokens":11,"output_tokens":363},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:360
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"欢迎","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":375,"input_tokens":11,"output_tokens":364},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:361
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"随时","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":376,"input_tokens":11,"output_tokens":365},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:362
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"告诉我","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":377,"input_tokens":11,"output_tokens":366},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:363
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:364
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

Capacidades principales

Cambiar modo Pensamiento/Sin Pensamiento

Habilitar el modo de pensamiento puede mejorar la calidad de la respuesta, pero aumentará la latencia de respuesta y el consumo de tokens. Al utilizar modelos con modo de pensamiento híbrido, puede cambiar dinámicamente según la complejidad del problema sin cambiar el modelo:

  • Tareas simples (chat diario, preguntas y respuestas sencillas): Establezca enable_thinking en false para desactivar el pensamiento;
  • Tareas complejas (razonamiento lógico, generación de código, soluciones matemáticas): Establezca enable_thinking en true para activar el pensamiento.

Compatible con OpenAI

Importanteenable_thinking Parámetro no estándar de OpenAI. Si utiliza el SDK de Python de OpenAI, páselo mediante extra_body. En el SDK de Node.js, páselo como un parámetro de nivel superior.

Python

Código de ejemplo

from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=messages,
    # 通过 extra_body 设置 enable_thinking 开启思考过程
    extra_body={"enable_thinking": True},
    stream=True,
    stream_options={
        "include_usage": True
    },
)

reasoning_content = ""  # 完整思考过程
answer_content = ""  # 完整回复
is_answering = False  # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\n" + "=" * 20 + "Token 消耗" + "=" * 20 + "\n")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    # 只收集思考内容
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content

    # 收到content,开始进行回复
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

Respuesta

====================思考过程====================

嗯,用户问“你是谁”,我需要先确定他们想知道什么。可能他们第一次接触我,或者想确认我的身份。我应该先介绍自己是千问,由通义实验室研发。然后要说明我的功能,比如回答问题、创作文字、编程等,这样用户了解我能提供什么帮助。还要提到我支持多种语言,这样国际用户也会知道他们可以用不同语言交流。最后保持友好,邀请他们提问,这样可以促进进一步互动。要注意简洁明了,避免技术术语太多,让用户容易理解。可能用户需要的是快速了解我的能力,所以重点放在功能和用途上。还要检查有没有遗漏的信息,比如是否要提到阿里巴巴集团,或者更多技术细节。不过用户可能只需要基本的信息,不需要太深入。确保回答友好且专业,同时鼓励用户继续提问。
====================完整回复====================

我是千问,由通义实验室研发的超大规模语言模型。我可以帮助你回答问题、创作文字、编程、表达观点等,支持多语言交流。有什么需要我帮忙的吗?
====================Token 消耗====================

CompletionUsage(completion_tokens=221, prompt_tokens=10, total_tokens=231, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=None, reasoning_tokens=172, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0))

Node.js

Código de ejemplo

import OpenAI from "openai";
import process from 'process';

// 初始化OpenAI客户端
const openai = new OpenAI({
    // 如果没有配置环境变量,请用阿里云百炼API Key替换:apiKey: "sk-xxx"
    apiKey: process.env.DASHSCOPE_API_KEY,
    // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'
});

let reasoningContent = ''; // 完整思考过程
let answerContent = ''; // 完整回复
let isAnswering = false; // 是否进入回复阶段

async function main() {
    try {
        const messages = [{ role: 'user', content: '你是谁' }];

        const stream = await openai.chat.completions.create({
            model: 'qwen-plus',
            messages,
            // Node.js SDK 中,enable_thinking 等非标准参数作为顶层属性传递,无需放在 extra_body 中
            enable_thinking: true,
            stream: true,
            stream_options: {
                include_usage: true
            },
        });

        console.log('\n' + '='.repeat(20) + '思考过程' + '='.repeat(20) + '\n');

        for await (const chunk of stream) {
            if (!chunk.choices?.length) {
                console.log('\n' + '='.repeat(20) + 'Token 消耗' + '='.repeat(20) + '\n');
                console.log(chunk.usage);
                continue;
            }

            const delta = chunk.choices[0].delta;

            // 只收集思考内容
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                if (!isAnswering) {
                    process.stdout.write(delta.reasoning_content);
                }
                reasoningContent += delta.reasoning_content;
            }

            // 收到content,开始进行回复
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + '完整回复' + '='.repeat(20) + '\n');
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                answerContent += delta.content;
            }
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

main();

Respuesta

====================思考过程====================

嗯,用户问“你是谁”,我需要先确定他们想知道什么。可能他们第一次接触我,或者想确认我的身份。我应该先介绍自己的名字和身份,比如千问,英文名Qwen。然后说明我是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。接下来要提到我的功能,比如回答问题、创作文字、编程、表达观点等,这样用户能了解我的用途。还要提到我支持多语言,这样国际用户会觉得有用。最后邀请他们提问,保持友好和开放的态度。注意用简洁易懂的语言,避免技术术语太多。可能用户需要帮助,或者只是好奇,所以回应要亲切,鼓励他们进一步互动。另外,可能需要考虑用户是否有更深层的需求,比如测试我的能力或者寻找特定帮助,但初次回答还是以基本信息和引导为主。保持口语化,不用复杂句子,让信息传达更有效。
====================完整回复====================

你好!我是千问,英文名Qwen,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你回答问题、创作文字(比如写故事、写公文、写邮件、写剧本等)、进行逻辑推理、编程,甚至表达观点和玩游戏。我支持多种语言,包括但不限于中文、英文、德语、法语、西班牙语等。

如果你有任何问题或需要帮助,随时告诉我!
====================Token 消耗====================

{
  prompt_tokens: 10,
  completion_tokens: 288,
  total_tokens: 298,
  completion_tokens_details: { reasoning_tokens: 188 },
  prompt_tokens_details: { cached_tokens: 0 }
}

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/model-studio/get-api-key
# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
# === 执行时请删除该注释 ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "user",
            "content": "你是谁"
        }
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    },
    "enable_thinking": true
}'

DashScope

La API de DashScope de la serie Qwen3.5 utiliza una interfaz multimodal. El siguiente ejemplo generará un error url error. Para el método de llamada, consulte Habilitar/Deshabilitar modo de pensamiento.

Python

Código de ejemplo

import os
from dashscope import MultiModalConversation
import dashscope

# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/"

# 初始化请求参数
messages = [{"role": "user", "content": [{"text": "你是谁?"}]}]

completion = MultiModalConversation.call(
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    # 各地域的API Key不同。获取API Key:请参考 https://www.alibabacloud.com/help/model-studio/regions
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.8-max",
    messages=messages,
    enable_thinking=True,     # 开启思考过程
    stream=True,              # 开启流式输出
    incremental_output=True,  # 开启增量输出
)

reasoning_content = ""  # 完整思考过程
answer_content = ""     # 完整回复
is_answering = False    # 是否进入回复阶段

print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    message = chunk.output.choices[0].message

    # 只收集思考内容
    if message.reasoning_content:
        if not is_answering:
            print(message.reasoning_content, end="", flush=True)
        reasoning_content += message.reasoning_content

    # 收到 content,开始进行回复(content 为列表类型)
    if message.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
            is_answering = True
        print(message.content[0]["text"], end="", flush=True)
        answer_content += message.content[0]["text"]

print("\n" + "=" * 20 + "Token 消耗" + "=" * 20 + "\n")
print(chunk.usage)
# 循环结束后,reasoning_content 和 answer_content 变量中包含了完整的内容
# 您可以在这里根据需要进行后续处理
# print(f"\n\n完整思考过程:\n{reasoning_content}")
# print(f"\n完整回复:\n{answer_content}")

Respuesta

====================思考过程====================

嗯,用户问“你是谁?”,我需要先确定他们想知道什么。可能他们第一次接触我,或者想确认我的身份。首先,我应该介绍自己的名字,千问,然后说明我是通义实验室研发的超大规模语言模型。接下来,可能需要解释我的功能,比如回答问题、创作文字、编程等,这样用户能了解我的用途。还要提到我支持多种语言,这样国际用户也能知道他们可以用不同语言交流。最后,保持友好,邀请他们提问,这样能促进进一步的互动。要注意用简洁易懂的语言,避免技术术语太多,让用户容易理解。可能用户有更深层的需求,比如测试我的能力,或者寻找帮助,所以提供具体的例子会更好,比如写故事、写公文、写邮件等。还要确保回答结构清晰,分点说明功能,但可能不需要用项目符号,而是自然过渡。另外,要强调我是AI助手,没有个人意识,所有回答都基于训练数据,这样避免误解。可能需要检查有没有遗漏的重要信息,比如多模态能力,或者最新的更新,但根据之前的回复,可能不需要太深入。总之,回答要全面但简洁,友好且有帮助,让用户感到被理解和支持。
====================完整回复====================

我是千问,阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我可以帮助你:

1. **回答问题**:无论是学术问题、常识问题还是专业领域问题,我都可以尝试为你解答。
2. **创作文字**:写故事、写公文、写邮件、写剧本等,我都可以帮你完成。
3. **逻辑推理**:我可以帮助你进行逻辑推理和解决问题。
4. **编程**:我可以理解并生成多种编程语言的代码。
5. **多语言支持**:我支持多种语言,包括但不限于中文、英文、德语、法语、西班牙语等。

如果你有任何问题或需要帮助,随时告诉我!
====================Token 消耗====================

{"input_tokens": 11, "output_tokens": 405, "total_tokens": 416, "output_tokens_details": {"reasoning_tokens": 256}, "prompt_tokens_details": {"cached_tokens": 0}}

Java

Código de ejemplo

// dashscope SDK的版本 >= 2.19.4
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.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;
import java.lang.System;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    private static StringBuilder reasoningContent = new StringBuilder();
    private static StringBuilder finalContent = new StringBuilder();
    private static boolean isFirstPrint = true;

    private static void handleMultiModalConversationResult(MultiModalConversationResult message) {
        String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
        List<Map<String, Object>> contentList = (List<Map<String, Object>>) message.getOutput().getChoices().get(0).getMessage().getContent();
        String content = (contentList != null && !contentList.isEmpty()) ? (String) contentList.get(0).get("text") : "";

        if (!reasoning.isEmpty()) {
            reasoningContent.append(reasoning);
            if (isFirstPrint) {
                System.out.println("====================思考过程====================");
                isFirstPrint = false;
            }
            System.out.print(reasoning);
        }

        if (!content.isEmpty()) {
            finalContent.append(content);
            if (!isFirstPrint) {
                System.out.println("\n====================完整回复====================");
                isFirstPrint = true;
            }
            System.out.print(content);
        }
    }
    private static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage userMsg) {
        return MultiModalConversationParam.builder()
                // 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3.8-max")
                .enableThinking(true)
                .incrementalOutput(true)
                .messages(Arrays.asList(userMsg))
                .build();
    }
    public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage userMsg)
            throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
        MultiModalConversationParam param = buildMultiModalConversationParam(userMsg);
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(message -> handleMultiModalConversationResult(message));
    }

    public static void main(String[] args) {
        try {
            // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
            MultiModalConversation conv = new MultiModalConversation("http", "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
            MultiModalMessage userMsg = MultiModalMessage.builder().role(Role.USER.getValue()).content(Arrays.asList(Collections.singletonMap("text", "你是谁?"))).build();
            streamCallWithMessage(conv, userMsg);
//             打印最终结果
//            if (reasoningContent.length() > 0) {
//                System.out.println("\n====================完整回复====================");
//                System.out.println(finalContent.toString());
//            }
        } catch (ApiException | NoApiKeyException | InputRequiredException | UploadFileException e) {
            logger.error("An exception occurred: {}", e.getMessage());
        }
        System.exit(0);
    }
}

Respuesta

====================思考过程====================
嗯,用户问“你是谁?”,我需要先确定他们想了解什么。可能他们想知道我的身份,或者是在测试我的反应。首先,我应该明确回答我是千问,阿里巴巴集团旗下的超大规模语言模型。然后,可能需要简要介绍我的功能,比如回答问题、创作文字、编程等,这样用户能了解我的用途。还要提到我支持多种语言,这样国际用户也会知道他们可以用不同语言交流。最后,保持友好,邀请他们提问,这样他们会觉得亲切,愿意继续互动。要注意回答不要太长,但信息要全面。可能用户还有后续问题,比如我的技术细节或者使用场景,但初次回答应该简洁明了。确保没有使用专业术语,让所有用户都能理解。检查有没有遗漏的重要信息,比如多语言支持和具体功能例子。好的,这样应该能覆盖用户的需求了。
====================完整回复====================
我是千问,阿里巴巴集团旗下的超大规模语言模型。我能够回答问题、创作文字(如写故事、写公文、写邮件、写剧本等)、进行逻辑推理、编程、表达观点、玩游戏等,支持多语言交流,包括但不限于中文、英文、德语、法语、西班牙语等。如果你有任何问题或需要帮助,欢迎随时告诉我!

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/model-studio/get-api-key
# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
# === 执行时请删除该注释 ===
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.8-max",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [{"text": "你是谁?"}]
            }
        ]
    },
    "parameters":{
        "enable_thinking": true,
        "incremental_output": true,
        "result_format": "message"
    }
}'

Respuesta

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"嗯","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"input_tokens":11,"output_tokens":3},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"input_tokens":11,"output_tokens":4},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:3
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用户","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":16,"input_tokens":11,"output_tokens":5},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:4
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"问","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":17,"input_tokens":11,"output_tokens":6},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:5
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"“","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":18,"input_tokens":11,"output_tokens":7},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}
......

id:358
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"帮助","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":373,"input_tokens":11,"output_tokens":362},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:359
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":",","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":374,"input_tokens":11,"output_tokens":363},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:360
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"欢迎","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":375,"input_tokens":11,"output_tokens":364},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:361
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"随时","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":376,"input_tokens":11,"output_tokens":365},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:362
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"告诉我","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":377,"input_tokens":11,"output_tokens":366},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:363
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

id:364
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":378,"input_tokens":11,"output_tokens":367},"request_id":"25d58c29-c47b-9e8d-a0f1-d6c309ec58b1"}

Además, el modelo de pensamiento híbrido de código abierto de Qwen3 y el modelo qwen-plus-2025-04-28admiten controlar dinámicamente el modo de pensamiento mediante prompts. Cuando enable_thinking es true, añada /no_think al prompt para deshabilitar el pensamiento; en conversaciones de múltiples turnos, para volver a habilitarlo, añada /think al prompt más reciente. El modelo siempre sigue la última instrucción /think o /no_think.

Limitar la longitud del pensamiento

El modelo de pensamiento profundo a veces genera un proceso de pensamiento extenso, lo que aumenta el tiempo de espera y consume más tokens. Mediante el parámetro thinking_budget se establece el número máximo de tokens del proceso de pensamiento y, tras superar el límite, el modelo emite inmediatamente la respuesta.

thinking_budget El valor predeterminado es la longitud máxima de la cadena de pensamiento del Modelo; consulte la tarjeta del Modelo en la consola de Bailian.

ImportanteParámetro thinking_budget para el número máximo de tokens admitidos en el proceso de pensamiento. Aplicable a los modelos de las series Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, Qwen3, GLM y Kimi.

Experimentar el Pensamiento Profundo en la consola

  1. Inicie sesión en la consola de Bailian de la plataforma de servicio de modelos grandes.
  2. En el panel de navegación izquierdo, seleccione Experience Center > Text.
  3. La página muestra el modelo Qwen3.7-Max por defecto. También puede hacer clic en el nombre del modelo y seleccionar otros modelos de la serie Qwen3 en la lista desplegable.
  4. Haga clic en la parte inferior del cuadro de entrada en Deep Think, active el modo de razonamiento y vea el Proceso de Pensamiento del modelo.
  5. Haga clic en Debugging en la esquina superior derecha y, en el panel de configuración que se abre, establezca el parámetro thinking_budget, que controla el número máximo de tokens generados por la cadena de pensamiento. Rango de valores 1~32768, valor predeterminado 4000. Para probar más modelos, puede ir a la Plaza de Modelos de Bailian.

Compatible con OpenAI

Python

Código de ejemplo

from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

messages = [{"role": "user", "content": "你是谁"}]

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=messages,
    # enable_thinking 参数开启思考过程,thinking_budget 参数设置最大推理过程 Token 数
    extra_body={
        "enable_thinking": True,
        "thinking_budget": 50
        },
    stream=True,
    stream_options={
        "include_usage": True
    },
)

reasoning_content = ""  # 完整思考过程
answer_content = ""  # 完整回复
is_answering = False  # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    # 只收集思考内容
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content

    # 收到content,开始进行回复
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

Respuesta

====================思考过程====================

好的,用户问“你是谁”,我需要给出一个清晰且友好的回答。首先,应该明确自己的身份,即千问,由阿里巴巴集团旗下的通义实验室研发。接下来,要说明自己的主要功能,比如回答
====================完整回复====================

我是千问,是阿里巴巴集团旗下的通义实验室研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等,旨在为用户提供帮助和便利。有什么我可以帮您的吗?

Node.js

Código de ejemplo

import OpenAI from "openai";
import process from 'process';

// 初始化 openai 客户端
const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY, // 从环境变量读取
    // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'
});

let reasoningContent = '';
let answerContent = '';
let isAnswering = false;

async function main() {
    try {
        const messages = [{ role: 'user', content: '你是谁' }];
        const stream = await openai.chat.completions.create({
            model: 'qwen-plus',
            messages,
            stream: true,
            // enable_thinking 参数开启思考过程,thinking_budget 参数设置最大推理过程 Token 数
            enable_thinking: true,
            thinking_budget: 50
        });
        console.log('\n' + '='.repeat(20) + '思考过程' + '='.repeat(20) + '\n');

        for await (const chunk of stream) {
            if (!chunk.choices?.length) {
                console.log('\nUsage:');
                console.log(chunk.usage);
                continue;
            }

            const delta = chunk.choices[0].delta;

            // 只收集思考内容
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                if (!isAnswering) {
                    process.stdout.write(delta.reasoning_content);
                }
                reasoningContent += delta.reasoning_content;
            }

            // 收到content,开始进行回复
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + '完整回复' + '='.repeat(20) + '\n');
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                answerContent += delta.content;
            }
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

main();

Respuesta

====================思考过程====================

好的,用户问“你是谁”,我需要给出一个清晰准确的回答。首先,我应该介绍自己的身份,即千问,由阿里巴巴集团旗下的通义实验室研发。接下来,要说明我的主要功能,比如回答问题
====================完整回复====================

我是千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等多种任务。如果你有任何问题或需要帮助,欢迎随时告诉我!

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 以下是新加坡base_url,如果使用北京地域的模型,需要将base_url替换为:https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
# 如果使用弗吉尼亚地域的模型,需要将base_url替换为:https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
# === 执行时请删除该注释 ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "user",
            "content": "你是谁"
        }
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    },
    "enable_thinking": true,
    "thinking_budget": 50
}'

Respuesta

data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

.....

data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":10,"completion_tokens":360,"total_tokens":370},"created":1745485391,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-e2edaf2c-8aaf-9e54-90e2-b21dd5045503"}

data: [DONE]

DashScope

La API de DashScope de la serie Qwen3.5 utiliza una interfaz multimodal, y el siguiente ejemplo generará un error url error. Para el método de llamada, consulte Habilitar/deshabilitar modo de pensamiento.

Python

Código de ejemplo

import os
from dashscope import MultiModalConversation
import dashscope

# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/"

messages = [{"role": "user", "content": [{"text": "你是谁?"}]}]

completion = MultiModalConversation.call(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key = "sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.8-max",
    messages=messages,
    enable_thinking=True,
    # 设置最大推理过程 Token 数
    thinking_budget=50,
    stream=True,
    incremental_output=True,
)

# 定义完整思考过程
reasoning_content = ""
# 定义完整回复
answer_content = ""
# 判断是否结束思考过程并开始回复
is_answering = False

print("=" * 20 + "思考过程" + "=" * 20)

for chunk in completion:
    # 如果思考过程与回复皆为空,则忽略
    content = chunk.output.choices[0].message.content
    reasoning = chunk.output.choices[0].message.reasoning_content
    if not content and reasoning == "":
        pass
    else:
        # 如果当前为思考过程
        if reasoning != "" and not content:
            print(reasoning, end="", flush=True)
            reasoning_content += reasoning
        # 如果当前为回复
        elif content:
            if not is_answering:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20)
                is_answering = True
            print(content[0]["text"], end="", flush=True)
            answer_content += content[0]["text"]

# 如果您需要打印完整思考过程与完整回复,请将以下代码解除注释后运行
# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(f"{answer_content}")

Respuesta

====================思考过程====================
好的,用户问“你是谁?”,我需要给出一个清晰且友好的回答。首先,我要介绍自己的身份,也就是千问,由阿里巴巴集团旗下的通义实验室研发。接下来,应该说明我的主要功能,比如
====================完整回复====================
我是千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等,旨在为用户提供全面、准确和有用的信息与帮助。有什么我可以帮您的吗?

Java

Código de ejemplo

// dashscope SDK的版本 >= 2.19.4
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
        // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    private static StringBuilder reasoningContent = new StringBuilder();
    private static StringBuilder finalContent = new StringBuilder();
    private static boolean isFirstPrint = true;

    private static void handleMultiModalConversationResult(MultiModalConversationResult message) {
        String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
        List<Map<String, Object>> contentList = (List<Map<String, Object>>) message.getOutput().getChoices().get(0).getMessage().getContent();
        String content = (contentList != null && !contentList.isEmpty()) ? (String) contentList.get(0).get("text") : "";

        if (!reasoning.isEmpty()) {
            reasoningContent.append(reasoning);
            if (isFirstPrint) {
                System.out.println("====================思考过程====================");
                isFirstPrint = false;
            }
            System.out.print(reasoning);
        }

        if (!content.isEmpty()) {
            finalContent.append(content);
            if (!isFirstPrint) {
                System.out.println("\n====================完整回复====================");
                isFirstPrint = true;
            }
            System.out.print(content);
        }
    }
    private static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage userMsg) {
        return MultiModalConversationParam.builder()
                // 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3.8-max")
                .enableThinking(true)
                .thinkingBudget(50)
                .incrementalOutput(true)
                .messages(Arrays.asList(userMsg))
                .build();
    }
    public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage userMsg)
            throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
        MultiModalConversationParam param = buildMultiModalConversationParam(userMsg);
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(message -> handleMultiModalConversationResult(message));
    }

    public static void main(String[] args) {
        try {
            MultiModalConversation conv = new MultiModalConversation();
            MultiModalMessage userMsg = MultiModalMessage.builder().role(Role.USER.getValue()).content(Arrays.asList(Collections.singletonMap("text", "你是谁?"))).build();
            streamCallWithMessage(conv, userMsg);
//             打印最终结果
//            if (reasoningContent.length() > 0) {
//                System.out.println("\n====================完整回复====================");
//                System.out.println(finalContent.toString());
//            }
        } catch (ApiException | NoApiKeyException | InputRequiredException | UploadFileException e) {
            logger.error("An exception occurred: {}", e.getMessage());
        }
        System.exit(0);
    }
}

Respuesta

====================思考过程====================
好的,用户问“你是谁?”,我需要给出一个清晰且友好的回答。首先,我要介绍自己的身份,也就是千问,由阿里巴巴集团旗下的通义实验室研发。接下来,应该说明我的主要功能,比如
====================完整回复====================
我是千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等,旨在为用户提供全面、准确和有用的信息与帮助。有什么我可以帮您的吗?

HTTP

Código de ejemplo

curl

# ======= 重要提示 =======
# 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
# === 执行时请删除该注释 ===
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.8-max",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [{"text": "你是谁?"}]
            }
        ]
    },
    "parameters":{
        "enable_thinking": true,
        "thinking_budget": 50,
        "incremental_output": true,
        "result_format": "message"
    }
}'

Respuesta

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"好的","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":14,"output_tokens":3,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":1}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":",","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":15,"output_tokens":4,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":2}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}

......

id:133
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"!","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":149,"output_tokens":138,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":50}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}

id:134
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":149,"output_tokens":138,"input_tokens":11,"output_tokens_details":{"reasoning_tokens":50}},"request_id":"2ce91085-3602-9c32-9c8b-fe3d583a2c38"}

Pasar el proceso de pensamiento

En conversaciones de múltiples turnos, preserve_thinking controla si el modelo lee el reasoning_content del mensaje histórico del asistente. Cuando se establece en true, estos contenidos de pensamiento se añadirán a la entrada de la siguiente ronda. El cliente necesita proporcionar los mensajes históricos del asistente y su messages en los reasoning_content de la solicitud. El valor predeterminado de cada modelo se basa en la Descripción de parámetros de Chat Completions.

Importantepreserve_thinkingEste parámetro solo admite las series qwen3.8-max, qwen3.8-flash, qwen3.8-omni-flash (habilitado de forma predeterminada), qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3.7-max-preview, qwen3.7-max-2026-05-17, qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.7-flash, qwen3.7-flash-2026-07-15, kimi-k2.7-code (despliegue en Alibaba Cloud Bailian), kimi-k2.6 (despliegue en Alibaba Cloud Bailian), kimi/kimi-k3 (despliegue en Moonshot), kimi/kimi-k2.7-code-highspeed (despliegue en Moonshot), kimi/kimi-k2.7-code (despliegue en Moonshot), kimi/kimi-k2.6 (despliegue en Moonshot).

Para los modelos anteriores Qwen3.8 Max, Qwen3.7, Qwen3.6 y Kimi que admiten este parámetro, si los mensajes históricos no contienen reasoning_content, habilitar este parámetro no causará un error.

Después de activarlo, en la conversación histórica reasoning_content se contará para el recuento de tokens de entrada y la facturación.

Compatible con OpenAI

Notapreserve_thinking Parámetro no estándar de OpenAI. Si usa el SDK de Python, debe pasarlo mediante extra_body.

Python

Código de ejemplo

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# 第一轮对话
messages = [
    {"role": "user", "content": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"}
]

first_reasoning = ""
first_content = ""
is_answering = False

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=messages,
    extra_body={"enable_thinking": True},
    stream=True,
    stream_options={"include_usage": True},
)

print("=" * 20 + "第一轮思考过程" + "=" * 20)

for chunk in completion:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        first_reasoning += delta.reasoning_content
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "第一轮回复" + "=" * 20)
            is_answering = True
        print(delta.content, end="", flush=True)
        first_content += delta.content

# 第二轮对话:传递思考过程,追问模型为什么排除了Kafka
messages = [
    {"role": "user", "content": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"},
    {
        "role": "assistant",
        "content": first_content,
        "reasoning_content": first_reasoning,
    },
    {"role": "user", "content": "你在对比时为什么排除了Kafka?"},
]

reasoning_content = ""
answer_content = ""
is_answering = False

# preserve_thinking 通过 extra_body 传入
completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=messages,
    extra_body={
        "enable_thinking": True,
        "preserve_thinking": True,
    },
    stream=True,
    stream_options={"include_usage": True},
)

print("\n" + "=" * 20 + "第二轮思考过程" + "=" * 20)

for chunk in completion:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "第二轮回复" + "=" * 20)
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

Respuesta

====================第一轮思考过程====================
用户需要为日均千万消息的电商系统选择消息队列。让我从吞吐量、可靠性、延迟消息、事务支持等维度对比主流方案...

RocketMQ:阿里电商场景验证,原生支持事务消息和延迟消息,分区级严格有序...
Kafka:极高吞吐量,但无原生事务消息和延迟消息支持,需自研补偿机制...
RabbitMQ:延迟低,但集群扩展能力有限,峰值万级TPS...
====================第一轮回复====================
综合电商场景的核心需求(事务消息、延迟消息、顺序性、峰值应对),推荐 Apache RocketMQ。如果团队已有 Kafka 生态或需强实时分析能力,Kafka 也是可行方案。
====================第二轮思考过程====================
用户在追问为什么排除了Kafka。回顾我的历史思考过程,我并没有排除Kafka,而是给了它4星评分。让我参考之前的详细对比分析来解释...

在上一轮思考中,我对比了RocketMQ和Kafka在事务消息、延迟消息、顺序性方面的差异。Kafka的劣势主要在于需要额外架构设计来补齐电商特有语义...
====================第二轮回复====================
我并没有排除Kafka。Kafka在吞吐量和生态方面表现优秀,之所以RocketMQ评分略高,是因为电商核心链路的"开箱即用"特性匹配度:RocketMQ原生支持事务消息和延迟消息,而Kafka需要通过Outbox Pattern等架构模式自行实现。如果团队已有Kafka生态,它完全能胜任千万级消息场景。

Node.js

Código de ejemplo

import OpenAI from "openai";
import process from 'process';

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'
});

async function main() {
    // 第一轮对话
    let firstReasoning = '';
    let firstContent = '';
    let isAnswering = false;

    const stream1 = await openai.chat.completions.create({
        model: 'qwen3.7-plus',
        messages: [{ role: 'user', content: '我需要为一个日均千万消息的电商系统选择消息队列,请推荐' }],
        stream: true,
        enable_thinking: true
    });

    console.log('='.repeat(20) + '第一轮思考过程' + '='.repeat(20));

    for await (const chunk of stream1) {
        if (!chunk.choices?.length) continue;
        const delta = chunk.choices[0].delta;
        if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
            firstReasoning += delta.reasoning_content;
            if (!isAnswering) process.stdout.write(delta.reasoning_content);
        }
        if (delta.content !== undefined && delta.content) {
            if (!isAnswering) {
                console.log('\n' + '='.repeat(20) + '第一轮回复' + '='.repeat(20));
                isAnswering = true;
            }
            process.stdout.write(delta.content);
            firstContent += delta.content;
        }
    }

    // 第二轮对话:传递思考过程
    let reasoningContent = '';
    let answerContent = '';
    isAnswering = false;

    const stream2 = await openai.chat.completions.create({
        model: 'qwen3.7-plus',
        messages: [
            { role: 'user', content: '我需要为一个日均千万消息的电商系统选择消息队列,请推荐' },
            {
                role: 'assistant',
                content: firstContent,
                reasoning_content: firstReasoning
            },
            { role: 'user', content: '你在对比时为什么排除了Kafka?' }
        ],
        stream: true,
        enable_thinking: true,
        // preserve_thinking 作为顶层参数传入
        preserve_thinking: true
    });

    console.log('\n' + '='.repeat(20) + '第二轮思考过程' + '='.repeat(20));

    for await (const chunk of stream2) {
        if (!chunk.choices?.length) continue;
        const delta = chunk.choices[0].delta;
        if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
            if (!isAnswering) process.stdout.write(delta.reasoning_content);
            reasoningContent += delta.reasoning_content;
        }
        if (delta.content !== undefined && delta.content) {
            if (!isAnswering) {
                console.log('\n' + '='.repeat(20) + '第二轮回复' + '='.repeat(20));
                isAnswering = true;
            }
            process.stdout.write(delta.content);
            answerContent += delta.content;
        }
    }
}

main();

Respuesta

====================第一轮思考过程====================
用户需要为日均千万消息的电商系统选择消息队列。让我从吞吐量、可靠性、延迟消息、事务支持等维度对比主流方案...
====================第一轮回复====================
综合电商场景的核心需求,推荐 Apache RocketMQ。如果团队已有 Kafka 生态,Kafka 也是可行方案。
====================第二轮思考过程====================
用户追问为什么排除了Kafka。参考我之前的思考过程,我并没有排除Kafka...
====================第二轮回复====================
我并没有排除Kafka。Kafka在吞吐量和生态方面表现优秀,之所以RocketMQ评分略高,是因为电商核心链路的"开箱即用"特性匹配度。

HTTP

Código de ejemplo

curl

# 各地域base_url不同,请根据实际地域修改
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "user",
            "content": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"
        },
        {
            "role": "assistant",
            "content": "综合电商场景的核心需求,推荐 Apache RocketMQ。",
            "reasoning_content": "用户需要为日均千万消息的电商系统选择消息队列。RocketMQ原生支持事务消息和延迟消息,更适合电商场景。Kafka吞吐量极高但需自研补偿机制。"
        },
        {
            "role": "user",
            "content": "你在对比时为什么排除了Kafka?"
        }
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    },
    "enable_thinking": true,
    "preserve_thinking": true
}'

Respuesta

data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1743523200,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-example-001"}

.....

data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1743523200,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-example-001"}

data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":3463,"completion_tokens":2387,"total_tokens":5850},"created":1743523200,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-example-001"}

data: [DONE]

DashScope

NotaEl SDK de Java actualmente no admite el parámetro preserve_thinking. Al llamar mediante HTTP, incluya preserve_thinking en el objeto parameters.

Python

Código de ejemplo

import os
from dashscope import MultiModalConversation
import dashscope

# 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/"

# 第一轮对话
messages = [
    {"role": "user", "content": [{"text": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"}]}
]

first_reasoning = ""
first_content = ""
is_answering = False

completion = MultiModalConversation.call(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.8-max",
    messages=messages,
    enable_thinking=True,
    stream=True,
    incremental_output=True,
)

print("=" * 20 + "第一轮思考过程" + "=" * 20)

for chunk in completion:
    content = chunk.output.choices[0].message.content
    reasoning = chunk.output.choices[0].message.reasoning_content
    if not content and reasoning == "":
        pass
    else:
        if reasoning != "" and not content:
            print(reasoning, end="", flush=True)
            first_reasoning += reasoning
        elif content:
            if not is_answering:
                print("\n" + "=" * 20 + "第一轮回复" + "=" * 20)
                is_answering = True
            print(content[0]["text"], end="", flush=True)
            first_content += content[0]["text"]

# 第二轮对话:传递思考过程
messages = [
    {"role": "user", "content": [{"text": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"}]},
    {
        "role": "assistant",
        "content": [{"text": first_content}],
        "reasoning_content": first_reasoning,
    },
    {"role": "user", "content": [{"text": "你在对比时为什么排除了Kafka?"}]},
]

reasoning_content = ""
answer_content = ""
is_answering = False

completion = MultiModalConversation.call(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3.8-max",
    messages=messages,
    enable_thinking=True,
    # 传递思考过程
    preserve_thinking=True,
    stream=True,
    incremental_output=True,
)

print("\n" + "=" * 20 + "第二轮思考过程" + "=" * 20)

for chunk in completion:
    content = chunk.output.choices[0].message.content
    reasoning = chunk.output.choices[0].message.reasoning_content
    if not content and reasoning == "":
        pass
    else:
        if reasoning != "" and not content:
            print(reasoning, end="", flush=True)
            reasoning_content += reasoning
        elif content:
            if not is_answering:
                print("\n" + "=" * 20 + "第二轮回复" + "=" * 20)
                is_answering = True
            print(content[0]["text"], end="", flush=True)
            answer_content += content[0]["text"]

Respuesta

====================第一轮思考过程====================
用户需要为日均千万消息的电商系统选择消息队列。让我从吞吐量、可靠性、延迟消息、事务支持等维度对比主流方案...
====================第一轮回复====================
综合电商场景的核心需求,推荐 Apache RocketMQ。如果团队已有 Kafka 生态,Kafka 也是可行方案。
====================第二轮思考过程====================
用户追问为什么排除了Kafka。参考我之前的思考过程,我并没有排除Kafka...
====================第二轮回复====================
我并没有排除Kafka。Kafka在吞吐量和生态方面表现优秀,之所以RocketMQ评分略高,是因为电商核心链路的"开箱即用"特性匹配度。

HTTP

Código de ejemplo

curl

# 各地域base_url不同,请根据实际地域修改
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.8-max",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [{"text": "我需要为一个日均千万消息的电商系统选择消息队列,请推荐"}]
            },
            {
                "role": "assistant",
                "content": [{"text": "综合电商场景的核心需求,推荐 Apache RocketMQ。"}],
                "reasoning_content": "用户需要为日均千万消息的电商系统选择消息队列。RocketMQ原生支持事务消息和延迟消息,更适合电商场景。Kafka吞吐量极高但需自研补偿机制。"
            },
            {
                "role": "user",
                "content": [{"text": "你在对比时为什么排除了Kafka?"}]
            }
        ]
    },
    "parameters":{
        "enable_thinking": true,
        "preserve_thinking": true,
        "incremental_output": true,
        "result_format": "message"
    }
}'

Respuesta

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"用户","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":3466,"output_tokens":3,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":1}},"request_id":"example-request-001"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"追问","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":3467,"output_tokens":4,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":2}},"request_id":"example-request-001"}

......

id:200
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":5850,"output_tokens":2387,"input_tokens":3463,"output_tokens_details":{"reasoning_tokens":1347}},"request_id":"example-request-001"}

Otras funciones

Detalles de facturación

  • El contenido de pensamiento se factura por Token de salida.

  • Algunos modelos de pensamiento híbrido tienen precios diferentes en los modos de pensamiento y sin pensamiento.

    Si el modelo no genera el Proceso de Pensamiento en el modo de pensamiento, se factura al precio del modo sin pensamiento.

FAQ

P: ¿Cómo deshabilitar el modo de pensamiento?

La posibilidad de desactivar el modo de pensamiento depende del modelo utilizado:

  • Modelos de modo de pensamiento híbrido (como qwen3.6-plus, deepseek-v4-pro): establezca enable_thinking en false para desactivar;
  • Los modelos de modo solo pensamiento (como glm-5.3, kimi-k3): no se pueden desactivar.

P: ¿Cómo solucionar respuestas lentas de qwen3.7-plus?

qwen3.7-plus es un modelo de modo de pensamiento híbrido y habilita el modo de pensamiento de forma predeterminada. El proceso de pensamiento genera una gran cantidad de tokens de razonamiento (se ha medido que representan más del 60% del total de tokens de salida), por lo que el tiempo total de una sola llamada es significativamente mayor que el del modo sin pensamiento. La velocidad de generación de tokens en sí no es anómala (medida aproximadamente en 52-54 tokens/s), y la diferencia en el tiempo total proviene principalmente del número de tokens generados por el proceso de pensamiento, en lugar de una ralentización del modelo o de la red.

Pasos de solución de problemas:

  1. Confirm si el modo de pensamiento está habilitado. qwen3.7-plus está habilitado de forma predeterminada, lo cual se puede determinar verificando si se devuelve el campo reasoning_content en la respuesta.
  2. Revise completion_tokens y reasoning_tokens en el uso de la respuesta. Si reasoning_tokens es relativamente alto, el consumo total de tiempo es un comportamiento esperado del modo de pensamiento.
  3. Si no se requiere un proceso de pensamiento, configure enable_thinking en false para deshabilitar el modo de pensamiento. Una vez deshabilitado, el token de salida se reduce significativamente y el tiempo total real puede reducirse en un 60%-75%.
  4. Si necesita conservar la capacidad de pensamiento, puede cambiar aStream para obtener el primer token más rápidamente y ver el proceso de pensamiento en tiempo real, evitando largas esperas por la respuesta completa.

Las estadísticas de uso muestran el consumo total de tiempo de una sola llamada (incluido el tiempo de generación del token de pensamiento), en lugar de la latencia de generación de un solo token.

P: ¿Cómo llamar a modelos de pensamiento profundo en modo sin streaming (síncrono)?

Los ejemplos de este artículo utilizan Stream de forma predeterminada (recomendado, ya que permite ver el proceso de pensamiento en tiempo real y evitar largas esperas). El modelo de pensamiento profundo de versión comercial (como qwen-plus, qwen-flash, etc.) también admite salida sin stream (síncrona), devolviendo el proceso de pensamiento completo y la respuesta de una sola vez.

Al cambiar el ejemplo de streaming a no streaming, modifique el código de análisis de resultados: la llamada sin streaming devuelve un objeto Response completo (completion), no se puede iterar a través de for chunk in completion como en el código de ejemplo de streaming (de lo contrario se generará un error 'tuple' object has no attribute 'choices'), y debe leer directamente completion.choices[0].message.reasoning_content (proceso de pensamiento) y completion.choices[0].message.content (contenido de la respuesta). Además, stream=False no puede establecer el parámetro stream_options.

El siguiente ejemplo utiliza la interfaz compatible con OpenAI con una llamada sin streaming de qwen3.8-max con el modo de pensamiento activado:

from openai import OpenAI
import os

client = OpenAI(
    # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为新加坡地域配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的配置不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max",  # 请替换为支持非流式输出的深度思考模型
    messages=[{"role": "user", "content": "你是谁"}],
    extra_body={"enable_thinking": True},
    stream=False,  # 非流式(同步)输出;stream=False 时不能设置 stream_options
)

# 非流式返回完整响应对象,直接读取 message,无需(也不能)迭代
message = completion.choices[0].message
print("=" * 20 + "思考过程" + "=" * 20 + "\n")
print(getattr(message, "reasoning_content", "") or "")
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
print(message.content)

Algunos modelos (como qwen3.5-122b-a10b, qwen3.5-27b y otras versiones de código abierto) solo admiten salida Stream, y la llamada sin streaming resultará en un error parameter.enable_thinking only support stream call. Para tales modelos, utilice llamadas con streaming.

P: ¿Cómo comprar tokens después de agotar la cuota gratuita?

Vaya al centro de Tarifas y costos para recargar saldo y mantener un balance suficiente en su cuenta para llamar a los modelos con normalidad.

Después de superar la Free Quota, la facturación se realiza automáticamente en intervalos de nivel de minuto. Para detalles de consumo, vaya a ;Detalles de la factura para consultarlos.

P: ¿Puedo subir imágenes o documentos para realizar consultas?

Los modelos mencionados en este artículo solo admiten entrada de texto. Los modelos Qwen3-VL y QVQ admiten Pensamiento Profundo con imágenes.

P: ¿Cómo ver el consumo de tokens y el recuento de llamadas?

Una vez realizada la llamada al modelo, los datos de nivel de minuto se pueden ver en el gráfico de monitoreo. Inicie sesión en la página de Monitoreo (Singapore o Beijing), seleccione en la barra de navegación izquierda Operations Management > Monitoring para ingresar a la página general de monitoreo, establezca las condiciones de consulta (por ejemplo, seleccione rango de tiempo, espacio de trabajo, etc.), luego en el área de Modelos, busque el modelo objetivo y haga clic en View Details para ver las estadísticas de llamadas del modelo. Para más información, consulte la documentación de Monitoreo.

Los datos de monitoreo se actualizan a nivel de minuto y son solo para referencia; no se utilizan como base de facturación.

P: ¿Qué hacer si un prompt largo falla al generarse o excede el tiempo de espera?

Al llamar al modelo con prompts largos, generalmente ocurre un fallo de generación o un tiempo de espera de respuesta porque el modo de pensamiento está habilitado (enable_thinking es true). El modo de pensamiento aumentará el tiempo de procesamiento y, en escenarios de prompts largos, puede causar truncamiento de la respuesta o tiempo de espera de la solicitud.

Solución:

  • Desactivar el modo de pensamiento: Establezca enable_thinking en false, reduciendo el tiempo de procesamiento de aproximadamente 50 s a unos 30 s.
  • Activar Stream: Establezca stream en true para evitar el límite de tiempo de espera de las llamadas sin streaming.
  • Aumentar el tiempo de espera: Si necesita mantener el modo de pensamiento, establezca el tiempo de espera del cliente en 180 segundos o más.

P: ¿Qué hacer si un cliente de terceros se desconecta después de generar una etiqueta de pensamiento al llamar a un modelo de pensamiento profundo?

Este es un problema del lado del cliente, no una limitación del modelo sobre la salida del proceso de pensamiento. La plataforma Bailian utiliza el parámetro enable_thinking para controlar el cambio del modo de pensamiento, y el modelo devuelve el campo reasoning_content que contiene el contenido completo del proceso de pensamiento; el modelo devolverá normalmente el contenido de pensamiento. Las desconexiones suelen ser causadas por fluctuaciones en la red del cliente o problemas de compatibilidad de la versión del cliente.

Pasos de solución de problemas:

  • Verifique la estabilidad de la conexión de red del cliente.
  • Actualice el cliente a la versión más reciente.
  • Revise los registros del cliente para confirmar la asociación entre el momento de la desconexión y la salida de la etiqueta de pensamiento.

También puede llamar al modelo directamente a través de la API de DashScope para verificar si la función de pensamiento funciona correctamente.

Referencia de la API

Para los parámetros de entrada y salida del modelo de Pensamiento Profundo, consulte Generación de texto.

Código de error

Si ocurre un error de ejecución, consulte Código de error para solucionar y resolver el problema.