Passer au contenu principal
Le service d’édition d’images d’OpenAI permet d’envoyer un nombre illimité d’images et d’instructions, et de recevoir les images modifiées en retour. Ce document présente principalement le processus d’utilisation de l’API OpenAI Images Edits, qui nous permet d’utiliser facilement les fonctionnalités d’édition d’images officielles d’OpenAI.

Processus de Demande

Pour utiliser l’API OpenAI Images Edits, vous pouvez d’abord vous rendre sur la page OpenAI Images Edits 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

Vous pouvez ensuite utiliser le code pour faire l’appel, ci-dessous un exemple d’appel via CURL :
curl -s -D >(grep -i x-request-id >&2) \
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
  -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F 'prompt=Create a lovely gift basket with these this items in it'
Lors de la première utilisation de cette interface, nous devons remplir au moins quatre éléments, l’un est authorization, que vous pouvez sélectionner directement dans la liste déroulante. Un autre paramètre est model, model est la catégorie de modèle que nous choisissons d’utiliser sur le site officiel d’OpenAI, ici nous avons principalement 1 modèle, les détails peuvent être consultés dans les modèles que nous fournissons. Un autre paramètre est prompt, prompt est le mot clé que nous entrons pour générer l’image. Le dernier paramètre est image, ce paramètre nécessite le chemin de l’image à éditer, l’image à éditer est montrée ci-dessous :

Un exemple de code d’appel Python avec le même effet d’appel :
import base64
from openai import OpenAI
client = OpenAI()

prompt = """
Generate a photorealistic image of a gift basket on a white background 
labeled 'Relax & Unwind' with a ribbon and handwriting-like font, 
containing all the items in the reference pictures.
"""

result = client.images.edit(
    model="gpt-image-1",
    image=[
        open("test.png", "rb")
    ],
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# Save the image to a file
with open("gift-basket.png", "wb") as f:
    f.write(image_bytes)
Pour utiliser Python, nous devons d’abord importer deux variables d’environnement, une OPENAI_BASE_URL, qui peut être définie sur https://api.acedata.cloud/openai, et une autre variable d’identification OPENAI_API_KEY, cette valeur est obtenue à partir de authorization. Sur Mac OS, vous pouvez définir les variables d’environnement avec les commandes suivantes :
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
Après l’appel, nous constatons qu’une image gift-basket.png est générée dans le répertoire actuel, le résultat est comme suit :

Ainsi, nous avons terminé l’opération d’édition d’images. Actuellement, la tâche Edits officielle ne prend en charge que deux modèles, à savoir : dall-e-2, gpt-image-1.

Rappel Asynchrone

Étant donné que le temps d’édition d’images de l’API OpenAI Images Edits 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. Par conséquent, cette API propose également un support pour les rappels asynchrones. 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 task_id, représentant l’ID de la tâche actuelle. Lorsque la tâche est terminée, le résultat de l’édition d’image 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 lier 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, les développeurs doivent le remplacer par l’URL de leur propre serveur HTTP. Pour des raisons de démonstration, nous utiliserons un site Web de Webhook public https://webhook.site/, en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous : Copiez cette URL, qui peut être utilisée 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 :
curl -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F "prompt=Create a lovely gift basket with these items in it" \
  -F "callback_url=https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
Après l’appel, vous pouvez immédiatement obtenir 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’édition d’image sur l’URL Webhook, le contenu est comme suit :
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
On peut voir que le résultat contient un champ task_id, le champ data contient le même résultat d’édition d’image que l’appel synchrone, et le champ task_id permet de lier 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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusion

Grâce à ce document, vous avez compris comment utiliser l’API OpenAI Images Edits pour profiter facilement des fonctionnalités d’édition d’images officielles d’OpenAI. 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.