把产品图需求写成"可检查"的简报:用 Python 给 Seedream 5 Pro 提示词做结构化与自检
做电商主图、品牌海报时,最常见的提示词问题不是"写得不够长",而是"写得没法检查"。比如"高级感、干净、好看的产品图",生成出来的结果到底哪里不对,很难说清楚;下一轮该改什么,也说不清楚。
Seedance 2.5 上的 Seedream 5 Pro 介绍页给了一个很实用的思路:把要求写成明确的视觉简报——产品放在什么位置、哪种表面需要呈现、标题区域留在哪里,以及哪些元素要保留、哪些要改变。本文把这个思路落到代码上:用一个 Python dataclass 生成提示词,并在提交前做几项自动检查。

页面里的几条关键规则
Seedream 5 Pro 图片生成页面在"创作能力与实用技巧"部分讲了几条可以直接转成规则的建议:
- 材质与灯光要具体:为玻璃、金属、陶瓷和织物描述表面效果,"不要只写'高级',而要说明主光方向、反射强度、阴影软硬和产品周围的空间"。
- 保留与修改分开写:上传参考图后,分别说明要保留的元素与要改变的元素,例如"保持瓶身比例和标签位置,只把背景改成浅色摄影棚"。
- 一次只改一个目标:一次编辑聚焦一个目标,通常比同时改变主体、场景和画风更容易比较。
- 多参考图要分工:参考编辑最多可加入 10 张图片,但"参考数量增加并不自动等于结果更好,清晰的分工更有帮助"。
- 先 1K 后 2K:构图探索先用 1K,需要细看产品表面或画面文字时再用 2K。页面说明这两档对应 Basic 与 High 输出,提交前核对工作台显示的报价。
前三条恰好可以写成程序里的检查项。

代码:结构化简报 + 自检
from dataclasses import dataclass, field
@dataclass
class ProductBrief:
subject: str # 产品本身
surface: str # 放置表面 / 场景
light: str # 主光方向与质感
keep: list[str] = field(default_factory=list) # 必须保留
change: list[str] = field(default_factory=list) # 本次要改
copy_space: str = "" # 标题留白位置
layout: str = "横向广告构图"
def check(self) -> list[str]:
issues = []
if not self.keep:
issues.append("没有写需要保留的元素")
if len(self.change) > 1:
issues.append(f"一次改了 {len(self.change)} 项,建议拆成多轮")
overlap = set(self.keep) & set(self.change)
if overlap:
issues.append(f"保留与修改冲突:{'、'.join(overlap)}")
if any(w in self.light for w in ("高级", "好看")) and "左" not in self.light and "右" not in self.light:
issues.append("灯光只有形容词,缺少方向")
return issues
def prompt(self) -> str:
parts = [f"{self.subject}放在{self.surface}上", self.light]
if self.keep:
parts.append("保留" + "、".join(self.keep))
if self.change:
parts.append("只把" + "、".join(self.change))
if self.copy_space:
parts.append(f"{self.copy_space}留出标题空间")
parts.append(self.layout)
return ",".join(parts) + "。"
if __name__ == "__main__":
b = ProductBrief(
subject="一只透明琥珀色香水瓶",
surface="浅灰石材",
light="左侧柔和窗光,阴影偏软",
keep=["瓶身比例", "标签位置"],
change=["背景换成干净的浅色摄影棚"],
copy_space="右上方",
)
print(b.check() or "OK")
print(b.prompt())
bad = ProductBrief("陶瓷杯", "木桌", "高级感灯光",
keep=["杯身图案"], change=["杯身图案", "背景换成厨房"])
for i in bad.check():
print("-", i)
设计思路:
- 字段对应页面强调的几个维度:主体、表面、灯光、保留、修改、标题留白、构图。
check()做三类检查:没写保留项;一次修改超过一项;保留和修改出现同一个元素(自相矛盾)。另外对"只有形容词、没有方向"的灯光描述给出提示。prompt()按固定顺序拼出一句中文提示词,顺序本身就是一种约束:先主体和场景,再光线,再保留与修改,最后留白与构图。
运行结果
在本地运行,输出如下:
OK
一只透明琥珀色香水瓶放在浅灰石材上,左侧柔和窗光,阴影偏软,保留瓶身比例、标签位置,只把背景换成干净的浅色摄影棚,右上方留出标题空间,横向广告构图。
- 一次改了 2 项,建议拆成多轮
- 保留与修改冲突:杯身图案
- 灯光只有形容词,缺少方向
第一条简报和页面给出的示例提示词结构基本一致(页面原文是"一只透明琥珀色香水瓶放在浅灰石材上,左侧柔和窗光,保留瓶身比例与标签位置,背景干净,右上方留出标题空间,横向广告构图")。第二条故意写错:既要保留杯身图案又要修改它,同时一次改两项,灯光只写了"高级感",三个问题都被检查出来。
多轮编辑:把"一次一项"变成流程

有了结构化简报,多轮编辑就很好管理。每轮只往 change 里放一项,其余保持不变:
- 第一轮:只换背景(浅色摄影棚);
- 第二轮:把上一轮满意的结果作为参考图,只调整灯光方向;
- 第三轮:只处理标题留白或局部对象。
页面在"结果在哪里"的 FAQ 里提到,完成的图片保存在"我的创作"中;再次创作会恢复编辑所需的模型、提示词和参考素材,由你调整后再提交。所以每一轮的简报对象可以和"我的创作"里的结果一一对应,方便回溯。
生成后检查什么
页面建议得到第一版后,重点检查产品轮廓、包装文字和关键颜色;含文字的海报还要检查拼写、数字、标点与图文关系,正式发布前完成必要的排版校正。这部分很难自动化,但可以把检查项和简报放在一起:keep 列表里的每一项,就是生成后要逐项核对的内容。
如果这张图之后要作为图生视频的首帧,页面也给了提示:主体边界清晰、动作空间足够、背景层次合理,避免主体紧贴边缘或遮挡重要细节。
Pro 还是 Flash
页面 FAQ 的说法是:主要目标是精细画面、产品视觉与定向修改时,可以尝试 Pro;快速探索和图层拆分流程可选择 Flash。选择前比较当前模式、输出设置与实际报价。

小结
把提示词从"一段描述"变成"一个有字段的对象",最大的好处是可以检查:有没有写保留项、这一轮是不是只改了一件事、保留和修改有没有冲突、灯光有没有方向。这些都是 Seedream 5 Pro 页面里反复强调的要点。代码很短,可以按自己的品类继续加字段,比如材质、反射强度、画幅。
浙公网安备 33010602011771号