Skip to main content
Visual understanding

Compreensão de imagens e vídeos

Os modelos de compreensão visual respondem a perguntas com base nas imagens ou vídeos fornecidos por você. Eles aceitam entrada de uma ou várias imagens e são adequados para diversas tarefas, como geração de legendas para imagens, resposta a perguntas visuais e localização de objetos.

Experimente online: Acesse o console do Alibaba Cloud Model Studio. No canto superior direito da página, selecione a região de destino. Em seguida, acesse a página Vision Models para testar os modelos.

Primeiros passos

Pré-requisitos
  • Obter uma chave de API e configurá-la como variável de ambiente.
  • Para fazer chamadas usando um SDK, instale o SDK. O DashScope Python SDK deve ser versão 1.24.6 ou posterior, e o DashScope Java SDK deve ser versão 2.21.10 ou posterior.
Os exemplos a seguir mostram como chamar um modelo para descrever o conteúdo de uma imagem. Para obter mais informações sobre arquivos locais e limites de imagem, consulte Passar arquivos locais e Limites de imagem.
  • OpenAI compatible
  • DashScope
  • Python
  • Node.js
  • Java
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # If the environment variable is not configured, replace the following line with your Model Studio API key: api_key="sk-xxx",
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the China (Beijing) region. When you make a call, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max", # This example uses qwen3.7-plus. You can replace it with another model as needed. For a list of models, see https://www.alibabacloud.com/help/zh/model-studio/models
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
                    },
                },
                {"type": "text", "text": "What scene is depicted in the image?"},
            ],
        },
    ],
)
print(completion.choices[0].message.content)
from openai import OpenAI
import os

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When you make a call, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

completion = client.chat.completions.create(
    model="qwen3.8-max",  # This example uses qwen3.7-plus. You can replace it with another model as needed. For a list of models, see https://www.alibabacloud.com/help/model-studio/getting-started/models
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
                    },
                },
                {"type": "text", "text": "What scene is depicted in the image?"},
            ],
        },
    ],
)
print(completion.choices[0].message.content)

Resposta

This is a photo taken on a beach. In the photo, a person and a dog are sitting on the sand with the sea and sky in the background. The person and the dog seem to be interacting, with the dog's front paw on the person's hand. Sunlight shines from the right side of the frame, adding a warm atmosphere to the scene.

Desempenho do modelo

Perguntas e respostas sobre imagens

Descreva o conteúdo de uma imagem ou classifique e rotule seus elementos, identificando pessoas, lugares, animais e plantas.

p1021359

Qual item desta imagem devo usar se o sol estiver muito forte?

Se o sol estiver muito forte, você deve usar os óculos de sol rosa da imagem. Óculos de sol bloqueiam eficazmente a luz intensa, reduzem os danos causados pelos raios UV aos olhos e ajudam a proteger sua visão, melhorando o conforto visual sob luz solar brilhante.

Escrita criativa

Gere descrições de texto vívidas com base no conteúdo de imagens ou vídeos. Ideal para cenários criativos como redação de histórias, copywriting e roteiros de vídeos curtos.

vl-Q&A

Por favor, escreva uma postagem interessante para redes sociais com base no conteúdo da imagem.

Claro. Esta imagem é repleta de uma rica atmosfera do Festival de Meio Outono, combinando habilmente elementos clássicos e modernos. Com base nos principais elementos da imagem, preparei várias postagens para redes sociais em diferentes estilos para você escolher.

Estilo poético e belo

Hoje à noite, a lua brilha para todos verem, mas quem sabe onde cairão os pensamentos de outono? Chang'e voa para a lua e o Coelho de Jade prepara remédios. O romantismo dos antigos se ilumina nesta noite. Que esta lua brilhante ilumine seu caminho de volta para casa e carregue meus pensamentos mais profundos. Feliz Festival de Meio Outono!

Estilo de votos calorosos

A lua está cheia e as famílias se reencontram. A noite do Meio Outono é a mais gentil. Veja os fogos de artifício florescerem, admire a lua cheia no céu, dê uma mordida em um bolo lunar e deseje boa saúde. Que tudo o que desejamos se torne realidade. Feliz Festival de Meio Outono a todos, e que suas famílias sejam felizes!

Reconhecimento de texto e extração de informações

Reconheça textos e fórmulas em imagens ou extraia informações de recibos, certificados e formulários. Oferece suporte à saída de texto formatado.

-q2cdz6jy89b6m3kp

Extraia o seguinte da imagem: ['Invoice Code', 'Invoice Number', 'Destination', 'Fuel Surcharge', 'Fare', 'Date', 'Departure Time', 'Train Number', 'Seat Number']. Por favor, forneça a saída no formato JSON.

{

"Invoice Code": "221021325353",

"Invoice Number": "10283819",

"Destination": "Development Zone",

"Fuel Surcharge": "2.0",

"Fare": "8.00<Full>",

"Date": "2013-06-29",

"Departure Time": "Rolling",

"Train Number": "040",

"Seat Number": "371"

}

Resolução de problemas multidisciplinares

Resolva problemas de matemática, física, química e outras disciplinas presentes em imagens. Adequado para ensino fundamental, médio, universitário e educação de adultos.

-5jwcstcvmdpqghaj

