Hoppa till huvudinnehåll
DALL-E 3 är en bildgenereringsmodell utvecklad av OpenAI i två versioner, som kan generera högkvalitativa bilder baserat på textbeskrivningar. Detta dokument beskriver huvudsakligen användningsflödet för OpenAI Images Generations API, vilket gör att vi enkelt kan använda den officiella OpenAI DALL-E bildgenereringsfunktionen.

Ansökningsprocess

För att använda OpenAI Images Generations API kan du först gå till OpenAI Images Generations API sidan och klicka på “Acquire”-knappen för att få de nödvändiga autentiseringsuppgifterna: Om du inte är inloggad eller registrerad kommer du automatiskt att omdirigeras till inloggningssidan där du blir inbjuden att registrera dig och logga in. Efter att du har loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan. Vid första ansökan kommer du att få en gratis kvot som gör att du kan använda API:et kostnadsfritt.

Grundläggande Användning

Därefter kan du fylla i motsvarande innehåll på gränssnittet, som visas i bilden:

Vid första användningen av detta gränssnitt behöver vi fylla i minst tre fält, ett är authorization, som du enkelt kan välja från rullgardinsmenyn. Den andra parametern är model, där model är den modelltyp vi väljer att använda från OpenAI DALL-E:s officiella webbplats. Här har vi huvudsakligen 1 typ av modell, detaljer kan ses i de modeller vi tillhandahåller. Den sista parametern är prompt, där prompt är den text vi anger för att generera bilden. Samtidigt kan du notera att det finns motsvarande kod för anrop på höger sida, som du kan kopiera och köra direkt, eller så kan du klicka på “Try”-knappen för att testa.

Python exempel på anropskod:
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)
Efter anropet ser vi att resultatet returneras som följer:
{
  "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"
    }
  ]
}
Det returnerade resultatet har flera fält, som beskrivs nedan:
  • created, ID för den genererade bilden, som används för att unikt identifiera denna uppgift.
  • data, som innehåller information om bildgenereringen.
Där data innehåller den specifika informationen om den bild som modellen har genererat, där url är länken till den genererade bilden, som kan ses i bilden nedan.

Bildkvalitetsparameter quality

Nästa steg är att beskriva hur man ställer in några detaljerade parametrar för bildgenereringsresultatet, där bildkvalitetsparametern quality innehåller två alternativ, den första standard som representerar en standardbild, och den andra hd som innebär att den skapade bilden har mer detaljer och större konsekvens. Nedan ställer vi in bildkvalitetsparametern till standard, med specifikationen som visas i bilden:

Samtidigt kan du notera att det finns motsvarande kod för anrop på höger sida, som du kan kopiera och köra direkt, eller så kan du klicka på “Try”-knappen för att testa.

Python exempel på anropskod:
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)
Efter anropet ser vi att resultatet returneras som följer:
{
  "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"
    }
  ]
}
Det returnerade resultatet är i linje med innehållet i grundläggande användning, och vi kan se att bilden med bildkvalitetsparametern standard ser ut som bilden nedan:

Genom att utföra samma operation som ovan, behöver vi bara ställa in bildkvalitetsparametern till hd, vilket ger oss bilden som visas nedan:

Vi kan se att hd-bilden har mer detaljer och större konsekvens än standard-bilden.

Bildstorleksparameter size

Vi kan också ställa in storleken på de genererade bilderna, vi kan göra följande inställningar. Nedan ställer vi in storleken på bilden till 1024 * 1024, specifika inställningar visas i bilden nedan:

Samtidigt kan du notera att det finns motsvarande anropskod till höger, du kan kopiera koden och köra den direkt, eller så kan du klicka på “Try” knappen för att testa.

Python exempel på anropskod:
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)
Efter anropet upptäckte vi att resultatet är som följer:
{
  "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"
    }
  ]
}
Det returnerade resultatet överensstämmer med innehållet i grundanvändningen, och vi kan se att storleken på den genererade bilden är 1024 * 1024, som visas i bilden nedan:

Genom att utföra samma operation, behöver vi bara ställa in storleken på bilden till 1792 * 1024, så kan vi få bilden som visas nedan: Vi kan se att storleken på bilden är tydligt annorlunda, och vi kan också ställa in fler storlekar, för mer information, se vår officiella dokumentation.

Bildstilparameter style

Bildstilparameter style innehåller två parametrar, den första vivid innebär att den genererade bilden är mer livfull, den andra natural innebär att den genererade bilden är mer naturlig. Nedan ställer vi in bildstilparameter till vivid, specifika inställningar visas i bilden nedan:

Samtidigt kan du notera att det finns motsvarande anropskod till höger, du kan kopiera koden och köra den direkt, eller så kan du klicka på “Try” knappen för att testa.

Python exempel på anropskod:
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)
Efter anropet upptäckte vi att resultatet är som följer:
{
  "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"
    }
  ]
}
Det returnerade resultatet överensstämmer med innehållet i grundanvändningen, och vi kan se att bildstilparameter är vivid, den genererade bilden visas nedan:

