上一篇的结论是:随机种子决定这一抽落在哪里,提示词决定结果能落在多大一片地方。种子那个旋钮已经拆完了,这篇接着解决另一个——怎么把“一个女孩在城市里”这样一句话,写成一段真正圈得住结果的描述。

需要控制的东西里,真正该花笔墨的只有三层:主体、构图、光线。其余要素可以挂在这三层上,或者干脆交给风格参考图,不占提示词的篇幅。Midjourney 官方的提示词指南把要素列成七项:主体、媒介、环境、光线、颜色、情绪、构图1。但对“让出图可预判”这个目标来说,主体、构图、光线是主干,因为它们直接决定画面的几何结构。

先分清两种词:能被指认的,和只能被感受的

同一段描述里的词,力量并不一样。有研究把提示词拆成两部分做对照:一部分写画面的物理内容(比如“一只猫”),另一部分加风格修饰(形容词、艺术家名、光线词),再用图像相似度衡量加进去之后画面变了多少2。

结果显示,加形容词(比如“beautiful”“minimalist”)对画面的改变最小,加名词、艺术家名、光线词的改变最大。同一个词重复写五遍,也常常完全没有效果2。这就解释了为什么“很有氛围感、很高级、绝美”写进去像没写——它们没有对应的视觉落点。能被指着画面确认的词才起作用:什么物体、什么颜色、什么材质、镜头在哪、光从哪来。

主体层:让形容词紧贴着它修饰的名词

主体要写“是谁/是什么”,加上能看见的属性:颜色、材质、服装、动作、表情。这里最容易踩的坑是多主体时的属性错挂——你写“蓝色长椅左边是一辆绿色的车”,出来的可能是绿色长椅配蓝色车。

这有一个已经找到的原因。扩散模型早期版本用一个叫 CLIP 的文本编码器把提示词转成模型能读的形式,研究者拆开它发现:在“两个物体各带一个属性”的句子里,后一个物体的表示会错误地混进前一个物体的形容词信息3。在专门测试这类组合能力的基准 T2I-CompBench 里,这种失败被归类为属性绑定(attribute binding),而空间关系是所有测试项里表现最差的一类4。

实用对策有三条:

  • 属性和名词挨着写,一件事说完再写下一件。用“a red flower and a yellow vase”的结构,而不是把一堆形容词堆在句尾。
  • 超过两个主体就分开写。不少工具支持用分隔符把提示词切成几段分别理解(比如 Midjourney 的 ::),不同主体的描述不容易互相串味1。
  • 不要指望模型数数。T2I-CompBench 后来专门加了一类“生成计数”测试,就是因为“四个苹果”这种要求很不稳4。要几个东西,不如改用构图安排:一个在前景、一群在背景。

构图层:写相机在哪,不要只写“左边”

构图层的价值在于它给的是几何约束,而几何正是模型最弱的地方。偏偏“左边、右边”就是模型最不听的词。

更稳的写法是把“相机”写出来:

  • 镜别:特写、半身近景、全身中景、广角全景。这决定主体在画幅里占多大。
  • 视角高度:平视、略微俯拍、低角度仰拍、正俯视。
  • 主体位置与留白:居中、偏左三分之一、填满整个画幅、上方留出天空。
  • 景深:虚化背景、前后都清晰。

这四组词比“左边右边”有效,是因为它们在训练数据里对应着大量真实照片的描述,模型见过它们如何改变画面。写“马路右边的红色电话亭”是把关系交给模型去算;写“低角度仰拍,电话亭在画面左上,占画面四分之一”是把结果直接描述出来。

光线层:写光源,别写氛围

光线值得单独一层,因为它一次改动的范围最大——常常不只改亮度,还改主体质感和背景2。但光线词也有强弱之分。研究里有一组很说明问题的对照:“ambient lighting”这种把光源说清楚的词会显著改变画面内容,而“beautiful volumetric lighting”这类由形容词堆出来的说法,改变相对小2。差别在于前者是名词,后者是评价。

所以光线按四项来写就够了:

  • 光源是什么:窗光、顶灯、街灯、霓虹招牌、柔光箱(影棚里那种大面积的柔光灯)、硬日光。
  • 方向:从左前方、从背后逆光、从头顶。
  • 软硬:柔和漫射、锐利硬阴影。
  • 时间与色温:黄金时刻(日出后或日落前那段暖光)、阴天、深夜蓝调。

“左前方窗光、柔和、暖色”和“背后霓虹、硬光、冷色”,两句都不长,但出来的图基本不会认错。

顺序和长度:重要的话放前面

还有一个容易被忽略的维度:位置。基于 CLIP 的模型,文本编码器最多只读 77 个 token(一个 token 大致相当于半个到一个英文单词),超出的部分会被丢掉5。在 Stable Diffusion 3、Flux 这类同时用 CLIP 和另一个更大的文本模型 T5 的模型里,只有 T5 那一支能看到全文,CLIP 那一支仍然截断在 775。不同平台的处理方式不完全一样,但规律一致:越靠前的词越有分量,越靠后的内容越可能被削弱或丢掉。

结论很朴素:主体和构图放最前面,光线和风格放后面,用逗号和短语,不用华丽长句。一句二十个词的提示词,比一段八十个词的小作文更可控。

合起来:一条能直接用的骨架

1[镜别 + 视角] + [主体 + 紧贴的属性 + 动作] + [环境/背景] + [光源方向与性质] + [画幅比例/风格]

对照同一句话的两种写法:

  • 改前:一个女孩在城市里,电影感,高级感,超美
  • 改后:半身近景,平视,一位穿米色风衣的年轻女性走在雨后的街道上,位于画面右侧三分之一;背景是虚化的霓虹店招;左前方路灯的暖黄光打在她脸侧,阴影柔和

改后的版本里几乎每个词都能在画面上被指认出来。这就是判断标准:写完后数一数,有多少个词是别人能指着图确认的。够多,结果就在你圈定的那片小区域里,剩下的差异交给种子去抽;不够多,模型就仍然在替你做决定。

也要知道这套描述的边界。它擅长管住整体构图、主体外观和光线气质,但管不住精确布局、手部结构、画面里的文字,也管不住多主体之间的从属关系。这些要靠参考图、局部重绘、姿态或深度控制这些手段,是往后要讲的内容。还有一条边界:具体不等于长。具体是用来消除歧义的,写到 77 个 token 之后,多出来的字往往只是被丢掉。