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

使用方式

  • 思考過程:阿里雲百鍊提供混合思考和僅思考兩種視覺推理模型。
    • 混合思考模型:可通過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不同。擷取連結:https://bailian.console.alibabacloud.com/?tab=model#/api-key
    # 如果沒有配置環境變數,請用百鍊API Key替換:api_key="sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY"),
    # 以下為新加坡地區base_url,若使用北京地區模型,需要將base_url換成https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"  # 請將WorkspaceId替換為業務空間ID
)

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: 可作為頂層參數直接傳遞。
import os
from openai import OpenAI

client = OpenAI(
    # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/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}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"  # 請將WorkspaceId替換為業務空間ID
)

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傳入。
import os
from openai import OpenAI

client = OpenAI(
    # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/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}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"  # 請將WorkspaceId替換為業務空間ID
)

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
模型體驗
用量統計與效能監控
資產中心
服務支援