ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash maakt en bewerkt afbeeldingen vanuit tekst en visuele referenties, met ruimtelijk gestuurde wijzigingen, meertalige beeldtekst en laagdecompositie. ByteDance Seed positioneert Flash voor snellere generatie en houdt het afzonderlijk van de op kwaliteit gerichte Pro-editie.
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
Een snellere editie voor afbeeldingscreatie
Seedream 5.0 Flash is het model van ByteDance Seed voor afbeeldingsgeneratie en -bewerking in procedures die generatiesnelheid prioriteit geven. De Pro/Flash-gids van de maker beschrijft zowel tekst-naar-afbeeldingcreatie als afbeelding-naar-afbeeldingcreatie met één of meerdere referenties. De gids onderscheidt snellere generatie door Flash van de hogere prioriteit voor beeldkwaliteit bij Pro, zonder een vaste responstijd voor elke briefing vast te leggen.
De kenmerkende gedeelde functies zijn interactieve bewerking, laagdecompositie en ingebouwde meertalige generatie. Gewone generatie retourneert één voltooide afbeelding. De Flash-procedure van de fabrikant ondersteunt geen opeenvolgende generatie van samenhangende afbeeldingen, webzoeken of streaminguitvoer van afbeeldingen. De promptoptimalisatie gebruikt standaardmodus; de afzonderlijke instelling voor snelle optimalisatie hoort bij Pro en niet bij Flash.
Creëren vanuit een briefing en referenties
Geef het gewenste beeld, hoofdonderwerp, compositie en visuele behandeling aan en benoem daarna wat elke referentie bepaalt. Scheid bij een productbeeld de referentie die het object vastlegt van een referentie voor palet of oppervlaktemateriaal. “Behoud het silhouet en de kijkhoek van het object uit de eerste afbeelding; gebruik de tweede afbeelding alleen voor het ingetogen achtergrondpalet” geeft de referenties afzonderlijke rollen.
De maker beveelt bondige prompts aan, maximaal 300 Chinese tekens of 600 Engelse woorden. Dit is voorbereidingsadvies en geen genoemde harde grens voor tekstinvoer. Zet beslissende eisen eerst, inclusief exacte tekst die moet verschijnen, gewenste beeldverhouding en details die onveranderd moeten blijven. Toets de voltooide afbeelding aan die lijst in plaats van alleen op de algemene indruk te vertrouwen.
Ruimtelijk gestuurde bewerking
Flash kan punten, begrenzingsvakken, pijlen en vrije markeringen gebruiken om aan te geven waar een bewerking moet plaatsvinden. Lever de bronafbeelding samen met een locatie en wijziging aan. Markeer voor een interieurconcept de stoel, vraag om vervanging van de stof en benoem vloer, muur, camerahoek en nabijgelegen objecten die behouden moeten blijven. Vraag expliciet om de markeringen uit de voltooide afbeelding te verwijderen als ze alleen als aanwijzing dienen.
De coördinatenbewerkingsgids van de maker gebruikt <point>- en <bbox>-tags met coördinaten die ten opzichte van de opgegeven invoerafbeelding naar 0–999 zijn genormaliseerd. Een punt bevat x en y; een vak bevat de coördinaten linksboven en rechtsonder. Benoem afbeeldingsnummer en doelobject, vooral wanneer een vak meerdere onderwerpen bevat. Onderscheid bij bewerking over afbeeldingen heen het object dat uit één referentie moet komen van het bestemmingsgebied in een andere.
Gebruik de eigen afmetingen van de weergegeven afbeelding om de proportionele locatie te verkrijgen; canvaszoom, verschuiving of browsercoördinaten zijn niet de genormaliseerde afbeeldingscoördinaten. Beschrijf beschermde gebieden én het bewerkte gebied. Vergelijk perspectief, belichting en omliggende details van het resultaat met de oorspronkelijke bron.
Splits een compositie in bewerkbare lagen
Laagdecompositie is een afzonderlijke modus die precies één afbeelding gebruikt en een basisafbeelding plus maximaal 16 onafhankelijke lagen retourneert. Elke laag is een PNG met alfa. Een prompt kan te scheiden elementen benoemen, zoals titel, hoofdonderwerp en decoraties; zonder decompositieprompt bepaalt het model de hoofdelementen automatisch.
De resultaten bevatten laagnamen, beschrijvingen, stapelvolgorde en plaatsingsvakken. Gebruik de basisafbeelding met stapelindex nul en plaats daarna de overige lagen in oplopende stapelvolgorde. Absolute vakken beschrijven plaatsing in de uitvoerbasisafbeelding; genormaliseerde vakken beschrijven proportionele plaatsing op een ander canvas. Bewaar deze geretourneerde plaatsingsmetadata bij de afbeeldingsbestanden, zodat de oorspronkelijke compositie kan worden gereconstrueerd voordat deze wordt heringedeeld.
Scheid voor een posterrevisie het hoofdbeeld van titel en decoraties en controleer daarna randen en eventueel hersteld achtergrondgebied. Een transparante laag kan worden bewerkt als één invoer met alfakanaal, met transparante PNG-uitvoer. De optie voor transparante achtergrond geldt voor die afbeeldingsbewerkingsprocedure met één invoer; gewone tekst-naar-afbeeldinggeneratie is een afzonderlijke operatie.
Meertalige compositie
Naast Chinees en Engels documenteert de maker ingebouwde ondersteuning voor prompts en beeldtekst in Russisch, Arabisch, Filipijns, Thai, Turks, Koreaans, Maleis, Spaans, Portugees, Indonesisch, Frans, Duits, Vietnamees en Japans. Lever de exacte goedgekeurde tekst en leesrichting aan en geef aan in welk gebied elk tekstblok staat. Controleer accenten, verbonden tekens, regelafbrekingen en kleine labels in de uiteindelijke afbeelding.
Referentiebestanden en uitvoerspecificaties
Afbeeldingsgeneratie accepteert maximaal 10 referenties in JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC of HEIF. Elk bestand mag maximaal 30 MB zijn, met beide zijden groter dan 14 pixels, 196–36000000 pixels in totaal en een beeldverhouding van 1:16 tot 16:1. Laagdecompositie vereist daarentegen één JPEG of PNG van 262144–36000000 pixels, maximaal 30 MB, binnen hetzelfde verhoudingsbereik.
Generatie biedt uitvoerklassen 1K, 1.5K en 2K, met standaard 2K, of expliciete afmetingen met 921600–4624220 pixels in totaal en verhoudingen van 1:16 tot 16:1. Beide beperkingen gelden voor aangepaste afmetingen. Laaguitvoer gebruikt 1K, 1.5K, 2K of auto, met standaard auto; de basis en elke laag behouden hun respectieve bronbeeldverhoudingen.
Voltooide afbeeldingen zijn JPEG of PNG. Het formaat van de basisafbeelding kan afzonderlijk worden gekozen, terwijl gedecomponeerde lagen PNG met alfa blijven. Levering kan gecodeerde afbeeldingsdata gebruiken of downloadlinks die 24 uur worden bewaard. Sla elke geretourneerde afbeelding en de bijbehorende metadata op voor de beoogde ontwerpprocedure. Controleer tekst, bewerkte details en laaguitlijning op het formaat waarop het beeld wordt gebruikt.
Ailoot Ultra · Afbeeldingen POST /v1/images/generations bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flashAan de slag
Maak één afgewerkte afbeelding op basis van een tekstuele briefing.
- Maak een stilstaand productbeeld
- Verken een visueel concept
- Illustreer een scène
- Toegestane invoer
- Tekst
- Resultaten
- Afbeeldingen
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Afbeeldingen POST /v1/images/generations
- Invoertypen
text- Uitvoertypen
image- Uitvoerformaat
- Afbeeldingsbestand
- Aantal uitvoerresultaten
- 1 uitvoer
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten bytedance-seed/seedream-5-0-flash | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 Voorwaarden: Niet-lege UTF8-prompt. Er wordt geen fabrikantbrede tekenlimiet verzonnen. | Standaard— |
Veldn | Typeinteger | VereisteOptioneel | Waarden en limieten 1 | Standaard1 |
Veldresponse_format | Typestring | VereisteOptioneel | Waarden en limieten url, b64_json | Standaard— |
Veldstream | Typeboolean | VereisteOptioneel | Waarden en limieten false | Standaardfalse |
Combinaties van invoermaterialen
Tekst naar afbeelding · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, prompt |
Parametermaterial_types | Contracttext |
Parameteroptional | Contractn, response_format, stream |
Parametern | Contract1 |
Parameterstream | Contractfalse |
Parameterresponse_format | Contracturl, b64_json |
Parameterreference_images | Contractfalse |
Parameteredit | Contractfalse |
Parameteroutput_format_optional | Contract |
Parameterresolution_control | Contractnull |
Parameteraspect_ratio_control | Contractnull |
Parameterother_fields | Contractafgewezen behalve voor de exact vastgelegde interne providerroutering |
Levenscyclus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Genereer één afbeelding vanuit een prompt.
Sla elk data-item op; url/b64_json zijn resultaatcoderingen.
Tarieven
Zo worden de uiteindelijke kosten berekend
De weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn niet de definitieve factureerbare hoeveelheid.
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus is geselecteerd
- Flexmodus
- Niet opgegeven Wanneer de modus flex is geselecteerd
- Maximale redeneerinspanning
- Niet opgegeven Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
Geschatte tarieven ter vergelijking
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Verwachte hoeveelheid | Rekeneenheid | Kosten |
|---|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Verwachte hoeveelheid— | Rekeneenheid— | Kosten Invoer · Invoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache lezen · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking — / 1K tokens |
| Configuratieinvoerafbeelding | Tariefstaffel— | Verwachte hoeveelheid— | Rekeneenheidper invoerafbeelding | Kosten Invoer · invoerafbeelding · Schatting uitsluitend ter vergelijking $0 per invoerafbeelding |
| ConfiguratieUltra | Tariefstaffel— | Verwachte hoeveelheid— | Rekeneenheidper uitvoerafbeelding | Kosten Uitvoer · afbeeldingsuitvoer · Schatting uitsluitend ter vergelijking $0.036 per uitvoerafbeelding |
| ConfiguratieGeschatte generatiekosten | Tariefstaffel— | Verwachte hoeveelheidschatting voor één generatie | Rekeneenheid— | Kosten Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking $0.036 schatting vóór generatie Deze schatting is geen extra bedrag of vast tarief voor de voltooide generatie. |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Details van het referentietarief
Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.
Prijsconfiguraties voor afbeeldingen
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Factureringsvoorwaarden | Kosten |
|---|---|---|
| ConfiguratieUitvoerafbeelding | FactureringsvoorwaardenEr is geen prijsvariant gedeclareerd. | Kosten Uitvoer · Uitvoerafbeelding $0.036 per afbeelding |
| ConfiguratieInvoerafbeelding | FactureringsvoorwaardenEr is geen prijsvariant gedeclareerd. | Kosten Invoer · Invoerafbeelding $0 per afbeelding |
Gelijkwaardige vermeldingen beschrijven dezelfde kosten; ze voegen geen tweede vergoeding toe.
Voorbeeldverzoeken
Ailoot Ultra · Afbeeldingen
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");
Resultaten ophalen en opslaan
Ailoot Ultra · Afbeeldingen
Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren
Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.
Sla elk data-item op. Decodeer elke b64_json of haal elk bestand op via elke geretourneerde ondertekende URL. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.
Antwoordvelden
| Veld | Type |
|---|---|
Veldcreated | Typeinteger |
Velddata[].url | Typestring |
Velddata[].b64_json | Typebase64 string |
Veldusage | Typeobject |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoordserver_error | VoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerd | Volgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra bytedance-seed/seedream-5-0-flash
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
FAQ · ByteDance Seed: Seedream 5.0 Flash
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:text→image- Welke velden gebruikt het verzoek?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:model,prompt,n,response_format,stream