Resolva o problema de matemática na imagem passo a passo.

-answer

Programação visual

Gere código a partir de imagens ou vídeos. Use este recurso para criar códigos HTML, CSS e JS a partir de rascunhos de design, capturas de tela de sites, entre outros.

code

Crie uma página web usando HTML e CSS com base no meu esboço. A cor principal deve ser preta.

code-preview

Visualização da página web

Localização de objetos

Oferece suporte à localização 2D e 3D. Utilize este recurso para determinar a orientação de objetos, mudanças de perspectiva e relações de oclusão. A localização 3D é uma nova capacidade adicionada ao modelo Qwen3-VL.
O desempenho de localização de objetos do modelo Qwen2.5-VL é robusto dentro da faixa de resolução de 480 × 480 a 2560 × 2560. Fora dessa faixa, a precisão da detecção pode diminuir, com desvios ocasionais nos quadros de detecção.
Para obter informações sobre como desenhar os resultados de localização na imagem original, consulte FAQ .
Localização 2D
-530xdcos1lqkcfuy
  • Retornar coordenadas de Box (bounding box): Detecte todos os alimentos na imagem e forneça suas coordenadas bbox no formato JSON.
  • Retornar coordenadas de Point (centroide): Localize todos os alimentos na imagem como pontos e forneça suas coordenadas de ponto no formato XML.
Visualização dos resultados de localização 2D
-mu9podu1eyvph1zd
3d
Detecte o carro na imagem e preveja sua posição 3D. Saída JSON: [{"bbox_3d": [x_center, y_center, z_center, x_size, y_size, z_size, roll, pitch, yaw], "label": "category"}].
3d-result

Análise de documentos

Analise documentos baseados em imagens (como cópias digitalizadas ou PDFs de imagem) para os formatos QwenVL HTML ou QwenVL Markdown. Esse formato não apenas reconhece o texto com precisão, mas também obtém informações de posição de elementos como imagens e tabelas. O modelo Qwen3-VL adiciona a capacidade de análise para o formato Markdown.
Os prompts recomendados são os seguintes: qwenvl html (para analisar no formato HTML) ou qwenvl markdown (para analisar no formato Markdown).

image

qwenvl markdown.

-result

Visualização dos resultados

Compreensão de vídeo

Analise o conteúdo de vídeo, localizando eventos específicos e obtendo carimbos de data/hora, ou gerando resumos de períodos-chave.
Descreva a série de ações da pessoa no vídeo. Forneça a hora de início (start_time), hora de término (end_time) e evento (event) no formato JSON. Use HH:mm:ss para o carimbo de data/hora.{"events": [{"start_time": "00:00:00","end_time": "00:00:05","event": "The person walks towards the table holding a cardboard box and places it on the table."},{"start_time": "00:00:05","end_time": "00:00:15","event": "The person picks up a scanner and scans the label on the cardboard box."},{"start_time": "00:00:15","end_time": "00:00:21","event": "The person puts the scanner back in its place and then picks up a pen to record information in a notebook."}]}

Recursos principais

Ativar ou desativar o modo de pensamento

  • Os modelos das séries qwen3.8, qwen3.7, qwen3.6, qwen3.5, qwen3-vl-plus e qwen3-vl-flash são modelos de pensamento híbrido. Eles podem pensar antes de responder ou gerar a resposta diretamente. Use o parâmetro enable_thinking para controlar a ativação do modo de pensamento:
    • true: Ativa o modo de pensamento. O valor padrão para os modelos das séries qwen3.8, qwen3.7, qwen3.6 e qwen3.5 é true.
    • false: Desativa o modo de pensamento. O valor padrão para os modelos das séries qwen3-vl-plus e qwen3-vl-flash é false.
  • Modelos com o sufixo thinking, como qwen3-vl-235b-a22b-thinking, operam exclusivamente com pensamento. Eles sempre raciocinam antes de responder e não é possível desativar esse comportamento.
  • Configuração do modelo: Em cenários de conversa geral que não envolvem chamadas de ferramentas de Agent, evite definir uma System Message para manter o desempenho ideal. Transmita instruções, como definições de função do modelo e requisitos de formato de saída, por meio da User Message.
  • Priorize a saída em streaming: Com o modo de pensamento ativado, tanto a saída em streaming quanto sem streaming são suportadas. Para evitar timeouts causados por respostas excessivamente longas, dê preferência à saída em streaming.
  • Limite a extensão do pensamento: Modelos de pensamento profundo às vezes geram processos de raciocínio extensos. Utilize o parâmetro thinking_budget para restringir o tamanho desse processo. Se a quantidade de tokens gerados durante o raciocínio ultrapassar o thinking_budget, o conteúdo de inferência será truncado e o modelo iniciará imediatamente a geração da resposta final. O valor padrão de thinking_budget corresponde ao comprimento máximo de cadeia de pensamento do modelo. Para mais detalhes, consulte a lista de modelos.
  • OpenAI compatible
  • DashScope
O parâmetro enable_thinking não faz parte do padrão OpenAI. Caso utilize o SDK Python da OpenAI, passe-o por meio de extra_body.
import os
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When you make a call, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

