Génération par lots et paramètre n
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. Par défaut, sa valeur est 1.
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
Chaque image générée compte individuellement pour la facturation et les rate limits :
| Paramètre | n=1 | n=5 | n=10 |
|---|---|---|---|
| Coût (standard) | 0,02 $ | 0,10 $ | 0,20 $ |
| Coût (pro) | 0,07 $ | 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
Lorsque vous générez plusieurs variations, vous avez besoin d’une stratégie pour choisir la meilleure :
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-pro",
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
Pour les pipelines automatisés, vous pouvez utiliser un modèle de langage pour évaluer les images :
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
Puisque les URL sont temporaires, téléchargez systématiquement les images après génération :
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}/")
Points clés à retenir
- Le paramètre
npermet 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