Pular para o conteúdo principal

Introdução aos recursos

Modelos de visão-linguagem (Vision-Language Model, VLM) são uma classe de grandes modelos multimodais que oferecem suporte simultâneo a entradas de imagem e texto, com capacidade de compreender conteúdo visual e processar informações entre modalidades. Com base na combinação de informações de imagens e textos, o modelo consegue gerar respostas de alta qualidade, sendo amplamente usado em cenários como reconhecimento de imagens, compreensão de conteúdo e perguntas e respostas inteligentes.

Cenários de aplicação típicos

  • Reconhecimento e descrição de conteúdo de imagens: identifica automaticamente objetos, cores, cenas e relações espaciais em imagens, gerando descrições em linguagem natural.
  • Compreensão integrada de imagem e texto: combina entradas de imagem e texto para realizar diálogos de múltiplas rodadas relacionados ao contexto e responder a tarefas complexas.
  • Perguntas e respostas com apoio visual: pode servir como complemento a ferramentas de OCR, identificando informações textuais incorporadas em imagens e respondendo a perguntas.
  • Aplicações futuras: adequado para assistentes visuais inteligentes, percepção robótica, realidade aumentada e outros cenários interativos.

Instruções de chamada da API

Para chamar modelos de visão-linguagem, use o endpoint /chat/completions, que oferece suporte a entradas mistas de imagem e texto.

Parâmetros de processamento de imagem

Use o campo detail para definir a precisão do processamento da imagem. As opções compatíveis são:
  • high: alta resolução, preserva mais detalhes, ideal para tarefas refinadas.
  • low: baixa resolução, processamento rápido, ideal para respostas em tempo real.
  • auto: o sistema escolhe automaticamente o modo adequado.

Exemplo de formato de mensagem

Imagem por URL

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.png",
        "detail": "high"
      }
    },
    {
      "type": "text",
      "text": "Descreva a cena na imagem."
    }
  ]
}

Imagem em Base64

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}",
        "detail": "low"
      }
    },
    {
      "type": "text",
      "text": "Quais textos aparecem na imagem?"
    }
  ]
}

Exemplo de código para codificação de imagem em Base64 (Python)

import base64
from PIL import Image
import io

def image_to_base64(image_path):
    with Image.open(image_path) as img:
        buffered = io.BytesIO()
        img.save(buffered, format="JPEG")
        return base64.b64encode(buffered.getvalue()).decode('utf-8')

base64_image = image_to_base64("path/to/your/image.jpg")

Modo com múltiplas imagens

Há suporte para enviar várias imagens junto com texto como entrada. Recomenda-se usar no máximo duas imagens para obter melhor desempenho e melhor compreensão.
{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image1.png"
      }
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}"
      }
    },
    {
      "type": "text",
      "text": "Compare as características em comum destas duas imagens."
    }
  ]
}

Modelos compatíveis

A seguir estão os modelos de visão-linguagem (VLM) atualmente compatíveis com a plataforma:

Modelo de cobrança

As entradas de imagem dos modelos de visão-linguagem serão convertidas em Tokens e calculadas junto com o texto para determinar o custo da chamada:
  • As regras de estimativa de Tokens de imagem variam ligeiramente entre os modelos;
  • Os padrões detalhados de cobrança podem ser consultados na página de introdução do modelo correspondente.

Exemplo de código para chamada da API

Descrição de uma única imagem

from openai import OpenAI

client = OpenAI(api_key="YOUR_KEY", base_url="https://api.highwayapi.ai/openai")

response = client.chat.completions.create(
    model="qwen/qwen2.5-vl-72b-instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": "https://example.com/cityscape.jpg"}},
                {"type": "text", "text": "Descreva os principais edifícios na imagem."}
            ]
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Análise comparativa de múltiplas imagens

response = client.chat.completions.create(
    model="qwen/qwen2.5-vl-72b-instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": "https://example.com/product1.jpg"}},
                {"type": "image_url", "image_url": {"url": "https://example.com/product2.jpg"}},
                {"type": "text", "text": "Compare as principais diferenças entre estes dois produtos."}
            ]
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Perguntas frequentes e observações

  • A resolução e a nitidez da imagem afetam a precisão do reconhecimento do modelo; recomenda-se usar fontes de imagem nítidas.
  • A codificação em Base64 gera um tamanho maior; recomenda-se que a imagem não ultrapasse 1MB.
  • Em caso de problemas, consulte a documentação de desenvolvedores da plataforma ou envie um ticket para obter suporte.