reasoning_content = ""  # Define the complete thinking process
answer_content = ""     # Define the complete response
is_answering = False   # Determine whether to end the thinking process and start responding
enable_thinking = True
# Create a chat completion request
completion = client.chat.completions.create(
    model="qwen3.8-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": "How do I solve this problem?"},
            ],
        },
    ],
    stream=True,
    # The enable_thinking parameter enables the thinking process, and the thinking_budget parameter sets the maximum number of tokens for the inference process.
    # Use the enable_thinking parameter to switch the thinking mode.
    extra_body={
        'enable_thinking': enable_thinking,
        "thinking_budget": 81920},

    # Uncomment the following lines to return token usage in the last chunk.
    # stream_options={
    #     "include_usage": True
    # }
)

if enable_thinking:
    print("\n" + "=" * 20 + "Thinking process" + "=" * 20 + "\n")

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

# print("=" * 20 + "Complete thinking process" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Complete response" + "=" * 20 + "\n")
# print(answer_content)

Entradas com múltiplas imagens

Os modelos de compreensão visual aceitam o envio de várias imagens em uma única requisição, permitindo realizar tarefas como comparação de produtos e processamento de documentos multipáginas. Para isso, basta incluir múltiplos objetos de imagem no array content da user message.
A quantidade de imagens é limitada pelo total de tokens do modelo para imagens e texto. A soma de tokens de todas as imagens e textos não deve exceder o limite máximo de entrada do modelo.
  • OpenAI compatible
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the China (Beijing) region. When you make a call, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen3.8-max", # This example uses qwen3.7-plus. You can replace it with another model as needed. For a list of models, see https://www.alibabacloud.com/help/zh/model-studio/models
    messages=[
       {"role": "user","content": [
           {"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},},
           {"type": "image_url","image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},},
           {"type": "text", "text": "What content do these images depict?"},
            ],
        }
    ],
)

print(completion.choices[0].message.content)
import os
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When you make a call, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max",  #  This example uses qwen3.7-plus. You can replace it with another model as needed. For a list of models, see https://www.alibabacloud.com/help/model-studio/getting-started/models
    messages=[
        {"role": "user","content": [
            {"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},},
            {"type": "image_url","image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},},
            {"type": "text", "text": "What content do these images depict?"},
            ],
        }
    ],
)

print(completion.choices[0].message.content)

Resposta

Image 1 shows a scene of a woman and a Labrador retriever interacting on a beach. The woman is wearing a plaid shirt and sitting on the sand, shaking hands with the dog. The background is the ocean waves and the sky, and the whole picture is full of warmth and joy.

Image 2 shows a scene of a tiger walking in a forest. The tiger's coat is orange with black stripes. It is stepping forward, surrounded by dense trees and vegetation, and the ground is covered with fallen leaves. The whole picture gives a feeling of wild nature.

Compreensão de vídeo

Os modelos de compreensão visual analisam o conteúdo de vídeo fornecido como uma lista de imagens (frames de vídeo) ou como um arquivo de vídeo. Os exemplos a seguir demonstram como processar vídeos online ou listas de imagens especificadas por uma URL. Para obter mais informações sobre os limites de vídeo ou a quantidade de imagens permitidas em uma lista, consulte Limites de vídeo.
Para obter melhor desempenho ao analisar arquivos de vídeo, utilize as versões de snapshot mais recentes ou atualizadas dos modelos.
  • Arquivos de vídeo
  • Lista de imagens
Os modelos de compreensão visual analisam o conteúdo extraindo uma sequência de frames do vídeo. É possível controlar a estratégia de extração de frames com os dois parâmetros a seguir:
  • fps: Controla a frequência de extração de frames. Um frame é extraído a cada 1/fps segundos. O intervalo de valores é [0.1, 10], e o valor padrão é 2.0.
    • Em cenas com movimento rápido, defina um valor de fps mais alto para capturar mais detalhes.
    • Para cenas estáticas ou vídeos longos, defina um valor de fps mais baixo para melhorar o desempenho.
  • max_frames: Número máximo de frames a serem extraídos de um vídeo. O sistema calcula o total de frames com base no fps do vídeo. Caso o número total ultrapasse esse limite, o sistema amostra os frames uniformemente de forma automática para respeitar o limite. Este parâmetro está disponível apenas ao usar o DashScope SDK.
  • Compatível com OpenAI
  • DashScope
Ao enviar um arquivo de vídeo diretamente para o modelo de compreensão visual usando o OpenAI SDK ou HTTP, defina o parâmetro "type" na mensagem do usuário como "video_url" .
Python
import os
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To get an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # If you have not configured the environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When you make a call, replace {WorkspaceId} with your workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {
            "role": "user",
            "content": [
                # When you pass a video file directly, set the value of type to video_url.
                {
                    "type": "video_url",
                    "video_url": {
                        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
                    },
                    "fps": 2
                },
                {
                    "type": "text",
                    "text": "What is the content of this video?"
                }
            ]
        }
    ]
)

print(completion.choices[0].message.content)

Enviar um arquivo local (codificação Base64 ou caminho do arquivo)

Os modelos de compreensão visual aceitam dois métodos para envio de arquivos locais: codificação Base64 e upload direto pelo caminho do arquivo. Escolha o método mais adequado com base no tamanho do arquivo e no tipo de SDK. Para recomendações, consulte Como escolher um método de upload de arquivo. Ambos os métodos devem atender aos requisitos de arquivo descritos em Limitações de imagem.
  • Upload usando codificação Base64
  • Upload usando o caminho do arquivo
