Vai al contenuto principale
DALL-E 3 è un modello di generazione di immagini sviluppato da OpenAI, in due versioni, in grado di generare immagini di alta qualità in base a descrizioni testuali. Questo documento descrive principalmente il processo di utilizzo dell’API OpenAI Images Generations, che ci consente di utilizzare facilmente la funzione di generazione di immagini ufficiale di OpenAI DALL-E.

Processo di richiesta

Per utilizzare l’API OpenAI Images Generations, puoi prima andare alla pagina OpenAI Images Generations API e cliccare sul pulsante “Acquire” per ottenere le credenziali necessarie per la richiesta: Se non hai ancora effettuato il login o la registrazione, verrai automaticamente reindirizzato alla pagina di accesso che ti invita a registrarti e accedere; dopo aver effettuato il login o la registrazione, verrai automaticamente riportato alla pagina corrente. Alla prima richiesta, verrà fornito un credito gratuito, che ti consente di utilizzare gratuitamente questa API.

Utilizzo di base

Successivamente, puoi compilare i contenuti corrispondenti nell’interfaccia, come mostrato nell’immagine:

Quando utilizzi per la prima volta questa interfaccia, è necessario compilare almeno tre contenuti: uno è authorization, che puoi selezionare direttamente dal menu a discesa. Un altro parametro è model, model è la categoria del modello di OpenAI DALL-E che scegli di utilizzare; qui abbiamo principalmente 1 tipo di modello, i dettagli possono essere consultati nei modelli forniti. L’ultimo parametro è prompt, prompt è la parola chiave che inseriamo per generare l’immagine. Puoi anche notare che a destra c’è il codice di chiamata corrispondente generato, puoi copiare il codice e eseguirlo direttamente, oppure cliccare direttamente sul pulsante “Try” per testare.

Esempio di codice di chiamata 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 = requests.post(url, json=payload, headers=headers)
print(response.text)
Dopo la chiamata, abbiamo trovato il risultato restituito come segue:
{
  "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"
    }
  ]
}
Il risultato restituito ha diversi campi, descritti come segue:
  • created, l’ID generato per questa generazione di immagini, utilizzato per identificare univocamente questo compito.
  • data, contiene le informazioni sui risultati della generazione dell’immagine.
Tra cui data contiene le informazioni specifiche sull’immagine generata dal modello, il cui url è il link ai dettagli dell’immagine generata, come mostrato nell’immagine.

Parametro di qualità dell’immagine quality

Successivamente, verrà descritto come impostare alcuni parametri dettagliati per i risultati della generazione dell’immagine, tra cui il parametro di qualità dell’immagine quality, che include due opzioni: la prima standard indica che l’immagine generata è standard, l’altra hd indica che l’immagine creata ha dettagli più fini e maggiore coerenza. Impostiamo il parametro di qualità dell’immagine su standard, le impostazioni specifiche sono mostrate nell’immagine seguente:

Puoi anche notare che a destra c’è il codice di chiamata corrispondente generato, puoi copiare il codice e eseguirlo direttamente, oppure cliccare direttamente sul pulsante “Try” per testare.

Esempio di codice di chiamata 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",
    "quality": "standard"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Dopo la chiamata, abbiamo trovato il risultato restituito come segue:
{
  "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"
    }
  ]
}
Il risultato restituito è coerente con il contenuto dell’utilizzo di base, e puoi vedere che l’immagine generata con il parametro di qualità standard è mostrata nell’immagine seguente:

Con la stessa operazione sopra, basta impostare il parametro di qualità dell’immagine su hd, e puoi ottenere l’immagine mostrata nell’immagine seguente:

Puoi vedere che l’immagine generata con hd ha dettagli più fini e maggiore coerenza rispetto a quella generata con standard.

Parametro delle dimensioni dell’immagine size

Possiamo anche impostare le dimensioni delle immagini generate, possiamo effettuare le seguenti impostazioni. Impostiamo le dimensioni dell’immagine a 1024 * 1024, le impostazioni specifiche sono mostrate nell’immagine sottostante:

Allo stesso tempo, puoi notare che a destra ci sono i codici di chiamata corrispondenti, puoi copiare il codice e eseguirlo direttamente, oppure puoi semplicemente cliccare sul pulsante “Try” per testare.

Codice di esempio per la chiamata 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)
Dopo la chiamata, abbiamo scoperto che il risultato restituito è il seguente:
{
  "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"
    }
  ]
}
Il risultato restituito è coerente con il contenuto di base utilizzato, possiamo vedere che le dimensioni dell’immagine generate sono 1024 * 1024, come mostrato nell’immagine sottostante:

Con la stessa operazione sopra, basta impostare le dimensioni dell’immagine a 1792 * 1024, e possiamo ottenere l’immagine mostrata qui sotto: Possiamo vedere che le dimensioni dell’immagine sono chiaramente diverse, inoltre è possibile impostare ulteriori dimensioni, per maggiori dettagli fare riferimento alla nostra documentazione ufficiale.

Parametro di stile dell’immagine style

Il parametro di stile dell’immagine style contiene due parametri, il primo vivid indica che l’immagine generata è più vivace, l’altro natural indica che l’immagine generata è più naturale. Impostiamo il parametro di stile dell’immagine a vivid, le impostazioni specifiche sono mostrate nell’immagine sottostante:

Allo stesso tempo, puoi notare che a destra ci sono i codici di chiamata corrispondenti, puoi copiare il codice e eseguirlo direttamente, oppure puoi semplicemente cliccare sul pulsante “Try” per testare.

Codice di esempio per la chiamata 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)
Dopo la chiamata, abbiamo scoperto che il risultato restituito è il seguente:
{
  "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"
    }
  ]
}
Il risultato restituito è coerente con il contenuto di base utilizzato, possiamo vedere che l’immagine generata con il parametro di stile vivid è mostrata nell’immagine sottostante:

