1. Introduction à GPT-4 Vision Model

Le modèle GPT-4 Vision (GPT-4V) est un modèle d'intelligence artificielle multimodal introduit par OpenAI, qui intègre des capacités de compréhension visuelle basées sur GPT-4. Contrairement aux modèles traditionnels de traitement de texte, GPT-4V peut recevoir et analyser le contenu des images, fournir des descriptions, répondre à des questions et s'engager dans des interactions liées aux images.

Exemples d'Applications:

  • Reconnaissance et Classification de Produits: Les plateformes de commerce électronique peuvent utiliser GPT-4V pour identifier et fournir des descriptions pour les images de produits, ce qui aide à améliorer les systèmes de recherche et de recommandation.
  • Aide à la Décision Médicale: Bien que GPT-4V ne soit pas adapté au diagnostic direct d'images médicales professionnelles, il peut aider le personnel médical dans la compréhension initiale des images et l'organisation des données.
  • Éducation et Recherche: Dans l'enseignement et la recherche scientifique, GPT-4V peut être utilisé pour analyser des graphiques, des résultats d'expériences et interpréter automatiquement des données d'images scientifiques.
  • Surveillance et Analyse du Trafic: En analysant les images de surveillance du trafic, GPT-4V peut aider les systèmes de gestion du trafic dans le reporting en temps réel des conditions et l'identification des accidents.

2. Exemple Simple

Voici un exemple simple d'utilisation d'une requête CURL pour démontrer comment utiliser le modèle GPT-4 Vision pour analyser des images:

Paramètres de Requête API:

  • modèle: Spécifie la version du modèle à utiliser, dans ce cas "gpt-4-vision-preview".
  • messages: Contient la définition du rôle et le contenu, où le contenu peut inclure du texte et des liens d'image.
  • max_tokens: Spécifie la limite maximale de longueur pour la génération de texte.

Exemple de Requête CURL:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Qu'est-ce qu'il y a dans cette image ?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "Lien de votre image"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

Avec la requête ci-dessus, nous avons soumis une image au modèle GPT-4 Vision et posé une question simple : "Qu'est-ce qu'il y a dans cette image ?" Le modèle analysera le contenu de l'image et fournira une réponse basée sur le contenu de l'image.

3. Téléchargement d'Images en Utilisant l'Encodage Base64

Dans certains cas, vous pouvez avoir besoin de télécharger un fichier image local vers le modèle GPT-4 Vision. Dans de tels cas, nous pouvons incorporer les données de l'image dans la requête API en utilisant l'encodage base64.

Exemple de Code Python:

import base64
import requests

api_key = "VOTRE_CLÉ_API_OPENAI"

def encode_image(image_path):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode('utf-8')

image_path = "chemin_vers_votre_image.jpg"

base64_image = encode_image(image_path)

headers = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {api_key}"
}

payload = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Qu'y a-t-il dans cette image ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

print(response.json())

Dans le code ci-dessus, nous convertissons d'abord un fichier image local en une chaîne encodée en base64, puis envoyons cette chaîne en tant que partie de la requête à l'API. La réponse du modèle contient une description du contenu de l'image.

4. Gestion de Plusieurs Entrées d'Images

Parfois, il est nécessaire d'analyser plusieurs images en même temps. Le modèle GPT-4 Vision prend en charge la réception de plusieurs entrées d'images simultanément et permet aux utilisateurs de poser des questions sur ces images ou de comparer leurs différences.

Exemple d'entrée multiple d'images :

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "utilisateur",
        "content": [
          {
            "type": "text",
            "text": "Qu'est-ce qui est différent dans ces images ?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "URL de la première image",
            }
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "URL de la deuxième image",
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

Dans cette requête, nous soumettons deux images à l'API. Le modèle analysera chaque image séparément et fournira des descriptions et des comparaisons en fonction des questions posées. Cette approche est idéale pour une analyse globale d'une collection d'images.

5. Réglage du niveau de détail de l'analyse d'image

Lors de l'utilisation du modèle visuel GPT-4 pour l'analyse d'image, vous pouvez régler le niveau de détail selon vos besoins. En ajustant le paramètre detail, vous pouvez choisir parmi faible, élevé ou auto. Voici une explication détaillée de chaque option et comment la régler :

  • faible : Choisir le niveau de détail faible désactivera le modèle "haute résolution". Ce modèle recevra une version basse résolution de l'image à 512 pixels x 512 pixels et utilisera un budget de 65 jetons pour représenter l'image. Cela convient aux scénarios ne nécessitant pas de détails élevés, aidant à obtenir un temps de réponse plus rapide et à consommer moins de jetons d'entrée.

  • élevé : Le niveau de détail élevé permet au modèle de d'abord voir une image en basse résolution, puis de créer une version détaillée découpée dans une grille de 512 pixels en fonction de la taille de l'image d'entrée. Chaque découpe détaillée est représentée avec un budget doublé de 129 jetons (soit 65 jetons par découpe par défaut).

  • auto : Le niveau de détail automatique déterminera l'utilisation du niveau de détail faible ou élevé en fonction de la taille de l'image d'entrée.

L'exemple de code suivant montre comment régler le niveau de détail :

import base64
import requests

cle_api = "votre_CLE_API_OPENAI"

chemin_image = "chemin_votre_image.jpg"

image_base64 = base64.b64encode(open(chemin_image, "rb").read()).decode('utf-8')

entetes = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {cle_api}"
}