Converta o arquivo em uma string codificada em Base64 e envie-a ao modelo. Este método é compatível com os SDKs OpenAI e DashScope, além de requisições HTTP.
  1. Codifique o arquivo: converta a imagem local para codificação Base64.
    # Encoding function: Converts a local file to a Base64-encoded string
    import base64
    def encode_image(image_path):
        with open(image_path, "rb") as image_file:
            return base64.b64encode(image_file.read()).decode("utf-8")
    
    # Replace xxx/eagle.png with the absolute path of your local image
    base64_image = encode_image("xxx/eagle.png")
    
  2. Construa uma Data URL no seguinte formato: data:[MIME_type];base64,{base64_image}.
    1. Substitua MIME_type pelo tipo de mídia real. Verifique se ele corresponde ao valor de MIME Type na tabela Formatos de imagem suportados, como image/jpeg ou image/png.
    2. base64_image é a string Base64 gerada na etapa anterior.
  3. Chame o modelo: passe a Data URL usando o parâmetro image ou image_url.
  • Imagem
  • Arquivo de vídeo
  • Lista de imagens
  • Passar usando um caminho de arquivo
  • Entrada codificada em Base64
Python
import os
import dashscope

# The following URL is for the Singapore region. When you call the API, replace {WorkspaceId} with your actual workspace ID. The URL varies by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Replace xxx/eagle.png with the absolute path of your local image
local_path = "xxx/eagle.png"
image_path = f"file://{local_path}"
messages = [
                {'role':'user',
                'content': [{'image': image_path},
                            {'text': 'What scene is depicted in the image?'}]}]
response = dashscope.MultiModalConversation.call(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # If you have not configured the environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx"
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen3.7-plus',  # This example uses qwen3.7-plus. You can change the model name as needed. For a list of models, see https://www.alibabacloud.com/help/model-studio/getting-started/models
    messages=messages)
print(response.output.choices[0].message.content[0]["text"])

Processamento de imagens de alta resolução

A API do modelo de compreensão visual possui um limite de tokens visuais para cada imagem codificada. Nas configurações padrão, imagens de alta resolução são compactadas, o que pode causar perda de detalhes e reduzir a precisão da compreensão. Para preservar mais detalhes e melhorar a análise, ative vl_high_resolution_images ou ajuste max_pixels e aumente a quantidade de tokens visuais.
Se a contagem de pixels da imagem de entrada exceder o limite de pixels do modelo, a imagem será reduzida para caber dentro desse limite.

Modelo

Pixels por token

vl_high_resolution_images

max_pixels

Limite de tokens

Limite de pixels

Modelos das séries Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5 e Qwen3-VL

32×32

true

max_pixels é inválido

16.384 tokens

16.777.216 (ou seja, 16.384 × 32 × 32)

false (padrão)

Personalizável. O valor padrão é 2.621.440 e o valor máximo é 16.777.216.

Determinado por max_pixels, que corresponde a max_pixels / 32 / 32

max_pixels

qwen-vl-max, qwen-vl-plus

32 x 32

true

max_pixels é inválido

16.384 tokens

16.777.216 (ou seja, 16.384 × 32 × 32)

false (padrão)

Personalizável. O valor padrão é 1.310.720 e o valor máximo é 16.777.216.

Determinado por max_pixels, que corresponde a max_pixels / 32 / 32

max_pixels

Outros modelos qwen-vl-max, outros qwen-vl-plus, série open source Qwen2.5-VL e modelos da série QVQ

28 × 28

true

max_pixels é inválido

16.384 tokens

12.845.056 (ou seja, 16.384 × 28 × 28)

false (padrão)

Personalizável. O valor padrão é 1.003.520 e o valor máximo é 12.845.056.

Determinado por max_pixels, que corresponde a max_pixels / 28 / 28

max_pixels

  • Quando vl_high_resolution_images=true, a API aplica uma política de resolução fixa e ignora a configuração max_pixels. Essa opção é ideal para reconhecer textos finos, objetos pequenos ou imagens com muitos detalhes.
  • Se vl_high_resolution_images=false, o limite final de pixels dependerá do valor do parâmetro max_pixels.
    • Em cenários sensíveis a custos, nos quais você deseja reduzir o consumo de tokens visuais: utilize o valor padrão de max_pixels ou defina um valor menor. O parâmetro max_pixels afeta principalmente a quantidade de tokens visuais e o custo da chamada. Em nossos testes, reduzi-lo não teve impacto significativo no tempo de resposta de ponta a ponta. Para diminuir a latência, consulte Velocidade de resposta e seleção de modelo.
    • Caso precise focar em detalhes específicos e possa aceitar uma velocidade de processamento menor, aumente o valor de max_pixels conforme necessário.

Velocidade de resposta e seleção de modelo

Em cenários sensíveis à latência, o tempo de resposta depende principalmente do modelo escolhido, e não do parâmetro max_pixels. A tabela a seguir compara os tempos de resposta de qwen-vl-max e qwen-vl-plus nas mesmas condições de entrada:

Modelo

Tempo médio de resposta

Características

qwen-vl-max

Cerca de 12 s

