ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash tworzy i edytuje obrazy z tekstu i referencji wizualnych, ze zmianami kierowanymi przestrzennie, wielojęzycznym tekstem w obrazie i rozkładem na warstwy. ByteDance Seed pozycjonuje Flash pod kątem szybszego generowania, zachowując jego odrębność od wersji Pro skupionej na jakości.
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Szybsza wersja tworzenia obrazów
Seedream 5.0 Flash to model ByteDance Seed do generowania i edycji obrazów w procesach stawiających na szybkość generowania. Przewodnik Pro/Flash producenta opisuje zarówno tworzenie obrazu z tekstu, jak i tworzenie obraz–obraz z jedną lub wieloma referencjami. Odróżnia szybsze generowanie Flash od priorytetu wyższej jakości obrazu w Pro, bez ustanawiania stałego czasu odpowiedzi dla każdego opisu.
Wyróżniające wspólne funkcje to interaktywna edycja, rozkład na warstwy i natywne generowanie wielojęzyczne. Zwykłe generowanie zwraca jeden gotowy obraz. Proces Flash producenta nie obsługuje sekwencyjnego generowania powiązanych obrazów, wyszukiwania w sieci ani strumieniowego zwracania obrazów. Optymalizacja promptu używa trybu standardowego; osobne ustawienie szybkiej optymalizacji należy do Pro, a nie Flash.
Tworzenie z opisu i referencji
Określ zamierzony obraz, główny temat, kompozycję i sposób przedstawienia, a następnie wskaż, czym steruje każda referencja. W grafice produktu oddziel referencję ustalającą przedmiot od tej dostarczającej paletę lub materiał powierzchni. „Zachowaj sylwetkę przedmiotu i kąt widzenia z pierwszego obrazu; drugiego użyj tylko do stonowanej palety tła” nadaje referencjom odrębne role.
Producent zaleca zwięzłe prompty, nie więcej niż 300 znaków chińskich lub 600 słów angielskich. To wskazówka przygotowania, a nie podany twardy próg wejścia tekstowego. Najpierw wymień decydujące wymagania, w tym dokładne słowa do umieszczenia, oczekiwane proporcje i szczegóły, które muszą pozostać niezmienione. Sprawdzaj gotowy obraz względem tej listy, zamiast polegać wyłącznie na jego ogólnym wyglądzie.
Edycja kierowana przestrzennie
Flash może używać punktów, ramek ograniczających, strzałek i swobodnych oznaczeń do wskazywania miejsca edycji. Dostarcz obraz źródłowy wraz z lokalizacją i zmianą. W koncepcji wnętrza zaznacz krzesło, poproś o podmianę tkaniny i wskaż podłogę, ścianę, kąt kamery oraz pobliskie przedmioty do zachowania. Jeśli oznaczenia służą tylko jako wskazówki, wyraźnie poproś o usunięcie ich z gotowego obrazu.
Przewodnik edycji współrzędnych producenta używa znaczników <point> i <bbox> ze współrzędnymi znormalizowanymi do 0–999 względem wskazanego obrazu wejściowego. Punkt zawiera x i y; ramka zawiera współrzędne lewego górnego i prawego dolnego narożnika. Wskaż numer obrazu i docelowy przedmiot, szczególnie gdy ramka obejmuje kilka obiektów lub postaci. W edycji między obrazami odróżnij przedmiot do pobrania z jednej referencji od obszaru docelowego w drugiej.
Przy uzyskiwaniu położenia proporcjonalnego używaj własnych wymiarów wyświetlanego obrazu; powiększenie płótna, przesuwanie widoku lub współrzędne przeglądarki nie są znormalizowanymi współrzędnymi obrazu. Opisz obszary chronione oraz obszar edytowany. Porównaj perspektywę, oświetlenie i szczegóły otoczenia w wyniku z oryginalnym źródłem.
Rozdziel kompozycję na edytowalne warstwy
Rozkład na warstwy to odrębny tryb, który przyjmuje dokładnie jeden obraz i zwraca obraz bazowy oraz maksymalnie 16 niezależnych warstw. Każda warstwa jest plikiem PNG z kanałem alfa. Prompt może nazywać elementy do rozdzielenia, takie jak tytuł, główny temat i dekoracje; bez promptu rozkładu model sam identyfikuje główne elementy.
Wyniki obejmują nazwy warstw, opisy, kolejność nakładania i ramki położenia. Używaj obrazu bazowego z indeksem nakładania zero, a następnie umieszczaj pozostałe warstwy w rosnącej kolejności nakładania. Ramki bezwzględne opisują położenie w wyjściowym obrazie bazowym, a znormalizowane — proporcjonalne położenie na innym płótnie. Zachowaj te zwrócone metadane położenia z plikami obrazów, aby można było odtworzyć oryginalną kompozycję przed jej przestawieniem.
W poprawce plakatu oddziel główną grafikę od tytułu i dekoracji, a następnie sprawdź krawędzie i wszystkie odtworzone obszary tła. Przezroczystą warstwę można edytować jako pojedyncze wejście z kanałem alfa, otrzymując przezroczysty PNG. Opcja przezroczystego tła dotyczy tego procesu edycji obrazu z pojedynczym wejściem; zwykłe generowanie obrazu z tekstu jest osobną operacją.
Kompozycja wielojęzyczna
Oprócz chińskiego i angielskiego producent dokumentuje natywną obsługę promptów i tekstu w obrazie po rosyjsku, arabsku, filipińsku, tajsku, turecku, koreańsku, malajsku, hiszpańsku, portugalsku, indonezyjsku, francusku, niemiecku, wietnamsku i japońsku. Dostarcz dokładne zatwierdzone słowa i kierunek czytania oraz wskaż obszar każdego bloku tekstu. Sprawdź akcenty, połączone znaki, podziały wierszy i małe etykiety w końcowym obrazie.
Pliki referencyjne i specyfikacja wyniku
Generowanie obrazów przyjmuje maksymalnie 10 referencji w JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC lub HEIF. Każda może mieć do 30 MB, oba boki powyżej 14 pikseli, 196–36 000 000 pikseli łącznie i proporcje od 1:16 do 16:1. Rozkład na warstwy wymaga natomiast jednego obrazu JPEG lub PNG o liczbie pikseli od 262 144 do 36 000 000, rozmiarze do 30 MB i proporcjach w tym samym zakresie.
Generowanie oferuje poziomy wyjściowe 1K, 1.5K i 2K, domyślnie 2K, lub podane wprost wymiary z 921 600–4 624 220 pikselami łącznie i proporcjami od 1:16 do 16:1. Oba ograniczenia obowiązują dla własnych wymiarów. Wynik warstwowy używa 1K, 1.5K, 2K lub auto, domyślnie auto; baza i każda warstwa zachowują proporcje własnego źródła.
Gotowe obrazy mają format JPEG lub PNG. Format obrazu bazowego można wybrać osobno, a rozłożone warstwy pozostają PNG z kanałem alfa. Dostarczenie może używać zakodowanych danych obrazu lub odnośników pobierania przechowywanych przez 24 godziny. Zapisz każdy zwrócony obraz i jego metadane do zamierzonego procesu projektowego. Sprawdź tekst, edytowane szczegóły i wyrównanie warstw w rozmiarze, w którym grafika będzie używana.
Ailoot Ultra · Obrazy POST /v1/images/generations bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flashStart
Stwórz jeden gotowy obraz na podstawie tekstowych wytycznych.
- Stwórz statyczny obraz produktu
- Eksploruj koncepcję wizualną
- Zilustruj scenę
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Obrazy
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Obrazy POST /v1/images/generations
- Wejście
text- Wyjście
image- Format wyjściowy
- Plik obrazu
- Liczba wyników
- 1 wynik
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity bytedance-seed/seedream-5-0-flash | Domyślnie— |
Poleprompt | Typstring | WymaganieWymagane | Wartości i limity Minimalna długość: 1 Warunki: Niepusty prompt UTF8. Nie wprowadza się nieudokumentowanego, ogólnego dla producenta limitu znaków. | Domyślnie— |
Polen | Typinteger | WymaganieOpcjonalne | Wartości i limity 1 | Domyślnie1 |
Poleresponse_format | Typstring | WymaganieOpcjonalne | Wartości i limity url, b64_json | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity false | Domyślniefalse |
Kombinacje materiałów wejściowych
Tekst na obraz · Wymagane: prompt
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, prompt |
Parametrmaterial_types | Kontrakttext |
Parametroptional | Kontraktn, response_format, stream |
Parametrn | Kontrakt1 |
Parametrstream | Kontraktfalse |
Parametrresponse_format | Kontrakturl, b64_json |
Parametrreference_images | Kontraktfalse |
Parametredit | Kontraktfalse |
Parametroutput_format_optional | Kontrakt |
Parametrresolution_control | Kontraktnull |
Parametraspect_ratio_control | Kontraktnull |
Parametrother_fields | Kontraktodrzucane poza dokładnie przypiętym wewnętrznym routingiem dostawcy |
Cykl życia: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Rzeczywiście zwrócony task_id lub wpis w bibliotece multimediów
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Wygeneruj jeden obraz na podstawie promptu.
Zapisz każdy element data; url/b64_json to sposoby kodowania wyniku.
Cennik
Jak obliczana jest ostateczna opłata
Wyświetlane stawki służą do oszacowania kosztu przed generowaniem. Ostateczna opłata jest obliczana na podstawie kosztu zarejestrowanego dla pierwotnego generowania. Zmierzony czas trwania wyniku i prognozowane ilości nie stanowią ostatecznej ilości podlegającej rozliczeniu.
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Szacunkowe stawki do porównania
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Przewidywana ilość | Jednostka rozliczeniowa | Opłata |
|---|---|---|---|---|
| KonfiguracjaBazowe stawki za tokeny | Tabela stawekStawka podstawowa | Przewidywana ilość— | Jednostka rozliczeniowa— | Opłata Wejście · Tokeny wejściowe · Szacunek tylko do porównania — / 1K tokenów Wyjście · Tokeny wyjściowe · Szacunek tylko do porównania — / 1K tokenów Wejście · Odczyt cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache, 1 godz. · Szacunek tylko do porównania — / 1K tokenów |
| Konfiguracjaobraz wejściowy | Tabela stawek— | Przewidywana ilość— | Jednostka rozliczeniowaza obraz wejściowy | Opłata Wejście · obraz wejściowy · Szacunek tylko do porównania $0 za obraz wejściowy |
| KonfiguracjaUltra | Tabela stawek— | Przewidywana ilość— | Jednostka rozliczeniowaza obraz wyjściowy | Opłata Wyjście · obraz na wyjściu · Szacunek tylko do porównania $0.036 za obraz wyjściowy |
| KonfiguracjaSzacowany koszt generowania | Tabela stawek— | Przewidywana ilośćszacunek dla jednego generowania | Jednostka rozliczeniowa— | Opłata Wyjście · Szacowany koszt generowania · Szacunek tylko do porównania $0.036 szacunek przed generowaniem Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie. |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Szczegóły taryfy referencyjnej
Referencyjne tabele modelu nie zmieniają wyboru metody, wyceny ani opłat. Naliczane opłaty korzystają ze stawek wybranej metody Ailoot.
Konfiguracje cen obrazów
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Warunki rozliczania | Opłata |
|---|---|---|
| KonfiguracjaObraz wyjściowy | Warunki rozliczaniaNie zadeklarowano wariantu cenowego. | Opłata Wyjście · Obraz wyjściowy $0.036 za obraz |
| KonfiguracjaObraz wejściowy | Warunki rozliczaniaNie zadeklarowano wariantu cenowego. | Opłata Wejście · Obraz wejściowy $0 za obraz |
Równoważne pozycje opisują tę samą opłatę; nie doliczają drugiej opłaty.
Przykładowe żądania
Ailoot Ultra · Obrazy
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "bytedance-seed/seedream-5-0-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
request={'model': 'bytedance-seed/seedream-5-0-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "bytedance-seed/seedream-5-0-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Odbieranie i zapisywanie wyników
Ailoot Ultra · Obrazy
Pobierz każdy zwrócony obraz lub zapisz jego zawartość Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Zachowaj wszystkie ukończone wyniki
Zapisz każdy ukończony obraz; pobierz każdy zwrócony URL lub zdekoduj zawartość Base64.
Zachowaj każdy element danych. Zdekoduj każdą wartość b64_json lub pobierz dane z każdego zwróconego podpisanego adresu URL. Dobierz rozszerzenie nazwy pliku na podstawie rzeczywistego typu MIME lub bajtów.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Jeśli wynik generowania lub edycji obrazu wymaga sprawdzenia, zachowaj pierwotny operation_id/X-Client-Request-ID oraz zwrócone informacje o wyniku. Odzyskaj istniejące własne wyniki z biblioteki multimediów, używając rzeczywistych wartości task_id lub asset_id. Nie wysyłaj ponownie żądania generowania lub edycji ani nie twórz adresu URL do sprawdzania stanu na podstawie operation_id.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Polecreated | Typinteger |
Poledata[].url | Typstring |
Poledata[].b64_json | Typbase64 string |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Odpowiedźserver_error | WarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia | Następny krokZachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra bytedance-seed/seedream-5-0-flash
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · ByteDance Seed: Seedream 5.0 Flash
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:text→image- Jakich pól używa żądanie?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:model,prompt,n,response_format,stream