fix(baoyu-imagine): tighten Replicate schema validation and model handling
This commit is contained in:
parent
0ec35bf930
commit
8c0b0d3a3b
|
|
@ -111,7 +111,7 @@ test("Replicate input builder maps Seedream models to size-based schema", () =>
|
|||
"A robot painter",
|
||||
"bytedance/seedream-4.5",
|
||||
makeArgs({
|
||||
quality: "2k",
|
||||
size: "1536x1024",
|
||||
aspectRatio: "16:9",
|
||||
n: 4,
|
||||
}),
|
||||
|
|
@ -119,8 +119,9 @@ test("Replicate input builder maps Seedream models to size-based schema", () =>
|
|||
),
|
||||
{
|
||||
prompt: "A robot painter",
|
||||
size: "2K",
|
||||
aspect_ratio: "16:9",
|
||||
size: "custom",
|
||||
width: 1536,
|
||||
height: 1024,
|
||||
sequential_image_generation: "auto",
|
||||
max_images: 4,
|
||||
image_input: ["data:image/png;base64,AAAA"],
|
||||
|
|
@ -207,7 +208,7 @@ test("Replicate input builder falls back to nano-banana schema for unknown model
|
|||
test("Replicate validation catches unsupported Seedream and Wan argument combinations", () => {
|
||||
assert.throws(
|
||||
() => validateArgs("bytedance/seedream-4.5", makeArgs({ size: "large" })),
|
||||
/Seedream on Replicate requires --size/,
|
||||
/Seedream 4.5 on Replicate requires --size/,
|
||||
);
|
||||
|
||||
assert.throws(
|
||||
|
|
@ -215,6 +216,10 @@ test("Replicate validation catches unsupported Seedream and Wan argument combina
|
|||
/Seedream on Replicate requires --size to be one of 2K, 3K/,
|
||||
);
|
||||
|
||||
assert.doesNotThrow(
|
||||
() => validateArgs("bytedance/seedream-4.5", makeArgs({ size: "1536x1024" })),
|
||||
);
|
||||
|
||||
assert.throws(
|
||||
() => validateArgs("bytedance/seedream-4.5", makeArgs({ referenceImages: Array.from({ length: 15 }, () => "ref.png") })),
|
||||
/supports at most 14 reference images/,
|
||||
|
|
|
|||
|
|
@ -156,10 +156,21 @@ function buildSeedreamInput(prompt: string, model: string, args: CliArgs, refere
|
|||
const requestedSize = args.size || getSeedreamDefaultSize(model, args.quality);
|
||||
|
||||
if (requestedSize) {
|
||||
if (isSeedream45Model(model)) {
|
||||
const parsed = parsePixelSize(requestedSize);
|
||||
if (parsed) {
|
||||
input.size = "custom";
|
||||
input.width = parsed.width;
|
||||
input.height = parsed.height;
|
||||
} else {
|
||||
input.size = normalizePresetSize(requestedSize);
|
||||
}
|
||||
} else {
|
||||
input.size = normalizePresetSize(requestedSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (args.aspectRatio) {
|
||||
if (args.aspectRatio && input.size !== "custom") {
|
||||
input.aspect_ratio = args.aspectRatio;
|
||||
}
|
||||
|
||||
|
|
@ -217,6 +228,14 @@ export function validateArgs(model: string, args: CliArgs): void {
|
|||
const referenceCount = args.referenceImages.length;
|
||||
|
||||
if (args.size) {
|
||||
if (isSeedream45Model(model)) {
|
||||
const normalizedSize = normalizePresetSize(args.size);
|
||||
if (!getAllowedSeedreamSizes(model).has(normalizedSize) && !parsePixelSize(args.size)) {
|
||||
throw new Error(
|
||||
`Seedream 4.5 on Replicate requires --size to be one of ${Array.from(getAllowedSeedreamSizes(model)).join(", ")} or custom dimensions like 1536x1024. Received: ${args.size}`
|
||||
);
|
||||
}
|
||||
} else {
|
||||
const normalizedSize = normalizePresetSize(args.size);
|
||||
if (!getAllowedSeedreamSizes(model).has(normalizedSize)) {
|
||||
throw new Error(
|
||||
|
|
@ -224,6 +243,7 @@ export function validateArgs(model: string, args: CliArgs): void {
|
|||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (referenceCount > 14) {
|
||||
throw new Error("Seedream on Replicate supports at most 14 reference images per request.");
|
||||
|
|
|
|||
Loading…
Reference in New Issue