Passer au contenu principal
DALL-E 3 est un modèle de génération d’images développé par OpenAI, capable de générer des images de haute qualité à partir de descriptions textuelles. Ce document présente principalement le processus d’utilisation de l’API OpenAI Images Generations, qui nous permet d’utiliser facilement la fonction de génération d’images officielle d’OpenAI DALL-E.

Processus de demande

Pour utiliser l’API OpenAI Images Generations, vous pouvez d’abord vous rendre sur la page OpenAI Images Generations API et cliquer sur le bouton « Acquire » pour obtenir les informations d’identification nécessaires à la demande : Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter. Après vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle. Lors de la première demande, un quota gratuit sera offert, vous permettant d’utiliser cette API gratuitement.

Utilisation de base

Ensuite, vous pouvez remplir les informations correspondantes sur l’interface, comme indiqué sur l’image :

Lors de la première utilisation de cette interface, nous devons remplir au moins trois informations : l’une est authorization, que vous pouvez sélectionner directement dans la liste déroulante. L’autre paramètre est model, model est la catégorie de modèle que nous choisissons d’utiliser sur le site officiel d’OpenAI DALL-E, ici nous avons principalement 1 type de modèle, les détails peuvent être consultés dans les modèles que nous fournissons. Le dernier paramètre est prompt, prompt est le mot clé que nous entrons pour générer l’image. Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, que vous pouvez copier et exécuter directement, ou vous pouvez simplement cliquer sur le bouton « Try » pour effectuer un test.

