使用 Qwen-VL 的 enable_thinking
Qwen-VL 是视觉语言模型。它使用与 messages 同级的 enable_thinking,但请求内容应按多模态消息构造,不能直接复用 Qwen 文本模型样例。enable_thinking 接受布尔值。
用多模态消息构造视觉请求
只有请求包含图片、截图或视觉理解任务时,才按 Qwen-VL 推理规则处理。纯文本任务优先使用 Qwen 文本模型页面的请求形态。
Qwen-VL 请求中的 messages[].content 应是数组,包含 image_url 和文本指令。以下 Python 示例使用 OpenAI SDK。
IMAGE_URL = "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
messages = [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": IMAGE_URL}},
{"type": "text", "text": "Describe the image in one short sentence."},
],
}
]如果请求只包含字符串 content,它不能覆盖视觉推理的主要接入路径。
为视觉请求选择默认或关闭思考
对 thinking 后缀的 Qwen-VL 模型,通常不需要显式开启思考。下面的完整 Python 请求示例使用 OpenAI SDK。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["API_KEY"],
base_url="https://cloud.infini-ai.com/maas/v1",
)
stream = client.chat.completions.create(
model="qwen3-vl-235b-a22b-thinking",
messages=messages,
max_tokens=1536,
stream=True,
)对混合思考 Qwen-VL 模型,只有在模型明确支持关闭时,才传 enable_thinking: false:
extra_body = {"enable_thinking": False}当前接入应优先使用 thinking 后缀模型完成强思考视觉任务。混合思考模型显式开启后是否返回可见推理内容,应按目标模型验证。
用 curl 验证多模态 enable_thinking 请求体
先用流式 curl 请求确认多模态消息数组和 enable_thinking 字段同时存在。运行前先在当前终端设置 API_KEY 环境变量。以下 curl 命令适用于 bash/zsh 等 POSIX 风格 Shell(macOS/Linux、WSL、Git Bash)。如果使用 Windows PowerShell 或 CMD,请按对应 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-vl-235b-a22b-thinking",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
}
},
{
"type": "text",
"text": "Answer briefly: what is shown?"
}
]
}
],
"max_tokens": 1536,
"enable_thinking": true,
"stream": true
}'如果目标模型已经是 thinking 后缀模型,并且业务代码不需要显式保留开关字段,可以删除 enable_thinking,但应保留同样的多模态消息结构。
选择 instruct 或 thinking 后缀模型
模型 ID 决定是否能稳定返回可见推理内容。
qwen3-vl-235b-a22b-instruct适合需要混合思考能力的视觉任务;流式请求可被接受但没有返回可见推理,非流式显式开启推理可能返回 400。qwen3-vl-235b-a22b-thinking适合需要视觉推理过程的请求;非流式和流式响应都返回可见推理内容。
qwen3-vl-235b-a22b-instruct 的非流式请求如果传入 enable_thinking: true,或传入 thinking_budget: 50,可能返回类似以下错误:
HTTP 400: InternalError.Algo.InvalidParameter:
The thinking_budget parameter must be a positive integer and not greater than 0这是模型和响应模式组合限制。需要稳定可见推理时,优先选择 thinking 后缀模型。
用流式响应读取视觉推理
视觉推理可能生成较长推理内容。使用流式响应可以更早读取推理和最终回答。
for chunk in stream:
if not chunk.choices:
continue
delta = chunk.choices[0].delta
reasoning = getattr(delta, "reasoning_content", None)
if reasoning:
print(reasoning, end="")
text = getattr(delta, "content", None)
if text:
print(text, end="")如果只收到最终回答而没有推理字段,先确认模型是否为 thinking 后缀模型,再检查请求是否真的包含 image_url。
没有 reasoning_content 时检查模型和请求形态
没有 reasoning_content 不一定是请求失败。按以下顺序检查:
- 模型是否是混合思考模型。混合模型可能不返回可见推理内容。
- 请求是否为多模态消息数组,而不是纯文本字符串。
- 是否使用了流式响应,并从
delta.reasoning_content拼接。 - 是否需要改用 thinking 后缀模型来获得稳定可见推理。
如果请求返回 400,先移除显式 enable_thinking: true,再重试目标模型请求。
分别验证文本请求和视觉请求
Qwen 文本模型和 Qwen-VL 共享部分字段名,但请求内容和返回形态不同。
- 文本模型的测试结果只代表文本请求。
- 视觉请求应保留
image_url加文本的消息形态,这样测试结果才能代表 Qwen-VL 接入。
需要同时支持文本和视觉时,分别维护 Qwen 文本模型和 Qwen-VL 的请求构造逻辑。