Accéder au contenu principal

GPT-Image-1 API : Un guide étape par étape avec des exemples

Apprenez à générer et à modifier des images avec l'API GPT-Image-1, y compris la configuration, l'utilisation des paramètres et des exemples pratiques tels que le masquage et la combinaison de plusieurs images.
Actualisé 1 mai 2025  · 12 min de lecture

Il y a quelques semaines, ChatGPT est devenu viral avec son nouveau modèle de génération d'images. Ce modèle est de loin le meilleur que j'ai vu. C'est sa capacité à éditer des images qui le distingue. Il est incroyablement précis et permet de donner facilement vie à l'imagination. D'autres modèles peuvent également le faire, mais pas avec le même degré de précision.

La génération d'images dans leur interface est facile, puisqu'il suffit de fournir une invite textuelle. Cependant, en tant que programmeur, j'avais hâte qu'elle soit intégrée à l'API afin de pouvoir interagir avec elle de manière programmatique. Ce jour est enfin arrivé, et j'écris ce blog pour vous apprendre à l'utiliser avec Python.

Si vous souhaitez uniquement apprendre à l'utiliser dans l'interface de chat, j'ai précédemment écrit ce Guide de génération d'images GPT-4o avec huit exemples pratiques.

Développer des applications d'IA

Apprenez à créer des applications d'IA à l'aide de l'API OpenAI.
Commencez à Upskiller gratuitement

Configuration de l'API GPT-Image-1

Le nouveau modèle d'image GPT est protégé, ce qui signifie que des vérifications supplémentaires sont nécessaires pour pouvoir l'utiliser. Dans cette section, nous décrivons comment configurer l'API. Si vous disposez déjà d'une clé API, vous pouvez sauter la première étape.

Étape 1 : Générer une clé API

La première étape consiste à générer une clé API. Nous pouvons en créer une en nous connectant à leur plateforme et en naviguant vers la page clés API. Ensuite, nous cliquons sur le bouton "Créer une nouvelle clé secrète".

Une fois la clé générée, créez un fichier nommé .env et copiez-le avec le format suivant :

OPENAI_API_KEY=<paste_your_api_key_here>

Étape 2 : Vérification de notre organisation

Une grande différence avec les autres modèles OpenAI est que l'utilisation de l'API de l'image GPT exige que nous vérifiions notre organisation. La raison en est que GPT-Image-1 peut générer des images réalistes et détaillées, ce qui soulève des inquiétudes quant à une éventuelle utilisation abusive, comme la création de deepfakes ou de contenus inappropriés. En vérifiant les organisations, OpenAI peut mieux contrôler l'utilisation et appliquer ses politiques de sécurité.

Vous pouvez vérifier votre organisation même si vous n'avez pas d'entreprise. Notez toutefois que cette procédure nécessite de fournir votre carte d'identité gouvernementale et de procéder à une vérification faciale.

Pour effectuer la vérification, accédez à l'onglet onglet général de la plateforme OpenAI API et cliquez sur le bouton situé sous la section "Vérifications".

Le processus est effectué par une tierce partie et consiste à :

  1. Téléchargement d'une image d'un document d'identification.
  2. Utilisez l'appareil photo de votre appareil mobile pour vérifier que votre identité correspond au document fourni.

La procédure ne prend que quelques minutes, puis environ 15 minutes pour le traitement.

Configuration de Python

Pour ce tutoriel, nous allons installer les paquets Python suivants :

  • openai: Le paquetage officiel d'OpenAI qui nous permet d'interagir avec leur API.
  • dotenv: Un paquetage Python qui facilite le chargement en toute sécurité de la clé API à partir du fichier .env que nous avons créé ci-dessus.

Nous pouvons les installer à l'aide de la commande :

pip install openai dotenv

Génération de notre première image avec GPT-Image-1

Voyons comment nous pouvons générer une image avec gpt-image-1. Commencez par créer un nouveau fichier Python, par exemple generate_image.py, dans le même dossier que le fichier .env.

Ensuite, importez les paquets nécessaires :

