> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Modelos de Visão-Linguagem

export const VisionModels = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    let attempts = 0;
    const maxAttempts = 50;
    const INIT_DISPLAY_COUNT = 3;
    const interval = setInterval(() => {
      const clientComponent = document.getElementById("vision-models");
      if (clientComponent && window.novitaRemoteData.llmModels.status === 'loaded') {
        const modelList = window.novitaRemoteData.llmModels.data.filter(model => {
          return (model.features || []).includes('vision');
        });
        let displayModels = modelList.slice(0, INIT_DISPLAY_COUNT).map(model => {
          return `<li><span class="model-id-item">${model.id}</span></li>`;
        }).join('');
        let showMoreButton = '';
        if (modelList.length > INIT_DISPLAY_COUNT) {
          showMoreButton = `<button id="show-more-vision-model-btn" style="margin-left: 32px; color: rgb(40 116 255)">View More</button>`;
        }
        clientComponent.innerHTML = `
          <ul>${displayModels}</ul>
          ${showMoreButton}
        `;
        document.getElementById('show-more-vision-model-btn')?.addEventListener('click', () => {
          clientComponent.innerHTML = `
            <ul>${modelList.map(model => {
            return `<li><span class="model-id-item">${model.id}</span></li>`;
          }).join('')}</ul>
          `;
        });
        clearInterval(interval);
      }
      attempts++;
      if (attempts >= maxAttempts) {
        clearInterval(interval);
      }
    }, 200);
    return <div id="vision-models"></div>;
  }
};

## Visão geral

Modelos de Visão-Linguagem (VLMs) são um tipo de modelo de base multimodal capaz de processar entradas de imagem e texto. Esses modelos entendem conteúdo visual em conjunto com instruções em linguagem e geram respostas de alta qualidade com base no contexto combinado. Eles são amplamente usados em cenários que envolvem reconhecimento de imagens, interpretação de conteúdo e perguntas e respostas visuais inteligentes.

### Casos de uso típicos

* **Reconhecimento e descrição de imagens**: Identifica automaticamente objetos, cores, cenas e relações espaciais em imagens, e gera descrições em linguagem natural.
* **Compreensão multimodal**: Combina entrada de imagem e texto contextual para diálogo em múltiplos turnos e conclusão de tarefas.
* **Perguntas e respostas visuais**: Atua como uma ferramenta avançada de OCR ao reconhecer e interpretar texto incorporado em imagens.
* **Aplicações emergentes**: Ideal para uso em assistentes de visão inteligentes, percepção robótica, interfaces de AR e muito mais.

***

## Guia de uso da API

Para invocar um Modelo de Visão-Linguagem, use o endpoint `/chat/completions` com entradas de imagem e texto.

### Parâmetro de detalhe da imagem

Use o campo `detail` para controlar a resolução da imagem. Os seguintes modos estão disponíveis:

* `high`: Alta resolução, preserva mais detalhes — ideal para tarefas de precisão.
* `low`: Baixa resolução, resposta mais rápida — adequado para uso em tempo real.
* `auto`: Seleciona automaticamente o modo apropriado.

***

### Exemplo de formato de mensagem

#### Imagem via URL

```json theme={"system"}
{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.png",
        "detail": "high"
      }
    },
    {
      "type": "text",
      "text": "Please describe the scene in the image."
    }
  ]
}
```

#### Imagem via Base64

```json theme={"system"}
{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}",
        "detail": "low"
      }
    },
    {
      "type": "text",
      "text": "What text is present in the image?"
    }
  ]
}
```

***

### Código Python: codificar imagem para Base64

```python theme={"system"}
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")
```

***

## Entrada com várias imagens

A API oferece suporte ao envio de várias imagens junto com a entrada de texto. Para obter os melhores resultados, recomendamos enviar no máximo duas imagens por solicitação.

```json theme={"system"}
{
  "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 the common features of these two images."
    }
  ]
}
```

***

## Modelos compatíveis

Os seguintes Modelos de Visão-Linguagem são atualmente compatíveis com a plataforma Novita:

<VisionModels />

Visite o [Model Hub](https://novita.ai/models-console/library) para obter uma lista completa e atualizada dos modelos disponíveis.

***

## Cobrança

A entrada de imagem é tokenizada e contabilizada para cobrança junto com o texto.

* Cada modelo usa um método diferente de conversão de imagem para tokens.
* Consulte a página de preços de cada modelo para obter detalhes sobre cobrança e política de tokens.

***

## Exemplos de chamadas de API

### Descrição de imagem única

```python theme={"system"}
from openai import OpenAI

client = OpenAI(api_key="YOUR_KEY", base_url="https://api.novita.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": "Describe the main buildings in the image."
                }
            ]
        }
    ],
    stream=True
)

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

### Comparação de várias imagens

```python theme={"system"}
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": "Please compare the key differences between these two products."
                }
            ]
        }
    ],
    stream=True
)

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

***

## Observações e solução de problemas

* A resolução e a nitidez da imagem afetam significativamente o desempenho do modelo. Use fontes de alta qualidade sempre que possível.
* Imagens codificadas em Base64 devem, idealmente, ter menos de 1MB para evitar timeouts ou erros.
* Para uso detalhado, [agende uma chamada com nossa equipe de vendas](https://meet.brevo.com/novita-ai/contact-sales) ou entre em contato com o suporte, se necessário.
