Ce tutoriel crée une image depuis un script Python, l’enregistre sur disque et ajoute les contrôles nécessaires avant une intégration dans un produit. Les noms de modèles et options pouvant évoluer, vérifiez la page officielle Image generation avant de figer une configuration.
Installer le SDK
~~~bash python -m venv .venv source .venv/bin/activate pip install -U openai python-dotenv pillow ~~~
Créez ".env" :
~~~text OPENAI_API_KEY=votre_cle ~~~
Ajoutez ce fichier à ".gitignore".
Générer et enregistrer l’image
~~~python import base64 import os from pathlib import Path
from dotenv import load_dotenv from openai import OpenAI
load_dotenv() client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
prompt = """ Illustration éditoriale d'un atelier de développement logiciel. Composition : ordinateur au centre, trois personnes collaborent. Style : aplats géométriques, palette bleu nuit et corail. Contraintes : aucun logo, aucun texte, format horizontal. """.strip()
result = client.images.generate( model="gpt-image-1", prompt=prompt, size="1536x1024", )
image_bytes = base64.b64decode(result.data[0].b64_json) Path("output.png").write_bytes(image_bytes) print("Image enregistrée dans output.png") ~~~
Selon le modèle et la version du SDK, la réponse peut contenir des données encodées ou une URL temporaire. Lisez le type retourné avant d’écrire votre adaptateur.
Écrire un prompt reproductible
Séparez le sujet, la composition, le style, la palette et les contraintes. Évitez les adjectifs vagues accumulés. Pour une série cohérente, gardez une fiche de direction artistique versionnée et ne changez qu’une variable à la fois.
Valider le fichier
~~~python from PIL import Image
with Image.open("output.png") as image: image.verify()
with Image.open("output.png") as image: width, height = image.size assert width >= 1024 and height >= 1024 ~~~
La validation applicative doit aussi vérifier l’absence de texte indésirable, le respect de la charte et les droits liés aux entrées fournies par l’utilisateur.
Exposer la génération dans une API
Ne retournez pas une énorme chaîne base64 depuis toutes vos routes. En production, stockez le fichier dans un espace objet, conservez l’identifiant de génération, le prompt normalisé, le modèle et le statut, puis retournez une URL signée courte durée.
Ajoutez une file de tâches : la génération peut dépasser le délai normal d’une requête HTTP. Dédupliquez les relances avec une clé d’idempotence et plafonnez le nombre d’images par utilisateur.
Gestion des erreurs
Traitez séparément authentification, limitation de débit, contenu refusé et erreur fournisseur. Une relance exponentielle est pertinente pour une erreur temporaire, pas pour un prompt refusé. Ne journalisez ni clé API ni données sensibles du prompt.
FAQ
Peut-on demander du texte dans l’image ?
Oui, mais contrôlez systématiquement l’orthographe. Pour un visuel de marque, il reste souvent plus fiable de générer l’illustration puis d’ajouter le texte dans votre moteur graphique.
Comment maîtriser le coût ?
Fixez taille, qualité, nombre de variantes et budget par utilisateur. Mesurez le taux d’images réellement conservées : le coût utile est celui d’une image validée, pas celui d’un appel.