# Import the packages
from openai import OpenAI
from dotenv import load_dotenv
import os
import base64
import time

Notez que os et base64 sont des paquets Python intégrés et n'ont pas besoin d'être installés.

Ensuite, nous chargeons la clé API et initialisons le client OpenAI :

# Load the API key
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
# Initialize the OpenAI client
client = OpenAI(api_key=api_key)

Ensuite, nous demandons à l'utilisateur de saisir un texte à l'aide de la fonction intégrée input() et nous envoyons une demande de génération d'image à l'API :

# Ask the user to input a prompt in the terminal
print("What do you want to generate?")
prompt = input("> ")
print("Generating image...")
# Send the prompt to the API
img = client.images.generate(
  model="gpt-image-1",
  prompt=prompt,
  background="auto",
  n=1,
  quality="high",
  size="1024x1024",
  output_format="png",
  moderation="auto",
)

Enfin, nous enregistrons l'image générée dans un fichier :

# Save the image into a file
image_bytes = base64.b64decode(img.data[0].b64_json)
with open(f"output_{int(time.time())}.png", "wb") as f:
  f.write(image_bytes)

Le texte complet est disponible ici. Pour exécuter ce script, utilisez la commande :

python generate_image.py

Voici un exemple avec le résultat :

Exemple d'exécution de gpt-image-1 via l'API

GPT-Image 1-paramètres

Dans cette section, nous décrivons les paramètres les plus importants du modèle gpt-image-1:

  • prompt: Instruction textuelle décrivant l'image que nous voulons que le modèle génère.
  • background: Le type d'arrière-plan de l'image. Il doit s'agir de l'une des adresses suivantes : "transparent", "opaque", ou "auto". La valeur par défaut est "auto", c'est-à-dire que le modèle décide du meilleur type d'arrière-plan en fonction du contenu. Notez que les images JPEG ne supportent pas les arrière-plans transparents.
  • n: Le nombre d'images à générer. Doit être un nombre de 1 à 10.
  • quality: La qualité de l'image générée. Il doit être l'un des suivants : "high", "medium", ou "low", la valeur par défaut étant "high".
  • size: La taille de l'image en pixels. Il doit s'agir de l'un des formats suivants : "1024x1024" (carré), "1536x1024" (paysage), "1024x1536" (portrait).
  • output_format: Le format de l'image. Il doit s'agir de l'une des adresses suivantes : "png", "jpeg", ou "webp". La valeur par défaut est "png".
  • moderation: Le niveau de modération du contenu. Doit être soit "low" pour un filtre moins restrictif, soit "auto", qui est la valeur par défaut.

Nous avons couvert les paramètres les plus importants disponibles pour le modèle gpt-image-1. Pour plus de détails et une liste complète de paramètres, consultez la documentation officielle de l'API.

Effets du paramètre de qualité

Voici une comparaison côte à côte d'images générées à partir de la même invite avec des qualités différentes :

Effet de la qualité sur les images photoréalistes à l'aide de gpt-image-1

Nous constatons que le premier chat (avec la qualité la plus faible) présente quelques artefacts autour des yeux, et que l'image devient nettement plus réaliste au fur et à mesure que la qualité augmente.

Voici un autre exemple avec une sortie de type dessin animé :

Effet de la qualité sur les dessins dans la génération gpt-image-1

Dans ce cas, on remarque également que plus la qualité est élevée, plus l'image est soignée. À mon avis, cela est moins pertinent pour les contenus qui ne sont pas censés être réalistes.

N'oubliez pas que plus la qualité est élevée, plus le coût et le temps de calcul le sont également, et qu'il est donc judicieux de trouver un bon compromis, en fonction du cas d'utilisation. Je vous recommande d'essayer les paramètres de bas en haut pour déterminer la valeur minimale qui donne des résultats acceptables pour chaque cas d'utilisation.

Paramètres de base

Dans mes expériences, j'ai constaté que le modèle ignorait le plus souvent ce paramètre. Voici des exemples côte à côte dans lesquels j'ai modifié les paramètres de background et les instructions de transparence dans l'invite :

Exemples de transparence de l'arrière-plan dans gpt-image-1

