> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jiekou.ai/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.jiekouRemoteData.llmModels.status === 'loaded') {
        const modelList = window.jiekouRemoteData.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)">展示更多</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>;
  }
};

## 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

```json theme={null}
{
  "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

```json theme={null}
{
  "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)

```python theme={null}
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.

```json theme={null}
{
  "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:

<VisionModels />

## 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

```python theme={null}
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

```python theme={null}
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.
