主图/详情入模逻辑(当前实现)¶
本文说明 Canvas 主图 / 详情「一键」与「复刻」批量生图时,送给大模型的图片顺序与 Prompt 拼装约定。与桌面参考项目「主图一键生成_IT」对齐。
相关代码:
template_batch_generate_service.py—resolve_batch_form_reference_urls、批量启动template_batch_enqueue.py— 单镜头 Prompt 入队word_batch_prompt_builder.py— 复刻说明与自定义槽template_batch_copy_chain.py— 批量两步链llm_image_processor.py— Worker 消费与 Step2 串联
总览¶
flowchart TB
ui["Canvas 上传: 产品槽 / 参考槽"]
resolve["resolve_batch_form_reference_urls"]
prompt["Word + 自定义槽 + 可选复刻说明 + 参考图URL块"]
step1["镜头数大于1: 仅镜头0入队"]
step2["Step1成功后: 其余镜头只用Step1结果图"]
single["仅1个镜头: 直接入队"]
worker["backend-worker 上游生图"]
ui --> resolve --> prompt
prompt --> step1 --> step2 --> worker
prompt --> single --> worker
1. UI 上传 vs 入模顺序(勿混淆)¶
| 层面 | 含义 |
|---|---|
UI / input_images |
槽位名:product、reference;界面可先产品后参考 |
入模 image_urls |
送给大模型的数组顺序;有双图时固定参考在前、产品在后 |
实现:resolve_batch_form_reference_urls + Step1 的 resolve_step1_model_image_urls
- 同时有
reference+product→[参考…, 产品…] - 一键仅产品 → Step1 自动补 Word
reference_image_key(或模板样图)作为图片1,产品为图片2(对齐桌面「参考.png + 产品」) - 若仍只有产品 → 注入「产品仅作外观参考、构图跟 Word」说明,避免按产品原图构图
2. 图片角色约定(对齐桌面)¶
| 序号 | 角色 | 来源 |
|---|---|---|
| 图片1 | 版式/构图参考 | input_images.reference |
| 图片2 | 用户产品 | input_images.product |
Prompt 标签:图片1(版式参考) / 图片2(产品)(COPY_MODE_ROLE_LABELS)
Word 可直接写「复刻图片1、产品换成图片2」,不对图片序号做运行时对调。
3. Prompt 拼装顺序¶
入口:enqueue_batch_item
- 取 Word
prompt_text(或模板prompt_snippet) apply_custom_prompt_slots:替换/补全「产品是…」「材质是…」,追加custom_other- 若
mode=copy且双图且非 Step2:前置COPY_MODE_INSTRUCTION(复刻图片1 / 产品用图片2) - 末尾追加
【参考图URL】+图片N(角色): url
4. 一键 vs 复刻执行(两步链)¶
镜头数 > 1 时,一键与复刻均走两步(should_use_copy_two_step 仅看 image_count):
一键 auto |
复刻 copy |
|
|---|---|---|
| 参考图 | 一般不传 | 必传 |
| Step1(镜头0)入图 | 通常仅产品 | [参考, 产品] |
| Step2(其余镜头)入图 | 仅 [Step1 结果图] |
仅 [Step1 结果图] |
流程:
- 启动时只发布镜头0;其余镜头种子写入独立 Redis key(
batch:job:{id}:step2_seeds) - Worker 成功镜头0后
enqueue_copy_step2_after_step1(入模仅主视觉结果图 + 各镜头 Word) - Step2 注入「场景延续」:锁产品/陈设/色调,但机位与景别以下文 Word 为准,允许明显换视角
- 镜头0 失败则
fail_pending_copy_step2
单镜头任务仍直接入队,无 Step2。
5. 不做(当前范围)¶
- 不把 Admin Word 的
reference_image_key/ 模板样图自动并入一键的图片1(一键仍主要靠文字构图 + 用户产品图) - 不改 Canvas「先上传产品」的交互顺序