Qwen3-VL-Plus

Copy success!
Try AIAdd to Compare

Overview

The Qwen3 series VL models effectively integrates thinking and non-thinking modes, achieving world-leading performance in visual agent capabilities on public benchmark datasets such as OS World. This version features comprehensive upgrades in areas like visual coding, spatial perception, and multimodal reasoning, significantly enhancing visual perception and recognition abilities, and supporting the understanding of ultra-long videos.

Input

TextImageVideo

Output

Text

Features

Prefix Completion

Enable Partial Mode when calling the Qwen API to make the model continue strictly from your provided prefix text.View docs

Function Calling

Use function calling to connect large language models with external tools and systems.View docs

Cache

Context Cache stores shared prefixes for long-context requests to reduce repeated computation, improve latency, and lower cost.View docs

Structured Outputs

Structured Outputs help ensure the model returns a JSON string in the expected format.View docs

Batches

Asynchronously process requests in batches to reduce costs.View docs

Web Search

Enable web search so the model can answer with real-time retrieved data.View docs

Fine-tuning

Train models on sample data to better adapt them to specific tasks.View docs

Pricing

  • Input
    $0.2Per 1M tokens
  • Output
    $1.6Per 1M tokens
  • Input(Implicit Cache)
    $0.04Per 1M tokens
  • Explicit Cache Creation
    $0.25Per 1M tokens
  • Explicit Cache Read
    $0.02Per 1M tokens
  • Input
    $0.2Per 1M tokens
  • Output
    $1.6Per 1M tokens
  • Input(Implicit Cache)
    $0.04Per 1M tokens
  • Explicit Cache Creation
    $0.25Per 1M tokens
  • Explicit Cache Read
    $0.02Per 1M tokens

Rate Limits & Context

  • Max Input
    258K
  • Max Output
    32K
  • Max Input (Thinking)
    258K
  • Max Output (Thinking)
    32K
  • Context
    262K
  • Max Reasoning
    81K
  • TPMTokens Per Minute
    1M
  • RPMRequests Per Minute
    1K

API Reference

Call API
Copy success!
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
from openai import OpenAI
import os

# Initialize OpenAI client
client = OpenAI(
    api_key = os.getenv(""DASHSCOPE_API_KEY""),
    base_url=""https://dashscope-intl.aliyuncs.com/compatible-mode/v1""
)

reasoning_content = """"  # Define complete reasoning process
answer_content = """"     # Define complete response
is_answering = False    # Determine if reasoning has ended and response has started
enable_thinking = False

# Create chat completion request
completion = client.chat.completions.create(
    model=""qwen3-vl-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"": ""How to solve this problem?""},
            ],
        },
    ],
    stream=True,
    # enable_thinking parameter enables reasoning; thinking_budget sets the maximum token count for reasoning
    # qwen-vl-plus, qwen3-vl-plus-2025-09-23 can use enable_thinking to turn reasoning on/off; qwen3-vl-235b-a22b-thinking supports enable_thinking, other Qwen-VL models do not support it
    extra_body={
        'enable_thinking': True,
        ""thinking_budget"": 500},

    # Uncomment below to return token usage in the final chunk
    # stream_options={
    #     ""include_usage"": True
    # }
)

if enable_thinking:
    print(""\n"" + ""="" * 20 + ""Reasoning Process"" + ""="" * 20 + ""\n"")

for chunk in completion:
    # If chunk.choices is empty, print usage
    if not chunk.choices:
        print(""\nUsage:"")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # Print reasoning process
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            # Start response
            if delta.content != """" and is_answering is False:
                print(""\n"" + ""="" * 20 + ""Complete Response"" + ""="" * 20 + ""\n"")
                is_answering = True
            # Print response process
            print(delta.content, end='', flush=True)
            answer_content += delta.content

# print(""="" * 20 + ""Complete Reasoning Process"" + ""="" * 20 + ""\n"")
# print(reasoning_content)
# print(""="" * 20 + ""Complete Response"" + ""="" * 20 + ""\n"")
# print(answer_content)