Dans le premier exemple, le paramètre de transparence a été ignoré. Dans la seconde, j'ai ajouté les instructions de transparence dans l'invite, et cela a fonctionné un peu mieux. Dans la dernière, j'ai demandé un fond opaque mais j'ai précisé que je voulais un autocollant dans l'invite et j'ai obtenu un fond transparent.

Je recommande toujours d'utiliser le paramètre en fonction de ce que vous souhaitez, mais veillez à spécifier également le résultat souhaité dans l'invite pour le renforcer.

Édition d'images avec GPT-Image-1

Comme je l'ai mentionné dans l'introduction, la partie la plus intéressante de GPT-Image-1 est sa capacité à éditer des images. Commençons par apprendre à lui demander de modifier une image, puis explorons quelques cas d'utilisation.

Pour éditer des images, la plupart du code peut être réutilisé. La seule chose qui change est qu'au lieu d'utiliser la fonction client.images.generate(), nous utilisons la fonction client.images.edit().

En voici un exemple :

img = client.images.edit(
  model="gpt-image-1",
  image=[
    open("my-image.jpg", "rb"),
  ],
  prompt=prompt,
  n=1,
  quality="high",
  size="1024x1536",
)

Le nouveau paramètre est image. Il s'agit d'une liste d'images d'entrée à utiliser dans le montage. Dans ce cas, nous ne fournissons qu'une image nommée my-image.jpg située dans le même dossier que le script.

Voici un exemple d'utilisation de GPT Image 1 pour modifier une de mes photos :

Exemple d'édition d'une image avec gpt-image-1

Notez qu'étant donné que l'image originale a un rapport portrait, j'ai utilisé la taille portrait 1024x1536. Cependant, il ne s'agit pas du même ratio que l'image originale. Même en mode édition, le modèle ne peut produire que des images dans les trois tailles spécifiées ci-dessus.

Le script complet de l'édition est disponible ici.

Utilisation de masques

Le mode édition fournit un paramètre mask que nous pouvons utiliser pour spécifier les zones où l'image doit être éditée. Le masque doit être une image PNG d'au plus 4 Mo et avoir la même taille que l'image. Les zones avec une transparence de 100 % correspondent aux zones que GPT Image 1 est autorisé à modifier.

Nous fournissons le masque de la même manière que l'image, sauf qu'il ne s'agit pas d'une liste dans ce cas :

img = client.images.edit(
  model="gpt-image-1",
  image=[
    open(sys.argv[1], "rb"),
  ],
  # We provide the mask like this
  mask=open("mask.png", "rb"),
  prompt=prompt,
  n=1,
  quality="high",
  size="1536x1024",
)

Cependant, lorsque je l'ai expérimenté, cela n'a pas très bien fonctionné, et j'ai vu des rapports en ligne de personnes ayant des problèmes similaires.

En voici un exemple :

Exemple d'utilisation du masquage avec GPT Image 1

J'ai également essayé de l'utiliser pour ajouter des éléments à des endroits spécifiques, mais cela n'a pas fonctionné de manière cohérente. Tout comme le paramètre background pour la génération d'images, j'ai découvert que la description de ce que je veux dans l'invite est la plus efficace.

Utilisation de plusieurs images

Le modèle peut traiter et combiner plusieurs images à la fois. Dans l'exemple ci-dessous, nous l'utilisons pour créer une affiche marketing combinant les images de ces trois boissons individuelles :

Combinaison de plusieurs photos dans gpt-image-1

Nous fournissons les trois images sous forme de liste dans le paramètre image, comme suit :

prompt = """
Create a vibrant and eye-catching marketing poster to 
promote the cold drinks offerings at our coffee shop.
"""

img = client.images.edit(
  model="gpt-image-1",
  # We can provide multiple images at once
  image=[
    open("latte.png", "rb"),
    open("americano.png", "rb"),
    open("icetea.png", "rb"),
  ],
  prompt=prompt,
  size="1536x1024",
)

Voici le résultat :

Résultat de la combinaison de plusieurs photos avec gpt-image-1