Reconhecimento de alta precisão. Recomendado para imagens com muitos detalhes e baixa tolerância a erros.

qwen-vl-plus

Cerca de 8 s

Equilíbrio entre velocidade e precisão. Aproximadamente 39% mais rápido que qwen-vl-max.

Os tempos de resposta acima são valores de referência medidos para uma única imagem de 2480x3508 pixels (qwen-vl-max: 12,75 s e 11,84 s, média de 12,29 s; qwen-vl-plus: 8,29 s e 6,75 s, média de 7,52 s). A latência real varia conforme o tamanho da imagem, o comprimento da saída e as condições da rede. Esses valores servem apenas como referência e não constituem um compromisso de desempenho.
  • Ativar a saída em streaming (stream=True) reduz significativamente o tempo até o primeiro token: na mesma solicitação, o primeiro token retorna em cerca de 0,95 segundo, enquanto o tempo total da resposta completa permanece inalterado. Essa abordagem é adequada para cenários interativos que exigem feedback o mais cedo possível.
  • Para cenários de reconhecimento de imagens sensíveis à latência, como fluxos de trabalho: use qwen-vl-plus com stream=True para obter o primeiro token em aproximadamente 1 segundo. Mude para qwen-vl-max somente se a precisão de reconhecimento do qwen-vl-plus não atender aos seus requisitos. Ajustar max_pixels não é uma forma eficaz de aumentar a velocidade.
  • OpenAI compatible
  • DashScope
O parâmetro vl_high_resolution_images não faz parte do padrão OpenAI. A forma de passá-lo varia entre os diferentes SDKs de linguagem:
  • Python SDK: Deve ser transmitido por meio do dicionário extra_body.
  • Node.js SDK: Pode ser passado diretamente como um parâmetro de nível superior.
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the China (Beijing) region. When you call the API, replace {WorkspaceId} with your actual workspace ID. The URL varies by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {"role": "user","content": [
            {"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
            # max_pixels represents the maximum pixel threshold for the input image. It is invalid when vl_high_resolution_images=True. When vl_high_resolution_images=False, it is customizable, and the maximum value varies by model.
            # "max_pixels": 16384 * 32 * 32
            },
           {"type": "text", "text": "What festival atmosphere does this image convey?"},
            ],
        }
    ],
    extra_body={"vl_high_resolution_images":True}

)
print(f"Model output: {completion.choices[0].message.content}")
print(f"Total input tokens: {completion.usage.prompt_tokens}")
import os
import time
from openai import OpenAI

client = OpenAI(
    # API keys vary by region. To obtain an API key, see https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When you call the API, replace {WorkspaceId} with your actual workspace ID. The URL varies by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {"role": "user","content": [
            {"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
            # max_pixels represents the maximum pixel threshold for the input image. It is invalid when vl_high_resolution_images=True. When vl_high_resolution_images=False, it is customizable, and the maximum value varies by model.
            # "max_pixels": 16384 * 32 * 32
            },
           {"type": "text", "text": "What festival atmosphere does this image convey"},
            ],
        }
    ],
    extra_body={"vl_high_resolution_images":True}

)
print(f"Model output: {completion.choices[0].message.content}")
print(f"Total input tokens: {completion.usage.prompt_tokens}")

Mais casos de uso

Limites

Limites de arquivos de entrada

  • Limites de imagem
  • Limites de vídeo
  • Resolução da imagem:
    • Tamanho mínimo: a largura e a altura da imagem devem ser maiores que 10 pixels.
    • Proporção: a razão entre o lado maior e o menor, tanto na imagem original quanto na redimensionada, não pode ultrapassar 200:1.
      Para detalhes sobre a lógica de redimensionamento de imagens, consulte a função smart_resize em Calcular tokens de imagem
    • Máximo de pixels:
      • Mantenha a resolução da imagem dentro de 8K (7680x4320). Resoluções superiores podem causar timeouts na chamada da API devido ao tamanho grande dos arquivos e ao tempo prolongado de transmissão pela rede.
      • Redimensionamento automático: o modelo ajusta o tamanho da imagem usando max_pixels e min_pixels. Fornecer imagens de altíssima resolução não melhora a precisão da detecção; pelo contrário, aumenta o risco de falhas nas chamadas. Redimensione as imagens para um tamanho adequado no cliente antes de fazer o upload.
  • Formatos de imagem suportados
    • Para resoluções abaixo de 4K (3840x2160), os seguintes formatos são aceitos:

      Formato de imagem

      Extensões comuns

      Tipo MIME

      BMP

      .bmp

      image/bmp

      JPEG

      .jpe, .jpeg, .jpg

      image/jpeg

      PNG

      .png

      image/png

      TIFF

      .tif, .tiff

      image/tiff

      WEBP

      .webp

      image/webp

      HEIC

      .heic

      image/heic

    • Para resoluções entre 4K (3840x2160) e 8K (7680x4320), apenas os formatos JPEG, JPG e PNG são suportados.
  • Tamanho da imagem: Os limites abaixo se aplicam a cada imagem individualmente. Em entradas com múltiplas imagens, cada uma é avaliada de forma independente, sem soma dos tamanhos.
    • Via URL pública: uma única imagem não pode exceder 20 MB para modelos das séries Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5 e Qwen3-VL. Para os demais modelos, o limite por imagem é de 10 MB.
    • Via caminho local: uma única imagem não pode ultrapassar 10 MB.
    • Via codificação Base64 (API compatível com OpenAI): para as séries Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5 e Qwen3-VL, o arquivo original antes da codificação não pode passar de 20 MB. Nos outros modelos, o limite é 10 MB. Em ambos os casos, a string Data URI resultante não pode exceder 20 MB.
    • Via codificação Base64 (API compatível com Anthropic): o corpo total da requisição não pode ultrapassar6 MB. Ao enviar várias imagens, elas compartilham essa cota.
    Esses limites dependem do modelo utilizado. Não é possível aumentá-los adquirindo um plano superior ou atualizando a versão do modelo.
    Para compactar um arquivo, consulte Como compactar uma imagem ou vídeo para o tamanho necessário .
  • Quantidade de imagens: o número máximo de imagens suportado em entradas múltiplas varia conforme o método de envio:
    • Via URLs públicas ou caminhos locais:
      • Séries Qwen3.8-Max e Qwen3.7-Plus: até 2.048 imagens
      • Séries Qwen3.7-Flash, Qwen3.6-Plus, Qwen3.6-Flash, Qwen3.5-Plus, Qwen3.5-Flash, Qwen3-VL, Qwen-VL e QVQ: até 256 imagens
      • Para a série Qwen-Omni, consulte Omni-modal.
    • Via strings codificadas em Base64: até 250 imagens
