Saltar al contenido principal
DALL-E 3 es un modelo de generación de imágenes desarrollado por OpenAI en dos versiones, que puede generar imágenes de alta calidad a partir de descripciones de texto. Este documento describe principalmente el proceso de uso de la API de Generación de Imágenes de OpenAI, que nos permite utilizar fácilmente la función de generación de imágenes de DALL-E de OpenAI.

Proceso de Solicitud

Para utilizar la API de Generación de Imágenes de OpenAI, primero puedes ir a la página de API de Generación de Imágenes de OpenAI y hacer clic en el botón “Acquire” para obtener las credenciales necesarias para la solicitud: Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión, invitándote a registrarte e iniciar sesión. Después de registrarte e iniciar sesión, volverás automáticamente a la página actual. En la primera solicitud, se te otorgará un crédito gratuito, lo que te permitirá utilizar esta API de forma gratuita.

Uso Básico

A continuación, puedes completar el contenido correspondiente en la interfaz, como se muestra en la imagen:

En la primera vez que utilices esta interfaz, necesitarás completar al menos tres campos: uno es authorization, que puedes seleccionar directamente en la lista desplegable. El otro parámetro es model, que es la categoría del modelo de OpenAI DALL-E que elegimos utilizar; aquí tenemos principalmente 1 tipo de modelo, los detalles se pueden ver en los modelos que proporcionamos. El último parámetro es prompt, que es la palabra clave que ingresamos para generar la imagen. También puedes notar que a la derecha hay un código de llamada correspondiente que puedes copiar y ejecutar directamente, o puedes hacer clic en el botón “Try” para realizar una prueba.

Código de ejemplo en 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)
Después de la llamada, encontramos que el resultado devuelto es el siguiente:
{
  "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"
    }
  ]
}
El resultado devuelto tiene varios campos, que se describen a continuación:
  • created, el ID de la generación de esta imagen, utilizado para identificar de manera única esta tarea.
  • data, que contiene la información del resultado de la generación de la imagen.
Dentro de data se incluye la información específica de la imagen generada por el modelo, donde el url es el enlace detallado de la imagen generada, como se puede ver en la imagen.

Parámetro de Calidad de Imagen quality

A continuación, se describirá cómo configurar algunos parámetros detallados del resultado de la generación de imágenes, donde el parámetro de calidad de imagen quality incluye dos tipos: el primero standard indica que se generará una imagen estándar, y el otro hd indica que la imagen creada tendrá detalles más finos y mayor consistencia. A continuación, configuramos el parámetro de calidad de imagen como standard, la configuración específica se muestra en la siguiente imagen:

También puedes notar que a la derecha hay un código de llamada correspondiente que puedes copiar y ejecutar directamente, o puedes hacer clic en el botón “Try” para realizar una prueba.

Código de ejemplo en 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)
Después de la llamada, encontramos que el resultado devuelto es el siguiente:
{
  "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"
    }
  ]
}
El resultado devuelto es consistente con el contenido del uso básico, y se puede ver que la imagen generada con el parámetro de calidad de imagen standard es la siguiente:

Con la misma operación anterior, simplemente configurando el parámetro de calidad de imagen como hd, se puede obtener la imagen que se muestra a continuación:

Se puede observar que la imagen generada con hd tiene detalles más finos y mayor consistencia en comparación con la generada con standard.

Parámetro de Tamaño de Imagen size

Podemos configurar el tamaño de la imagen generada, y podemos realizar la siguiente configuración. A continuación, configuramos el tamaño de la imagen a 1024 * 1024, la configuración específica se muestra en la siguiente imagen:

Al mismo tiempo, puede notar que a la derecha hay un código de llamada correspondiente que puede copiar y ejecutar directamente, o puede hacer clic en el botón “Try” para realizar pruebas.

Código de llamada de ejemplo en 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)
Después de la llamada, encontramos que el resultado devuelto es el siguiente:
{
  "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"
    }
  ]
}
El resultado devuelto es consistente con el contenido de uso básico, se puede ver que el tamaño de la imagen generada es 1024 * 1024, como se muestra en la siguiente imagen:

Con la misma operación anterior, simplemente cambiando el tamaño de la imagen a 1792 * 1024, se puede obtener la imagen que se muestra a continuación: Se puede ver que el tamaño de la imagen es claramente diferente, además se pueden configurar más tamaños, para más detalles consulte la documentación en nuestro sitio web.

Parámetro de estilo de imagen style

El parámetro de estilo de imagen style contiene dos parámetros, el primero vivid indica que la imagen generada es más vívida, y el segundo natural indica que la imagen generada es más natural. A continuación, configuramos el parámetro de estilo de imagen a vivid, la configuración específica se muestra en la siguiente imagen:

Al mismo tiempo, puede notar que a la derecha hay un código de llamada correspondiente que puede copiar y ejecutar directamente, o puede hacer clic en el botón “Try” para realizar pruebas.

Código de llamada de ejemplo en 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)
Después de la llamada, encontramos que el resultado devuelto es el siguiente:
{
  "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"
    }
  ]
}
El resultado devuelto es consistente con el contenido de uso básico, se puede ver que la imagen generada con el parámetro de estilo vivid es la siguiente:

Con la misma operación anterior, simplemente cambiando el parámetro de estilo de imagen a natural, se puede obtener la imagen que se muestra a continuación:

