Przejdź do głównej treści
OpenAI usługa edycji obrazów pozwala na przesyłanie dowolnej liczby obrazów i poleceń, a następnie zwraca zmodyfikowane obrazy. Dokument ten głównie opisuje proces korzystania z OpenAI Images Edits API, dzięki któremu możemy łatwo korzystać z oficjalnej funkcji edycji obrazów OpenAI.

申请流程

Aby korzystać z OpenAI Images Edits API, najpierw można przejść na stronę OpenAI Images Edits API i kliknąć przycisk „Acquire”, aby uzyskać potrzebne poświadczenia: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zalogowaniu zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę. Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na korzystanie z tego API bez opłat.

基本使用

Następnie można użyć kodu do wywołania, poniżej znajduje się przykład wywołania za pomocą 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'
Podczas pierwszego użycia tego interfejsu musimy wypełnić co najmniej cztery elementy: jeden to authorization, który można wybrać bezpośrednio z rozwijanej listy. Kolejny parametr to model, model to kategoria modelu, którą wybieramy do użycia z oficjalnej strony OpenAI, tutaj mamy głównie 1 model, szczegóły można znaleźć w dostarczonym modelu. Kolejny parametr to prompt, prompt to nasze wprowadzenie do generowania obrazu. Ostatni parametr to image, ten parametr wymaga ścieżki do edytowanego obrazu, który jest pokazany na poniższym obrazku:

Przykład wywołania w Pythonie o tym samym efekcie:
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)
Aby wywołać w Pythonie, musimy najpierw zaimportować dwa zmienne środowiskowe, jedna to OPENAI_BASE_URL, którą można ustawić na https://api.acedata.cloud/openai, a druga to zmienna poświadczeń OPENAI_API_KEY, której wartość pochodzi z authorization, na Mac OS można ustawić zmienne środowiskowe za pomocą następującego polecenia:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
Po wywołaniu zauważymy, że w bieżącym katalogu zostanie wygenerowany obraz gift-basket.png, a konkretny wynik wygląda następująco:

W ten sposób zakończyliśmy operację edycji obrazu, obecnie oficjalne zadania Edits obsługują tylko dwa modele: dall-e-2, gpt-image-1.

异步回调

Ponieważ czas edycji obrazów przez OpenAI Images Edits API może być stosunkowo długi, jeśli API nie odpowiada przez dłuższy czas, żądanie HTTP będzie utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych, dlatego to API oferuje również wsparcie dla asynchronicznych callbacków. Cały proces wygląda następująco: gdy klient wysyła żądanie, dodatkowo określa pole callback_url, po wysłaniu żądania API natychmiast zwraca wynik, zawierający pole task_id, które reprezentuje bieżące ID zadania. Po zakończeniu zadania wynik edycji obrazu zostanie wysłany do określonego przez klienta callback_url w formie POST JSON, w tym również pole task_id, dzięki czemu wyniki zadania można powiązać za pomocą ID. Poniżej przedstawiamy przykład, aby zrozumieć, jak to działa. Po pierwsze, Webhook callback to usługa, która może odbierać żądania HTTP, deweloperzy powinni zastąpić to URL swojego własnego serwera HTTP. Dla wygody demonstracji używamy publicznej strony przykładowej Webhook https://webhook.site/, otwierając tę stronę można uzyskać URL Webhook, jak pokazano na obrazku: Skopiuj ten URL, aby użyć go jako Webhook, przykładowy URL to https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Następnie możemy ustawić pole callback_url na powyższy URL Webhook, a także wypełnić odpowiednie parametry, jak pokazano w poniższym kodzie:
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"
Po wywołaniu można natychmiast otrzymać wynik, jak poniżej:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Po chwili możemy obserwować wynik edycji obrazu na URL Webhook, treść wygląda następująco:
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
Widać, że wynik zawiera pole task_id, a pole data zawiera wyniki edycji obrazu takie same jak w przypadku wywołania synchronicznego, dzięki polu task_id można powiązać zadanie.

错误处理

Podczas wywoływania API, jeśli wystąpią błędy, API zwróci odpowiednie kody błędów i informacje. Na przykład:
  • 400 token_mismatched: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 400 api_not_implemented: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 401 invalid_token: Niedozwolone, nieprawidłowy lub brakujący token autoryzacji.
  • 429 too_many_requests: Zbyt wiele żądań, przekroczono limit.
  • 500 api_error: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

错误响应示例

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

结论

Dzięki temu dokumentowi zrozumiałeś, jak łatwo korzystać z funkcji edycji obrazów oficjalnego OpenAI za pomocą API OpenAI Images Edits. Mamy nadzieję, że ten dokument pomoże Ci lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, skontaktuj się z naszym zespołem wsparcia technicznego.