你写了一段很用心的 prompt:blonde woman in a red leather jacket, leaning against a 1970s muscle car, golden hour, shot on 35mm film, slight motion blur。出来的图却是一位深棕发女性、穿绿色连衣裙、靠在一辆现代轿车上,时间还是正午。模型没崩、也没”失败”——它给某些 token 加了重权重、忽略了另一些、剩下的当装饰用。
最快的修法: 把主体和必须有的属性挪到前 10 个词里、把风格词砍到 1-2 个、把正向 prompt 里所有 no/not 拿出来放进专门的负面字段(或改写成正向描述)。这三步能解决绝大多数”它没理我 prompt”的情况。完整路径见下文。
这个问题在老一代扩散模型上更明显(Stable Diffusion / SDXL 用的是 77-token 的 CLIP 编码器)。截至 2026 年 6 月,ChatGPT 里的 GPT Image 2(已替代 DALL-E 3,OpenAI 在 2026 年 5 月 12 日下线了 DALL-E 3)、Gemini 里的 Nano Banana 系列、以及 Imagen 4,对自然语言指令的遵循都好得多——但只要 prompt 自相矛盾、风格词堆太多,或者在模型看到之前被套壳改写过,它们照样会丢属性。
你属于哪一类?
| 症状 | 最可能的原因 | 跳到 |
|---|---|---|
| 主体错了或没出现 | 主体被埋到第 10 个词之后 | Step 1 |
| 风格糊成一团、不可预测 | 3 个以上风格词在抢镜 | Step 2 |
| 你说”不要”的东西反而出现了 | 负面词写在了正向 prompt 里 | Step 3 |
| 两个属性混在一起或随机只出一个 | prompt 里有自相矛盾的对子 | Step 4 |
(word:1.3) 这种权重写法没反应 | 这个模型不认这种语法 | Step 5 |
| 输出很泛、和你的具体 prompt 对不上 | 套壳工具改写了 prompt | Step 6 |
| 长 prompt 的尾部被忽略 | 超出了模型的 token 窗口 | Step 2 / 原因 #6 |
常见原因
按命中率排序。
1. 主体被埋在 prompt 中段
扩散模型(SDXL、FLUX,Midjourney 程度稍轻)对越靠前的 token 给越高权重。如果你的 prompt 开头是 golden hour, shot on 35mm film, slight motion blur, blonde woman in a red leather jacket...,模型在读到”金发女性”之前,就已经锁定了”黄金时刻胶片照”这个泛概念。
如何判断:你 prompt 里”主体本体”出现在第几个词?在扩散模型上,超过第 10 个词就太晚了。
2. 风格修饰互相打架
Photorealistic, oil painting, hyper-detailed, watercolor, anime——五种风格抢镜。模型挑 1-2 个赢家、扔掉其余,或者平均成一锅糊。
如何判断:把描述”怎么画”而不是”画什么”的词数出来。超过两个就在打架区间。
3. 负面词夹在正向 prompt 里
在正向 prompt 里写 no glasses, no hat, not smiling,是 CLIP 类模型上最常见的自找麻烦。tokenizer 会把 glasses、hat、smiling 当成相关 token 保留,否定那部分被稀释掉,于是你常常恰好得到了想排除的东西。2026 年的自回归模型(GPT Image 2、Nano Banana、Imagen 4)对自然语言否定的解析好得多,但 Google 官方建议依然是把 don't include X 改写成 include Y。
如何判断:在正向 prompt 里搜 no、not、without、avoid。任何一个出现都有风险。
4. 属性自相矛盾
Tall short woman、dark blonde hair、wearing a t-shirt and a formal gown、running while sitting。模型挑一边、扔另一边。
如何判断:把 prompt 读出声,听有没有自相矛盾的描述。
5. token 权重语法你的模型不支持
(blonde:1.5)、[red car]、((muscle car))——这是 Stable Diffusion 家族的权重写法。Midjourney 不读;FLUX 基本忽略;GPT Image 2 和 Imagen 4 把它当普通标点。把 SDXL 教程里的 prompt 直接复制到 Midjourney,半句白写。Midjourney 自己的加权方式是多重 prompt 的 :: 权重(muscle car::2)和 --no 标志,不是括号。
6. prompt 超出模型上下文
CLIP(SDXL 用的)有 77-token 硬上限——2026 年 6 月依然如此,除非你额外接上 Long-CLIP、TULIP 或 Compel 库。超过 77 token 后内容会被截断、或拆成多 pass 再合并,丢一致性。FLUX.1 [dev] 靠 T5 编码器能读到 512 token(FLUX.1 [schnell] 上限 256),但 black-forest-labs 说明,超过大约 200 词的 prompt 会被内部摘要压缩,尾部因此被压扁。(FLUX.2 把 T5 换成了 Mistral Small 3.2 视觉语言编码器,长 prompt 处理更好。)
如何判断:数词数。SDXL 超 50 词、FLUX/Midjourney 超约 150 词,就进入风险区。
7. 工具在你看不见的地方改写了 prompt
ChatGPT 图像工具、Canva 和很多套壳产品,会在把 prompt 传出去之前先改写一遍。这是设计如此——DALL-E 3 和 ChatGPT 界面会自动”revise”(重写)prompt 来帮新手出图——但它把你精确的 prompt 变成了泛化版。
动手前先确认
- 把当前 prompt、模型、seed、失败结果都存好。
- 找出最关键的那个被忽略的属性(主体?颜色?光线?)。修一个具体的失败,远比修”全错”容易。
- 记录用的是什么模型 / 工具——SD/FLUX 扩散栈、Midjourney,和 GPT Image / Gemini / Imagen 自回归模型,修复路径都不一样。
- 想清楚被忽略的元素是必须有还是可有可无。
- 改 prompt 模板前先备份。
需要收集的信息
- 完整 prompt、负面 prompt、模型、版本、seed、sampler、步数。
- 具体是哪个属性 / 短语被忽略。
- 同 prompt 跑 4 个不同 seed 是不是同一种失败(prompt 结构问题),还是各种各样(接近随机)。
- 把 prompt 砍到只剩 3 个词,能不能命中那个属性。
最短修复路径
Step 1:主体 + 关键属性放前 10 个词
把”必须有”的放最前,描述其次,风格放最后。
改前:
golden hour lighting, shot on 35mm film, slight motion blur,
blonde woman in a red leather jacket leaning against a muscle car
改后:
blonde woman in red leather jacket, leaning against red 1970s muscle car,
golden hour, 35mm film, slight motion blur
主体和主要属性(woman、blonde、red jacket、muscle car)现在都在前 12 个词里。风格放后面。
Step 2:风格修饰最多 2 个
prompt 里超过 3 个风格修饰,砍掉最弱的两个。留 1-2 个定义画面感的。成功率高的结构:
[主体 + 属性], [环境 + 光线], [单个风格修饰]
示例:blonde woman in red leather jacket, leaning against muscle car, golden hour, shot on Kodak Portra 400 film。
Step 3:负面词放对地方
- SDXL / A1111 / ComfyUI / FLUX:所有负面词放专门的负面字段。从正向里把
no X/not X全部剥掉。 - Midjourney(V8.1):用
--no标志,如--no glasses, hat, smiling。 - GPT Image 2 / Imagen 4 / Nano Banana / ChatGPT 图像工具:没有单独的负面字段。把负面改写成正向反义(
no glasses→clear face, no eyewear)。这几个模型对自然语言否定的遵循比 SDXL 好得多,但正向改写仍是更可靠的写法。
Step 4:消除矛盾
prompt 再读一遍,找互相打架的对子,砍掉一边。
Step 5:权重语法只对支持的模型用
- SDXL / FLUX.1 [dev] / SD 1.5:
(blonde:1.3)有效。 - Midjourney V8.1:括号不加权。用多重 prompt 权重(
blonde hair::2, red jacket::1)、--no标志,或者针对参考图用--iw(image weight,范围 0–3,默认 1)。 - GPT Image 2 / Imagen 4 / Nano Banana:完全不要写这种语法,靠词序和清晰句子。它们读的是自然语言,不是权重 token。
Step 6:绕过会改写你 prompt 的工具
如果你在 ChatGPT 或某个套壳里跑、模型明显收到了被改写的版本,那就直接走原生:Midjourney 用网页版或 Discord、OpenAI Images 用 API(gpt-image-2,prompt 原样传入)、Imagen 4 / Nano Banana 用 Google AI Studio。只有 API 路径能保证模型看到的就是你打的字。
Step 7:一次只改一个变量
prompt 结构没问题后,每次生成只改一个东西。一次改两个就没法诊断了。在工具允许的地方锁定 seed,把 prompt 改动和随机波动隔离开。
怎么确认已经修好
- 输出包含 prompt 明确点名的每个属性。
- 同 prompt 不同 seed 出 3 张,3 张都包含点名属性(说明是结构性修好,不是撞运气)。
- 给别人看 prompt 和图,不需要你解释,他也能确认匹配。
- 风格符合你的意图,没有平均成糊状。
如果还是没修好
- prompt 砍到最简(主体 + 1 属性),再逐句加回,加哪句崩就是哪句出问题。
- 同 prompt 换个模型跑(FLUX → Midjourney、SDXL → Imagen 4)。在别处能跑,就是模型特定的问题。
- 从文生图换到图生图:放一张大致样子的参考图 + 文字写改动。参考图会主导模型注意力(Midjourney 上调高
--iw)。 - 在 Midjourney V8.1 上打开 Raw 模式,去掉默认风格,让你的 prompt 占更大主导。
- 求助前打包好 prompt、模型、seeds、各次输出。
常见问题
我明明写了 no glasses,为什么还是给我画了眼镜?
在 CLIP 类模型(SDXL 这一档)上,正向 prompt 里的否定在 tokenize 时被稀释,glasses 作为相关 token 留了下来。把它移到负面字段、用 Midjourney 的 --no、或改写成正向(clear face, no eyewear)。GPT Image 2 这类新模型处理得更好,但正向改写仍最稳。
(red:1.4) 这种括号权重在 Midjourney 或 ChatGPT 里有用吗?
没用。那是 Stable Diffusion 的语法。Midjourney 用 :: 多重 prompt 权重和 --no;GPT Image 2 和 Imagen 4 完全忽略这种语法,靠词序和清晰自然语言来响应。
为什么我又长又细的 prompt 反而比短的差? token 上限。SDXL 超过 77 个 CLIP token 会截断,FLUX 超过约 200 词会做摘要压缩。长 prompt 的尾部最先被丢,所以要把重要内容前置、删掉废话。见 Prompt 很长但效果更差。
同一个 prompt 每次出图本来就不一样吗? 是的,除非你固定 seed。变 seed、保持 prompt 不变,来测失败是结构性的(每个 seed 都同样错)还是随机的(每次都不同)。复用同一个 seed,则能隔离单次 prompt 改动的效果。
要不要干脆让 ChatGPT 帮我改 prompt?
随手出图可以——改写会补细节。但要精确、可复现的输出,就走 OpenAI Images API 用 gpt-image-2,让模型收到你的 prompt 原文,而不是一段转述。
预防建议
- 按用途维护一份”能跑通”的 prompt 模板库,从已知模板开始改。
- 每次只改一个变量,尽量固定 seed。
- SDXL 控制在 50 词以内,Midjourney / FLUX 控制在约 150 词以内。
- 主体永远放最前,风格放最后。
- 负面词当独立概念处理,永远不写在正向 prompt 里。