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

# Modèles vision-langage

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

## Vue d’ensemble

Les modèles vision-langage (VLM) sont un type de modèle de fondation multimodal capable de traiter à la fois des entrées image et texte. Ces modèles comprennent le contenu visuel en association avec des instructions en langage naturel, et génèrent des réponses de haute qualité à partir du contexte combiné. Ils sont largement utilisés dans des scénarios impliquant la reconnaissance d’images, l’interprétation de contenu et les questions-réponses visuelles intelligentes.

### Cas d’utilisation typiques

* **Reconnaissance et description d’images** : identifie automatiquement les objets, couleurs, scènes et relations spatiales dans les images, puis génère des descriptions en langage naturel.
* **Compréhension multimodale** : combine l’entrée image et le texte contextuel pour des dialogues multi-tours et l’exécution de tâches.
* **Questions-réponses visuelles** : agit comme un outil OCR avancé en reconnaissant et en interprétant le texte intégré dans les images.
* **Applications émergentes** : idéal pour les assistants visuels intelligents, la perception robotique, les interfaces AR, et plus encore.

***

## Guide d’utilisation de l’API

Pour appeler un modèle vision-langage, utilisez l’endpoint `/chat/completions` avec des entrées image et texte.

### Paramètre de détail de l’image

Utilisez le champ `detail` pour contrôler la résolution de l’image. Les modes suivants sont disponibles :

* `high` : haute résolution, préserve davantage de détails — idéal pour les tâches de précision.
* `low` : basse résolution, réponse plus rapide — adapté à une utilisation en temps réel.
* `auto` : sélectionne automatiquement le mode approprié.

***

### Exemple de format de message

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

#### Image 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?"
    }
  ]
}
```

***

### Code Python : encoder une image en 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")
```

***

## Entrée multi-image

L’API prend en charge l’envoi de plusieurs images avec une entrée texte. Pour de meilleurs résultats, nous recommandons d’envoyer au maximum deux images par requête.

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

***

## Modèles pris en charge

Les modèles vision-langage suivants sont actuellement pris en charge sur la plateforme Novita :

<VisionModels />

Consultez le [Model Hub](https://novita.ai/models-console/library) pour obtenir une liste complète et à jour des modèles disponibles.

***

## Facturation

L’entrée image est tokenisée et comptabilisée dans la facturation avec le texte.

* Chaque modèle utilise une méthode différente de conversion d’image en tokens.
* Consultez la page de tarification de chaque modèle pour connaître les détails de facturation et la politique relative aux tokens.

***

## Exemples d’appels API

### Description d’une seule image

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

### Comparaison multi-image

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

***

## Notes et dépannage

* La résolution et la clarté de l’image influencent considérablement les performances du modèle. Utilisez des sources de haute qualité lorsque c’est possible.
* Les images encodées en Base64 devraient idéalement faire moins de 1MB afin d’éviter les expirations de délai ou les erreurs.
* Pour une utilisation détaillée, [réservez un appel avec notre équipe commerciale](https://meet.brevo.com/novita-ai/contact-sales) ou contactez le support si nécessaire.
