Skip to main content
视觉理解

视觉推理

视觉推理模型能够先输出思考过程,再输出回答内容,适用于处理复杂的视觉分析任务,如解读数学题、分析图表数据或复杂视频理解等任务。

效果示例

以下展示了视觉推理模型处理图片问题的效果:用户上传一张图片并提出问题,模型先进行思考分析,再给出最终回答。 用户输入: 示例图片:客厅场景 相对于您当前的位置,哪个对象在图像中的位置最远?答案选项:A.椅子 B.墙上的画 C.茶几 D.沙发。仅输出正确答案的字母(例如,A)。
用户现在需要找出哪个对象在图像中最远。首先看选项:A椅子(左边的蓝色椅子)、B 墙上的画 、C茶几(中间的铜色茶几)、D沙发(中间的蓝色沙发)。背景中最远的通常是墙上的装饰,画(B)在墙的上方,属于背景元素,而其他如椅子、茶几、沙发都在前景或中景。所以壁画的位置最远。
模型回答:B

支持的模型

  • Qwen3.8
    • 混合思考模型:qwen3.8-max、qwen3.8-flash
  • Qwen3.7
    • 混合思考模型:qwen3.7-plus、qwen3.7-plus-2026-05-26、qwen3.7-max-2026-06-08、qwen3.7-flash、qwen3.7-flash-2026-07-15
  • Qwen3.6
    • 混合思考模型:qwen3.6-plus、qwen3.6-plus-2026-04-02、qwen3.6-flash、qwen3.6-flash-2026-04-16、qwen3.6-35b-a3b
  • Qwen3.5
    • 混合思考模型:qwen3.5-plus、qwen3.5-plus-2026-02-15、qwen3.5-flash、qwen3.5-flash-2026-02-23、qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
  • Qwen3-VL
    • 混合思考模型:qwen3-vl-plus、qwen3-vl-plus-2025-12-19、qwen3-vl-plus-2025-09-23、qwen3-vl-flash、qwen3-vl-flash-2025-10-15
    • 仅思考模型:qwen3-vl-235b-a22b-thinkingqwen3-vl-32b-thinkingqwen3-vl-30b-a3b-thinkingqwen3-vl-8b-thinking
  • QVQ
    • 仅思考模型:qvq-max系列、qvq-plus系列
  • Kimi
    • 混合思考模型:kimi-k2.6、kimi-k2.5
  • Stepfun
    • 混合思考模型:stepfun/step-3.7-flash
  • MiniMax
    • 混合思考模型:MiniMax/MiniMax-M3

使用方式

  • 思考过程:阿里云百炼提供混合思考和仅思考两种视觉推理模型。
    • 混合思考模型:可通过enable_thinking控制其思考行为:
      • 设置为 true,开启思考,模型将先输出思考过程,再输出最终回复。Qwen3.8、Qwen3.7、Qwen3.6、Qwen3.5系列模型默认为true
      • 设置为 false,关闭思考,模型将直接生成回复。qwen3-vl-plusqwen3-vl-flash系列模型默认为false
    • 仅思考模型:模型总会在回复前进行思考,且无法关闭。
  • 输出方式:视觉推理模型包含详细的思考过程,为避免因响应内容过长导致超时,建议使用流式输出。
    • Qwen3.8、Qwen3.7、Qwen3.6、Qwen3.5、Qwen3-VL、kimi-k2.6、kimi-k2.5、stepfun/step-3.7-flash系列支持流式和非流式两种方式。
    • QVQ系列仅支持流式输出。
  • System Prompt使用建议:
    • 对于单次或简单的对话调用:为获得最佳推理效果,建议不设置 System Message。可将模型角色设定、输出格式要求等指令通过 User Message 传入。
    • 对于构建 Agent 、实现工具调用等复杂应用:可使用 System Message 来定义模型的角色、能力和行为框架,以确保其稳定性和可靠性。

快速开始

前提条件 下列示例演示如何调用 qvq-max模型,对一张包含数学题的图片进行求解,并以流式输出的方式分别打印思考过程和最终回复。
  • OpenAI兼容
  • DashScope
  • Python
  • Node.js
  • HTTP
from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)

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

# 创建聊天完成请求
completion = client.chat.completions.create(
    model="qvq-max",  # 此处以 qvq-max 为例,可按需更换模型名称
    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": "这道题怎么解答?"},
            ],
        },
    ],
    stream=True,
    # 解除以下注释会在最后一个chunk返回Token使用量
    # stream_options={
    #     "include_usage": True
    # }
)

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

for chunk in completion:
    # 如果chunk.choices为空,则打印usage
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # 打印思考过程
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            # 开始回复
            if delta.content != "" and is_answering is False:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                is_answering = True
            # 打印回复过程
            print(delta.content, end='', flush=True)
            answer_content += delta.content

# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(answer_content)

核心能力

开启/关闭思考过程

