Hoppa till huvudinnehåll
OpenAI bildredigeringstjänst kan ta emot valfritt antal bilder och instruktioner och returnera de modifierade bilderna. Detta dokument beskriver huvudsakligen användningsflödet för OpenAI Images Edits API, vilket gör att vi enkelt kan använda den officiella OpenAI bildredigeringsfunktionen.

Ansökningsprocess

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

Grundläggande Användning

Därefter kan du använda kod för att anropa API:et. Nedan är ett exempel på hur man gör det med 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'
Vid första användning av detta gränssnitt behöver vi fylla i minst fyra fält. Ett är authorization, som du kan välja direkt från rullgardinsmenyn. En annan parameter är model, där model är den OpenAI-modell vi väljer att använda. Här har vi huvudsakligen 1 typ av modell, detaljer kan ses i de modeller vi tillhandahåller. En annan parameter är prompt, där prompt är den text vi anger för att generera bilden. Den sista parametern är image, som är sökvägen till den bild som ska redigeras, som visas nedan:

Ett motsvarande exempel på Python-anrop:
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)
För att använda Python-anropet behöver vi först importera två miljövariabler, en OPENAI_BASE_URL, som kan sättas till https://api.acedata.cloud/openai, och en annan för autentisering OPENAI_API_KEY, vars värde hämtas från authorization. På Mac OS kan du ställa in miljövariablerna med följande kommando:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
Efter anropet kommer vi att se att en bild gift-basket.png genereras i den aktuella katalogen, med följande resultat:

Så här har vi slutfört redigeringsoperationen av bilden. För närvarande stöder den officiella Edits-uppgiften endast två modeller, nämligen: dall-e-2, gpt-image-1.

Asynkron Återkoppling

Eftersom OpenAI Images Edits API:s bildredigering kan ta relativt lång tid, om API:et inte svarar under en längre tid, kommer HTTP-förfrågan att hålla anslutningen öppen, vilket leder till extra systemresursförbrukning. Därför erbjuder detta API också stöd för asynkron återkoppling. Det övergripande flödet är: när klienten initierar en begäran, specificerar den ett extra fält callback_url. Efter att klienten har initierat API-begäran kommer API:et omedelbart att returnera ett resultat som innehåller ett task_id-fält, vilket representerar det aktuella uppgifts-ID:t. När uppgiften är slutförd kommer resultatet av bildredigeringen att skickas till klientens angivna callback_url i POST JSON-format, vilket också inkluderar task_id-fältet, så att uppgiftsresultatet kan kopplas samman med ID:t. Låt oss förstå hur man gör detta genom ett exempel. Först är Webhook-återkopplingen en tjänst som kan ta emot HTTP-förfrågningar. Utvecklare bör ersätta detta med URL:en till sin egen HTTP-server. För att underlätta demonstration använder vi en offentlig Webhook-exempelsida https://webhook.site/, där du kan öppna sidan för att få en Webhook-URL, som visas nedan: Kopiera denna URL så kan den användas som Webhook. Exemplet här ä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 och fylla i motsvarande parametrar, som i följande kod:
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"
Efter anropet kan vi omedelbart få ett resultat, som följer:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Vänta en stund, så kan vi observera resultatet av bildredigeringen på Webhook-URL:en, som innehåller följande:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
Vi kan se att resultatet innehåller ett task_id-fält, och data-fältet innehåller samma bildredigeringsresultat som vid synkront anrop. Genom task_id-fältet kan vi koppla uppgiften.

Felhantering

Vid anrop av API:et, om det uppstår fel, kommer API:et att returnera motsvarande felkod och meddelande. Till exempel:
  • 400 token_mismatched: Felaktig begäran, troligen på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig begäran, troligen på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obefogad, ogiltig eller saknad autentiseringstoken.
  • 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": "fetch failed"
  },
  "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:s bildredigeringsfunktioner via OpenAI Images Edits 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.