O total de tokens de todas as imagens também está sujeito ao limite máximo de tokens de entrada do modelo. A soma dos tokens de todas as imagens e textos não deve exceder a capacidade máxima de entrada do modelo.

Métodos de entrada de arquivos

  • URL pública: forneça um endereço de arquivo acessível publicamente que suporte o protocolo HTTP ou HTTPS. Para garantir melhor estabilidade e desempenho, faça upload do arquivo no OSS e obtenha uma URL pública. O Model Studio não consegue acessar endpoints internos do OSS, cujos endereços contêm -internal, como https://<bucket>.oss-cn-hangzhou-internal.aliyuncs.com/image.jpg. Se você usar um endereço interno, o download do arquivo falhará e InvalidParameter será retornado com a mensagem Failed to download multimodal content. Utilize um endpoint público do OSS, como https://<bucket>.oss-cn-hangzhou.aliyuncs.com/image.jpg, ou uma URL pré-assinada do OSS.
    Para garantir que o modelo baixe o arquivo com sucesso, o cabeçalho de resposta da URL pública deve incluir Content-Length (tamanho do arquivo) e Content-Type (tipo de mídia, como image/jpeg). Se algum desses campos estiver ausente ou incorreto, o download do arquivo falhará.
  • Codificação Base64: converta o arquivo para uma string codificada em Base64 e envie-o.
  • Caminho de arquivo local (apenas DashScope SDK): informe o caminho de um arquivo local.
Para recomendações sobre como escolher o método de entrada de arquivos, consulte Como escolher um método de upload de arquivo?

Uso em ambiente de produção

  • Pré-processamento de imagens e vídeos: Os modelos de compreensão visual possuem limites de tamanho para arquivos de entrada. Para compactar arquivos, consulte Métodos de compactação de imagem ou vídeo.
  • Processamento de arquivos de texto: Os modelos de compreensão visual aceitam apenas arquivos de imagem e vídeo. Eles não processam TXT, Word (.doc/.docx), PDF ou outros formatos baseados em texto. Utilize uma das seguintes alternativas:
    • Converta o arquivo de texto para um formato de imagem. Use uma biblioteca de processamento de imagens, como pdf2image para Python, para converter cada página do arquivo em várias imagens de alta qualidade. Em seguida, envie as imagens ao modelo por meio do método de entrada de múltiplas imagens.
    • Utilize o Qwen-Long, que permite o upload de documentos e a realização de conversas mediante a passagem de informações via file-id.
  • Tolerância a falhas e estabilidade
    • Tratamento de timeout: Em chamadas sem streaming, ocorre um erro de timeout caso o modelo não termine de gerar a saída dentro de 300 segundos. Quando isso acontece, o conteúdo já gerado é retornado no corpo da resposta. Um cabeçalho de resposta contendo x-dashscope-partialresponse: true indica que houve timeout. Utilize o recurso de modo parcial, disponível em alguns modelos. Adicione o conteúdo gerado ao array messages e reenvie a solicitação para que o Large Language Model (LLM) continue a geração. Para mais detalhes, consulte Continuar a geração a partir de uma saída incompleta.
    • Configuração de timeout no cliente: O timeout mencionado acima ocorre no servidor quando o modelo ultrapassa 300 segundos na geração da saída. Esse comportamento difere do timeout padrão configurado no SDK do lado do cliente. Ao processar imagens grandes, como uma de 4000 x 4000 pixels, a requisição pode exceder o limite padrão do SDK e ser interrompida com um APITimeoutError, mesmo que o limite de 300 segundos do servidor não tenha sido atingido. Para evitar esse problema, use with_options no SDK Python da OpenAI para aumentar o timeout do cliente:
