> ## 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 visión-lenguaje

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>;
  }
};

## Descripción general

Los modelos de visión-lenguaje (VLMs) son un tipo de modelo fundacional multimodal capaz de procesar tanto entradas de imagen como de texto. Estos modelos comprenden el contenido visual junto con instrucciones en lenguaje y generan respuestas de alta calidad basadas en el contexto combinado. Se utilizan ampliamente en escenarios que implican reconocimiento de imágenes, interpretación de contenido y preguntas y respuestas visuales inteligentes.

### Casos de uso típicos

* **Reconocimiento y descripción de imágenes**: Identifica automáticamente objetos, colores, escenas y relaciones espaciales en imágenes, y genera descripciones en lenguaje natural.
* **Comprensión multimodal**: Combina entradas de imagen y texto contextual para diálogos de varios turnos y finalización de tareas.
* **Respuesta a preguntas visuales**: Actúa como una herramienta OCR avanzada al reconocer e interpretar texto incrustado en imágenes.
* **Aplicaciones emergentes**: Ideal para asistentes visuales inteligentes, percepción robótica, interfaces de AR y más.

***

## Guía de uso de la API

Para invocar un modelo de visión-lenguaje, usa el endpoint `/chat/completions` con entradas de imagen y texto.

### Parámetro de detalle de imagen

Usa el campo `detail` para controlar la resolución de la imagen. Están disponibles los siguientes modos:

* `high`: Alta resolución, conserva más detalle; ideal para tareas de precisión.
* `low`: Baja resolución, respuesta más rápida; adecuado para uso en tiempo real.
* `auto`: Selecciona automáticamente el modo apropiado.

***

### Formato de mensaje de ejemplo

#### Imagen mediante 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."
    }
  ]
}
```

#### Imagen mediante 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 imagen a 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 de múltiples imágenes

La API admite el envío de múltiples imágenes junto con una entrada de texto. Para obtener los mejores resultados, recomendamos enviar no más de dos imágenes por solicitud.

```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 compatibles

Actualmente, la plataforma Novita admite los siguientes modelos de visión-lenguaje:

<VisionModels />

Visita el [Model Hub](https://novita.ai/models-console/library) para obtener una lista completa y actualizada de los modelos disponibles.

***

## Facturación

La entrada de imagen se tokeniza y se contabiliza para la facturación junto con el texto.

* Cada modelo utiliza un método diferente de conversión de imagen a tokens.
* Consulta la página de precios de cada modelo para obtener información detallada sobre la facturación y la política de tokens.

***

## Ejemplos de llamadas a la API

### Descripción de una sola imagen

```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)
```

### Comparación de múltiples imágenes

```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)
```

***

## Notas y solución de problemas

* La resolución y la claridad de la imagen afectan significativamente al rendimiento del modelo. Usa fuentes de alta calidad siempre que sea posible.
* Idealmente, las imágenes codificadas en Base64 deberían tener menos de 1 MB para evitar tiempos de espera o errores.
* Para un uso detallado, [agenda una llamada con nuestro equipo de ventas](https://meet.brevo.com/novita-ai/contact-sales) o contacta con soporte si es necesario.
