ByteDance Seed: Seedream 5.0 Flash
Seedream 5.0 Flash cria e edita imagens a partir de texto e referências visuais, com alterações guiadas espacialmente, texto multilingue em imagem e decomposição em camadas. A ByteDance Seed posiciona Flash para geração mais rápida, mantendo-o distinto da edição Pro centrada na qualidade.
Sobre o modelo
Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.
Uma edição mais rápida de criação de imagens
Seedream 5.0 Flash é o modelo de geração e edição de imagens da ByteDance Seed para fluxos que dão prioridade à velocidade de geração. O guia Pro/Flash do fabricante descreve tanto texto para imagem como criação de imagem para imagem com uma ou várias referências. Distingue a geração mais rápida de Flash da prioridade de Pro à qualidade superior de imagem, sem estabelecer um tempo fixo de resposta para todas as instruções.
As funcionalidades partilhadas distintivas são edição interativa, decomposição em camadas e geração multilingue nativa. A geração comum devolve uma imagem concluída. O fluxo Flash do fabricante não suporta geração sequencial de imagens relacionadas, pesquisa Web nem saída de imagem em fluxo contínuo. A sua otimização de instruções utiliza o modo standard; o controlo separado de otimização rápida pertence a Pro, e não a Flash.
Criar a partir de instruções e referências
Indique a imagem pretendida, o sujeito principal, a composição e o tratamento visual e identifique depois o que cada referência controla. Num visual de produto, separe a referência que estabelece o objeto daquela que fornece uma paleta ou um material de superfície. «Mantenha a silhueta e o ângulo de visão do objeto da primeira imagem; utilize a segunda imagem apenas para a paleta discreta do fundo» dá papéis distintos às referências.
O fabricante recomenda instruções concisas, até 300 caracteres chineses ou 600 palavras inglesas. Isto é orientação de preparação, e não um limite rígido declarado de entrada de texto. Liste primeiro os requisitos decisivos, incluindo a redação exata que tem de aparecer, a proporção pretendida e os pormenores que têm de manter-se inalterados. Inspecione a imagem concluída face a essa lista, em vez de depender apenas do seu aspeto geral.
Edição guiada espacialmente
Flash pode utilizar pontos, caixas delimitadoras, setas e marcas de forma livre para identificar onde uma edição deve ocorrer. Forneça a imagem de origem juntamente com uma posição e a alteração. Num conceito de interior, marque a cadeira, peça a substituição do tecido e identifique o chão, a parede, o ângulo da câmara e os objetos próximos a preservar. Se as marcas forem apenas orientação, peça explicitamente a sua remoção da imagem concluída.
O guia de edição por coordenadas do fabricante utiliza etiquetas <point> e <bbox> com coordenadas normalizadas de 0 a 999 relativamente à imagem de entrada especificada. Um ponto contém x e y; uma caixa contém as coordenadas superior esquerda e inferior direita. Identifique o número da imagem e o objeto de destino, sobretudo quando uma caixa inclui vários sujeitos. Numa edição entre imagens, distinga o objeto a obter de uma referência e a região de destino noutra.
Utilize as dimensões da própria imagem apresentada ao obter a posição proporcional; o zoom da tela, a deslocação da vista ou as coordenadas do navegador não são as coordenadas normalizadas da imagem. Descreva as regiões protegidas, bem como a região editada. Compare a perspetiva, a iluminação e os pormenores envolventes do resultado com a fonte original.
Separe uma composição em camadas editáveis
A decomposição em camadas é um modo distinto que recebe exatamente uma imagem e devolve uma imagem base e até 16 camadas independentes. Cada camada é um PNG com canal alfa. Uma instrução pode nomear os elementos a separar, como título, sujeito principal e decorações; sem instrução de decomposição, o modelo identifica automaticamente os elementos principais.
Os resultados incluem nomes de camadas, descrições, ordem de empilhamento e caixas de posicionamento. Utilize a imagem base com índice de empilhamento zero e coloque depois as outras camadas por ordem crescente de empilhamento. As caixas absolutas descrevem a posição na imagem base de saída; as caixas normalizadas descrevem a posição proporcional numa tela diferente. Mantenha estes metadados de posicionamento devolvidos com os ficheiros de imagem, para que a composição original possa ser reconstruída antes de ser reorganizada.
Numa revisão de cartaz, separe a arte principal do título e das decorações e inspecione depois os contornos e qualquer área de fundo restaurada. Uma camada transparente pode ser editada como uma única entrada com canal alfa e saída PNG transparente. A opção de fundo transparente está limitada a esse fluxo de edição de imagem com uma única entrada; a geração comum de texto para imagem é uma operação separada.
Composição multilingue
Além de chinês e inglês, o fabricante documenta suporte nativo de instruções e texto em imagem para russo, árabe, filipino, tailandês, turco, coreano, malaio, espanhol, português, indonésio, francês, alemão, vietnamita e japonês. Forneça a redação exata aprovada e a direção de leitura e identifique que região contém cada bloco de texto. Reveja acentos, caracteres ligados, quebras de linha e pequenos rótulos na imagem final.
Ficheiros de referência e especificações de saída
A geração de imagens aceita até 10 referências em JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC ou HEIF. Cada uma pode ter até 30 MB, com ambos os lados superiores a 14 píxeis, 196–36 000 000 píxeis totais e uma proporção entre 1:16 e 16:1. A decomposição em camadas exige, em alternativa, um JPEG ou PNG de 262 144–36 000 000 píxeis, até 30 MB, dentro do mesmo intervalo de proporções.
A geração oferece escalões de saída 1K, 1.5K e 2K, com 2K por predefinição, ou dimensões explícitas com 921 600–4 624 220 píxeis totais e proporções entre 1:16 e 16:1. Ambas as restrições aplicam-se a dimensões personalizadas. A saída de camadas utiliza 1K, 1.5K, 2K ou auto, com auto por predefinição; a base e cada camada conservam as respetivas proporções de origem.
As imagens concluídas são JPEG ou PNG. O formato da imagem base pode ser selecionado separadamente, enquanto as camadas decompostas permanecem PNG com canal alfa. A entrega pode utilizar dados de imagem codificados ou ligações de transferência conservadas durante 24 horas. Guarde cada imagem devolvida e os seus metadados para o fluxo de design pretendido. Inspecione o texto, os pormenores editados e o alinhamento das camadas no tamanho em que a arte será utilizada.
Ailoot Ultra · Imagens POST /v1/images/generations bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flash
bytedance-seed/seedream-5-0-flashIntrodução
Crie uma única imagem finalizada a partir de instruções em texto.
- Crie uma imagem estática de um produto
- Explore um conceito visual
- Ilustre uma cena
- Entradas aceites
- Texto
- Resultados
- Imagens
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Imagens POST /v1/images/generations
- Entrada
text- Saída
image- Formato de saída
- Ficheiro de imagem
- Número de saídas
- 1 saída
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites bytedance-seed/seedream-5-0-flash | Predefinição— |
Campoprompt | Tipostring | RequisitoObrigatório | Valores e limites Comprimento mínimo: 1 Condições: Instrução UTF8 não vazia. Não se inventa um limite de carateres comum a todo o fabricante. | Predefinição— |
Campon | Tipointeger | RequisitoOpcional | Valores e limites 1 | Predefinição1 |
Camporesponse_format | Tipostring | RequisitoOpcional | Valores e limites url, b64_json | Predefinição— |
Campostream | Tipoboolean | RequisitoOpcional | Valores e limites false | Predefiniçãofalse |
Combinações de materiais de entrada
Texto para imagem · Obrigatório: prompt
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratomodel, prompt |
Parâmetromaterial_types | Contratotext |
Parâmetrooptional | Contraton, response_format, stream |
Parâmetron | Contrato1 |
Parâmetrostream | Contratofalse |
Parâmetroresponse_format | Contratourl, b64_json |
Parâmetroreference_images | Contratofalse |
Parâmetroedit | Contratofalse |
Parâmetrooutput_format_optional | Contrato |
Parâmetroresolution_control | Contratonull |
Parâmetroaspect_ratio_control | Contratonull |
Parâmetroother_fields | Contratorejeitado, exceto para o encaminhamento interno exato e fixado do fornecedor |
Ciclo de vida: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Gere uma imagem a partir de uma instrução.
Guarde todos os elementos de dados; url/b64_json são codificações dos resultados.
Tarifários
Cálculo do custo final
As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas estimadas para comparação
Preços por configuração
Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.
| Configuração | Tabela de tarifas | Quantidade prevista | Unidade de faturação | Custo |
|---|---|---|---|---|
| ConfiguraçãoTarifas base por token | Tabela de tarifasTarifa base | Quantidade prevista— | Unidade de faturação— | Custo Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens |
| Configuraçãoimagem de entrada | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor imagem de entrada | Custo Entrada · imagem de entrada · Estimativa apenas para comparação $0 por imagem de entrada |
| ConfiguraçãoUltra | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor imagem de saída | Custo Saída · imagem de saída · Estimativa apenas para comparação $0.036 por imagem de saída |
| ConfiguraçãoCusto estimado de geração | Tabela de tarifas— | Quantidade previstaestimativa para uma geração | Unidade de faturação— | Custo Saída · Custo estimado de geração · Estimativa apenas para comparação $0.036 estimativa antes da geração Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída. |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Detalhes da tarifa de referência
As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.
Configurações de preços de imagens
Preços por configuração
Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.
| Configuração | Condições de faturação | Custo |
|---|---|---|
| ConfiguraçãoImagem de saída | Condições de faturaçãoNão está declarada qualquer variante de preços. | Custo Saída · Imagem de saída $0.036 por imagem |
| ConfiguraçãoImagem de entrada | Condições de faturaçãoNão está declarada qualquer variante de preços. | Custo Entrada · Imagem de entrada $0 por imagem |
As entradas equivalentes descrevem a mesma cobrança; não acrescentam uma segunda taxa.
Exemplos de pedidos
Ailoot Ultra · Imagens
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");
Receber e guardar os resultados
Ailoot Ultra · Imagens
Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Guardar todos os resultados concluídos
Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.
Guarde todos os itens de dados. Descodifique cada b64_json ou obtenha todos os URL assinados devolvidos. Escolha a extensão do ficheiro a partir do MIME/dos bytes reais.
Se for necessário verificar a resposta original
Se o resultado de uma geração ou edição de imagem requerer verificação, guarde o operation_id/X-Client-Request-ID original e as informações do resultado devolvidas. Recupere os resultados existentes que lhe pertencem através da biblioteca de multimédia, usando valores task_id ou asset_id reais. Não volte a enviar o pedido de geração/edição nem construa um URL de consulta periódica a partir de operation_id.
Campos da resposta
| Campo | Tipo |
|---|---|
Campocreated | Tipointeger |
Campodata[].url | Tipostring |
Campodata[].b64_json | Tipobase64 string |
Campousage | Tipoobject |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |
Respostaserver_error | CondiçãoA resposta devolvida indica que a operação ou o resultado requer verificação | Passo seguinteGuarde o ID original da operação/tarefa devolvido, os cabeçalhos do pedido e a resposta; continue a consultar essa operação original através das consultas suportadas. Não volte a enviar o pedido de criação. |
Aliases
Aliases do modelo
Ailoot Ultra bytedance-seed/seedream-5-0-flash
Aliases dos caminhos dos métodos
Use os caminhos dos métodos indicados acima.
IDs de chamada relacionados
FAQ · ByteDance Seed: Seedream 5.0 Flash
- Que entradas e resultados estão disponíveis?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:text→image- Que campos utiliza o pedido?
POST /v1/images/generations·bytedance-seed/seedream-5-0-flash:model,prompt,n,response_format,stream