Con la stessa operazione sopra, basta impostare il parametro di stile dell’immagine a natural, e possiamo ottenere l’immagine mostrata qui sotto:

Possiamo vedere che vivid genera immagini più vivaci e realistiche rispetto a natural. L’ultimo parametro di formato del link dell’immagine response_format ha anche due opzioni, la prima b64_json è la codifica Base64 del link dell’immagine, l’altra url è il normale link dell’immagine, che può essere visualizzato direttamente. Impostiamo il parametro di formato del link dell’immagine a url, le impostazioni specifiche sono mostrate nell’immagine sottostante:

Allo stesso tempo, puoi notare che a destra ci sono i codici di chiamata corrispondenti, puoi copiare il codice e eseguirlo direttamente, oppure puoi semplicemente cliccare sul pulsante “Try” per testare.

Codice di esempio per la chiamata 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)
Dopo la chiamata, abbiamo scoperto che il risultato restituito è il seguente:
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Una rappresentazione affascinante di un cucciolo di lontra marina. La lontra è vista riposare serenamente sulla schiena tra le dolci onde blu dell'oceano. Il pelo del cucciolo di lontra è un adorabile mix di morbide sfumature marrone grigiastro, che brillano sottilmente alla luce solare attenuata. Le sue piccole zampe sono toccanti, sollevate leggermente verso il cielo come se stessero giocando con un oggetto invisibile. I suoi occhi rotondi ed espressivi sono spalancati per curiosità, brillando di vita e innocenza. Usa uno stile realistico per evocare l'habitat naturale della lontra e il suo adorabile aspetto soffice.",
      "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"
    }
  ]
}
Il risultato restituito è coerente con il contenuto di base utilizzato, e il formato del link dell’immagine con i parametri è url, il link dell’immagine generata è Immagine URL questo è accessibile direttamente, il contenuto dell’immagine è mostrato qui sotto:

Con la stessa operazione sopra, è possibile ottenere il risultato del link dell’immagine codificato in Base64, impostando il parametro del formato dell’immagine a b64_json, il risultato specifico è mostrato qui sotto:
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Un'immagine affascinante di un giovane cucciolo di lontra marina. La lontra fluttua dolcemente su un mare blu calmo, godendosi i caldi raggi dorati del sole che filtrano da un cielo sereno sopra. Il pelo della lontra è di un ricco marrone cioccolato, e sembra incredibilmente morbido e soffice. Gli occhi della lontra sono luminosi ed espressivi, pieni di curiosità infantile e gioia. Ha piccole orecchie a punta e un naso a bottone che aggiunge al suo complessivo fascino. Nel mare intorno a lei, si possono vedere gocce d'acqua scintillanti, illuminate dalla luce del sole, la vista è certamente deliziosa."
    }
  ]
}

Callback asincrono

Poiché il tempo di generazione delle immagini dell’API OpenAI potrebbe essere relativamente lungo, se l’API non risponde per un lungo periodo, la richiesta HTTP manterrà la connessione, causando un consumo aggiuntivo di risorse di sistema, quindi questa API offre anche supporto per callback asincroni. Il flusso complessivo è: quando il client invia la richiesta, specifica un campo callback_url aggiuntivo, dopo che il client ha inviato la richiesta API, l’API restituirà immediatamente un risultato, contenente un campo task_id, che rappresenta l’ID del compito corrente. Quando il compito è completato, il risultato dell’immagine generata verrà inviato al callback_url specificato dal client in formato JSON POST, che include anche il campo task_id, in modo che il risultato del compito possa essere associato tramite l’ID. Di seguito, vediamo un esempio per capire come operare concretamente. Innanzitutto, il callback Webhook è un servizio in grado di ricevere richieste HTTP, gli sviluppatori dovrebbero sostituirlo con l’URL del server HTTP che hanno costruito. Qui, per comodità di dimostrazione, utilizziamo un sito Web pubblico di esempio per Webhook https://webhook.site/, aprendo questo sito si ottiene un URL Webhook, come mostrato nell’immagine: Copia questo URL e puoi usarlo come Webhook, l’esempio qui è https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Successivamente, possiamo impostare il campo callback_url su questo URL Webhook, insieme ai parametri corrispondenti, come mostrato nel seguente codice:
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": "Un adorabile cucciolo di lontra marina",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Cliccando su Esegui, si può notare che si ottiene immediatamente un risultato, come segue:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Dopo un momento, possiamo osservare il risultato dell’immagine generata sull’URL Webhook, il contenuto è il seguente:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Un'immagine deliziosa che mostra un giovane cucciolo di lontra marina...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
Si può notare che nel risultato c’è un campo task_id, il campo data contiene i risultati della generazione dell’immagine come nella chiamata sincrona, tramite il campo task_id è possibile realizzare l’associazione del compito.

Gestione degli errori

Quando si chiama l’API, se si verifica un errore, l’API restituirà il codice di errore e le informazioni corrispondenti. Ad esempio:
  • 400 token_mismatched: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 400 api_not_implemented: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 401 invalid_token: Non autorizzato, token di autorizzazione non valido o mancante.
  • 429 too_many_requests: Troppe richieste, hai superato il limite di frequenza.
  • 500 api_error: Errore interno del server, qualcosa è andato storto sul server.

Esempio di risposta di errore

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

Conclusione

Attraverso questo documento, hai appreso come utilizzare facilmente le funzionalità di generazione di immagini dell’API OpenAI Images Generations ufficiale di OpenAI DALL-E. Speriamo che questo documento ti aiuti a integrare e utilizzare meglio questa API. Se hai domande, non esitare a contattare il nostro team di supporto tecnico.