Skip to content

使用 Qwen 文本模型的 enable_thinking

本页说明 Qwen 文本模型请求形态中常见的 enable_thinkingthinking_budgetpreserve_thinking 参数。这些参数是 Qwen 模型的原生推理参数。不同 Qwen 模型支持的控制范围可能不同,请以 GenStudio 模型广场中的参数说明为准。

选择推理参数

Qwen 文本请求使用与 messages 同级的布尔参数 enable_thinking。根据目标模型的能力选择参数:

  • 模型支持切换思考模式时,true 表示开启思考,false 表示关闭思考。
  • 模型始终开启思考时,不要设置 enable_thinking: false
  • 不同 Qwen 模型对 thinking_budgetpreserve_thinking 的支持不同,适用的响应模式也可能不同。如不确定,请参考 Qwen 官方文档。

设置当前请求的 enable_thinking

开启推理时传 enable_thinking: true。如果目标模型支持限制思考长度,可以同时传 thinking_budget。以下 Python 示例使用 OpenAI SDK,并以 qwen3.6-27b 演示。

language-python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["API_KEY"],
    base_url="https://cloud.infini-ai.com/maas/v1",
)

response = client.chat.completions.create(
    model="qwen3.6-27b",
    messages=[{"role": "user", "content": "What is 2 + 2? Give only the final answer."}],
    max_tokens=256,
    extra_body={
        "enable_thinking": True,
        "thinking_budget": 50,
    },
)

关闭推理时只传:

language-python
extra_body = {"enable_thinking": False}

对于支持该参数的 Qwen 模型,设置为 true 后,如果模型输出思考过程,可以从 reasoning_content 读取;设置为 false 后,模型关闭思考并直接回答。

注意

兼容用法

Chat Completions 接口也兼容 thinking.typeenabled 表示开启思考,disabled 表示关闭思考,auto 表示由模型判断是否需要思考。Qwen 原生参数仍是 enable_thinking

thinking_budget 先用于确认请求能否正常返回,并观察 token 用量。不要仅凭一次请求就判断它能稳定改善质量。

用 curl 验证 enable_thinking 请求体

先用 curl 请求确认与 messages 同级的 enable_thinking 是否被接受,并观察响应中是否出现 reasoning_content 或流式响应中的 delta.reasoning_content。运行前先在当前终端设置 API_KEY 环境变量。以下 curl 命令适用于 bash/zsh 等 POSIX 风格 Shell(macOS/Linux、WSL、Git Bash)。如果使用 Windows PowerShell 或 CMD,请按对应 Shell 的语法调整命令。

language-shell
curl -N --request POST \
  --url "https://cloud.infini-ai.com/maas/v1/chat/completions" \
  --header "Accept: text/event-stream" \
  --header "Authorization: Bearer $API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "qwen3.6-27b",
    "messages": [
      {
        "role": "user",
        "content": "What is 2 + 2? Give only the final answer."
      }
    ],
    "max_tokens": 256,
    "enable_thinking": true,
    "stream": true
  }'

如果目标 Qwen 模型不接受 thinking_budget,先移除该字段,只验证 enable_thinking。如果它不接受 enable_thinking,请省略该字段。

在视觉请求中使用 Qwen 推理参数

如果目标 Qwen 模型同时支持图像输入,enable_thinkingthinking_budget 等参数仍放在与 messages 同级的位置。图像和文本放在同一条用户消息的 content 数组中,image_url.url 使用带前缀的 Base64 数据。

language-python
completion = client.chat.completions.create(
    model="qwen3.6-27b",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{base64_image}",
                    },
                },
                {"type": "text", "text": "Answer briefly: what is shown?"},
            ],
        }
    ],
    max_tokens=1536,
    stream=True,
    extra_body={
        "enable_thinking": True,
        "thinking_budget": 50,
    },
)

如果模型说明中列出了高分辨率图像参数,可以增加 vl_high_resolution_images: True。视觉请求建议优先使用流式响应;如果模型输出思考过程,可以从 delta.reasoning_content 读取。

读取响应中的推理内容

非流式响应从 message.reasoning_content 读取推理内容,从 message.content 读取最终答案。reasoning_content 不存在时跳过即可。

language-python
message = response.choices[0].message
reasoning = getattr(message, "reasoning_content", None)

if reasoning:
    print(reasoning)
print(message.content)

流式响应按顺序拼接 delta.reasoning_content,最终答案从 delta.content 拼接。

仅在支持时回传历史推理内容

只有目标模型明确支持 preserved thinking,并且业务需要工具调用或 agent 历史连续性时,才启用 preserve_thinking

如果使用 preserved thinking,应保留模型原始返回的 reasoning_content。HTTP 请求被接受只表示请求形态可用,不等于一定证明模型使用了历史推理内容。接入前应分别验证「带历史 reasoning_contentpreserve_thinking: true」、「不带历史 reasoning_contentpreserve_thinking: true」以及「省略 preserve_thinking」三种请求。

如果当前可用模型列表中没有明确支持该能力的目标模型,应先只记录应用侧审计数据,不要把该字段作为必需历史协议。

排查 enable_thinking 和 thinking_budget

排查时按请求形态逐步缩小范围。

  • 确认目标模型属于 Qwen 系列,并明确支持 Qwen 原生推理参数。
  • 对强制思考模型,不要用关闭思考作为健康检查。
  • 如果传入 thinking_budget 后返回 400,先移除该字段,只验证 enable_thinking
  • 如果视觉请求返回图片格式错误,确认 image_url.url 使用带 MIME 前缀的 Base64 数据;不要把远程 URL 当成通用输入格式。
  • 如果视觉请求返回图片宽高限制错误,请换用正常尺寸的测试图,不要用 1x1 像素图片作为健康检查。
  • 如果传入 vl_high_resolution_images 后返回 400,先移除该字段,只验证基础图像输入和 enable_thinking
  • 如果响应没有 reasoning_content,检查 enable_thinking 是否开启,以及该模型是否只在流式响应中提供此字段。

需要手工确认请求时,构造和业务代码相同的 curl 请求,再对照服务端返回字段。