Aller au contenu principal

Formats d'images : URL et Base64

Envoyer des images à Grok

Grok analyse une image Les modèles Grok à partir de grok-4 intègrent des capacités de vision. Vous pouvez envoyer une ou plusieurs images dans vos requêtes API et le modèle les analysera pour répondre à vos questions. C’est ce qu’on appelle la compréhension d’images, ou vision multimodale.

Avant de plonger dans les cas d’usage, il est essentiel de maîtriser les deux formats d’envoi d’images supportés par l’API xAI.

2
Formats supportés
20 MiB
Taille max par image
JPG/PNG
Formats acceptés
Illimité
Nombre d'images

URL directe

La méthode la plus simple consiste à fournir l’URL publique d’une image. Le modèle la téléchargera et l’analysera automatiquement.

Avec l’API Responses (endpoint principal) :

{
  "model": "grok-4",
  "input": [
    {
      "type": "input_image",
      "image_url": "https://exemple.com/photo-produit.jpg"
    },
    {
      "type": "input_text",
      "text": "Décris cette image en détail."
    }
  ]
}

Avec l’API Chat Completions (legacy, compatible OpenAI) :

{
  "model": "grok-4",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://exemple.com/photo-produit.jpg"
          }
        },
        {
          "type": "text",
          "text": "Décris cette image en détail."
        }
      ]
    }
  ]
}

L’URL doit pointer vers un fichier image accessible publiquement. Si l’image est derrière une authentification ou un CDN protégé, utilisez plutôt le format Base64.

Base64 encodé (Data URI)

Le second format consiste à encoder l’image directement dans la requête sous forme de chaîne Base64 précédée d’un préfixe MIME. C’est la méthode idéale quand vous travaillez avec des images locales, des captures d’écran ou des fichiers générés dynamiquement.

{
  "type": "input_image",
  "image_url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
}

Le préfixe data:image/jpeg;base64, indique au modèle le type MIME de l’image. Adaptez-le selon le format :

  • data:image/jpeg;base64, pour les fichiers JPG/JPEG
  • data:image/png;base64, pour les fichiers PNG

Encoder une image en Python

import base64

with open("photo.jpg", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

image_url = f"data:image/jpeg;base64,{image_data}"

Encoder en JavaScript/Node.js

import { readFileSync } from 'fs';

const imageData = readFileSync('photo.jpg').toString('base64');
const imageUrl = `data:image/jpeg;base64,${imageData}`;

Différences clés entre URL et Base64

Critère URL Base64
Taille de la requête Légère (juste l'URL) Lourde (+33% vs fichier original)
Accessibilité Image publique requise Fonctionne avec tout fichier local
Latence Téléchargement par le serveur Données directement dans la requête
Cas d'usage typique Images web, CDN, stockage cloud Fichiers locaux, captures, uploads

Mixer texte et images

Le format d’entrée de l’API Responses accepte un tableau mixte d’objets input_image et input_text dans n’importe quel ordre. Vous pouvez alterner librement entre texte et images pour construire des requêtes complexes.

from xai_sdk import Client

client = Client(api_key="votre-clé")

response = client.responses.create(
    model="grok-4",
    input=[
        {"type": "input_text", "text": "Compare ces deux photos :"},
        {"type": "input_image", "image_url": "https://exemple.com/photo1.jpg"},
        {"type": "input_image", "image_url": "https://exemple.com/photo2.jpg"},
        {"type": "input_text", "text": "Quelles sont les différences principales ?"}
    ]
)

Points clés à retenir

  • Deux formats d’images sont supportés : URL directe et Base64 (Data URI)
  • Les formats acceptés sont JPG, JPEG et PNG uniquement
  • Chaque image ne doit pas dépasser 20 MiB
  • Le nombre d’images par requête est illimité
  • L’API Responses utilise input_image tandis que Chat Completions utilise image_url
  • Privilégiez l’URL pour les images publiques et le Base64 pour les fichiers locaux