Zum Hauptinhalt springen
DALL-E 3 ist ein von OpenAI entwickeltes Bildgenerierungsmodell in zwei Versionen, das in der Lage ist, qualitativ hochwertige Bilder basierend auf Textbeschreibungen zu erzeugen. Dieses Dokument beschreibt hauptsächlich den Ablauf der Nutzung der OpenAI Bilder Generations API, mit der wir die Bildgenerierungsfunktionen von OpenAI DALL-E einfach nutzen können.

Antragsprozess

Um die OpenAI Bilder Generations API zu nutzen, können Sie zunächst auf die Seite OpenAI Bilder Generations API gehen und auf die Schaltfläche „Acquire“ klicken, um die erforderlichen Anmeldeinformationen zu erhalten: Wenn Sie noch nicht angemeldet oder registriert sind, werden Sie automatisch zur Anmeldeseite weitergeleitet, die Sie zur Registrierung und Anmeldung einlädt. Nach der Anmeldung werden Sie automatisch zur aktuellen 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 die entsprechenden Inhalte im Interface ausfüllen, wie im Bild gezeigt:

Bei der ersten Nutzung dieser Schnittstelle müssen wir mindestens drei Inhalte ausfüllen: einer ist authorization, den Sie einfach aus der Dropdown-Liste auswählen können. Ein weiterer Parameter ist model, model ist die Modellkategorie, die wir für die Nutzung des OpenAI DALL-E auf der offiziellen Website auswählen. Hier haben wir hauptsächlich 1 Modell, Details können Sie in unserem bereitgestellten Modell einsehen. Der letzte Parameter ist prompt, prompt ist das Stichwort, das wir eingeben, um das Bild zu generieren. Gleichzeitig können Sie auf der rechten Seite den entsprechenden Code zur Aufrufgenerierung sehen, den Sie kopieren und direkt ausführen oder einfach auf die Schaltfläche „Try“ klicken können, um einen Test durchzuführen.

Python Beispielaufrufcode:
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)
Nach dem Aufruf stellen wir fest, dass das Rückgabeergebnis wie folgt aussieht:
{
  "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"
    }
  ]
}
Das Rückgabeergebnis hat mehrere Felder, die wie folgt beschrieben werden:
  • created, die ID der generierten Bildgenerierung, die zur eindeutigen Identifizierung dieser Aufgabe dient.
  • data, die Informationen über das Ergebnis der Bildgenerierung enthält.
Dabei enthält data die spezifischen Informationen über das vom Modell generierte Bild, und der url darin ist der Detaillink zum generierten Bild, wie im Bild gezeigt.

Bildqualitätsparameter quality

Als Nächstes wird erklärt, wie einige detaillierte Parameter für die Bildgenerierungsergebnisse festgelegt werden, wobei der Bildqualitätsparameter quality zwei Arten umfasst: der erste standard bedeutet, dass ein Standardbild generiert wird, der andere hd bedeutet, dass das erzeugte Bild feinere Details und größere Konsistenz aufweist. Hier wird der Bildqualitätsparameter auf standard gesetzt, die spezifische Einstellung ist im folgenden Bild dargestellt:

Gleichzeitig können Sie auf der rechten Seite den entsprechenden Code zur Aufrufgenerierung sehen, den Sie kopieren und direkt ausführen oder einfach auf die Schaltfläche „Try“ klicken können, um einen Test durchzuführen.

Python Beispielaufrufcode:
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)
Nach dem Aufruf stellen wir fest, dass das Rückgabeergebnis wie folgt aussieht:
{
  "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"
    }
  ]
}
Das zurückgegebene Ergebnis entspricht dem Inhalt der grundlegenden Nutzung, und das Bild mit dem Qualitätsparameter standard ist im folgenden Bild dargestellt:

Mit der gleichen Vorgehensweise, indem der Bildqualitätsparameter auf hd gesetzt wird, kann das folgende Bild erhalten werden:

Es ist zu erkennen, dass das Bild, das mit hd generiert wurde, feinere Details und größere Konsistenz aufweist als das mit standard generierte Bild.

Bildgrößenparameter size

Wir können auch die Größe der generierten Bilder einstellen, und wir können die folgenden Einstellungen vornehmen. Die Größe des Bildes wird auf 1024 * 1024 eingestellt, die spezifischen Einstellungen sind im folgenden Bild dargestellt:

Gleichzeitig können Sie beachten, dass auf der rechten Seite der entsprechende Code zur Generierung angezeigt wird. Sie können den Code kopieren und direkt ausführen oder einfach auf die Schaltfläche „Try“ klicken, um einen Test durchzuführen.

Beispielaufrufcode in 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)
Nach dem Aufruf stellen wir fest, dass das Rückgabeergebnis wie folgt aussieht:
{
  "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"
    }
  ]
}
Das zurückgegebene Ergebnis stimmt mit dem Inhalt der grundlegenden Verwendung überein, und das Bild mit der Größe 1024 * 1024 ist im folgenden Bild dargestellt:

Mit der gleichen Vorgehensweise kann die Bildgröße auf 1792 * 1024 eingestellt werden, um das folgende Bild zu erhalten: Es ist deutlich zu sehen, dass die Bildgrößen unterschiedlich sind. Darüber hinaus können auch weitere Größen eingestellt werden. Weitere Informationen finden Sie in unserer offiziellen Dokumentation.

Bildstilparameter style

Der Bildstilparameter style enthält zwei Parameter. Der erste vivid bedeutet, dass das generierte Bild lebendiger ist, der andere natural bedeutet, dass das generierte Bild natürlicher ist. Hier wird der Bildstilparameter auf vivid eingestellt, die spezifischen Einstellungen sind im folgenden Bild dargestellt:

