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> กับพิกัด normalized 0–999 เทียบภาพเข้าที่ระบุ จุดมี x กับ y กล่องมีพิกัดซ้ายบนกับขวาล่าง ระบุหมายเลขภาพและวัตถุเป้าหมาย โดยเฉพาะเมื่อกล่องมีหลายตัวแบบ สำหรับแก้ข้ามภาพ ให้แยกวัตถุที่จะนำจากภาพหนึ่งกับบริเวณปลายทางในอีกภาพ
ใช้ขนาดจริงของภาพที่แสดงเมื่อต้องหาตำแหน่งเชิงสัดส่วน การซูม เลื่อนแคนวาส หรือพิกัดเบราว์เซอร์ไม่ใช่พิกัดภาพ normalized บรรยายบริเวณปกป้องพร้อมบริเวณแก้ เทียบทัศนมิติ แสง และรายละเอียดรอบผลกับต้นฉบับ
แยกองค์ประกอบเป็นชั้นแก้ไขได้
การแยกชั้นเป็นโหมดแยก รับภาพเดียวพอดีและคืนภาพฐานพร้อมสูงสุด 16 ชั้นอิสระ แต่ละชั้นเป็น PNG มี alpha พรอมป์ต์ระบุองค์ประกอบที่จะแยกได้ เช่น ชื่อ ตัวแบบหลัก และของตกแต่ง หากไม่มีพรอมป์ต์แยกชั้น โมเดลระบุองค์ประกอบหลักอัตโนมัติ
ผลลัพธ์ประกอบด้วยชื่อชั้น คำบรรยาย ลำดับซ้อน และกล่องตำแหน่ง ใช้ภาพฐานกับดัชนีซ้อนศูนย์ แล้ววางชั้นอื่นตามลำดับซ้อนจากน้อยไปมาก กล่องสัมบูรณ์บอกตำแหน่งในภาพฐานผล ส่วนกล่อง normalized บอกตำแหน่งเชิงสัดส่วนบนแคนวาสต่างขนาด เก็บเมทาดาทาตำแหน่งที่คืนคู่ไฟล์ภาพ เพื่อประกอบองค์ประกอบเดิมกลับก่อนจัดใหม่
สำหรับปรับโปสเตอร์ แยกงานศิลป์หลักจากชื่อกับของตกแต่ง แล้วตรวจขอบและบริเวณพื้นหลังที่กู้คืน สามารถแก้ไขชั้นโปร่งใสโดยส่งเป็นภาพอินพุตเดี่ยวที่มีช่อง alpha และรับผลลัพธ์ 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 มี alpha การส่งใช้ข้อมูลภาพเข้ารหัสหรือลิงก์ดาวน์โหลดเก็บ 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
- ระดับการใช้เหตุผลสูงสุด
- ไม่ได้ระบุ เมื่อใช้การปรับตามค่าเริ่มต้น (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 | เงื่อนไขการตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์ | ขั้นตอนถัดไปเก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ |
ชื่ออื่น
ชื่ออื่นของโมเดล
Ailoot Ultra bytedance-seed/seedream-5-0-flash
ชื่อพาธเมธอดอื่น
ใช้พาธเมธอดที่แสดงด้านบน
ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล
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