Guide d'utilisation GPT-Image-2
GPT-Image-2 est le service de génération d'images IA fourni par YYCode. Il utilise l'interface image indépendante gpt.yycode.net pour la génération texte-vers-image, image-vers-image et la consultation de tâches asynchrones.
Préparation
1. Créer une API Key
Accédez à la page de gestion des jetons YYCode, puis créez ou copiez une API Key.
Après création, conservez-la soigneusement. Toutes les requêtes suivantes devront transporter cette Key dans le Header.
2. Adresse d'interface
GPT-Image-2 utilise une Base URL indépendante :
https://gpt.yycode.net
Toutes les requêtes image transportent également l'adresse du relais YYCode :
x-demo-base-url: https://yycode.net
Intégration en un clic pour AI Agent
Lorsque vous utilisez Claude Code, Codex ou d'autres outils de codage IA prenant en charge les Skills, envoyez directement le contenu suivant à l'IA :
Veuillez intégrer le service de génération d'images YYCode GPT-Image-2 à ce projet.
Base URL:
https://gpt.yycode.net
Texte vers image:
POST /api/images/generate
Image vers image:
POST /api/images/edit
Consulter une tâche:
GET /api/jobs/{jobId}
Headers de requête:
x-demo-base-url: https://yycode.net
x-demo-api-key: YOUR_API_KEY
x-demo-async: 1
Le texte-vers-image utilise un corps de requête JSON ; l'image-vers-image utilise multipart/form-data et téléverse l'image source via le champ image.
Après soumission de la tâche et retour du jobId, interroger /api/jobs/{jobId} toutes les 6 secondes.
Lorsque status=succeeded est renvoyé, lire images[].b64 et images[].mimeType, puis enregistrer le base64 en fichier image.
L'AI Agent réalisera l'intégration côté client selon les interfaces, Headers, méthode de polling et méthode d'enregistrement d'image ci-dessus.
Détails de l'API
Texte vers image (Text to Image)
Soumettre une tâche de génération :
curl 'https://gpt.yycode.net/api/images/generate' \
-H 'Content-Type: application/json' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-d '{
"model": "gpt-image-2",
"prompt": "un chat mignon fait la sieste au soleil",
"n": 1,
"size": "1024x1024"
}'
Réponse réussie :
{
"ok": true,
"pending": true,
"jobId": "job_1782732290788_3",
"meta": {
"requestId": "req_1782732290788_1"
}
}
Consulter le résultat d'une tâche
Remplacez job_1782732290788_3 par le jobId renvoyé lors de la soumission :
curl 'https://gpt.yycode.net/api/jobs/job_1782732290788_3'
Tâche en cours :
{
"ok": true,
"pending": true,
"jobId": "job_1782732290788_3",
"status": "running",
"meta": {
"requestId": "req_1782732290788_1"
}
}
Tâche terminée :
{
"ok": true,
"images": [
{
"b64": "iVBORw0KGgo...",
"filename": null,
"mimeType": "image/png"
}
],
"usage": null,
"raw": {},
"meta": {
"requestId": "req_1782732290788_1"
},
"jobId": "job_1782732290788_3",
"status": "succeeded"
}
Les données finales de l'image sont images[0].b64, et le format est images[0].mimeType. Pour l'affichage côté frontend, utilisez data:${mimeType};base64,${b64} ; pour le téléchargement, décodez le base64 en fichier image.
Image vers image (Image to Image)
L'image-vers-image utilise multipart/form-data pour téléverser l'image source, via le champ image.
Téléverser une image source :
curl 'https://gpt.yycode.net/api/images/edit' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-F 'model=gpt-image-2' \
-F 'prompt=transformer cette image en style aquarelle' \
-F 'n=1' \
-F 'size=1024x1024' \
-F '[email protected]'
Téléverser plusieurs images sources :
curl 'https://gpt.yycode.net/api/images/edit' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-F 'model=gpt-image-2' \
-F 'prompt=générer une affiche au style cyberpunk cohérent à partir de ces images de référence' \
-F 'n=1' \
-F 'size=1536x1024' \
-F '[email protected]' \
-F '[email protected]'
Points d'attention pour l'image-vers-image :
imageest le champ du fichier image ; pour téléverser plusieurs images, répétezimagemaskest le champ de masque d'image, utilisé pour l'édition locale- Ne définissez pas manuellement
Content-Typedans les en-têtes ; laissezcurlou le SDK générer automatiquement la multipart boundary - Une tâche image-vers-image renvoie également un
jobId, puis le résultat est consulté viaGET /api/jobs/{jobId}
Paramètres
| Paramètre | Description |
|---|---|
model |
Toujours renseigner gpt-image-2 |
prompt |
Prompt de génération ou d'édition d'image |
n |
Nombre d'images générées, de 1 à 10 |
size |
Dimensions de sortie, au format <width>x<height> |
output_format |
Format de sortie, prend en charge png, jpeg, webp |
quality |
Qualité d'image, prend en charge auto, low, medium, high, standard, hd |
background |
Mode d'arrière-plan, prend en charge auto, opaque |
image |
Champ de fichier image source pour l'image-vers-image, répétable |
mask |
Champ de fichier masque pour l'image-vers-image, utilisé pour l'édition locale |
Prise en charge de size
size utilise des dimensions en pixels réels. La largeur et la hauteur doivent être des multiples de 16, le côté le plus long ne doit pas dépasser 3840, et le nombre total de pixels ne doit pas dépasser 3840x2160.
| Taille | Description |
|---|---|
1024x1024 |
Image carrée |
1536x1024 |
Image horizontale |
1024x1536 |
Image verticale |
1920x1080 |
Image HD horizontale |
1080x1920 |
Image HD verticale |
3840x2160 |
Image 4K horizontale |
2160x3840 |
Image 4K verticale |
Exemple Python
import base64
import time
import requests
# Remplacer par votre API Key YYCode
base_url = "https://gpt.yycode.net"
api_key = "YOUR_API_KEY"
headers = {
"Content-Type": "application/json",
"x-demo-base-url": "https://yycode.net",
"x-demo-api-key": api_key,
"x-demo-async": "1",
}
# Étape 1 : soumettre la tâche texte-vers-image
submit = requests.post(
f"{base_url}/api/images/generate",
headers=headers,
json={
"model": "gpt-image-2",
"prompt": "un chat mignon fait la sieste au soleil",
"n": 1,
"size": "1024x1024",
},
timeout=30,
)
submit.raise_for_status()
job_id = submit.json()["jobId"]
print(f"Tâche soumise : {job_id}")
# Étape 2 : interroger l'état de la tâche toutes les 6 secondes
while True:
result = requests.get(
f"{base_url}/api/jobs/{job_id}",
timeout=30,
)
result.raise_for_status()
data = result.json()
if data.get("pending"):
print("Tâche en cours...")
time.sleep(6)
continue
if data.get("status") == "succeeded":
# Étape 3 : enregistrer l'image base64 dans un fichier local
image = data["images"][0]
mime_type = image.get("mimeType") or "image/png"
suffix = mime_type.split("/")[-1].replace("jpeg", "jpg")
filename = f"{job_id}.{suffix}"
with open(filename, "wb") as file:
file.write(base64.b64decode(image["b64"]))
print(f"Génération d'image terminée : {filename}")
break
raise RuntimeError(data.get("error", {}).get("message", "Échec de la tâche"))
Facturation
- La génération d'image consomme le quota du compte YYCode auquel appartient
x-demo-api-key - Le
jobIdrenvoyé lors de la soumission indique que la tâche d'arrière-plan a été créée - Lorsque l'état de la tâche est
succeededet queimagesest renvoyé, la génération de cette image est terminée - Lorsque l'état de la tâche est
failed, la réponse contient les informations d'erreur - L'historique d'utilisation du compte est affiché dans l'admin YYCode
Format de retour des images
L'interface image YYCode renvoie un tableau images normalisé. Chaque image contient les champs b64 et mimeType. L'intégrateur utilise b64 pour décoder et enregistrer le fichier, ou concatène data:${mimeType};base64,${b64} pour l'afficher côté frontend.