对于需要详细推理过程的场景(如解题、分析报告),可通过 enable_thinking开启思考过程。以下示例展示如何开启思考过程。
  • OpenAI 兼容
  • DashScope
enable_thinking 和 thinking_budget 是非 OpenAI 标准参数。在不同语言的 SDK 中传递方式存在差异:
  • Python SDK: 必须通过 extra_body 字典传递。
  • Node.js SDK: 可作为顶层参数直接传递。
from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    # 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下是北京地域base_url,若使用弗吉尼亚地域模型,需要将base_url换成https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
    # 如果使用新加坡地域的模型,需要将base_url替换为:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

reasoning_content = ""  # 定义完整思考过程
answer_content = ""     # 定义完整回复
is_answering = False   # 判断是否结束思考过程并开始回复
enable_thinking = True
# 创建聊天完成请求
completion = client.chat.completions.create(
    model="qwen3.5-plus",
    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": "这道题怎么解答?"},
            ],
        },
    ],
    stream=True,
    # enable_thinking 参数开启思考过程,thinking_budget 参数设置最大推理过程 Token 数
    # qwen3.5-plus、qwen3-vl-plus、qwen3-vl-flash可通过enable_thinking开启或关闭思考(其中qwen3.5-plus默认开启)、对于qwen3-vl-235b-a22b-thinking等带thinking后缀的模型,enable_thinking仅支持设置为开启,对其他Qwen-VL模型均不适用
    extra_body={
        'enable_thinking': enable_thinking},

    # 解除以下注释会在最后一个chunk返回Token使用量
    # stream_options={
    #     "include_usage": True
    # }
)

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

for chunk in completion:
    # 如果chunk.choices为空,则打印usage
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # 打印思考过程
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            # 开始回复
            if delta.content != "" and is_answering is False:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                is_answering = True
            # 打印回复过程
            print(delta.content, end='', flush=True)
            answer_content += delta.content

# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(answer_content)

限制思考长度

为避免视觉推理模型输出过于冗长的思考过程,可使用 thinking_budget 参数限制思考过程生成的最大 Token 数。当思考过程超过该限制时,内容将被截断,模型会立即开始生成最终答案。thinking_budget 默认值为模型的最大思维链长度,请参见模型列表。
thinking_budget 参数支持Qwen3.8、Qwen3.7、Qwen3.6、Qwen3.5、Qwen3-VL(思考模式)、kimi-k2.6、kimi-k2.5(思考模式)。
  • OpenAI 兼容
  • DashScope
thinking_budget非 OpenAI 标准参数,若使用 OpenAI Python SDK 请通过 extra_body传入。
from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    # 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下是北京地域base_url,若使用弗吉尼亚地域模型,需要将base_url换成https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
    # 如果使用新加坡地域的模型,需要将base_url替换为:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

reasoning_content = ""  # 定义完整思考过程
answer_content = ""     # 定义完整回复
is_answering = False   # 判断是否结束思考过程并开始回复
enable_thinking = True
# 创建聊天完成请求
completion = client.chat.completions.create(
    model="qwen3.5-plus",
    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": "这道题怎么解答?"},
            ],
        },
    ],
    stream=True,
    # enable_thinking 参数开启思考过程,thinking_budget 参数设置最大推理过程 Token 数
    # qwen3.5-plus、qwen3-vl-plus、qwen3-vl-flash可通过enable_thinking开启或关闭思考(其中qwen3.5-plus默认开启)、对于qwen3-vl-235b-a22b-thinking等带thinking后缀的模型,enable_thinking仅支持设置为开启,对其他Qwen-VL模型均不适用
    extra_body={
        'enable_thinking': enable_thinking,
        "thinking_budget": 81920},

    # 解除以下注释会在最后一个chunk返回Token使用量
    # stream_options={
    #     "include_usage": True
    # }
)

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

for chunk in completion:
    # 如果chunk.choices为空,则打印usage
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # 打印思考过程
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            # 开始回复
            if delta.content != "" and is_answering is False:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                is_answering = True
            # 打印回复过程
            print(delta.content, end='', flush=True)
            answer_content += delta.content

# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# print(answer_content)

更多用法

除了思考能力,视觉推理模型同样具备视觉理解模型的全部功能,可组合使用以应对更复杂的场景:

计费说明

总费用 = 输入 Token 数 x 模型输入单价 + 模型输出 Token 数 x 模型输出单价。
  • 思考过程(reasoning_content)会作为输出内容的一部分,计入输出 Token 并产生相应费用。若模型在思考模式下未输出思考过程,按照非思考模式价格计费。
  • 图像或视频计算token的方法请参见图像与视频理解

API参考

关于视觉推理模型的输入输出参数,请参见文本生成

错误码

如果模型调用失败并返回报错信息,请参见错误码进行解决。
Token Plan
模型体验
模型调优
模型压缩目录节点
用量统计与性能监控
资产中心
服务支持