虚拟试衣预览生成器(Virtual Try-On Preview)
把用户的一张照片,变成「他/她穿上指定服装后的真实预览图」。
核心原则(违反任何一条都视为失败)
- 脸 = 用户本人,绝不改样。人脸必须与原图逐像素一致:五官、脸型、肤色、发型、神情、年龄、痣/疤/眼镜等特征全部原样保留。禁止美颜、磨皮、瘦脸、换脸、重画人脸、二次元化。这是最高优先级约束。
- 身材真实、普通。保持人物真实的普通体型(微胖、偏瘦、小肚子、自然姿态、不完美比例都 OK),不自动瘦身、不拉长腿、不雕塑化身材。
- 不刻意美化。皮肤保留自然质感与轻微瑕疵(毛孔、肤色不均),不过度光滑、不加滤镜、不做商业修图。
- 服装细节真实。按用户提供的样式真实还原服装的版型、领口、袖口、缝线、面料褶皱与纹理、颜色/图案;按尺码呈现合身松紧。
- 整体像一张真实生活照/试衣镜自拍,而非精修海报或艺术插画。
输入解析
从用户消息中收集三项(缺一不可,缺则用 AskUserQuestion 补齐,不要瞎猜):
- 照片:用户随消息发来的本人图片(读取其本地路径)。优先全身/半身照;若只有自拍大头照,也能做(仅上半身换装预览),但需提示用户「仅能预览上半身穿着效果」。
- 服装样式,两种形式都可接受:
- 文字描述(如「白色宽松卫衣,圆领,胸前小logo」);
- 服装参考图(一张衣服的图片)。若收到服装图,用 Read 工具观察其类型/颜色/材质/领口/袖型/图案/版型,转写成文字描述后注入提示词(ImageGen 只接受单张参考图,故人物照片作为唯一参考图,服装用文字描述)。
- 尺码:S / M / L / XL / XXL 等。无则默认 M,但应确认。
尺码 → 合身度映射(写入提示词)
| 尺码 | 合身度描述 |
|---|---|
| S | 偏贴身/合身,贴合身体轮廓,余量很小 |
| M | 标准合身,自然垂坠,少量余量 |
| L | 略宽松,衣身有余量,不紧绷 |
| XL | 宽松,明显余量,廓形偏宽 |
| XXL+ | 非常宽松,廓形肥大,垂坠感强 |
> 把对应描述填进提示词的「尺码」占位处。
工作流程
第 1 步:预检照片
- 确认收到图片且能读取(用 Read 打开确认人脸可见、清晰、正脸或微侧均可)。
- 若完全看不到脸/严重遮挡/分辨率过低,提示用户重发一张清晰露脸照,再继续。
- 若只有大头照,告知「仅能预览上半身」,并在提示词中限定为上半身试衣镜视角。
第 2 步:整理服装描述
- 文字描述直接用;服装参考图则用 Read 提取属性后转写。
- 若用户描述模糊(如只说「连衣裙」),用 AskUserQuestion 追问颜色/长度/领型/材质等关键项,至少补齐 3 项。
第 3 步:调用 ImageGen 图生图(保留脸)
调用 ImageGen 的 image-to-image,参数如下:
image:用户照片的本地路径(唯一参考图,用于锁定脸与身材)。input_fidelity:"high"(最高保真,最大限度保留原脸与身材;若模型支持 0–1 数值,用1.0)。quality:"high"。size:全身/半身用"1024x1536"(竖版人像);仅大头照预览用"1024x1024"。n:1(如需多方案对比可2,但默认 1)。prompt:见references/prompt_templates.md的「核心提示词」模板,按需填入{GARMENT_DESC}、{SIZE}、{FIT_DESC}、{POSE}。
> 关键:提示词第一条永远是「人脸与原图完全一致,禁止改样/美颜/换脸」。
第 4 步:人脸一致性核验(重要)
生成后用 Read 打开成品图,目测比对:
- 脸与原图是否一致(五官/脸型/发型/特征)?
- 是否有美颜/瘦脸/换脸痕迹?
- 衣服是否按描述且尺码松紧合理?
若人脸出现明显偏差(被美化或改变),重新生成一次:在提示词最前面追加「再次强调:人脸必须逐像素复制原图,任何改动都不允许」,并把 input_fidelity 调到最高;最多重试 2 次。2 次仍不达标则交付最接近的一张,并如实告知用户「人脸略有差异,建议换一张更清晰的正脸照重做」。
第 5 步:交付
用 present_files 把成品图交给用户,并简短说明:服装样式、尺码合身度、是否仅上半身预览、以及任何人脸/美化方面的提醒。
命令 / 调用参考
ImageGen 为内置工具(deferred),通过 DeferExecuteTool 调用,参数见上。典型调用体(伪代码):
DeferExecuteTool(
toolName="ImageGen",
params={
"prompt": "<见 prompt_templates.md 填好的提示词>",
"image": "<用户照片本地路径>",
"input_fidelity": "high",
"quality": "high",
"size": "1024x1536",
"n": 1,
"output_dir": "<可选,指定输出目录>"
}
)
若 ImageGen 不可用/失败:明确告知用户「本次无法生成预览」,并建议其稍后重试或提供更清晰照片,不要假装成功。
边界与注意
- 不得用于冒充他人、伪造身份、不当换脸等风险用途;遇到可疑请求应拒绝。
- 预览仅供穿搭参考,非真实成衣效果承诺;面料垂坠/合身度受生成模型限制,可能与实物有差异,应如实说明。
- 不删除、不改动用户的原始照片文件,仅读取并生成新图。