GPT-Image-1 Tarification

La production d'images est facturée sur la base de :

  1. Le nombre de tokens dans l'invite de texte.
  2. Le nombre de tokens dans les images d'entrée.
  3. Le nombre de jetons dans l'image de sortie.

Informations sur le prix des jetons avec gpt-image-1

Il est parfois difficile de se faire une idée de ce que ces coûts représentent, car nous ne savons pas combien de jetons une image contient. 

Les dimensions des images de sortie étant connues, nous savons combien de jetons sont nécessaires pour chacune d'entre elles, ce qui nous permet de donner des valeurs précises pour le prix des jetons de l'image de sortie (qui est l'élément le plus coûteux) :

Produisez des informations sur la tarification avec gpt-image-1

Ce prix dépend de la qualité de l'image et de la taille. Pour plus de détails, consultez la page Page de tarification de l'image GPT 1.

Lorsque nous générons une image, l'API renvoie le nombre de jetons utilisés, ce qui nous permet de le combiner avec les informations ci-dessus pour connaître le coût exact de l'image. 

Nous pouvons afficher le nombre de jetons utilisés en imprimant le champ usage du résultat :

img = client.images.generate(
  model="gpt-image-1",
  prompt=prompt,
  background="transparent",
  n=1,
  quality="medium",
  size="1024x1024",
  moderation="auto",
  output_format="png",
)
# Add this to see the usage
print("Prompt tokens:", img.usage.input_tokens_details.text_tokens)
print("Input images tokens:", img.usage.input_tokens_details.image_tokens)
print("Output image tokens:", img.usage.output_tokens)

Sortie :

Prompt tokens: 8
Input images tokens: 0
Output image tokens: 272

Conclusion

Malgré quelques lacunes de l'API, comme le masquage et la transparence qui ne sont pas suffisamment fiables, le modèle peut exécuter avec une grande précision les instructions fournies dans l'invite.

Je pense que ce modèle ouvre de nombreuses possibilités de construction autour de lui. Dans ce tutoriel, nous avons appris les bases de son utilisation. Voici quelques idées que vous pourriez explorer pour compléter ce que vous avez appris ici :

  • Rationaliser la conversion des photos de nourriture prises par téléphone en de superbes photos de nourriture destinées à être utilisées par les restaurants dans leurs menus.
  • À partir de la photo d'un ami ou d'un selfie, créez un pack d'autocollants exprimant plusieurs émotions à utiliser dans les applications de chat.
  • Créez un outil qui, à partir des descriptions de scènes individuelles, crée une bande dessinée à partir de ces scènes.

François Aubry's photo
Author
François Aubry
LinkedIn
Ingénieur full-stack et fondateur de CheapGPT. L'enseignement a toujours été ma passion. Dès mes premiers jours d'études, j'ai cherché avec enthousiasme des occasions de donner des cours particuliers et d'aider d'autres étudiants. Cette passion m'a amenée à poursuivre un doctorat, où j'ai également été assistante d'enseignement pour soutenir mes efforts académiques. Au cours de ces années, j'ai trouvé un immense épanouissement dans le cadre d'une classe traditionnelle, en favorisant les liens et en facilitant l'apprentissage. Cependant, avec l'avènement des plateformes d'apprentissage en ligne, j'ai reconnu le potentiel de transformation de l'éducation numérique. En fait, j'ai participé activement au développement d'une telle plateforme dans notre université. Je suis profondément engagée dans l'intégration des principes d'enseignement traditionnels avec des méthodologies numériques innovantes. Ma passion est de créer des cours qui sont non seulement attrayants et instructifs, mais aussi accessibles aux apprenants à l'ère du numérique.
Sujets

Apprenez l'IA avec ces cours !

Cursus

Developing AI Applications

21hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 50 meilleures questions et réponses d'entretien sur AWS pour 2025

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles.
Zoumana Keita 's photo

Zoumana Keita

15 min

blog

Architecture de l'entrepôt de données : Tendances, outils et techniques

Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Kurtis Pykes 's photo

Kurtis Pykes

15 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

Voir plusVoir plus