Se puede ver que vivid genera imágenes más vívidas y realistas que natural.

Parámetro de formato de enlace de imagen response_format

El último parámetro de formato de enlace de imagen response_format también tiene dos tipos, el primero b64_json es para codificar el enlace de la imagen en Base64, y el segundo url es el enlace de imagen normal, que se puede ver directamente. A continuación, configuramos el parámetro de formato de enlace de imagen a url, la configuración específica se muestra en la siguiente imagen:

Al mismo tiempo, puede notar que a la derecha hay un código de llamada correspondiente que puede copiar y ejecutar directamente, o puede hacer clic en el botón “Try” para realizar pruebas.

Código de llamada de ejemplo en 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)
Después de la llamada, encontramos que el resultado devuelto es el siguiente:
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Una encantadora representación de un bebé nutria marina. La nutria se ve descansando serenamente sobre su espalda en medio de las suaves olas azules del océano. El pelaje del bebé nutria es una mezcla entrañable de suaves tonos marrón grisáceo, brillando sutilmente bajo la luz del sol tenue. Sus pequeñas patas están tocando, levantadas ligeramente hacia el cielo como si estuvieran jugando con un objeto invisible. Sus ojos redondos y expresivos están abiertos de curiosidad, chispeando con vida e inocencia. Usa un estilo realista para evocar el hábitat natural de la nutria y su exterior adorablemente esponjoso.",
      "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"
    }
  ]
}
El resultado devuelto es consistente con el contenido utilizado, se puede ver que el enlace de la imagen con el parámetro de formato url de la imagen generada es Imagen URL esto es accesible directamente, el contenido de la imagen se muestra a continuación:

Con la misma operación anterior, solo se necesita cambiar el parámetro de formato de enlace de la imagen a b64_json, se puede obtener el enlace de la imagen codificada en Base64, el resultado específico se muestra a continuación:
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Una imagen encantadora de una joven bebé nutria marina. La nutria flota suavemente en un mar azul tranquilo, disfrutando de los cálidos rayos dorados del sol que caen desde un cielo claro arriba. El pelaje de la nutria es de un rico marrón chocolate, y parece increíblemente suave y esponjoso. Los ojos de la nutria son brillantes y expresivos, llenos de curiosidad infantil y alegría. Tiene pequeñas orejas puntiagudas y una nariz parecida a un botón que añade a su ternura general. En el mar a su alrededor, se pueden ver gotas de agua centelleantes, animadas por la luz del sol, la vista es sin duda encantadora."
    }
  ]
}

Callback asíncrono

Dado que el tiempo de generación de imágenes de la API de OpenAI puede ser relativamente largo, si la API no responde durante mucho tiempo, la solicitud HTTP mantendrá la conexión, lo que provocará un consumo adicional de recursos del sistema, por lo que esta API también ofrece soporte para callbacks asíncronos. El flujo general es: cuando el cliente inicia la solicitud, especifica un campo adicional callback_url, después de que el cliente inicia la solicitud de API, la API devolverá inmediatamente un resultado que contiene un campo de información task_id, que representa el ID de la tarea actual. Cuando la tarea se completa, el resultado de la imagen generada se enviará a la callback_url especificada por el cliente en forma de JSON POST, que también incluye el campo task_id, de esta manera el resultado de la tarea se puede asociar a través del ID. A continuación, entenderemos cómo operar específicamente a través de un ejemplo. Primero, el callback de Webhook es un servicio que puede recibir solicitudes HTTP, los desarrolladores deben reemplazarlo con la URL de su propio servidor HTTP. Para facilitar la demostración, se utiliza un sitio web de muestra de Webhook público https://webhook.site/, al abrir este sitio se obtiene una URL de Webhook, como se muestra en la imagen: Copie esta URL y puede usarla como Webhook, el ejemplo aquí es https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. A continuación, podemos establecer el campo callback_url a la URL de Webhook anterior, al mismo tiempo que llenamos los parámetros correspondientes, como se muestra en el siguiente código:
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": "Una linda bebé nutria marina",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Al hacer clic en ejecutar, se puede observar que se obtiene inmediatamente un resultado, como se muestra a continuación:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Después de un momento, podemos observar el resultado de la imagen generada en la URL de Webhook, el contenido es el siguiente:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Una imagen encantadora que muestra una joven nutria marina...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
Se puede ver que en el resultado hay un campo task_id, el campo data contiene el mismo resultado de generación de imágenes que en la llamada sincrónica, a través del campo task_id se puede realizar la asociación de la tarea.

Manejo de errores

Al llamar a la API, si se encuentra con un error, la API devolverá el código de error correspondiente y la información. Por ejemplo:
  • 400 token_mismatched: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 400 api_not_implemented: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 401 invalid_token: No autorizado, token de autorización inválido o faltante.
  • 429 too_many_requests: Demasiadas solicitudes, ha superado el límite de tasa.
  • 500 api_error: Error interno del servidor, algo salió mal en el servidor.

Ejemplo de respuesta de error

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "la recuperación falló"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusión

A través de este documento, usted ha aprendido cómo utilizar la API de Generación de Imágenes de OpenAI para usar fácilmente la función de generación de imágenes oficial de OpenAI DALL-E. Esperamos que este documento le ayude a integrar y utilizar mejor esta API. Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de soporte técnico.