Aller au contenu principal

Génération par lots et paramètre n

Mis à jour le 29 juillet 2026

Générer plusieurs images en une seule requête

Le paramètre n de l’API de génération vous permet de produire jusqu’à 10 images à partir d’un seul prompt. Chaque image est une variation unique, ce qui vous donne un éventail de choix pour sélectionner le meilleur résultat ou constituer une galerie de visuels.

Le paramètre n en détail

Le paramètre n accepte un entier entre 1 et 10, et vaut 1 par défaut. Sa vraie utilité tient à une propriété de la génération d’images qu’on oublie facilement : le résultat est non déterministe. Le même prompt produit des images différentes à chaque appel, et aucune n’est plus « juste » qu’une autre. Générer quatre variations d’un coup n’est donc pas du gaspillage — c’est reconnaître qu’on ne sait pas d’avance laquelle conviendra.

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("XAI_API_KEY"),
    base_url="https://api.x.ai/v1"
)

# Générer 5 variations
response = client.images.generate(
    model="grok-imagine-image",
    prompt="Un jardin japonais zen avec un pont rouge, style ukiyo-e",
    n=5,
    aspect_ratio="16:9",
    resolution="1k"
)

for i, image in enumerate(response.data):
    print(f"Variation {i + 1} : {image.url}")

Impact sur les coûts et les rate limits

Le point à comprendre avant de bâtir un pipeline dessus : n=10 n’est pas une remise. Vous payez dix images et vous consommez dix unités de rate limit, exactement comme avec dix appels séparés. Le seul gain est réseau — un aller-retour au lieu de dix — ce qui reste appréciable en latence mais ne change rien au budget.

Paramètre n=1 n=5 n=10
Coût (standard) 0,02 $ 0,10 $ 0,20 $
Coût (pro) 0,05 $ 0,35 $ 0,70 $
Images générées 1 5 10

Une requête avec n=10 consomme le même budget que 10 requêtes individuelles avec n=1, mais elle est plus rapide car elle ne nécessite qu’un seul appel réseau.

Stratégies de sélection

Générer dix variations sans méthode de tri déplace simplement le problème : vous aviez une image incertaine, vous avez maintenant dix images à départager. La question à trancher d’abord est celle du critère — esthétique, et l’œil humain reste imbattable ; ou vérifiable (le produit est-il visible, le texte lisible, le format respecté), et là l’automatisation devient possible.

Sélection manuelle

Pour les cas critiques (publicité, couverture de livre), téléchargez toutes les variations et comparez-les visuellement :

import urllib.request

response = client.images.generate(
    model="grok-imagine-image-quality",
    prompt="Couverture de livre de science-fiction, vaisseau spatial organique",
    n=8,
    aspect_ratio="3:4",
    resolution="2k"
)

for i, image in enumerate(response.data):
    urllib.request.urlretrieve(image.url, f"variation_{i + 1}.png")
    print(f"Variation {i + 1} sauvegardée")

Sélection automatisée

Faire juger les images par un modèle de vision fonctionne à une condition : que le critère soit factuel. « Cette image contient-elle un produit centré sur fond uni ? » obtient une réponse fiable ; « laquelle est la plus belle ? » obtient une réponse arbitraire présentée avec assurance. Formulez des critères vérifiables, et gardez le jugement esthétique pour vous.

def generate_and_select(prompt, n=5):
    """Génère n variations et retourne toutes les URL."""
    response = client.images.generate(
        model="grok-imagine-image",
        prompt=prompt,
        n=n
    )
    return [image.url for image in response.data]

Batch de prompts multiples

Pour générer des images à partir de plusieurs prompts différents, combinez les appels :

prompts = [
    "Illustration d'un café parisien, style impressionniste",
    "Vue aérienne de rizières en terrasses, style photographique",
    "Intérieur d'une bibliothèque ancienne, éclairage tamisé"
]

all_results = {}
for prompt in prompts:
    response = client.images.generate(
        model="grok-imagine-image",
        prompt=prompt,
        n=3
    )
    all_results[prompt] = [img.url for img in response.data]

# 3 prompts x 3 variations = 9 images, coût total : 0,18 $

Téléchargement en batch

C’est le réflexe à prendre dès la première ligne de code, pas au moment de la mise en production : les URL expirent. Un batch de dix images généré le matin et téléchargé le soir est un batch perdu — et il faudra le repayer.

import urllib.request
import os

def download_batch(response, output_dir="generated"):
    """Télécharge toutes les images d'une réponse."""
    os.makedirs(output_dir, exist_ok=True)

    for i, image in enumerate(response.data):
        filepath = os.path.join(output_dir, f"image_{i + 1}.png")
        urllib.request.urlretrieve(image.url, filepath)

    print(f"{len(response.data)} images sauvegardées dans {output_dir}/")

Tarifs relevés le 5 août 2026 — les prix évoluent régulièrement : avant tout calcul de budget, vérifiez la grille en vigueur sur la page officielle des modèles et tarifs xAI.

Points clés à retenir

  • Le paramètre n permet de générer de 1 à 10 variations par requête
  • Chaque image compte individuellement pour la facturation
  • Générer en batch (une requête avec n>1) est plus rapide que n requêtes individuelles
  • Téléchargez immédiatement les résultats car les URL sont temporaires
  • Utilisez n=3 à 5 pour explorer, n=1 pour la production ciblée