Exemple de code d’appel Python :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "created": 1721626477,
  "data": [
    {
      "revised_prompt": "A delightful image showcasing a young sea otter, who is born brown, with wide charming eyes. It is delightfully lying on its back, paddling in the calm sea waters. Its dense, velvety fur appears wet and shimmering, capturing the essence of its habitat. The small creature curiously plays with a sea shell with its small paws, looking absolutely innocent and charming in its natural environment.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/5d98aa7c-80c6-4523-b571-fc606ad455b9/generated_00.png?se=2024-07-23T05%3A34%3A48Z&sig=GAz%2Bi3%2BkHOQwAMhxcv22tBM%2FaexrxPgT9V0DbNrL4ik%3D&ske=2024-07-23T08%3A41%3A10Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T08%3A41%3A10Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
Le résultat retourné contient plusieurs champs, décrits comme suit :
  • created, l’ID de la génération de cette image, utilisé pour identifier de manière unique cette tâche.
  • data, qui contient les informations sur le résultat de la génération d’images.
Le champ data contient les informations spécifiques sur l’image générée par le modèle, et son url est le lien détaillé vers l’image générée, comme on peut le voir sur l’image ci-dessous.

Paramètre de qualité d’image quality

Nous allons maintenant expliquer comment définir certains paramètres détaillés des résultats de génération d’images, où le paramètre de qualité d’image quality comprend deux types : le premier standard indique que l’image générée est standard, et l’autre hd indique que l’image créée a des détails plus fins et une plus grande cohérence. Voici comment définir le paramètre de qualité d’image sur standard, les paramètres spécifiques sont illustrés sur l’image ci-dessous :

Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, que vous pouvez copier et exécuter directement, ou vous pouvez simplement cliquer sur le bouton « Try » pour effectuer un test.

Exemple de code d’appel Python :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "quality": "standard"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "created": 1721636023,
  "data": [
    {
      "revised_prompt": "A cute baby sea otter is lying playfully on its back in the water, with its fur looking glossy and soft. One of its tiny paws is reaching out curiously, and it has an expression of pure joy and warmth on its face as it looks up to the sky. Its body is surrounded by bubbles from its playful twirling in the water. A gentle breeze is playing with its fur making it look more charming. The scene portrays the tranquility and charm of marine life.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/a93ee5e7-3abd-4923-8d79-dc9ef126da46/generated_00.png?se=2024-07-23T08%3A13%3A55Z&sig=wTXGYvUOwUIkaB2CxjK9ww%2FHjS8OwYUWcYInXYKwcAM%3D&ske=2024-07-23T11%3A32%3A05Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T11%3A32%3A05Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
Le résultat retourné est cohérent avec le contenu de l’utilisation de base, et vous pouvez voir que l’image générée avec le paramètre de qualité standard est illustrée ci-dessous :

Avec la même opération que ci-dessus, il suffit de définir le paramètre de qualité d’image sur hd pour obtenir l’image illustrée ci-dessous :

On peut voir que l’image générée avec hd a des détails plus fins et une plus grande cohérence par rapport à celle générée avec standard.

Paramètre de taille d’image size

Nous pouvons également définir la taille des images générées, nous pouvons effectuer les réglages suivants. Réglez la taille de l’image à 1024 * 1024, les réglages spécifiques sont illustrés ci-dessous :

Vous pouvez également remarquer qu’il y a un code d’appel correspondant à droite, vous pouvez copier le code et l’exécuter directement, ou cliquer directement sur le bouton « Essayer » pour tester.

Exemple de code d’appel Python :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "size": "1024x1024"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Après l’appel, nous avons constaté que le résultat retourné est le suivant :
{
  "created": 1721636652,
  "data": [
    {
      "revised_prompt": "A delightful depiction of a baby sea otter. The small mammal is captured in its natural habitat in the ocean, floating on its back. It has thick brown fur that is sleek and wet from the sea water. Its eyes are closed as if it is enjoying a moment of deep relaxation. The water around it is calm, reflecting the peacefulness of the scene. The background should hint at a diverse marine ecosystem, with visible strands of kelp floating on the surface, suggesting the baby otter's preferred environment.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/9d625ac6-fd2b-42a9-84a6-8c99eb357ccf/generated_00.png?se=2024-07-23T08%3A24%3A24Z&sig=AXtYXowEakGxfRp8LhC2DwqL%2F07LhEDW40oCP%2BdTO8s%3D&ske=2024-07-23T18%3A00%3A45Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T18%3A00%3A45Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
Le résultat retourné est conforme au contenu d’utilisation de base, on peut voir que la taille de l’image générée est de 1024 * 1024, comme illustré ci-dessous :

Avec la même opération ci-dessus, il suffit de régler la taille de l’image à 1792 * 1024, et vous pouvez obtenir l’image illustrée ci-dessous : On peut voir que la taille de l’image est clairement différente, et il est également possible de définir d’autres tailles, pour plus d’informations, veuillez consulter notre documentation officielle.

Paramètre de style d’image style

Le paramètre de style d’image style contient deux paramètres, le premier vivid indique que l’image générée est plus vivante, l’autre natural indique que l’image générée est plus naturelle. Réglez le paramètre de style de l’image sur vivid, les réglages spécifiques sont illustrés ci-dessous :

Vous pouvez également remarquer qu’il y a un code d’appel correspondant à droite, vous pouvez copier le code et l’exécuter directement, ou cliquer directement sur le bouton « Essayer » pour tester.

Exemple de code d’appel Python :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "style": "vivid"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Après l’appel, nous avons constaté que le résultat retourné est le suivant :
{
  "created": 1721637086,
  "data": [
    {
      "revised_prompt": "A baby sea otter with soft, shiny fur and sparkling eyes floating playfully on calm ocean waters. This adorable creature is trippingly frolicking amidst small, gentle waves under a bright, clear, sunny sky. The tranquility of the sea contrasts subtly with the delightful energy of this young otter. The critter gamely clings to a tiny piece of driftwood, its small paws adorably enveloping the floating object.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/6e48f701-7fd3-4356-839e-a2f6f0fe82d9/generated_00.png?se=2024-07-23T08%3A31%3A37Z&sig=4percxqTbUR1j3BQmkhvj%2FAhHzInKI%2FqiTo1MP69coI%3D&ske=2024-07-27T10%3A39%3A55Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-20T10%3A39%3A55Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
Le résultat retourné est conforme au contenu d’utilisation de base, on peut voir que l’image générée avec le paramètre de style vivid est illustrée ci-dessous :

Avec la même opération ci-dessus, il suffit de régler le paramètre de style de l’image sur natural, et vous pouvez obtenir l’image illustrée ci-dessous :

On peut voir que vivid produit des images plus vivantes et réalistes que natural.

Paramètre de format de lien d’image response_format

Le dernier paramètre de format de lien d’image response_format a également deux options, la première b64_json encode le lien de l’image en Base64, l’autre url est un lien d’image ordinaire, que vous pouvez consulter directement. Réglez le paramètre de format de lien d’image sur url, les réglages spécifiques sont illustrés ci-dessous :

Vous pouvez également remarquer qu’il y a un code d’appel correspondant à droite, vous pouvez copier le code et l’exécuter directement, ou cliquer directement sur le bouton « Essayer » pour tester.

Exemple de code d’appel Python :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "response_format": "url"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Après l’appel, nous avons constaté que le résultat retourné est le suivant :
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Une représentation charmante d'un bébé loutre de mer. La loutre est vue se reposant sereinement sur le dos au milieu des douces vagues océaniques bleues. Le pelage du bébé loutre est un mélange attendrissant de nuances de brun grisâtre doux, scintillant subtilement sous la lumière du soleil tamisée. Ses petites pattes sont touchantes, légèrement levées vers le ciel comme si elle jouait avec un objet invisible. Ses yeux ronds et expressifs sont grands de curiosité, pétillants de vie et d'innocence. Utilisez un style réaliste pour évoquer l'habitat naturel de la loutre et son extérieur adorablement duveteux.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/87792c5f-8b6d-412e-81dd-f1a1baa19bd2/generated_00.png?se=2024-07-23T08%3A39%3A47Z&sig=zzRAn30TqIKHdLVqZPUUuSJdjCYpoJdaGU6BeoA76Jo%3D&ske=2024-07-23T13%3A32%3A13Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T13%3A32%3A13Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
Le résultat retourné est cohérent avec le contenu de base utilisé, et le lien de l’image au format des paramètres est url du lien de l’image générée URL de l’image c’est accessible directement, le contenu de l’image est illustré ci-dessous :

En effectuant la même opération ci-dessus, il suffit de changer le format des paramètres du lien de l’image en b64_json, pour obtenir le lien de l’image encodée en Base64, le résultat spécifique est illustré ci-dessous :
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Une image charmante d'un jeune bébé loutre de mer. La loutre flotte doucement sur une mer bleue calme, se prélassant sous les chauds rayons dorés du soleil qui descendent d'un ciel clair au-dessus. Le pelage de la loutre est d'un riche brun chocolat, et il semble incroyablement doux et duveteux. Les yeux de la loutre sont brillants et expressifs, remplis de curiosité enfantine et de joie. Elle a de petites oreilles dressées et un nez en forme de bouton qui ajoute à son charme global. Dans la mer autour d'elle, des gouttelettes d'eau scintillantes peuvent être vues, rehaussées par la lumière du soleil, la vue est certainement délicieuse."
    }
  ]
}

Appel asynchrone

Étant donné que le temps de génération d’images de l’API OpenAI peut être relativement long, si l’API ne répond pas pendant une longue période, la requête HTTP maintiendra la connexion, entraînant une consommation supplémentaire de ressources système, c’est pourquoi cette API propose également un support de rappel asynchrone. Le processus global est le suivant : lorsque le client initie une demande, il spécifie un champ callback_url supplémentaire, après que le client ait lancé la demande API, l’API renverra immédiatement un résultat, contenant un champ d’information task_id, représentant l’ID de la tâche actuelle. Lorsque la tâche est terminée, le résultat de l’image générée sera envoyé au callback_url spécifié par le client sous forme de POST JSON, qui inclura également le champ task_id, permettant ainsi de relier le résultat de la tâche par ID. Voyons comment procéder à travers un exemple. Tout d’abord, le rappel Webhook est un service capable de recevoir des requêtes HTTP, le développeur doit le remplacer par l’URL de son propre serveur HTTP. Pour des raisons de démonstration, nous utilisons un site Web de modèle Webhook public https://webhook.site/, en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous : Copiez cette URL, vous pouvez l’utiliser comme Webhook, l’exemple ici est https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Ensuite, nous pouvons définir le champ callback_url sur l’URL Webhook ci-dessus, tout en remplissant les paramètres correspondants, comme le montre le code suivant :
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Un mignon bébé loutre de mer",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
En cliquant sur exécuter, vous pouvez constater que vous obtiendrez immédiatement un résultat, comme suit :
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Après un court instant, nous pouvons observer le résultat de l’image générée sur l’URL Webhook, le contenu est le suivant :
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Une image délicieuse montrant un jeune loutre de mer...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
On peut voir qu’il y a un champ task_id dans le résultat, le champ data contient les mêmes résultats de génération d’images que l’appel synchrone, et le champ task_id permet de relier la tâche.

Gestion des erreurs

Lors de l’appel de l’API, si une erreur se produit, l’API renverra le code d’erreur et les informations correspondantes. Par exemple :
  • 400 token_mismatched : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 400 api_not_implemented : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
  • 401 invalid_token : Non autorisé, jeton d’autorisation invalide ou manquant.
  • 429 too_many_requests : Trop de requêtes, vous avez dépassé la limite de taux.
  • 500 api_error : Erreur interne du serveur, quelque chose s’est mal passé sur le serveur.

Exemple de réponse d’erreur

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "échec de la récupération"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusion

Grâce à ce document, vous avez compris comment utiliser l’API de génération d’images OpenAI pour utiliser facilement la fonction de génération d’images officielle d’OpenAI DALL-E. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n’hésitez pas à contacter notre équipe de support technique.