ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash יוצר ועורך תמונות מטקסט ומייחוסים חזותיים, עם שינויים מונחים במרחב, טקסט רב־לשוני בתמונה ופירוק לשכבות. ByteDance Seed מייעדת את Flash ליצירה מהירה יותר, תוך הבחנה בינו לבין מהדורת Pro הממוקדת באיכות.
על המודל
התיאור הזה מציג את יכולות המודל. הקלט, הפלט והאפשרויות הזמינים ב-Ailoot מפורטים בהמשך לפי השיטה שנבחרה.
מהדורה מהירה יותר ליצירת תמונות
Seedream 5.0 Flash הוא מודל יצירת התמונות והעריכה של ByteDance Seed לתהליכי עבודה שנותנים עדיפות למהירות יצירה. מדריך Pro/Flash של היצרן מתאר הן יצירה מטקסט לתמונה והן יצירה מתמונה לתמונה עם ייחוס אחד או כמה ייחוסים. הוא מבחין בין היצירה המהירה יותר של Flash לבין העדיפות הגבוהה יותר לאיכות תמונה ב־Pro, בלי לקבוע זמן תגובה קבוע לכל בריף.
התכונות המשותפות המגדירות הן עריכה אינטראקטיבית, פירוק לשכבות ויצירה רב־לשונית מובנית. יצירה רגילה מחזירה תמונה מוגמרת אחת. תהליך העבודה של Flash אצל היצרן אינו תומך ביצירה רציפה של תמונות קשורות, בחיפוש ברשת או בפלט תמונות בהזרמה. אופטימיזציית ההנחיות שלו משתמשת במצב standard; בקרת האופטימיזציה המהירה הנפרדת שייכת ל־Pro ולא ל־Flash.
יצירה מבריף ומייחוסים
ציינו את התמונה הרצויה, הנושא המרכזי, הקומפוזיציה והטיפול החזותי, ואז הגדירו במה כל ייחוס שולט. לחזות מוצר, הפרידו בין הייחוס שמגדיר את העצם לבין זה שמספק פלטה או חומר משטח. ״שמרו על קווי המתאר ועל זווית הצפייה של העצם מהתמונה הראשונה; השתמשו בתמונה השנייה רק לפלטת הרקע המאופקת״ מעניק לייחוסים תפקידים נפרדים.
היצרן ממליץ על הנחיות תמציתיות, לא יותר מ־300 תווים סיניים או 600 מילים באנגלית. זו הנחיית הכנה ולא סף קשיח מוצהר לקלט טקסט. רשמו תחילה את הדרישות המכריעות, לרבות ניסוח מדויק שחייב להופיע, יחס הממדים הרצוי ופרטים שחייבים להישאר ללא שינוי. בדקו את התמונה המוגמרת מול הרשימה הזו במקום להסתמך רק על המראה הכללי שלה.
עריכה מונחית במרחב
Flash יכול להשתמש בנקודות, בתיבות תוחמות, בחצים ובסימונים חופשיים כדי לזהות היכן עריכה צריכה להתבצע. ספקו את תמונת המקור יחד עם מיקום והשינוי. לקונספט פנים, סמנו את הכיסא, בקשו החלפת בד וציינו את הרצפה, הקיר, זווית המצלמה והעצמים הסמוכים שיש לשמור. אם הסימונים מיועדים להנחיה בלבד, בקשו במפורש להסירם מהתמונה המוגמרת.
מדריך עריכת הקואורדינטות של היצרן משתמש בתגיות <point> ו־<bbox> עם קואורדינטות מנורמלות ל־0–999 ביחס לתמונת הקלט שצוינה. נקודה מכילה x ו־y; תיבה מכילה את הקואורדינטות השמאליות העליונות והימניות התחתונות. הגדירו את מספר התמונה ואת עצם היעד, במיוחד כשבתיבה נכללים כמה נושאים. לעריכה בין תמונות, הבחינו בין העצם שיש לקחת מייחוס אחד לבין אזור היעד באחר.
השתמשו בממדי התמונה המוצגת עצמה לקבלת המיקום היחסי; זום של משטח העבודה, הזזה או קואורדינטות דפדפן אינם קואורדינטות התמונה המנורמלות. תארו אזורים מוגנים לצד האזור שנערך. השוו את הפרספקטיבה, התאורה והפרטים שסביב בתוצאה למקור המקורי.
הפרידו קומפוזיציה לשכבות הניתנות לעריכה
פירוק לשכבות הוא מצב נפרד שמקבל בדיוק תמונה אחת ומחזיר תמונת בסיס ועד 16 שכבות עצמאיות. כל שכבה היא PNG עם אלפא. הנחיה יכולה לנקוב ברכיבים שיש להפריד, כגון כותרת, נושא מרכזי וקישוטים; ללא הנחיית פירוק, המודל מזהה אוטומטית את הרכיבים המרכזיים.
התוצאות כוללות שמות שכבות, תיאורים, סדר ערימה ותיבות מיקום. השתמשו בתמונת הבסיס עם אינדקס ערימה אפס, ואז הציבו את השכבות האחרות בסדר ערימה עולה. תיבות מוחלטות מתארות מיקום בתמונת בסיס הפלט; תיבות מנורמלות מתארות מיקום יחסי על משטח אחר. שמרו את מטא־נתוני המיקום שהוחזרו עם קובצי התמונה, כדי שיהיה אפשר לשחזר את הקומפוזיציה המקורית לפני סידורה מחדש.
לתיקון כרזה, הפרידו את היצירה המרכזית מהכותרת ומהקישוטים, ואז בדקו קצוות וכל אזור רקע ששוחזר. אפשר לערוך שכבה שקופה כקלט יחיד בעל ערוץ אלפא, עם פלט PNG שקוף. אפשרות הרקע השקוף מוגבלת לתהליך עריכת התמונה בעל קלט יחיד הזה; יצירה רגילה מטקסט לתמונה היא פעולה נפרדת.
קומפוזיציה רב־לשונית
בנוסף לסינית ולאנגלית, היצרן מתעד תמיכה מובנית בהנחיות ובטקסט בתמונה ברוסית, בערבית, בפיליפינית, בתאילנדית, בטורקית, בקוריאנית, במלאית, בספרדית, בפורטוגזית, באינדונזית, בצרפתית, בגרמנית, בווייטנאמית וביפנית. ספקו את הניסוח המאושר המדויק ואת כיוון הקריאה, והגדירו איזה אזור מכיל כל בלוק טקסט. בדקו סימני הגייה, אותיות מחוברות, שבירות שורה ותוויות קטנות בתמונה הסופית.
קובצי ייחוס ומפרטי פלט
יצירת תמונות מקבלת עד 10 ייחוסים בפורמטים JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC או HEIF. כל אחד יכול להיות בגודל של עד 30 MB, עם שתי צלעות הגדולות מ־14 פיקסלים, 196–36,000,000 פיקסלים בסך הכול ויחס ממדים בין 1:16 ל־16:1. פירוק לשכבות מחייב במקום זאת JPEG או PNG אחד של 262,144–36,000,000 פיקסלים, עד 30 MB, בתוך אותו טווח יחסים.
היצירה מציעה דרגות פלט 1K, 1.5K ו־2K, עם 2K כברירת מחדל, או ממדים מפורשים עם 921,600–4,624,220 פיקסלים בסך הכול ויחסים בין 1:16 ל־16:1. שני האילוצים חלים על ממדים מותאמים. פלט שכבות משתמש ב־1K, ב־1.5K, ב־2K או ב־auto, עם auto כברירת מחדל; הבסיס וכל שכבה שומרים על יחסי הממדים של המקורות שלהם, בהתאמה.
תמונות מוגמרות הן JPEG או PNG. אפשר לבחור בנפרד את פורמט תמונת הבסיס, ואילו שכבות מפורקות נשארות PNG עם אלפא. המסירה יכולה להשתמש בנתוני תמונה מקודדים או בקישורי הורדה הנשמרים ל־24 שעות. שמרו כל תמונה שהוחזרה ואת המטא־נתונים שלה לתהליך העיצוב המיועד. בדקו טקסט, פרטים שנערכו ויישור שכבות בגודל שבו היצירה תשמש.
Ailoot Ultra · תמונות POST /v1/images/generations bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flashהתחלה
צרו תמונה מוגמרת אחת מתוך תיאור כתוב.
- יצירת תמונת מוצר סטטית
- בחינת קונספט חזותי
- המחשת סצנה
- סוגי קלט נתמכים
- טקסט
- תוצאות
- תמונות
זמין ב-Ailoot · קלט ושיטות
Ailoot Ultra · תמונות POST /v1/images/generations
- סוגי קלט
text- סוגי פלט
image- פורמט פלט
- קובץ תמונה
- מספר פלטים
- 1 פלט
| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
|---|---|---|---|---|
שדהmodel | סוגstring | דרישהחובה | ערכים ומגבלות bytedance-seed/seedream-5-0-flash | ברירת מחדל— |
שדהprompt | סוגstring | דרישהחובה | ערכים ומגבלות אורך מזערי: 1 תנאים: הנחיה לא ריקה בקידוד UTF8. אין להמציא מגבלת תווים כללית של היצרן. | ברירת מחדל— |
שדהn | סוגinteger | דרישהרשות | ערכים ומגבלות 1 | ברירת מחדל1 |
שדהresponse_format | סוגstring | דרישהרשות | ערכים ומגבלות url, b64_json | ברירת מחדל— |
שדהstream | סוגboolean | דרישהרשות | ערכים ומגבלות false | ברירת מחדלfalse |
שילובים של חומרי קלט
מטקסט לתמונה · נדרש: prompt
פרמטרים ומחזור חיים של השיטה
| פרמטר | מפרט |
|---|---|
פרמטרcontent_type | מפרטapplication/json |
פרמטרrequired | מפרטmodel, prompt |
פרמטרmaterial_types | מפרטtext |
פרמטרoptional | מפרטn, response_format, stream |
פרמטרn | מפרט1 |
פרמטרstream | מפרטfalse |
פרמטרresponse_format | מפרטurl, b64_json |
פרמטרreference_images | מפרטfalse |
פרמטרedit | מפרטfalse |
פרמטרoutput_format_optional | מפרט |
פרמטרresolution_control | מפרטnull |
פרמטרaspect_ratio_control | מפרטnull |
פרמטרother_fields | מפרטנדחה, למעט ניתוב ספק פנימי מדויק ומקובע |
מחזור חיים: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · ערך task_id שהוחזר בפועל או רשומה בספריית המדיה
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
יצירת תמונה אחת מהנחיה.
יש לשמור כל פריט נתונים; url/b64_json הם קידודים של התוצאה.
תעריפים
אופן חישוב החיוב הסופי
התעריפים המוצגים מספקים אומדן לעלות לפני היצירה. החיוב הסופי מחושב לפי העלות שנרשמה עבור היצירה המקורית. משך הפלט שנמדד והכמויות החזויות אינם הכמות הסופית לחיוב.
מידע תעריפים אינו מוסיף אפשרויות לבקשה. הפרמטרים הנתמכים מפורטים בשיטה שנבחרה.
- מצב מהיר
- לא צוין כאשר נבחר מצב מהיר
- מצב Flex
- לא צוין כאשר נבחר מצב flex
- מאמץ חשיבה מרבי
- לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)
תעריפים משוערים להשוואה
מחירים לפי תצורה
התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.
| תצורה | טבלת תעריפים | כמות חזויה | יחידת חיוב | חיוב |
|---|---|---|---|---|
| תצורהתעריפי בסיס לטוקנים | טבלת תעריפיםתעריף בסיס | כמות חזויה— | יחידת חיוב— | חיוב קלט · טוקני קלט · אומדן להשוואה בלבד — / 1K טוקנים פלט · טוקני פלט · אומדן להשוואה בלבד — / 1K טוקנים קלט · קריאה מהמטמון · אומדן להשוואה בלבד — / 1K טוקנים קלט · כתיבה למטמון · אומדן להשוואה בלבד — / 1K טוקנים קלט · כתיבה למטמון, 1 שעה · אומדן להשוואה בלבד — / 1K טוקנים |
| תצורהתמונת קלט | טבלת תעריפים— | כמות חזויה— | יחידת חיובלכל תמונה בקלט | חיוב קלט · תמונת קלט · אומדן להשוואה בלבד $0 לכל תמונה בקלט |
| תצורהUltra | טבלת תעריפים— | כמות חזויה— | יחידת חיובלכל תמונה בפלט | חיוב פלט · פלט תמונה · אומדן להשוואה בלבד $0.036 לכל תמונה בפלט |
| תצורהעלות יצירה משוערת | טבלת תעריפים— | כמות חזויהאומדן ליצירה אחת | יחידת חיוב— | חיוב פלט · עלות יצירה משוערת · אומדן להשוואה בלבד $0.036 אומדן לפני היצירה אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה. |
לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. איך פועלים שריון הסכום והסדרת החיוב →
פרטי תעריף הייחוס
טבלאות הייחוס ברמת המודל אינן משנות את בחירת השיטה, הצעות המחיר או החיובים. החיובים בפועל משתמשים בתעריפי שיטת Ailoot שנבחרה.
תצורות תמחור תמונות
מחירים לפי תצורה
התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.
| תצורה | תנאי חיוב | חיוב |
|---|---|---|
| תצורהתמונת פלט | תנאי חיובלא הוצהרה חלופת תמחור. | חיוב פלט · תמונת פלט $0.036 לכל תמונה |
| תצורהתמונת קלט | תנאי חיובלא הוצהרה חלופת תמחור. | חיוב קלט · תמונת קלט $0 לכל תמונה |
רישומים מקבילים מתארים את אותו חיוב; הם אינם מוסיפים עמלה שנייה.
דוגמאות לבקשות
Ailoot Ultra · תמונות
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");
קבלה ושמירה של תוצאות
Ailoot Ultra · תמונות
הורידו כל תמונה שהוחזרה או שמרו את תוכן ה-Base64 שלה
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
שמירת כל התוצאות שהושלמו
שמרו כל תמונה שהושלמה; אחזרו אותה מכל URL שהוחזר או פענחו את תוכן ה-Base64 שלה.
שמרו כל פריט נתונים. פענחו כל b64_json או הורידו את התוכן מכל URL חתום שהוחזר. בחרו סיומת קובץ לפי סוג ה־MIME/הבתים בפועל.
כשצריך לבדוק את התגובה המקורית
אם תוצאה של יצירת תמונה או עריכתה דורשת בדיקה, שמרו את operation_id/X-Client-Request-ID המקורי ואת פרטי התוצאה שהוחזרו. שחזרו תוצאות קיימות שבבעלותכם דרך ספריית המדיה באמצעות ערכי task_id או asset_id בפועל. אל תשלחו שוב את בקשת היצירה/העריכה ואל תבנו URL לתשאול סטטוס מתוך operation_id.
שדות התגובה
| שדה | סוג |
|---|---|
שדהcreated | סוגinteger |
שדהdata[].url | סוגstring |
שדהdata[].b64_json | סוגbase64 string |
שדהusage | סוגobject |
שגיאות והשלבים הבאים
| תגובה | תנאי | השלב הבא |
|---|---|---|
תגובה400 · invalid_request_error | תנאישדות נדרשים, ייצוג חומר או ערך פרמטר שאינם תקינים | השלב הבאתקנו את השדות שצוינו לפני בקשת יצירה חדשה. |
תגובהserver_error | תנאיהתשובה שהוחזרה מציינת שהפעולה או התוצאה דורשת בדיקה | השלב הבאשמרו את מזהה הפעולה/המשימה המקורי שהוחזר, את כותרות הבקשה ואת התשובה; המשיכו לבצע פעולות קריאה נתמכות של אותה פעולה מקורית. אל תשלחו שוב את בקשת היצירה. |
כינויים
כינויים למודל
Ailoot Ultra bytedance-seed/seedream-5-0-flash
כינויים לנתיבי שיטות
השתמשו בנתיבי השיטות המוצגים למעלה.
מזהי מודלים קשורים IDs
FAQ · ByteDance Seed: Seedream 5.0 Flash
- אילו קלטים ותוצאות זמינים?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:text→image- באילו שדות הבקשה משתמשת?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:model,prompt,n,response_format,stream