Saltar al contenido principal
El servicio de edición de imágenes de OpenAI permite enviar múltiples imágenes y comandos, y recibir imágenes modificadas como resultado. Este documento describe principalmente el proceso de uso de la API OpenAI Images Edits, que nos permite utilizar fácilmente la función de edición de imágenes oficial de OpenAI.

Proceso de Solicitud

Para usar la API OpenAI Images Edits, primero puedes ir a la página OpenAI Images Edits API 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 que te invita a registrarte e iniciar sesión. Después de iniciar sesión o registrarte, serás devuelto automáticamente a la página actual. En la primera solicitud, se te otorgará un crédito gratuito que te permitirá usar esta API sin costo.

Uso Básico

A continuación, puedes usar código para realizar la llamada; a continuación se muestra cómo hacerlo mediante CURL:
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'
Al usar esta interfaz por primera vez, necesitamos completar al menos cuatro elementos: uno es authorization, que se puede seleccionar directamente en la lista desplegable. Otro parámetro es model, que es la categoría del modelo que elegimos usar de la página oficial de OpenAI; aquí tenemos principalmente 1 tipo de modelo, los detalles se pueden ver en los modelos que proporcionamos. Otro parámetro es prompt, que es la palabra clave que ingresamos para generar la imagen. El último parámetro es image, que necesita la ruta de la imagen que se va a editar, como se muestra en la imagen a continuación:

Código de ejemplo en Python que produce el mismo efecto de llamada:
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)
Al usar Python, primero necesitamos importar dos variables de entorno, una OPENAI_BASE_URL, que se puede establecer como https://api.acedata.cloud/openai, y otra variable de credenciales OPENAI_API_KEY, cuyo valor se obtiene de authorization. En Mac OS, puedes establecer las variables de entorno con el siguiente comando:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
Después de la llamada, descubrimos que se generará una imagen gift-basket.png en el directorio actual, el resultado específico es el siguiente:

Así hemos completado la operación de edición de imágenes; actualmente, la tarea oficial de Edits solo admite dos modelos: dall-e-2 y gpt-image-1.

Callback Asíncrono

Dado que el tiempo de edición de imágenes de la API OpenAI Images Edits 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 tanto, esta API también ofrece soporte para callbacks asíncronos. El proceso general es: cuando el cliente inicia la solicitud, se especifica un campo adicional callback_url. Después de que el cliente realiza la solicitud a la API, la API devolverá inmediatamente un resultado que incluye un campo task_id, que representa el ID de la tarea actual. Cuando la tarea se complete, el resultado de la edición de la imagen se enviará al callback_url especificado por el cliente en formato JSON POST, que también incluirá el campo task_id, de modo que el resultado de la tarea se pueda asociar mediante el ID. A continuación, veamos un ejemplo para entender cómo operar específicamente. Primero, el callback de Webhook es un servicio que puede recibir solicitudes HTTP; el desarrollador debe reemplazarlo con la URL de su propio servidor HTTP. Para facilitar la demostración, utilizamos un sitio web de ejemplo de Webhook público https://webhook.site/, donde al abrir el sitio obtendrás una URL de Webhook, como se muestra en la imagen: Copia esta URL y úsala como Webhook; el ejemplo aquí es https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. A continuación, podemos establecer el campo callback_url con la URL de Webhook anterior y llenar los parámetros correspondientes, como se muestra en el siguiente código:
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"
Después de la llamada, puedes notar que recibirás inmediatamente un resultado, como el siguiente:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Después de un momento, podemos observar el resultado de la edición de la imagen en la URL de Webhook, que contiene lo siguiente:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
Se puede ver que en el resultado hay un campo task_id, y el campo data contiene el mismo resultado de edición de imagen 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 y la información correspondiente. 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, has 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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusión

A través de este documento, usted ha aprendido cómo utilizar la API de Ediciones de Imágenes de OpenAI para usar fácilmente las funciones de edición de imágenes oficiales de OpenAI. 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.