charge_utile = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "utilisateur",
      "content": [
        {
          "type": "text",
          "text": "Qu'y a-t-il dans cette image ?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{image_base64}",
            "detail": "élevé"  # Réglé sur le niveau de détail élevé
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

reponse = requests.post("https://api.openai.com/v1/chat/completions", headers=entetes, json=charge_utile)

print(reponse.json())

6. Comprendre les limites du modèle et gérer les images

6.1. Limites du modèle

Malgré la fonctionnalité puissante du modèle visuel GPT-4, il n'est pas sans limites, et comprendre ces limites est crucial pour l'utilisation dans la compréhension des images. Voici un aperçu de certaines limitations connues :

  • Images médicales : Le modèle n'est pas adapté pour interpréter des images médicales professionnelles, telles que des scanners CT, et ne doit pas être utilisé pour des conseils médicaux.

  • Texte non-anglais : Le modèle peut ne pas bien fonctionner lors du traitement d'images contenant du texte dans un alphabet non latin, comme le japonais ou le coréen.

  • Localisation spatiale : Les performances du modèle sont suboptimales dans les tâches nécessitant des associations de localisation spatiale précises, comme l'identification des positions des pièces sur un échiquier.

  • Détails de l'image : Le modèle peut avoir du mal à comprendre des graphiques ou du texte avec des variations de couleur et de style (par exemple, lignes pleines, lignes pointillées) dans une image.

  • Rotation de l'image : Le modèle peut mal interpréter du texte et des images inclinés ou retournés.

6.2 Gestion des images dans les sessions

Puisque l'API Chat Completions est sans état, vous devez gérer vous-même les messages (y compris les images) transmis au modèle. Si vous souhaitez utiliser la même image plusieurs fois, vous devez renvoyer les données de l'image à chaque demande d'API.


additional_payload = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "utilisateur",
      "content": [
        {
          "type": "text",
          "text": "D'après cette image, quelles suggestions avez-vous?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

new_response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=additional_payload)

print(new_response.json())

7. Calcul des coûts

Chaque image utilisant l'option détail: faible consomme un forfait de 85 jetons. Pour les images avec l'option détail: élevé, l'image est d'abord redimensionnée de manière proportionnelle pour s'adapter à la taille de 2048px x 2048px, puis le côté le plus court de l'image est ajusté pour être de 768px. L'image est ensuite divisée en plusieurs carrés de 512px, chaque carré consommant 170 jetons, et 85 jetons supplémentaires sont ajoutés au décompte final.

Par exemple, si une image a des dimensions de 1024px x 1024px et que l'option détail: élevé est choisie, le coût en jetons serait :

  • Tout d'abord, étant donné que 1024 est inférieur à 2048, aucun ajustement de taille initial n'est effectué.
  • Ensuite, avec le côté le plus court mesurant 1024, l'image est redimensionnée en 768 x 768.
  • 4 carrés de 512px sont nécessaires pour représenter l'image, donc le coût total en jetons sera de 170 * 4 + 85 = 765.

Pour une compréhension détaillée de la méthode de calcul des coûts, veuillez consulter la documentation relative au modèle GPT-4 Vision.

8. Questions fréquemment posées

Voici quelques questions fréquentes et leurs réponses que les utilisateurs peuvent rencontrer lors de l'utilisation du modèle GPT-4 Vision :

Q : Puis-je affiner les capacités d'image de gpt-4 ?

R : Actuellement, nous ne prenons pas en charge l'affinage des capacités d'image de gpt-4.

Q : Puis-je utiliser gpt-4 pour générer des images ?

R : Non, vous pouvez utiliser dall-e-3 pour générer des images et utiliser gpt-4-vision-preview pour comprendre les images.

Q : Quels types de téléversements de fichiers sont pris en charge ?

R : Nous prenons actuellement en charge les fichiers PNG (.png), JPEG (.jpeg et .jpg), WEBP (.webp) et les fichiers GIF non animés (.gif).