> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# SeeDream Images Generation API dokumentacja integracji

> ByteDance Seedream Image Generation API guide - Ace Data Cloud

W tym artykule przedstawimy dokumentację integracji SeeDream Images Generation API, która pozwala na generowanie obrazów oficjalnych SeeDream poprzez wprowadzenie niestandardowych parametrów.

## Proces aplikacji

Aby skorzystać z SeeDream Images Generation API, najpierw przejdź do [Ace Data Cloud Console](https://platform.acedata.cloud/console/applications), aby uzyskać swój token API, który należy zachować na przyszłość.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zakończeniu zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę.

**Jeden token API wystarczy do wywołania wszystkich usług platformy, nie ma potrzeby składania osobnych wniosków dla każdej usługi.** Przy pierwszym wniosku otrzymasz darmowy limit, aby móc skorzystać z usługi; gdy limit się wyczerpie, możesz doładować saldo ogólne w [konsoli](https://platform.acedata.cloud/console/coin).

> 📘 Pełna dokumentacja: [SeeDream Images Generation API →](https://platform.acedata.cloud/documents/seedream-images)

## Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, czyli wprowadzeniem słowa kluczowego `prompt`, działania `action`, rozmiaru obrazu `size`, aby uzyskać przetworzony wynik. Najpierw musimy przekazać pole `action`, którego wartość to `generate`, a następnie musimy wprowadzić słowo kluczowe, szczegóły są następujące:

<p>
  <img src="https://cdn.acedata.cloud/seedream_request_body.png" width="500" className="m-auto" />
</p>

Możemy zobaczyć, że ustawiliśmy nagłówki żądania, w tym:

* `accept`: jakiego formatu odpowiedzi oczekujesz, tutaj wpisujemy `application/json`, czyli format JSON.
* `authorization`: klucz do wywołania API, po złożeniu wniosku można go bezpośrednio wybrać z rozwijanej listy.

Dodatkowo ustawiono ciało żądania, w tym:

* `prompt`: słowo kluczowe.
* `model`: model generacji, domyślnie `doubao-seedream-5-0-260128` (SeeDream 5.0 Lite, najnowszy). Obsługuje `doubao-seedream-5-0-pro-260628`, `doubao-seedream-5-0-260128`, `doubao-seedream-4-5-251128`, `doubao-seedream-4-0-250828`, `doubao-seedream-3-0-t2i-250415`, `doubao-seededit-3-0-i2i-250628`. Wśród nich `doubao-seedream-5-0-pro-260628` (SeeDream 5.0 Pro) to flagowy model pojedynczego obrazu, generujący tylko pojedynczy obraz, **nie obsługuje generacji grupowej (`sequential_image_generation`), strumieniowej (`stream`) ani wyszukiwania w sieci (`tools`)**. **`model` musi być przekazany jako pełny ciąg modelu (np. `doubao-seedream-5-0-260128`), przekazanie skrótu takiego jak `doubao-seedream-5.0-lite` zwróci 400.**
* `image`: informacje o wprowadzonym obrazie, obsługuje URL lub kodowanie Base64. W tym przypadku `doubao-seedream-5-0-pro-260628` obsługuje pojedynczy lub wiele obrazów (wiele obrazów 2-10, od drugiego obrazu naliczana jest opłata), `doubao-seedream-5-0-260128`, `doubao-seedream-4-5-251128`, `doubao-seedream-4-0-250828` obsługują pojedynczy lub wiele obrazów, `doubao-seededit-3-0-i2i-250628` obsługuje tylko pojedynczy obraz, `doubao-seedream-3-0-t2i-250415` nie obsługuje tego parametru.
* `size`: określa informacje o rozmiarze generowanego obrazu, obsługuje dwie metody, które nie mogą być mieszane. Metoda 1 | Określenie rozdzielczości generowanego obrazu i opisanie proporcji szerokości i wysokości w naturalnym języku w `prompt`. **Różne modele obsługują różne ustawienia wstępne**: `doubao-seedream-5-0-pro-260628` obsługuje `1K`/`2K`; `doubao-seedream-5-0-260128` obsługuje `2K`/`3K`/`4K`; `doubao-seedream-4-5-251128` obsługuje tylko `2K`/`4K`; `doubao-seedream-4-0-250828` obsługuje `1K`/`2K`/`4K`; `doubao-seedream-3-0-t2i-250415` i `doubao-seededit-3-0-i2i-250628` **nie obsługują ustawień wstępnych**, akceptują tylko metodę 2. Metoda 2 | Określenie wartości pikseli szerokości i wysokości generowanego obrazu: domyślnie `2048x2048`, całkowita liczba pikseli i zakres wartości proporcji szerokości i wysokości różni się w zależności od modelu (na przykład 5.0 Pro całkowity zakres pikseli \[921600, 4194304], 5.0 Lite / 4.5 dolny limit całkowitych pikseli 3,686,400, 4.0 dolny limit 921,600, 3.0-t2i / seededit-3.0-i2i zakres \[512x512, 2048x2048]).
* `seed`: ziarno losowe, używane do kontrolowania losowości generowanego przez modelu treści. Zakres wartości to \[-1, 2147483647]. **Tylko `doubao-seedream-3-0-t2i-250415` obsługuje ten parametr**.
* `sequential_image_generation`: generacja grupowa: na podstawie wprowadzonych treści generowane są powiązane obrazy. `doubao-seedream-5-0-260128`, `doubao-seedream-4-5-251128`, `doubao-seedream-4-0-250828` obsługują ten parametr, domyślnie `disabled`.
* `stream`: kontroluje, czy włączyć tryb strumieniowego wyjścia. `doubao-seedream-5-0-260128`, `doubao-seedream-4-5-251128`, `doubao-seedream-4-0-250828` obsługują ten parametr, domyślnie `false`.
* `guidance_scale`: stopień zgodności wyników modelu z `prompt`, im większa wartość, tym silniejsza zgodność. Zakres wartości \[1, 10]. `doubao-seedream-3-0-t2i-250415` domyślnie 2.5, `doubao-seededit-3-0-i2i-250628` domyślnie 5.5, inne modele nie obsługują.
* `response_format`: określa format zwracany dla generowanego obrazu. Domyślnie `url`, obsługuje również `b64_json`.
* `watermark`: czy dodać znak wodny do generowanego obrazu. Domyślnie `true`.
* `output_format`: określa format pliku generowanego obrazu, obsługuje `jpeg` (domyślnie) i `png`. Tylko `doubao-seedream-5-0-pro-260628` i `doubao-seedream-5-0-260128` obsługują.
* `tools`: konfiguruje narzędzia, które model ma wywołać, obecnie obsługuje `web_search` (wyszukiwanie w sieci). Tylko `doubao-seedream-5-0-260128` obsługuje.
* `callback_url`: URL, na który mają być zwracane wyniki.
* `async`: czy przetwarzać w trybie asynchronicznym. Ustaw na `true`, aby interfejs natychmiast zwrócił `task_id`, nie ma potrzeby podawania `callback_url`, a następnie można uzyskać wyniki poprzez `/seedream/tasks`.

Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na obrazku:

<p>
  <img src="https://cdn.acedata.cloud/seedream_image.png" width="500" className="m-auto" />
</p>

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, tutaj uzyskaliśmy następujący wynik:

```json theme={null}
{
  "success": true,
  "task_id": "81246f86-05ff-4d7d-9553-1013e0c1cd32",
  "trace_id": "ab50a78d-ab1f-457f-a46b-c2259cd5d35b",
  "data": [
    {
      "prompt": "Fotorealistyczne zdjęcie produktu w studiu przedstawiające butelkę perfum z matowego szkła na mokrym czarnym łupku, pojedyncze światło kluczowe z softboxa, krople wody, ciemne, nastrojowe tło, 85mm makro.",
      "size": "2048x2048",
      "image_url": "https://platform2.cdn.acedata.cloud/seedream/901c6af6-e83a-4849-b233-295f6c20bacb.jpg"
    }
  ]
}
```

Zwrócone wyniki zawierają wiele pól, które są opisane poniżej:

* `success`, status zadania generowania wideo w tym momencie.
* `task_id`, ID zadania generowania wideo w tym momencie.
* `trace_id`, ID śledzenia generowania wideo w tym momencie.
* `data`, lista wyników zadania generowania obrazu w tym momencie.
  * `image_url`, link do zadania generowania obrazu w tym momencie.
  * `prompt`, słowo kluczowe.
  * `size`: rozmiar wygenerowanego obrazu w pikselach.

Możemy zobaczyć, że otrzymaliśmy satysfakcjonujące informacje o obrazie, wystarczy, że uzyskamy wygenerowany obraz SeeDream na podstawie linku do obrazu w `data`.

Jeśli chcesz wygenerować odpowiedni kod do integracji, możesz po prostu skopiować wygenerowany kod, na przykład kod CURL wygląda następująco:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/seedream/images' \
-H 'accept: application/json' \
-H 'authorization: Bearer ${token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "model": "doubao-seedream-5-0-260128",
  "prompt": "Fotorealistyczne zdjęcie produktu w studiu przedstawiające butelkę perfum z matowego szkła na mokrym czarnym łupku, pojedyncze światło kluczowe z softboxa, krople wody, ciemne, nastrojowe tło, 85mm makro."
}'
```

## Edytowanie zadania obrazka

Jeśli chcesz edytować dany obraz, najpierw parametr `image` musi zawierać link do obrazu, który ma być edytowany.

* model: model użyty w tym zadaniu edytowania obrazu, `doubao-seedream-5-0-260128`, `doubao-seedream-4-5-251128`, `doubao-seedream-4-0-250828` obsługują pojedyncze lub wiele obrazów, `doubao-seededit-3-0-i2i-250628` obsługuje tylko pojedynczy obraz.
* image: przesyłany obraz do edycji, jeden lub więcej.

Przykład wypełnienia wygląda następująco:

<p>
  <img src="https://cdn.acedata.cloud/seedream_edit.png" width="500" className="m-auto" />
</p>

Odpowiedni kod:

```python theme={null}
import requests

url = "https://api.acedata.cloud/flux/images"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "doubao-seedream-4-0-250828",
  "prompt": "Zachowaj pozę modelu i kształt płynącej odzieży w stanie niezmienionym. Zmień materiał odzieży z srebrnego metalu na całkowicie przezroczystą wodę (lub szkło). Przez płynny przepływ widoczne są szczegóły skóry modelu. Efekt światła i cienia zmienia się z odbicia na refrakcję.",
  "image": ["https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_5_imageToimage.png"],
  "size": "2K",
  "watermark": False
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Klikając uruchom, można zauważyć, że natychmiast otrzymamy wynik, jak poniżej:

```json theme={null}
{
    "success": true,
    "task_id": "c9aaffa2-b8ac-40ff-8468-43e77cb9ddde",
    "trace_id": "131a40c3-2eaf-44c9-af28-c9b408577286",
    "data": [
        {
            "prompt": "Zachowaj pozę modelu i kształt płynącej odzieży w stanie niezmienionym. Zmień materiał odzieży z srebrnego metalu na całkowicie przezroczystą wodę (lub szkło). Przez płynny przepływ widoczne są szczegóły skóry modelu. Efekt światła i cienia zmienia się z odbicia na refrakcję.",
            "size": "2048x2048",
            "image_url": "https://platform.cdn.acedata.cloud/seedream/3e88db7e-4771-4f6a-adbd-5ae4590c5d59.jpg"
        }
    ]
}
```

Można zauważyć, że wygenerowany efekt to efekt edytowania oryginalnego obrazu, a wynik jest podobny do powyższego.

## Asynchroniczne wywołanie zwrotne

Ponieważ czas generowania API SeeDream Images Generation jest stosunkowo długi, wynosi około 1-2 minut, 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 wywołań zwrotnych.

Cały proces wygląda następująco: klient inicjuje żądanie, dodatkowo określając pole `callback_url`, po czym klient wysyła żądanie API, a API natychmiast zwraca wynik, zawierający pole `task_id`, które reprezentuje aktualne ID zadania. Po zakończeniu zadania wynik wygenerowanego obrazu zostanie wysłany do określonego przez klienta `callback_url` w formie POST JSON, który również zawiera pole `task_id`, dzięki czemu wyniki zadania można powiązać za pomocą ID.

Jeśli nie masz publicznego adresu do wywołania zwrotnego, możesz nie określać `callback_url`, a zamiast tego ustawić pole `async` na `true` w żądaniu. W takim przypadku interfejs również natychmiast zwróci `task_id`, ale nie wyśle wyniku, musisz użyć tego `task_id`, aby wywołać interfejs `/seedream/tasks`, aby sprawdzić status zadania i uzyskać ostateczny wynik.

Poniżej przedstawiamy przykład, aby zrozumieć, jak dokładnie to działa.

Klikając uruchom, można zauważyć, że natychmiast otrzymamy wynik, jak poniżej:

```
{
  "task_id": "c9aaffa2-b8ac-40ff-8468-43e77cb9ddde"
}
```

Zawartość wygląda następująco:

```json theme={null}
{
    "success": true,
    "task_id": "c9aaffa2-b8ac-40ff-8468-43e77cb9ddde",
    "trace_id": "131a40c3-2eaf-44c9-af28-c9b408577286",
    "data": [
        {
            "prompt": "Zachowaj pozę modelu i kształt płynącej odzieży w stanie niezmienionym. Zmień materiał odzieży z srebrnego metalu na całkowicie przezroczystą wodę (lub szkło). Przez płynny przepływ widoczne są szczegóły skóry modelu. Efekt światła i cienia zmienia się z odbicia na refrakcję.",
            "size": "2048x2048",
            "image_url": "https://platform.cdn.acedata.cloud/seedream/3e88db7e-4771-4f6a-adbd-5ae4590c5d59.jpg"
        }
    ]
}
```

Można zauważyć, że w wynikach znajduje się pole `task_id`, a inne pola są podobne do powyższych, dzięki czemu można powiązać zadanie za pomocą tego pola.

## Obsługa błędów

Podczas wywoływania API, jeśli wystąpią błędy, API zwróci odpowiedni kod błędu 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`: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
* `429 too_many_requests`: Zbyt wiele żądań, przekroczono limit szybkości.
* `500 api_error`: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

### Przykład odpowiedzi błędu

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

## Wnioski

Dzięki temu dokumentowi zrozumiałeś, jak korzystać z API generowania obrazów SeeDream, aby tworzyć obrazy na podstawie wprowadzonych słów kluczowych. 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.
