共享配置与例外项
套图任务怎样保持一致:把共用约束写成数据
AI套图工具可以协助图组制作,但一致性要求不能只放在聊天记录里。本篇把水瓶套图的共用约束写成数据,再用Python限制每张图允许覆盖的字段。它用于本地任务规划,不控制模型输出,也不声称只要配置正确,商品主体就一定保持一致。
假设同一水瓶需要白底、桌面场景和结构说明图。颜色、瓶口形式与销售组成属于共同资料,背景与图位用途可以不同。如果每张提示单独写,容易漏掉某个公共条件。先建立shared字典,保存本次任务采用的商品定义;local字典只写当前图位的差异。哪些差异允许出现,由编辑在立项时明确。
覆盖规则应区分保护项与可改项。商品颜色和部件组成一般不应因图位变化被覆盖,背景描述和展示用途可以按任务调整。这里是数据设计的例子,实际保护项由商品资料决定。不要把不同色款合并成同一shared,再通过local随意改色;那种任务应先按SKU拆分资料定义,避免跨款混用。
Picset电商套图页面有详情图要求和确认规划阶段,可以承接整理好的制作约束。把本地合并后的要求交给工具,再检查规划与输出。本文代码并非Picset接口调用,也没有验证它内部如何保存约束。公开入口说明制作路径,本地脚本只帮助团队减少提示记录中的覆盖错误,两个环节不能混为一项能力。
函数先检查local有没有shared之外的字段,再检查它是否覆盖了allowed之外的字段。任一情况出现就抛出ValueError,不自动舍弃字段。通过后用字典解包形成新对象,避免直接改写shared。每张图获得自己的合并结果,公共定义仍保留原版本。这样修订某个背景时,不会把整个批次的底稿一起修改。
本地验证包含允许覆盖背景的成功输入、尝试修改保护颜色的失败输入和增加未知字段的失败输入,三个分支均已运行。使用的green、white等值是合成测试数据,不对应实际商品配色。测试检查的是覆盖约定,不是水瓶成图效果。真实要求应来自商品资料,不能把示例字符串直接作为正式制作参数。
这个函数只做顶层字典合并。若字段值本身是列表或嵌套对象,解包不会生成深度独立副本,也不会校验嵌套结构。复杂场景宜采用明确的数据模式,必要时深复制并验证内容。本例故意保持范围小,让读者知道已经检查什么、还没检查什么,避免把一个短函数称作完整的批量生产系统。
公共约束还需要版本。商品资料变更后,给shared建立新版本并重新生成受影响图位,不静默覆盖旧文件。local记录应绑定所用公共版本,采用版也保存该关系。否则接手者只看到同样的字段名,却不知道某张图来自哪个时期的资料。图组一致性不仅是提示词一致,也是资料版本一致。
生成后仍用视觉观察检查瓶盖、提环、吸管和瓶身颜色。脚本未允许覆盖颜色,不等于模型没有改变颜色;数据约束通过,只说明任务描述没有此类覆盖。出现异常时,把输出问题与配置问题分开记录。若原始照片缺关键结构,补资料比增加更多保护字段更直接,因为约束文字不能创造缺失事实。
交付时留下shared、local、allowed和合并结果,附上每张图的用途与观察记录。需要改场景时,先检查修改是不是允许覆盖,再对输出重新验收。水瓶套图因此形成可复查的规划过程:公共资料维持同一版本,独有信息按图位展开,异常能定位到具体环节,而不是靠每张图重复一句“保持一致”。
def merge_constraints(shared, local, allowed):
unknown = set(local) - set(shared)
protected = set(local) - set(allowed)
if unknown or protected:
raise ValueError('invalid override')
return {**shared, **local}
参考资料
[1] Picset 当前公开工作室页面