ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash vytváří a upravuje obrázky z textu a vizuálních referencí s prostorově vedenými změnami, vícejazyčným textem v obrazu a rozkladem na vrstvy. ByteDance Seed určuje Flash pro rychlejší generování a odlišuje jej od edice Pro zaměřené na kvalitu.
O modelu
Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.
Rychlejší edice pro tvorbu obrázků
Seedream 5.0 Flash je model ByteDance Seed pro generování a úpravy obrázků v postupech upřednostňujících rychlost tvorby. Příručka výrobce Pro/Flash popisuje tvorbu z textu i image-to-image s jednou nebo více referencemi. Odlišuje rychlejší generování Flash od priority vyšší obrazové kvality Pro, aniž by stanovovala pevnou dobu odpovědi pro každé zadání.
Určujícími společnými funkcemi jsou interaktivní úpravy, rozklad na vrstvy a nativní vícejazyčné generování. Běžné generování vrací jeden hotový obrázek. Postup Flash výrobce nepodporuje sekvenční generování souvisejících obrázků, webové vyhledávání ani streamovaný obrazový výstup. Optimalizace promptu používá režim standard; samostatné ovládání rychlé optimalizace patří Pro, nikoli Flash.
Tvorba ze zadání a referencí
Uveďte zamýšlený obraz, hlavní objekt, kompozici a vizuální zpracování a poté určete, co každá reference řídí. U produktového vizuálu oddělte referenci určující předmět od reference dodávající paletu či povrchový materiál. „Zachovej siluetu předmětu a úhel pohledu z prvního obrázku; druhý obrázek použij pouze pro tlumenou paletu pozadí“ dává referencím odlišné role.
Výrobce doporučuje stručné prompty, nejvýše 300 čínských znaků nebo 600 anglických slov. Jde o doporučení pro přípravu, nikoli uvedenou pevnou hranici textového vstupu. Rozhodující požadavky vypište jako první včetně přesného znění, které se má objevit, požadovaného poměru stran a detailů, které musí zůstat beze změny. Hotový obrázek kontrolujte proti tomuto seznamu místo spoléhání jen na celkový vzhled.
Prostorově vedené úpravy
Flash může používat body, ohraničující rámečky, šipky a volné značky k určení místa úpravy. Dodejte zdrojový obrázek spolu s místem a změnou. U interiérového konceptu označte židli, požadujte nahrazení látky a určete podlahu, stěnu, úhel kamery a okolní předměty k zachování. Pokud značky slouží jen jako vodítko, výslovně požadujte jejich odstranění z hotového obrázku.
Příručka výrobce pro úpravy souřadnicemi používá značky <point> a <bbox> se souřadnicemi normalizovanými na 0–999 vůči určenému vstupnímu obrázku. Bod obsahuje x a y; rámeček obsahuje souřadnice levého horního a pravého dolního rohu. Určete číslo obrázku a cílový předmět, zejména když rámeček obsahuje několik objektů. U úpravy mezi obrázky odlište předmět převzatý z jedné reference a cílovou oblast v jiné.
Při získávání poměrné polohy používejte vlastní rozměry zobrazeného obrázku; přiblížení plátna, posun pohledu ani souřadnice prohlížeče nejsou normalizovanými souřadnicemi obrázku. Popište chráněné i upravované oblasti. Perspektivu, osvětlení a okolní detaily výsledku porovnejte s původním zdrojem.
Rozdělte kompozici na editovatelné vrstvy
Rozklad na vrstvy je samostatný režim, který přijímá právě jeden obrázek a vrací základní obrázek plus až 16 nezávislých vrstev. Každá vrstva je PNG s alfa kanálem. Prompt může pojmenovat prvky k oddělení, například nadpis, hlavní objekt a dekorace; bez promptu pro rozklad model hlavní prvky určí automaticky.
Výsledky zahrnují názvy vrstev, popisy, pořadí skládání a rámečky umístění. Základní obrázek použijte s indexem skládání nula a ostatní vrstvy umisťujte ve vzestupném pořadí skládání. Absolutní rámečky popisují umístění ve výstupním základním obrázku; normalizované rámečky popisují poměrné umístění na jiném plátně. Tato vrácená metadata umístění uchovejte s obrazovými soubory, aby šlo původní kompozici rekonstruovat před jejím přeuspořádáním.
U revize plakátu oddělte hlavní grafiku od titulku a dekorací a poté prohlédněte hrany i případnou obnovenou oblast pozadí. Průhlednou vrstvu lze upravit jako jediný vstup s alfa kanálem a průhledným výstupem PNG. Možnost průhledného pozadí je omezena na tento postup úpravy s jediným obrazovým vstupem; běžné generování z textu je samostatnou operací.
Vícejazyčná kompozice
Kromě čínštiny a angličtiny výrobce dokumentuje nativní podporu promptů a textu v obraze pro ruštinu, arabštinu, filipínštinu, thajštinu, turečtinu, korejštinu, malajštinu, španělštinu, portugalštinu, indonéštinu, francouzštinu, němčinu, vietnamštinu a japonštinu. Dodejte přesné schválené znění a směr čtení a určete oblast každého textového bloku. Ve finálním obrázku zkontrolujte diakritiku, spojené znaky, zalomení řádků a malé popisky.
Referenční soubory a specifikace výstupu
Generování obrázků přijímá až 10 referencí ve formátu JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC nebo HEIF. Každá může mít do 30 MB, obě strany nad 14 pixelů, celkem 196–36 000 000 pixelů a poměr stran od 1:16 do 16:1. Rozklad na vrstvy místo toho vyžaduje jeden JPEG nebo PNG o ploše 262 144–36 000 000 pixelů, do 30 MB, v témže rozsahu poměrů.
Generování nabízí výstupní úrovně 1K, 1.5K a 2K s výchozím 2K nebo explicitní rozměry s celkovou plochou 921 600–4 624 220 pixelů a poměry 1:16 až 16:1. Pro vlastní rozměry platí obě omezení. Výstup vrstev používá 1K, 1.5K, 2K nebo auto s výchozím auto; základ i jednotlivé vrstvy zachovávají příslušné poměry stran zdroje.
Hotové obrázky jsou JPEG nebo PNG. Formát základního obrázku lze vybrat samostatně, rozložené vrstvy zůstávají PNG s alfa kanálem. Dodání může využít kódovaná obrazová data nebo odkazy ke stažení uchovávané 24 hodin. Každý vrácený obrázek a jeho metadata uložte pro zamýšlený designový postup. Text, upravené detaily a zarovnání vrstev kontrolujte ve velikosti použití grafiky.
Ailoot Ultra · Obrázky POST /v1/images/generations bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flashÚvod
Vytvořte jeden hotový obrázek z textového zadání.
- Vytvořte statický produktový snímek
- Prozkoumejte vizuální koncept
- Ilustrujte scénu
- Přijímané vstupy
- Text
- Výsledky
- Obrázky
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · Obrázky POST /v1/images/generations
- Vstup
text- Výstup
image- Výstupní formát
- Soubor obrázku
- Počet výstupů
- 1 výstup
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity bytedance-seed/seedream-5-0-flash | Výchozí— |
Poleprompt | Typstring | PožadavekPovinné | Hodnoty a limity Minimální délka: 1 Podmínky: Neprázdné zadání v UTF8. Žádný limit počtu znaků pro všechny modely výrobce se zde nedoplňuje. | Výchozí— |
Polen | Typinteger | PožadavekVolitelné | Hodnoty a limity 1 | Výchozí1 |
Poleresponse_format | Typstring | PožadavekVolitelné | Hodnoty a limity url, b64_json | Výchozí— |
Polestream | Typboolean | PožadavekVolitelné | Hodnoty a limity false | Výchozífalse |
Kombinace vstupních materiálů
Text na obrázek · Povinné: prompt
Parametry a životní cyklus 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 | Kontraktodmítnuto s výjimkou přesně určeného interního směrování poskytovatele |
Životní cyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · skutečně vrácené task_id nebo záznam v knihovně médií
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Vygenerujte jeden obrázek z textového zadání.
Uložte každou položku data; url/b64_json jsou způsoby kódování výsledku.
Tarify
Jak se vypočítá konečný poplatek
Zobrazené sazby slouží k odhadu ceny před generováním. Konečný poplatek se vypočítá z nákladů zaznamenaných u původního generování. Naměřená délka výstupu ani odhadovaná množství nejsou konečným účtovaným množstvím.
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Neuvedeno Při výběru rychlého režimu
- Režim flex
- Neuvedeno Při výběru režimu flex
- Maximální intenzita uvažování
- Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)
Odhadované sazby pro srovnání
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Tabulka sazeb | Předpokládané množství | Účtovací jednotka | Poplatek |
|---|---|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Předpokládané množství— | Účtovací jednotka— | Poplatek Vstup · Vstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů Výstup · Výstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů Vstup · Čtení z mezipaměti · Odhad pouze pro srovnání — / 1K tokenů Vstup · Zápis do mezipaměti · Odhad pouze pro srovnání — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina · Odhad pouze pro srovnání — / 1K tokenů |
| Konfiguracevstupní obrázek | Tabulka sazeb— | Předpokládané množství— | Účtovací jednotkaza vstupní obrázek | Poplatek Vstup · vstupní obrázek · Odhad pouze pro srovnání $0 za vstupní obrázek |
| KonfiguraceUltra | Tabulka sazeb— | Předpokládané množství— | Účtovací jednotkaza výstupní obrázek | Poplatek Výstup · výstup obrázku · Odhad pouze pro srovnání $0.036 za výstupní obrázek |
| KonfiguraceOdhadovaná cena generování | Tabulka sazeb— | Předpokládané množstvíodhad pro jedno generování | Účtovací jednotka— | Poplatek Výstup · Odhadovaná cena generování · Odhad pouze pro srovnání $0.036 odhad před generováním Tento odhad není dodatečným poplatkem ani pevnou sazbou za dokončené generování. |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Podrobnosti referenčního tarifu
Referenční tabulky modelu nemění výběr metody, cenové nabídky ani poplatky. Skutečné poplatky používají sazby vybrané metody Ailoot.
Cenové konfigurace obrázků
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| KonfiguraceVýstupní obrázek | Podmínky účtováníNení deklarována žádná cenová varianta. | Poplatek Výstup · Výstupní obrázek $0.036 za obrázek |
| KonfiguraceVstupní obrázek | Podmínky účtováníNení deklarována žádná cenová varianta. | Poplatek Vstup · Vstupní obrázek $0 za obrázek |
Ekvivalentní položky popisují tutéž účtovanou částku; nepřidávají druhý poplatek.
Příklady požadavků
Ailoot Ultra · Obrázky
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");
Přijímání a ukládání výsledků
Ailoot Ultra · Obrázky
Stáhněte každý vrácený obrázek nebo uložte jeho obsah Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Uchovejte všechny dokončené výsledky
Uložte každý dokončený obrázek; stáhněte obsah každé vrácené URL nebo dekódujte obsah Base64.
Uložte všechny datové položky. Dekódujte každé b64_json nebo stáhněte soubor z každé vrácené podepsané URL. Příponu souboru zvolte podle skutečného typu MIME a bajtů.
Pokud je nutné ověřit původní odpověď
Pokud výsledek generování nebo úpravy obrázku vyžaduje kontrolu, uchovejte původní operation_id/X-Client-Request-ID a vrácené informace o výsledku. Existující vlastní výsledky obnovte prostřednictvím knihovny médií pomocí skutečných hodnot task_id nebo asset_id. Požadavek na generování či úpravu znovu neodesílejte a nevytvářejte URL pro dotazování na stav z operation_id.
Pole odpovědi
| Pole | Typ |
|---|---|
Polecreated | Typinteger |
Poledata[].url | Typstring |
Poledata[].b64_json | Typbase64 string |
Poleusage | Typobject |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Odpověďserver_error | PodmínkaVrácená odpověď uvádí, že operaci nebo výsledek je třeba zkontrolovat | Další krokUchovejte původní vrácené ID operace nebo úlohy, hlavičky požadavku a odpověď; pokračujte v podporovaném načítání údajů o této původní operaci. Požadavek na vytvoření znovu neodesílejte. |
Aliasy
Aliasy modelu
Ailoot Ultra bytedance-seed/seedream-5-0-flash
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
FAQ · ByteDance Seed: Seedream 5.0 Flash
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:text→image- Jaká pole požadavek používá?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:model,prompt,n,response_format,stream