79 lines
3.7 KiB
TypeScript
79 lines
3.7 KiB
TypeScript
export function buildAgentSceneImageRolePrompt(params: {
|
|
uploadedImageCount: number;
|
|
productImageCount: number;
|
|
includeModelImage: boolean;
|
|
}) {
|
|
if (params.uploadedImageCount <= 0) {
|
|
return "";
|
|
}
|
|
|
|
const lines = ["【输入图片角色说明】"];
|
|
const resolvedProductCount = Math.max(
|
|
1,
|
|
Math.min(params.productImageCount, params.uploadedImageCount)
|
|
);
|
|
const hasModelImage =
|
|
params.includeModelImage && params.uploadedImageCount > resolvedProductCount;
|
|
|
|
for (let index = 0; index < params.uploadedImageCount; index += 1) {
|
|
if (index < resolvedProductCount) {
|
|
lines.push(
|
|
`图片${index + 1}:产品白底参考图,用于锁定产品的外观、比例、材质、颜色、结构和细节。`
|
|
);
|
|
continue;
|
|
}
|
|
|
|
if (hasModelImage && index === resolvedProductCount) {
|
|
lines.push(
|
|
`图片${index + 1}:固定模特图。若画面需要人物,必须复用这张图中的同一模特(脸型、发型、体型、肤色、穿搭风格保持一致),不得替换成其他人物。`
|
|
);
|
|
continue;
|
|
}
|
|
|
|
lines.push(
|
|
`图片${index + 1}:补充参考图,只用于补充产品角度、细节或辅助信息,不可替代主产品外观。`
|
|
);
|
|
}
|
|
|
|
lines.push(
|
|
`必须以图片1${resolvedProductCount > 1 ? `到图片${resolvedProductCount}` : ""}中的产品信息为最高优先级,严格保持同一产品。`
|
|
);
|
|
lines.push(
|
|
"【产品锁定约束】生成结果中的产品必须与产品白底参考图保持同一产品身份,禁止改成另一款产品。"
|
|
);
|
|
lines.push(
|
|
"严禁改变产品的主体结构、外轮廓、长宽高比例、层板数量与位置、抽屉数量与位置、柜门/开孔/隔断布局、弧度造型、柜腿样式、把手/五金位置。"
|
|
);
|
|
lines.push(
|
|
"严禁改变产品主色、木纹方向、材质类型、表面纹理、明暗层次和细节做工;不得把深色木纹改成浅色、白色、金属色或其他颜色体系。"
|
|
);
|
|
lines.push(
|
|
"如果场景风格与产品外观产生冲突,必须优先保留产品本体不变,只允许调整周边场景、软装、灯光、背景和道具,不允许为了适配风格而修改产品。"
|
|
);
|
|
lines.push(
|
|
"产品白底图是产品身份锁定图,不是灵感参考图。输出时必须让人一眼看出是同一个产品,只能换场景,不能换产品本体。"
|
|
);
|
|
lines.push("不要把多张输入图拼贴成多个主体,也不要把所有输入图元素强行同时融入结果。");
|
|
lines.push(
|
|
hasModelImage
|
|
? `如果当前场景有人物展示需求,只允许使用图片${resolvedProductCount + 1}里的模特;如果不需要人物,则不要强行加入人物。`
|
|
: "当前没有固定模特图,不要凭空生成强人物主体。"
|
|
);
|
|
if (hasModelImage) {
|
|
lines.push(
|
|
"【模特锁定约束】固定模特图是人物身份锁定图。结果中出现的人物必须与模特图为同一人,不得换脸、换人、换性别、换年龄段,不得改变五官特征、脸型、发际线、发型主体、肤色、身材和辨识度。"
|
|
);
|
|
lines.push(
|
|
"允许根据场景构图调整模特的站姿、坐姿、手势、视线和轻微表情,但必须让人一眼看出是同一个模特。"
|
|
);
|
|
lines.push(
|
|
"只有当工作流设定或补充要求里明确要求修改模特衣服、穿搭或服装颜色时,才允许更换或调整服饰;如果没有明确要求,默认保持模特原有服装风格和穿搭关系一致。"
|
|
);
|
|
lines.push(
|
|
"如果模特衣服被允许调整,也只能改衣服,不得借机改变模特本人;人物身份稳定性始终高于服装变化。"
|
|
);
|
|
}
|
|
|
|
return lines.join("\n");
|
|
}
|