把产品图需求写成"可检查"的简报:用 Python 给 Seedream 5 Pro 提示词做结构化与自检

做电商主图、品牌海报时,最常见的提示词问题不是"写得不够长",而是"写得没法检查"。比如"高级感、干净、好看的产品图",生成出来的结果到底哪里不对,很难说清楚;下一轮该改什么,也说不清楚。

Seedance 2.5 上的 Seedream 5 Pro 介绍页给了一个很实用的思路:把要求写成明确的视觉简报——产品放在什么位置、哪种表面需要呈现、标题区域留在哪里,以及哪些元素要保留、哪些要改变。本文把这个思路落到代码上:用一个 Python dataclass 生成提示词,并在提交前做几项自动检查。

01-page

页面里的几条关键规则

Seedream 5 Pro 图片生成页面在"创作能力与实用技巧"部分讲了几条可以直接转成规则的建议:

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

前三条恰好可以写成程序里的检查项。

02-rules

代码:结构化简报 + 自检

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 项,建议拆成多轮
- 保留与修改冲突:杯身图案
- 灯光只有形容词,缺少方向

第一条简报和页面给出的示例提示词结构基本一致(页面原文是"一只透明琥珀色香水瓶放在浅灰石材上,左侧柔和窗光,保留瓶身比例与标签位置,背景干净,右上方留出标题空间,横向广告构图")。第二条故意写错:既要保留杯身图案又要修改它,同时一次改两项,灯光只写了"高级感",三个问题都被检查出来。

多轮编辑:把"一次一项"变成流程

03-rounds
有了结构化简报,多轮编辑就很好管理。每轮只往 change 里放一项,其余保持不变:

  1. 第一轮:只换背景(浅色摄影棚);
  2. 第二轮:把上一轮满意的结果作为参考图,只调整灯光方向;
  3. 第三轮:只处理标题留白或局部对象。

页面在"结果在哪里"的 FAQ 里提到,完成的图片保存在"我的创作"中;再次创作会恢复编辑所需的模型、提示词和参考素材,由你调整后再提交。所以每一轮的简报对象可以和"我的创作"里的结果一一对应,方便回溯。

生成后检查什么

页面建议得到第一版后,重点检查产品轮廓、包装文字和关键颜色;含文字的海报还要检查拼写、数字、标点与图文关系,正式发布前完成必要的排版校正。这部分很难自动化,但可以把检查项和简报放在一起:keep 列表里的每一项,就是生成后要逐项核对的内容。

如果这张图之后要作为图生视频的首帧,页面也给了提示:主体边界清晰、动作空间足够、背景层次合理,避免主体紧贴边缘或遮挡重要细节。

Pro 还是 Flash

页面 FAQ 的说法是:主要目标是精细画面、产品视觉与定向修改时,可以尝试 Pro;快速探索和图层拆分流程可选择 Flash。选择前比较当前模式、输出设置与实际报价。

04-check

小结

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

posted @ 2026-10-29 13:13  Wan3ai  阅读(5)  评论(0)    收藏  举报