Passer au contenu principal

Présentation des fonctionnalités

Les modèles vision-langage (Vision-Language Model, VLM) sont une catégorie de grands modèles multimodaux prenant simultanément en charge les entrées image et texte, capables de comprendre le contenu visuel et de traiter des informations intermodales. À partir d’informations combinant image et texte, le modèle peut produire des réponses de haute qualité. Ils sont largement utilisés dans des scénarios tels que la reconnaissance d’images, la compréhension de contenu et les questions-réponses intelligentes.

Cas d’utilisation typiques

  • Reconnaissance et description du contenu d’image : identifier automatiquement les objets, les couleurs, les scènes et les relations spatiales dans une image, puis générer une description en langage naturel.
  • Compréhension combinée image-texte : combiner les entrées image et texte pour réaliser des conversations multi-tours contextualisées et répondre à des tâches complexes.
  • Questions-réponses assistées par la vision : peut compléter les outils OCR en reconnaissant les informations textuelles intégrées dans les images et en répondant aux questions.
  • Extensions futures : adapté aux assistants visuels intelligents, à la perception robotique, à la réalité augmentée et à d’autres scénarios interactifs.

Instructions d’appel API

L’appel aux modèles vision-langage doit s’effectuer via l’interface /chat/completions, qui prend en charge les entrées mixtes texte-image.

Paramètres de traitement des images

Définissez la précision du traitement d’image via le champ detail, avec les options suivantes :
  • high : haute résolution, conserve davantage de détails, adapté aux tâches nécessitant une analyse fine.
  • low : basse résolution, traitement rapide, adapté aux réponses en temps réel.
  • auto : le système choisit automatiquement le mode approprié.

Exemple de format de message

Image sous forme d’URL

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.png",
        "detail": "high"
      }
    },
    {
      "type": "text",
      "text": "Veuillez décrire la scène dans l’image."
    }
  ]
}

Image sous forme Base64

{
  "role": "user",
  "content": [
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,{base64_image}",
        "detail": "low"
      }
    },
    {
      "type": "text",
      "text": "Quels textes apparaissent dans l’image ?"
    }
  ]
}

Exemple de code d’encodage d’image 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")

Mode multi-images

Il est possible d’envoyer plusieurs images avec du texte comme entrée commune. Pour obtenir de meilleures performances et une meilleure compréhension, il est recommandé d’utiliser au maximum deux images.
{
  "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": "Comparez les caractéristiques communes de ces deux images."
    }
  ]
}

Modèles pris en charge

Voici les modèles vision-langage (VLM) actuellement pris en charge par la plateforme :

Facturation

Les entrées image des modèles vision-langage sont converties en tokens et calculées avec le texte pour déterminer le coût de l’appel :
  • les règles d’estimation des tokens image varient légèrement selon les modèles ;
  • les normes de facturation détaillées sont disponibles sur la page de présentation du modèle correspondant.

Exemple de code d’appel API

Description d’une image unique

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": "Décrivez les principaux bâtiments dans l’image."}
            ]
        }
    ],
    stream=True
)

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

Analyse comparative de plusieurs images

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": "Veuillez comparer les principales différences entre ces deux produits."}
            ]
        }
    ],
    stream=True
)

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

FAQ et remarques

  • La résolution et la netteté de l’image influencent la précision de reconnaissance du modèle ; il est recommandé d’utiliser des sources d’images nettes.
  • L’encodage Base64 produit des données volumineuses ; il est recommandé que les images ne dépassent pas 1MB.
  • En cas de problème, consultez la documentation développeur de la plateforme ou soumettez un ticket pour obtenir de l’aide.