client = client.with_options(timeout=1800.0)
response = client.chat.completions.create(
    model="qwen-vl-plus",
    messages=[...]
)
  • Saída em streaming: Defina stream=True para que o modelo retorne o conteúdo incrementalmente, em vez de aguardar uma resposta completa única. Essa configuração evita timeouts no cliente causados por chamadas longas sem streaming durante o processamento de imagens grandes:
stream = client.chat.completions.create(
    model="qwen-vl-plus",
    messages=[...],
    stream=True
)
for chunk in stream:
    print(chunk.choices[0].delta.content)
  • Mecanismo de nova tentativa: Implemente uma lógica adequada de repetição de chamadas de API, como backoff exponencial, para lidar com instabilidades de rede ou indisponibilidade temporária do serviço.

Faturamento e limitação de taxa

  • Faturamento:O custo total é calculado com base na quantidade total de tokens de entrada e saída. Os preços de entrada e saída estão disponíveis no console do Model Studio.
    • Composição dos tokens:Os tokens de entrada incluem tokens de texto e tokens convertidos a partir de imagens ou vídeos. Os tokens de saída correspondem ao texto gerado pelo modelo. No modo de pensamento, o processo de raciocínio do modelo também é contabilizado como tokens de saída. Caso o processo de pensamento não seja exibido nesse modo, o faturamento segue a tabela de preços do modo sem pensamento.
    • Cálculo de tokens para imagens e vídeos:Utilize o código abaixo para estimar o consumo de tokens de imagens ou vídeos. O resultado é apenas uma referência; o uso real consta na resposta da API.
      • Imagens
      • Vídeos
      Fórmula: Image Tokens = h_bar * w_bar / token_pixels + 2
      • h_bar, w_bar: Altura e largura da imagem redimensionada. Antes de processar uma imagem, o modelo executa um pré-processamento para reduzi-la até um limite específico de pixels. Esse limite depende dos valores dos parâmetros max_pixels e vl_high_resolution_images. Para mais informações, consulte Processar imagens de alta resolução.
      • token_pixels: Valor em pixels correspondente a cada token visual. Esse valor varia conforme o modelo:
        • qwen3.8-series,qwen3.7-series, qwen3.6-series, qwen3.5-series, Qwen3-VL, qwen-vl-max e qwen-vl-plus:Cada token corresponde a 32x32 pixels.
        • QVQ e demais modelos Qwen2.5-VL:Cada token corresponde a 28x28 pixels.
      O código a seguir demonstra a lógica aproximada de redimensionamento de imagens utilizada pelo modelo. Use-o para estimar os tokens de uma imagem. Para o faturamento efetivo, consulte a resposta da API.
      import math
      from PIL import Image  # pip install Pillow
      
      def smart_resize(image_path, max_pixels, vl_high_resolution_images):
          """Calculates the scaled dimensions of an image based on model parameters to estimate image tokens."""
          image = Image.open(image_path)
          height, width = image.height, image.width
      
          # The scaling factor is 32 for models such as Qwen3.6, Qwen3.5, and Qwen3-VL. For other models, it is 28.
          factor = 32
          h_bar = round(height / factor) * factor
          w_bar = round(width / factor) * factor
      
          # Token lower limit: 4 tokens
          min_pixels = 4 * factor * factor
      
          # If vl_high_resolution_images=True, the token upper limit is fixed at 16384, and max_pixels is ignored.
          if vl_high_resolution_images:
              max_pixels = 16384 * factor * factor
      
          # Constrains the total number of pixels to the range [min_pixels, max_pixels].
          if h_bar * w_bar > max_pixels:
              beta = math.sqrt((height * width) / max_pixels)
              h_bar = math.floor(height / beta / factor) * factor
              w_bar = math.floor(width / beta / factor) * factor
          elif h_bar * w_bar < min_pixels:
              beta = math.sqrt(min_pixels / (height * width))
              h_bar = math.ceil(height * beta / factor) * factor
              w_bar = math.ceil(width * beta / factor) * factor
      
          return h_bar, w_bar
      
      if __name__ == "__main__":
          # Note: The values of max_pixels and vl_high_resolution_images must match the parameters passed when calling the model.
          h_bar, w_bar = smart_resize("xxx/test.jpg", max_pixels=2560 * 32 * 32, vl_high_resolution_images=False)
          print(f"Scaled image dimensions: Height {h_bar}, Width {w_bar}")
      
          # Each image includes one <vision_bos> and one <vision_eos> token.
          token = int(h_bar * w_bar / (32 * 32)) + 2
          print(f"Number of image tokens: {token}")
      
  • Visualizar faturas:Consulte suas faturas ou recarregue sua conta na página Expenses and Costs do Alibaba Cloud Management Console.
  • Limitação de taxa:Para mais detalhes sobre as condições de limitação de taxa dos modelos de compreensão visual, consulte Limitação de taxa.
  • Cota gratuita(apenas região Singapore): Uma cota gratuita de 1 milhão de tokens está disponível para os modelos de compreensão visual. O período de validade de 90 dias começa na data em que você ativa o Model Studio ou tem sua solicitação de modelo aprovada.

