Génération d'images
Deux familles de modèles, trois tâches.
Modèles couverts
| ID du modèle | Famille | Utilisation | Coût (1024×1536, mesuré le 2026-10-02) |
|---|---|---|---|
gpt-image-2.5-sunburst | OpenAI (Images 2.5, 2026-09-08) | Par défaut. Tout ce qui peut être livré. #1 sur tous les principaux classements (génération, édition, rendu de texte, portraits) | max ≈ 0,165 $, ~90 s · high ≈ 0,041 $, ~35 s |
gpt-image-2.5-flare | OpenAI (Images 2.5) | Brouillons rapides — exploration de directions, test d'un prompt. Mêmes prompts que Sunburst, ~2× plus rapide | medium ≈ 0,01 $, ~15 s |
gemini-3-pro-image | Google (Nano Banana Pro) | Peau/cheveux naturels en gros plan lorsque les votes et les évaluateurs divergent ; jusqu'à 14 références | 0,134 $ (1K/2K) · 0,24 $ (4K) |
gemini-3.1-flash-image | Google (Nano Banana 2) | Rapports d'aspect extrêmes (1:4…8:1), recherche par image avec ancrage | 0,067 $ (1K) |
gemini-3.1-flash-lite-image | Google (Nano Banana 2 Lite) | Exploration Gemini la moins chère ; 1K uniquement, renvoie du JPEG | 0,034 $ |
gpt-image-2 fonctionne toujours (non déprécié) mais est un cran en dessous des deux modèles 2.5. Les IDs *-preview de Gemini et tous les modèles Imagen sont arrêtés — les scripts les refusent.
Les trois tâches de cette compétence
- Choisir le modèle et la qualité pour l'asset. Voir reference/model-selection.md.
- Écrire le prompt en suivant les règles du modèle. Les deux fournisseurs veulent des choses opposées :
- OpenAI GPT Image 2.5 veut des sections étiquetées (scène / sujet / détails / contraintes), du texte exact entre guillemets, et accepte les exclusions en ligne (« pas de texte supplémentaire, pas de filigrane »). Lire reference/openai-gpt-image.md.
- Gemini veut des paragraphes narratifs, la formulation négative se retourne contre vous (réécrire « pas de personnes » en « rue vide »), le rapport d'aspect va dans
imageConfig. Lire reference/gemini-image.md.
- Exécuter l'API via les scripts fournis. Voir scripts/README.md.
Qualité sur 2.5 — le piège
L'échelle de qualité 2.5 a été redécoupée. À taille égale, high sur 2.5 achète environ les tokens de sortie de medium sur gpt-image-2 ; max sur 2.5 achète ce que high faisait sur gpt-image-2 (mesuré : Sunburst 1024×1536 high = 1 372 tokens de sortie, max = 5 488). Copier « quality=high » par habitude livre silencieusement une image de détail moyen.
Promouvoir un brouillon avec une édition, pas un nouveau tirage. Chaque nouvelle génération compose une nouvelle image, donc relancer le prompt d'un brouillon approuvé à max donne une image différente. À la place, passez le brouillon choisi comme référence à une édition Sunburst max qui modifie uniquement la qualité de rendu et préserve tout le reste. Vérifié le 2026-10-02 : un poster Flare medium promu de cette façon a conservé sa composition, ses personnages, leurs poses, leurs couleurs et le texte en hébreu, tout en gagnant en texture et en détails (0,18 $, 85 s).
| Étape | Modèle + qualité | Pourquoi |
|---|---|---|
| Explorer des directions, tester un prompt | Flare medium (--draft) | ~1¢ et ~15 s, donc 6 directions coûtent moins qu'un seul résultat final |
| Promouvoir le brouillon choisi | Édition Sunburst max avec --ref <draft> et le prompt de promotion dans reference/openai-gpt-image.md | Conserve l'apparence que l'utilisateur a choisie, ajoute tous les détails |
| Un résultat final directement à partir d'un prompt verrouillé | Sunburst max (valeur par défaut du script) | Détails complets ; ~90 s, ~0,17 $ |
| Sunburst quand le temps compte plus que les détails fins | Sunburst high | Un quart des tokens, ~35 s |
N'utilisez jamais auto — il atterrit sur des budgets différents pour des appels identiques.
Sélection de modèle par défaut — la règle des 30 secondes
Explorer des directions / « quelques options rapides » / tester si un prompt fonctionne ?
OUI → Flare medium (--draft). Promouvoir le choix de l'utilisateur avec une édition Sunburst max (--ref <draft>).
NON ↓
Visage humain photoréaliste en gros plan où la texture de la peau compte ?
OUI → Sunburst max en premier (il mène les votes pour les portraits) ; si la peau semble trop nette en zoomant,
comparer avec gemini-3-pro-image 4K et laisser l'humain choisir.
NON ↓
Bannière ultra-large/haute au-delà de 3:1 (1:4, 4:1, 1:8, 8:1) ?
OUI → gemini-3.1-flash-image (GPT Image est limité à 3:1).
NON ↓
Tout le reste → Sunburst à quality=max.
└── PNG transparent ? Natif : --background transparent (png/webp). Pas besoin de rembg.
Arbre de décision complet par type d'asset : reference/model-selection.md.
Flux de travail par requête
- Confirmer le périmètre. Type d'asset, contexte de marque, direction couleur/style, rapport d'aspect + taille cible, emplacement de sauvegarde. Si la requête le dit déjà, continuer.
- Choisir le modèle et la qualité. Utiliser la règle ci-dessus ; expliquer le choix en une phrase.
- Lire la référence spécifique au modèle —
reference/openai-gpt-image.mdoureference/gemini-image.md. Ne pas écrire de mémoire : les deux fournisseurs veulent des structures de prompt opposées, et les consignes 2.5 ont changé plusieurs habitudes de gpt-image-2. - Arrière-plan transparent ? Sur GPT Image 2.5, c'est natif. Lire reference/transparent-backgrounds.md uniquement pour les sorties Gemini ou pour découper une image existante.
- Ouvrir le modèle correspondant dans
templates/et remplir les espaces réservés. - Texte en hébreu ou RTL dans l'image ? Lire d'abord reference/hebrew-rtl.md.
- Montrer le prompt à l'utilisateur avant d'appeler l'API sauf s'il dit « fais-le directement ». Un examen du prompt évite la plupart des régénérations coûteuses.
- Exécuter le script. Sauvegarder dans
./generated-images/<nom-descriptif>.pngdans le répertoire de travail actuel sauf indication contraire. Le script OpenAI imprime la latence, les tokens de sortie et le coût par appel — tenir le total cumulé. - Lire l'image sauvegardée avec l'outil Read — Claude est multimodal et verra réellement les pixels. Critiquer par rapport au brief : composition, texte orthographié exactement comme cité et apparaissant une fois, couleurs, défauts (lettres déformées, doigts supplémentaires, géométrie cassée, grain dans les zones lisses). Repérer les problèmes avant que l'utilisateur ait à le faire.
- Montrer à l'utilisateur.
open <path>, résumer ce qui est vu (bon et mauvais), et proposer de livrer / itérer avec un changement spécifique / réécrire.
Modèles par type d'asset
| Asset | Modèle |
|---|---|
| Logo de marque / marqueur / wordmark | templates/logo.md |
| Jeu d'icônes (style cohérent entre les icônes) | templates/icon-set.md |
| Écran UI d'application mobile | templates/ui-mobile.md |
| Tableau de bord web / UI SaaS | templates/ui-dashboard.md |
| Image hero marketing / bannière | templates/hero-image.md |
| Photographie de produit / hero shot | templates/product-shot.md |
Pour des exemples détaillés, voir examples.md.
Personnages récurrents et planches de story
Pour les bandes dessinées, storyboards et épisodes animés où les mêmes personnes apparaissent dans plusieurs images :
-
Personnages à partir de photos. Ne jamais passer des photos entières comme références : l'endpoint d'édition restyle la photo (copie la pose, les vêtements et l'arrière-plan, ajoute du texte de légende) au lieu de dessiner la personne. Le pipeline fonctionnel :
- Recadrer d'abord les visages :
python3 <ce-dossier-de-competence>/scripts/crop_faces.py photos/ visages/ --sheet visages/_sheet.jpg. - Créer un visage anime à partir des recadrages.
- Éditer ce visage dans une carte de costume demi-corps, en précisant le type de corps.
- Obtenir l'approbation humaine, puis promouvoir.
Prompts et boucle de révision : reference/characters-from-photos.md.
- Recadrer d'abord les visages :
-
Scènes avec 2+ personnages.
- Esquisser avec Sunburst
high, pas Flare : Flare a dessiné seulement Image 1, en extérieur, avec des sous-titres. - Lier chaque nom à sa carte dès la première mention : « Dana (la femme de l'Image 1) ».
- Interdire les sous-titres dans toutes les langues.
- Les écrans de téléphone et tablette sont rendus de dos : générer le contenu de l'écran comme sa propre image et le composer.
Recette : reference/multi-character-scenes.md.
- Esquisser avec Sunburst
-
Facturation par lot.
credit_balance_exhaustedsignifie que le compte OpenAI n'a plus de crédit, pas une requête invalide. Arrêter, lister les prises qui ont été finalisées, et après le rechargement, relancer uniquement les manquantes.
Clés API et dépendances
Les clés API proviennent des variables d'environnement, définies à partir de votre propre stockage secret dans le shell qui exécute le script (chaque nouveau shell en a besoin à nouveau) :
OPENAI_IMAGE_API_KEYpourscripts/openai-image.shGEMINI_IMAGE_API_KEY(ouGEMINI_API_KEY) pourscripts/gemini-image.sh; la même clé Google AI Studio fonctionne aussi pour la génération de clips vidéo
Ces clés sont limitées à la génération d'images. Ne pas les réutiliser pour le chat ou les embeddings, et ne jamais les imprimer — les charger dans une variable, ne pas faire d'echo.
Outils locaux (uniquement pour découper les sorties Gemini ou des images existantes) : rembg (pip install "rembg[cli]" onnxruntime), éventuellement ImageMagick.
Convention de sortie
- Emplacement de sauvegarde par défaut :
./generated-images/<nom-descriptif>.pngdans le répertoire de travail actuel. - Nom de fichier : descriptif en kebab-case (
logo-agentleh-monochrome-v1.png) ; les brouillons reçoivent-draft-N(logo-agentleh-draft-3.png). - Versionnage : ajouter
-v1,-v2, … lors des itérations. Ne jamais écraser une génération précédente sans demander. - Sorties transparentes : ajouter
-transparentaprès la version. open <path>sur macOS pour montrer à l'utilisateur juste après la génération.
Modèles d'itération — boucle autonome « itérer jusqu'à la perfection »
Le travail de l'agent est d'amener l'image à un état « assez bon pour être livré » avant de demander à l'utilisateur :
1. Générer (appel de script)
2. Lire le fichier sauvegardé avec l'outil Read — Claude VOIT les pixels
3. Auto-critique par rapport au brief :
- La composition est-elle réussie ? (placement, cadrage, équilibre, hiérarchie, espace négatif)
- Le texte est-il orthographié exactement comme cité, chaque chaîne apparaissant une fois, lisible ?
- Les couleurs sont-elles correctes ? (correspondance hex, respect de la palette)
- Y a-t-il des défauts ? (lettres déformées, doigts supplémentaires, géométrie cassée, grain dans les ciels/fonds)
- Le brief est-il réellement satisfait ?
4. Décider :
- LIVRER → répond au brief ; montrer à l'utilisateur
- ÉDITER → un correctif localisé ; éditer avec --ref <précédent> et un prompt qui dit
« changer seulement X » et RÉÉNONCE chaque correctif antérieur et détail préservé
- RÉÉCRIRE → problème fondamental de prompt ; réécrire depuis le début, ne pas ajuster
5. S'arrêter quand : 5 itérations utilisées, ou 3 $ dépensés pour cet asset (sommer les lignes de coût du script),
ou que c'est livrable.
L'utilisateur est le juge final — mais Claude est le premier juge. Ne pas montrer un résultat imparfait en demandant « est-ce bon ? » Le montrer après avoir vérifié qu'il répond au brief, ou avec votre critique jointe (« le crénage du wordmark est décalé ; correction en cours »).
Mécanismes par modèle
- Éditions GPT Image 2.5 passent par
/v1/images/editsviascripts/openai-image.sh --ref <image>(jusqu'à 16 références). Sans masque, l'ensemble du canevas est régénéré à chaque tour, donc la dérive s'accumule — réénoncer chaque changement antérieur et chaque détail préservé à chaque tour, pas seulement la nouvelle demande. Si une région doit rester identique pixel par pixel, composer l'édition approuvée dans l'original au lieu d'espérer que le prompt la maintienne. - Édition multi-tour Gemini :
scripts/gemini-image.sh --ref <sortie-précédente> --prompt "changer X, garder Y", en terminant toujours par « Garder tout le reste de l'image exactement identique — composition, éclairage, couleurs, tous les autres éléments. » - Discipline de dérive. Après 3 itérations infructueuses sur la même image, changer de stratégie : réécrire le prompt de base, ou changer de modèle.
Tarification
GPT Image 2, 2.5 Flare et 2.5 Sunburst partagent les mêmes tarifs de tokens (30 $/1M de sortie image, 8 $/1M d'entrée image, 5 $/1M d'entrée texte ; l'API Batch les divise par deux), mais les tokens par image diffèrent selon la qualité, la taille et le modèle — donc lire le coût affiché par le script plutôt que de le supposer. Gemini est facturé par image. Tableau complet et scénarios détaillés : reference/pricing.md.
Hébreu / RTL
Sunburst et Flare ont tous deux rendu correctement un titre en hébreu lors d'un test du 2026-10-02 (bonnes lettres, bon ordre, bonne direction, accompagné d'anglais et d'un badge). Essayer d'abord le rendu direct ; recourir au flux de composition pour les longues lignes d'hébreu ou une police de caractères sous licence requise. L'hébreu n'est pas sur la liste des langues les plus performantes de Google pour les modèles d'image Gemini — préférer GPT Image pour le texte en hébreu. Voir reference/hebrew-rtl.md.
Quand NE PAS utiliser cette compétence
- L'utilisateur veut des fichiers vectoriels modifiables (SVG avec chemins). Ces modèles produisent des images matricielles ; utiliser la compétence
brand-assets, ou Recraft V4.1 Vector (recraftv4_1_vector, SVG natif, non intégré à ces scripts). - L'utilisateur veut des dimensions exactes en pixels en dehors des tailles prises en charge (ex. 1200×630). Générer au rapport d'aspect pris en charge le plus proche, puis recadrer/redimensionner.
- L'utilisateur veut une photo réelle d'une personne réelle spécifique. Les deux fournisseurs refusent ou produisent des ressemblances inexactes, et il y a des problèmes de politique.
- L'utilisateur veut de l'« art IA » général sans brief de design — l'orienter vers ChatGPT ou l'application Gemini ; cette compétence est optimisée pour le travail de design.