Gleichzeitig können Sie beachten, dass auf der rechten Seite der entsprechende Code zur Generierung angezeigt wird. Sie können den Code kopieren und direkt ausführen oder einfach auf die Schaltfläche „Try“ klicken, um einen Test durchzuführen.

Beispielaufrufcode in 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)
Nach dem Aufruf stellen wir fest, dass das Rückgabeergebnis wie folgt aussieht:
{
  "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"
    }
  ]
}
Das zurückgegebene Ergebnis stimmt mit dem Inhalt der grundlegenden Verwendung überein, und das Bild mit dem Bildstilparameter vivid ist im folgenden Bild dargestellt:

Mit der gleichen Vorgehensweise kann der Bildstilparameter auf natural eingestellt werden, um das folgende Bild zu erhalten:

Es ist zu sehen, dass das Bild, das mit vivid erzeugt wurde, lebendiger und realistischer ist als das mit natural. Der letzte Formatparameter für Bildlinks response_format hat ebenfalls zwei Arten. Die erste b64_json ist eine Base64-Codierung des Bildlinks, die andere url ist der normale Bildlink, den man direkt ansehen kann. Hier wird der Formatparameter für den Bildlink auf url eingestellt, die spezifischen Einstellungen sind im folgenden Bild dargestellt:

Gleichzeitig können Sie beachten, dass auf der rechten Seite der entsprechende Code zur Generierung angezeigt wird. Sie können den Code kopieren und direkt ausführen oder einfach auf die Schaltfläche „Try“ klicken, um einen Test durchzuführen.

Beispielaufrufcode in 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)
Nach dem Aufruf stellen wir fest, dass das Rückgabeergebnis wie folgt aussieht:
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Eine charmante Darstellung eines Baby-Seelöwen. Der Otter liegt friedlich auf dem Rücken inmitten der sanften, blauen Wellen des Ozeans. Das Fell des Babyotters ist eine liebenswerte Mischung aus sanften graubraunen Farbtönen, die subtil im gedämpften Sonnenlicht schimmern. Seine kleinen Pfoten berühren sich, leicht zum Himmel erhoben, als ob er mit einem unsichtbaren Objekt spielt. Seine runden, ausdrucksvollen Augen sind weit vor Neugier, sprühend vor Leben und Unschuld. Verwenden Sie einen realistischen Stil, um den natürlichen Lebensraum des Otters und sein adorabel flauschiges Äußeres hervorzurufen.",
      "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"
    }
  ]
}
Die zurückgegebene Antwort ist mit dem grundlegenden verwendeten Inhalt konsistent, und der Bildlink im Formatparameter url für das generierte Bild ist Bild-URL, die direkt zugänglich ist, der Bildinhalt ist wie im folgenden Bild dargestellt:

Durch die gleiche Vorgehensweise, bei der der Bildlink im Formatparameter b64_json angegeben wird, kann das Ergebnis des Base64-codierten Bildlinks erhalten werden, das spezifische Ergebnis ist wie im folgenden Bild dargestellt:
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Ein charmantes Bild eines jungen Baby-Seelöwen. Der Otter schwebt sanft auf einem ruhigen blauen Meer und sonnt sich in den warmen, goldenen Sonnenstrahlen, die von einem klaren Himmel darüber strömen. Das Fell des Otters ist ein reiches schokoladenbraun und sieht unglaublich weich und flauschig aus. Die Augen des Otters sind hell und ausdrucksvoll, gefüllt mit kindlicher Neugier und Freude. Er hat kleine, aufgerichtete Ohren und eine knopfartige Nase, die zu seiner allgemeinen Niedlichkeit beiträgt. Im Meer um ihn herum sind funkelnde Wassertropfen zu sehen, die vom Sonnenlicht beleuchtet werden, der Anblick ist sicherlich erfreulich."
    }
  ]
}

Asynchrone Rückrufe

Da die OpenAI Images Generations API möglicherweise längere Zeit benötigt, um Bilder zu generieren, bleibt die HTTP-Anfrage bei langer Nichtreaktion 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 Prozess ist: Wenn der Client die Anfrage stellt, gibt er zusätzlich ein Feld callback_url an. Nachdem der Client die API-Anfrage gestellt hat, 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, werden die Ergebnisse der generierten Bilder 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 ihn durch die URL ihres eigenen HTTP-Servers ersetzen. Hier verwenden wir zur Demonstration eine öffentliche Webhook-Beispielwebsite https://webhook.site/, auf der Sie eine Webhook-URL erhalten können, wie im Bild dargestellt: 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:
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": "Ein süßes Baby-Seelöwen",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Wenn Sie auf Ausführen klicken, können Sie sofort ein Ergebnis erhalten, wie folgt:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Nach kurzer Wartezeit können wir die Ergebnisse der generierten Bilder an der Webhook-URL beobachten, der Inhalt ist wie folgt:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Ein erfreuliches Bild, das einen jungen Seelöwen zeigt...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
Es ist zu erkennen, dass das Ergebnis ein Feld task_id enthält, das data-Feld die gleichen Bildgenerierungsergebnisse wie bei der synchronen Anfrage enthält, und die Aufgaben können über das Feld task_id 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.

Fehlerantwortbeispiel

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

Fazit

Durch dieses Dokument haben Sie erfahren, wie Sie die Bildgenerierungs-API von OpenAI einfach nutzen können, um die Bildgenerierungsfunktionen des offiziellen OpenAI DALL-E zu verwenden. Wir hoffen, dass dieses Dokument Ihnen hilft, die API besser zu integrieren und zu nutzen. Bei Fragen wenden Sie sich bitte jederzeit an unser technisches Support-Team.