Zum Hauptinhalt springen
OpenAI Bilderbearbeitungsdienst ermöglicht es, beliebig viele Bilder und Anweisungen einzugeben und die bearbeiteten Bilder auszugeben. Dieses Dokument beschreibt hauptsächlich den Ablauf der Nutzung der OpenAI Bilderbearbeitungs-API. Damit können wir die offiziellen OpenAI Bildbearbeitungsfunktionen einfach nutzen.

Antragsprozess

Um die OpenAI Bilderbearbeitungs-API zu verwenden, können Sie zunächst auf die Seite OpenAI Bilderbearbeitungs-API gehen und auf die Schaltfläche „Acquire“ klicken, um die benötigten Anmeldeinformationen zu erhalten: Wenn Sie noch nicht angemeldet oder registriert sind, werden Sie automatisch zur Anmeldeseite weitergeleitet, um sich zu registrieren und anzumelden. Nach der Anmeldung werden Sie automatisch auf die aktuelle Seite zurückgeleitet. Bei der ersten Antragstellung gibt es ein kostenloses Kontingent, mit dem Sie die API kostenlos nutzen können.

Grundlegende Nutzung

Als Nächstes können Sie den Code zur Verwendung aufrufen. Unten ist der Aufruf über CURL dargestellt:
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'
Bei der ersten Verwendung dieser Schnittstelle müssen wir mindestens vier Inhalte ausfüllen: einen ist authorization, den Sie einfach aus der Dropdown-Liste auswählen können. Ein weiterer Parameter ist model, model ist die Modellkategorie, die wir von der offiziellen OpenAI-Website auswählen. Hier haben wir hauptsächlich 1 Modell, Details finden Sie in den bereitgestellten Modellen. Ein weiterer Parameter ist prompt, prompt ist das Stichwort, das wir eingeben, um das Bild zu generieren. Der letzte Parameter ist image, dieser Parameter benötigt den Pfad zum Bild, das bearbeitet werden soll, wie im folgenden Bild gezeigt:

Ein Beispielaufruf in Python mit demselben Aufrufeffekt:
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)
Um die Python-Anwendung zu verwenden, müssen wir zunächst zwei Umgebungsvariablen importieren: eine OPENAI_BASE_URL, die auf https://api.acedata.cloud/openai gesetzt werden kann, und eine Variable für die Anmeldeinformationen OPENAI_API_KEY, deren Wert aus der authorization abgerufen wird. In Mac OS können Sie die Umgebungsvariablen mit den folgenden Befehlen festlegen:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
Nach dem Aufruf stellen wir fest, dass im aktuellen Verzeichnis ein Bild gift-basket.png generiert wird, das Ergebnis sieht wie folgt aus:

So haben wir die Bildbearbeitung abgeschlossen. Derzeit unterstützt die offizielle Edits-Aufgabe nur zwei Modelle: dall-e-2 und gpt-image-1.

Asynchrone Rückrufe

Da die Bearbeitungszeit für Bilder über die OpenAI Bilderbearbeitungs-API relativ lang sein kann, bleibt die HTTP-Anfrage bei längerer Nichtreaktion der API verbunden, was zu einem zusätzlichen Verbrauch von Systemressourcen führt. Daher bietet diese API auch Unterstützung für asynchrone Rückrufe. Der gesamte Ablauf ist: Wenn der Client die Anfrage initiiert, gibt er zusätzlich ein Feld callback_url an. Nach der Initiierung der API-Anfrage gibt die API sofort ein Ergebnis zurück, das ein Feld task_id enthält, das die aktuelle Aufgaben-ID darstellt. Wenn die Aufgabe abgeschlossen ist, wird das Ergebnis der Bildbearbeitung in Form von POST JSON an die vom Client angegebene callback_url gesendet, wobei auch das Feld task_id enthalten ist, sodass die Aufgabenresultate über die ID verknüpft werden können. Lassen Sie uns anhand eines Beispiels verstehen, wie dies konkret funktioniert. Zunächst ist der Webhook-Rückruf ein Dienst, der HTTP-Anfragen empfangen kann. Entwickler sollten die URL ihres eigenen HTTP-Servers angeben. Zur Vereinfachung der Demonstration verwenden wir eine öffentliche Webhook-Beispielwebsite https://webhook.site/. Wenn Sie diese Website öffnen, erhalten Sie eine Webhook-URL, wie im Bild gezeigt: Kopieren Sie diese URL, um sie als Webhook zu verwenden. In diesem Beispiel lautet die URL https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Als Nächstes können wir das Feld callback_url auf die oben genannte Webhook-URL setzen und die entsprechenden Parameter wie im folgenden Code angegeben ausfüllen:
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"
Nach dem Aufruf können wir sofort ein Ergebnis erhalten, wie folgt:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Nach kurzer Wartezeit können wir das Ergebnis der Bildbearbeitung an der Webhook-URL beobachten, der Inhalt sieht wie folgt aus:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
Wir können sehen, dass das Ergebnis ein Feld task_id enthält, und das Feld data die gleichen Bildbearbeitungsergebnisse wie bei der synchronen Anfrage enthält. Über das Feld task_id kann die Aufgabe verknüpft werden.

Fehlerbehandlung

Wenn bei der API-Anfrage ein Fehler auftritt, gibt die API den entsprechenden Fehlercode und die Informationen zurück. Zum Beispiel:
  • 400 token_mismatched: Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
  • 400 api_not_implemented: Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
  • 401 invalid_token: Unbefugt, ungültiger oder fehlender Autorisierungstoken.
  • 429 too_many_requests: Zu viele Anfragen, Sie haben das Kontingent überschritten.
  • 500 api_error: Interner Serverfehler, etwas ist auf dem Server schiefgelaufen.

Beispiel für eine Fehlerantwort

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Fazit

Durch dieses Dokument haben Sie erfahren, wie Sie die Bildbearbeitungsfunktionen von OpenAI einfach über die OpenAI Images Edits API nutzen können. Wir hoffen, dass Ihnen dieses Dokument hilft, die API besser zu integrieren und zu verwenden. Bei Fragen können Sie sich jederzeit an unser technisches Support-Team wenden.