Instruções

  1. Leia o conteúdo em inglês para compreender O QUE precisa ser comunicado
  2. Escreva o português brasileiro DO ZERO — esqueça a estrutura das frases em inglês
  3. Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão
  4. Copie os placeholders xref ({XREF_N}) literalmente, sem traduzir ou modificar
  5. Aplique todas as regras específicas do idioma rigorosamente
  6. Aplique as regras de stopwords com tolerância zero
  7. Use o modo imperativo em passos numerados e listas de procedimentos
  8. Garanta a consistência terminológica — o mesmo termo deve ter a mesma tradução em todo o documento
  9. Varie os inícios de frase em listas e tabelas — nenhum início deve se repetir mais de 3 vezes
  10. Retorne APENAS o documento markdown em português brasileiro, sem explicações

Referência da API

Para obter mais informações sobre os parâmetros de entrada e saída do modelo de compreensão visual, consulte geração de texto.

Perguntas frequentes

Escolha o método de upload mais adequado com base no tipo de SDK, no tamanho do arquivo e na estabilidade da rede.

Tipo de arquivo

Especificações do arquivo

DashScope SDK (Python, Java)

Compatível com OpenAI / DashScope HTTP

Imagem

Maior que 7 MB e menor que 10 MB

Informe o caminho local

Somente URLs de rede pública são suportadas. Utilize o Alibaba Cloud Object Storage Service

Menor que 7 MB

Informe o caminho local

Codificação Base64

Vídeo

Maior que 100 MB

Somente URLs de rede pública são suportadas. Utilize o Alibaba Cloud Object Storage Service

Somente URLs de rede pública são suportadas. Utilize o Alibaba Cloud Object Storage Service

Maior que 7 MB e menor que 100 MB

Informe o caminho local

Somente URLs de rede pública são suportadas. Utilize o Alibaba Cloud Object Storage Service

Menor que 7 MB

Informe o caminho local

Codificação Base64

A codificação Base64 aumenta o tamanho dos dados. O arquivo original deve ter menos de 7 MB.
Utilize Base64 ou um caminho local para evitar tempos limite de download no servidor e melhorar a estabilidade.
Os modelos de compreensão visual possuem limites de tamanho para arquivos de entrada. Utilize os métodos a seguir para compactar seus arquivos.
  • Ferramentas online: Utilize ferramentas como CompressJPEG para compactar imagens.
  • Software local: Utilize softwares como Photoshop para ajustar a qualidade durante a exportação.
  • Implementação via código:
# pip install pillow

from PIL import Image
def compress_image(input_path, output_path, quality=85):
    with Image.open(input_path) as img:
        img.save(output_path, "JPEG", optimize=True, quality=quality)

# Pass the local image
compress_image("/xxx/before-large.jpeg","/xxx/after-min.jpeg")

# Batch compress the images in a directory
import glob
import os

def batch_compress(input_dir, output_dir, quality=85):
    files = (
        glob.glob(os.path.join(input_dir, "*.jpg"))
        + glob.glob(os.path.join(input_dir, "*.jpeg"))
        + glob.glob(os.path.join(input_dir, "*.png"))
    )
    for i, f in enumerate(files, 1):
        try:
            compress_image(f, os.path.join(output_dir, os.path.basename(f)), quality)
            print(f"[{i}/{len(files)}] {os.path.basename(f)} done")
        except Exception as e:
            print(f"[{i}/{len(files)}] {os.path.basename(f)} error: {e}")

batch_compress("/xxx/input_dir", "/xxx/output_dir")
  • Ferramentas online: Utilize ferramentas como FreeConvert para compactar vídeos.
  • Software local: Utilize softwares como HandBrake.
  • Implementação via código: Utilize a ferramenta FFmpeg. Para mais informações, consulte o site oficial do FFmpeg.
# Basic transform command
# -i, function: input file path, example: input.mp4
# -vcodec, function: video encoder, common values include libx264 (generally recommended) and libx265 (higher compression ratio)
# -crf, function: controls video quality, value range: [18-28]. The smaller the value, the higher the quality and the larger the file size.
# --preset, function: controls the balance between encoding speed and compression efficiency. Common values include slow, fast, and faster.
# -y, function: overwrite an existing file (no value needed)
# output.mp4, function: output file path

ffmpeg -i input.mp4 -vcodec libx264 -crf 28 -preset slow output.mp4
Depois que o modelo de compreensão visual retornar os resultados de localização de objetos, utilize o código a seguir para desenhar os quadros de detecção e suas informações de rótulo na imagem original.
  • Qwen2.5-VL: As coordenadas retornadas são valores absolutos em pixels, relativos ao canto superior esquerdo da imagem redimensionada. Para desenhar quadros de detecção, consulte o código em qwen2_5_vl_2d.py.
  • Séries Qwen3-VL, Qwen3.5, Qwen3.6 e Qwen3.7 (como qwen3.5-plus, qwen3.6-plus e qwen3.7-plus): As coordenadas retornadas são relativas e normalizadas no intervalo [0, 999]. Para desenhar quadros de detecção, consulte o código em qwen3_vl_2d.py (localização 2D) ou qwen3_vl_3d.zip (localização 3D).

Códigos de erro

Se uma chamada de modelo falhar, uma mensagem de erro será retornada. Para obter informações sobre como resolver o erro, consulte Códigos de erro.
Plano de Tokens
Playground de Modelos
Inferência do Modelo
Avaliação
Compressão de Modelos
Estatísticas e Monitoramento
Suporte