ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash создаёт и редактирует изображения по тексту и визуальным референсам, поддерживая пространственно заданные изменения, многоязычный текст и разложение на слои. ByteDance Seed позиционирует Flash для более быстрой генерации, отличая её от ориентированной на качество версии Pro.
О модели
Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.
Более быстрая версия создания изображений
Seedream 5.0 Flash — модель ByteDance Seed для генерации и редактирования в процессах с приоритетом скорости. Руководство Pro/Flash описывает генерацию по тексту и image-to-image с одним или несколькими референсами. Оно отличает более быструю генерацию Flash от приоритета качества Pro, не устанавливая фиксированное время ответа для каждого задания.
Общие определяющие функции — интерактивное редактирование, разложение на слои и встроенная многоязычная генерация. Обычная генерация возвращает одно готовое изображение. Процесс Flash не поддерживает последовательную генерацию связанных изображений, веб-поиск или потоковую выдачу картинок. Оптимизация промпта использует стандартный режим; отдельная быстрая оптимизация относится к Pro, а не Flash.
Создание по заданию и референсам
Задайте нужную картинку, главный объект, композицию и обработку, затем обозначьте, чем управляет каждый референс. Для товарного визуала отделите источник объекта от источника палитры или материала поверхности. «Сохрани силуэт и угол обзора предмета из первого изображения; второе используй только для приглушённой палитры фона» распределяет роли.
Разработчик рекомендует краткие промпты: не более 300 китайских символов или 600 английских слов. Это рекомендация подготовки, а не заявленный жёсткий порог текста. Первыми перечисляйте решающие требования, включая точные видимые слова, соотношение сторон и неизменяемые детали. Проверяйте готовую картинку по этому списку, не полагаясь только на общее впечатление.
Пространственно заданное редактирование
Flash использует точки, ограничивающие рамки, стрелки и произвольные отметки для указания места правки. Предоставьте источник, место и изменение. Для интерьерной концепции отметьте кресло, запросите замену ткани и обозначьте сохраняемые пол, стену, угол камеры и соседние предметы. Если отметки нужны только как указания, прямо попросите удалить их из результата.
Руководство координатного редактирования использует теги <point> и <bbox> с координатами, нормированными к 0–999 относительно указанного входного изображения. Точка содержит x и y, рамка — координаты левого верхнего и правого нижнего углов. Укажите номер изображения и целевой объект, особенно если рамка включает несколько объектов. Для правки с использованием разных изображений различайте объект из одного референса и область назначения в другом.
Получая пропорциональную позицию, используйте собственные размеры показанного изображения: масштаб холста, его сдвиг и браузерные координаты не являются нормированными координатами картинки. Описывайте защищённые области вместе с изменяемой. Сравнивайте перспективу, свет и окружающие детали результата с оригиналом.
Разделение композиции на редактируемые слои
Разложение на слои — отдельный режим: ровно одно изображение на входе, базовое изображение и до 16 независимых слоёв на выходе. Каждый слой — PNG с альфа-каналом. Промпт может называть разделяемые элементы: заголовок, главный объект и украшения; без промпта разложения модель определяет основные элементы автоматически.
Результаты включают имена слоёв, описания, порядок наложения и рамки размещения. Используйте базовое изображение с индексом наложения ноль, затем остальные слои по возрастанию. Абсолютные рамки задают размещение на выходной базе, нормированные — пропорциональное размещение на другом холсте. Сохраняйте метаданные размещения с файлами, чтобы восстановить оригинальную композицию перед перестановкой.
Для правки постера отделите основной визуал от заголовка и украшений, затем проверьте края и восстановленные области фона. Прозрачный слой можно редактировать как единственный вход с альфа-каналом, получая прозрачный PNG. Опция прозрачного фона относится к такому редактированию одного входа; обычная генерация по тексту — отдельная операция.
Многоязычная композиция
Помимо китайского и английского, разработчик документирует встроенную поддержку промптов и текста изображения на русском, арабском, филиппинском, тайском, турецком, корейском, малайском, испанском, португальском, индонезийском, французском, немецком, вьетнамском и японском. Дайте точные утверждённые слова и направление чтения, обозначьте область каждого текстового блока. Проверяйте диакритику, соединённые символы, переносы и мелкие подписи.
Референсные файлы и спецификации результата
Генерация принимает до 10 референсов JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC или HEIF. Каждый — до 30 МБ, обе стороны больше 14 пикселей, площадь 196–36 000 000 пикселей и пропорции от 1:16 до 16:1. Разложение вместо этого требует один JPEG или PNG площадью 262 144–36 000 000 пикселей, до 30 МБ, с тем же диапазоном пропорций.
Генерация предлагает уровни 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}
Создайте одно изображение по текстовому запросу.
Сохраните каждый элемент data; 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 | УсловиеВозвращённый ответ указывает, что операция или результат требуют проверки | Следующий шагСохраните исходный возвращённый 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