Genom att utföra samma operation, behöver vi bara ställa in bildstilparameter till natural, så kan vi få bilden som visas nedan:

Vi kan se att vivid genererar bilder som är mer livfulla och verklighetstrogna än natural.

Bildlänkens formatparameter response_format

Den sista bildlänkens formatparameter response_format har också två alternativ, den första b64_json är en Base64-kodning av bildlänken, den andra url är en vanlig bildlänk som kan ses direkt. Nedan ställer vi in bildlänkens formatparameter till url, specifika inställningar visas i bilden nedan:

Samtidigt kan du notera att det finns motsvarande anropskod till höger, du kan kopiera koden och köra den direkt, eller så kan du klicka på “Try” knappen för att testa.

Python exempel på anropskod:
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)
Efter anropet upptäckte vi att resultatet är som följer:
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "En charmig avbildning av en baby sjöutter. Uttern ses vila lugnt på sin rygg bland de mjuka, blå havsvågorna. Den lilla utterns päls är en älskvärd blandning av mjuka gråbruna nyanser, som glittrar subtilt i det dämpade solljuset. Dess små tassar är rörande, lyfta något mot himlen som om den leker med ett osynligt föremål. Dess runda, uttrycksfulla ögon är stora av nyfikenhet, gnistrande av liv och oskuld. Använd en realistisk stil för att framkalla utterns naturliga livsmiljö och dess bedårande fluffiga yttre.",
      "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"
    }
  ]
}
返回的结果与基本使用的内容一致,可以看到图片链接的格式参数为 url 的生成图片的链接为 图片 URL 这是可以直接访问的,图片内容如下图所示:

与上述相同操作,仅需将图片链接的格式参数为 b64_json ,可以得到结果 Base64 编码后的图片链接,具体结果如下图所示:
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "En charmig bild av en ung baby sjöutter. Uttern flyter försiktigt på ett lugnt blått hav, och njuter av de varma, gyllene solstrålarna som strömmar ner från en klar himmel ovanför. Utterns päls är en rik chokladbrun, och den ser otroligt mjuk och fluffig ut. Utterns ögon är ljusa och uttrycksfulla, fyllda med barnslig nyfikenhet och glädje. Den har små, spetsiga öron och en knappliknande näsa som bidrar till dess övergripande sötma. I havet runt omkring den kan man se glittrande vattendroppar, upplysta av solljuset, synen är verkligen en glädje."
    }
  ]
}

Asynkron återkoppling

Eftersom OpenAI Images Generations API:s bildgenerering kan ta relativt lång tid, om API:n inte svarar under en längre tid, kommer HTTP-förfrågan att hålla anslutningen öppen, vilket leder till extra systemresursförbrukning, så detta API erbjuder också stöd för asynkron återkoppling. Den övergripande processen är: när klienten initierar en begäran, specificerar den dessutom ett callback_url-fält, efter att klienten har initierat API-förfrågan kommer API:n omedelbart att returnera ett resultat som innehåller ett task_id-fält, vilket representerar det aktuella uppdragets ID. När uppdraget är slutfört kommer resultatet av den genererade bilden att skickas till klientens angivna callback_url i POST JSON-format, vilket också inkluderar task_id-fältet, så att uppdragets resultat kan kopplas ihop med ID:t. Nedan går vi igenom ett exempel för att förstå hur man gör. Först är Webhook-återkoppling en tjänst som kan ta emot HTTP-förfrågningar, utvecklaren bör ersätta med URL:en till sin egen byggda HTTP-server. Här för att underlätta demonstration använder vi en offentlig Webhook-exempelsida https://webhook.site/, öppna denna webbplats för att få en Webhook-URL, som visas i bilden: Kopiera denna URL, så kan den användas som Webhook, detta exempel är https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Därefter kan vi ställa in fältet callback_url till ovanstående Webhook-URL, samtidigt som vi fyller i motsvarande parametrar, som i följande kod:
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": "En söt baby sjöutter",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Klicka på körning, så kan du se att du omedelbart får ett resultat, som följer:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Vänta en stund, så kan vi observera resultatet av den genererade bilden på Webhook-URL:en, innehållet är som följer:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "En härlig bild som visar en ung sjöutter...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
Det kan ses att resultatet innehåller ett task_id-fält, data-fältet innehåller samma bildgenereringsresultat som vid synkron anrop, genom task_id-fältet kan uppdraget kopplas ihop.

Felhantering

Vid anrop av API:t, om det uppstår fel, kommer API:t att returnera motsvarande felkod och information. Till exempel:
  • 400 token_mismatched: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obefogad, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests: För många förfrågningar, du har överskridit hastighetsgränsen.
  • 500 api_error: Intern serverfel, något gick fel på servern.

Exempel på felrespons

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "hämtning misslyckades"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Slutsats

Genom detta dokument har du fått en förståelse för hur du enkelt kan använda den officiella OpenAI DALL-E:s bildgenereringsfunktioner via OpenAI Images Generations API. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.