写提示词这件事,说穿了就是一个“词汇量决定上限”的活。我在各个AI绘画社群里逛了这么久,最常见的现象就是:同一个模型、同一个参数、同一个种子,新人写“一个女孩,漂亮,长发”,大佬写“soft cinematic lighting, hyper-detailed portrait of a woman with flowing chestnut hair, freckles across the bridge of her nose, wearing a cream-colored knit sweater, dappled sunlight through window blinds, film grain, 85mm f/1.4”——出图效果完全不在一个层面上。很多人以为这是模型差异,或者纯粹靠运气,但你用同一个种子复现几次就会发现,差距就是那几行提示词本身。
这篇文章我想认真聊聊这个卡住很多人的“词汇壁垒”:它到底是怎么形成的,底层机制是什么,以及最关键的——怎么系统性地破解它,而不是靠零零散散收集几个所谓“高质量提示词”却不知道为什么有效。里面会涉及一些模型对文本理解的真实逻辑,也会有我自己搭词库、做反推练习、以及踩坑总结出来的一套实操方法,想把这东西吃透的朋友可以照着一步步来。
1. 词汇壁垒的本质:你不是不会画画,而是“不会说话”
1.1 为什么同样一句话,在不同人手里效果天差地别
先抛一个我自己很早就意识到的事实:AI绘画模型不是“理解”你的提示词,它是“匹配”你的提示词。这意味着你输入的文字,本质上是作为一个查询条件,去它记忆里检索一个最接近的“视觉特征组合”。那么问题来了——如果你的查询条件本身就模糊,模型怎么知道你想要的是什么?
举个例子。你写“美女”,模型检索到的是“美女”这个词在所有训练图片中对应的平均特征。但这个“平均”非常可怕,它把无数张不同风格、肤色、发型、光照下的面孔揉在一起,最后出来的结果就是一张“大众脸”,没有个性、没有细节、没有氛围感。而高手写提示词,从来不会用这种高度概括的大词,他们用的是“一个小众切面的精确描述”。
这就是词汇壁垒的第一层含义:你以为你在使用语言,实际上是语言在限制你。你的词汇量有多大,你能表达的画面边界就有多宽。词汇越少,你向模型传达的信息熵就越低,模型只能用常见的组合来补全,结果自然是千篇一律。
1.2 “知识诅咒”:不是你看不懂,是你不知道别人看到了什么
词汇壁垒最隐蔽的地方在于,它几乎不会让你意识到自己的不足。你看到一张惊艳的图,第一反应是“这个模型真强”或者“这个作者运气真好”,而不是去拆解它的提示词到底写了什么。这就是心理学里的“知识诅咒”——当你不知道某个词汇存在时,你根本不知道自己错过了什么。
举个很现实的例子:刚接触SD(Stable Diffusion)的时候,我写“森林里的木屋”怎么都画不出电影感,出图永远是“老实巴交”的旅游照。后来我才知道,需要在里面加一个词叫做“volumetric fog”(体积雾)。当这个词加进去的一瞬间,整个画面立刻有了层次和氛围。但问题是,如果你从来没听说过“volumetric fog”这个词汇组合,你是无法凭空想出来要写它的。
这意味着我们面对的不是“审美差距”,而是一个“信息差问题”。破解这个问题的关键,不是提高审美水平,而是扩大词汇覆盖的广度,把所有高频出现的“画面描述词汇”变成自己的本能反应。这是整篇文章要解决的核心问题。
2. 破解词汇壁垒的第一关:理解模型到底在“读”什么
2.1 文本编码器不是人,它像一本“词典”
很多教程会让你背一堆“魔法词”,但如果不理解底层原理,背了也白背。以Stable Diffusion系列为例,它的文本编码器(SD 1.5时代是CLIP ViT-L/14,SDXL是双编码器结构,FLUX则用了T5+CLIP的组合)做的事情很简单:把每一个词或者词组映射到一个高维向量空间中的某个坐标。
这里可以做一个非常贴切的生活化类比:你可以把文本编码器想象成一本“配图词典”,模型训练时看过的每一张图,都被打上了对应的解说词条。你输入提示词的时候,本质就是在翻这本词典,找到最接近的词条,然后把对应词条后面的图样组合拿出来给你。所以,模型质量的高低,很大程度上取决于这本“词典”的厚度,也就是训练数据集。
这就解释了很多奇怪的现象。为什么“cyberpunk”这个词出图效果极其稳定?因为它在训练集里出现了几百万次,向量空间中的映射区域极其密集、清晰。为什么相对小众的词汇容易“翻车”?因为它在词典里只有可怜的一两条记录,模型找不到足够丰富的视觉特征,只能东拼西凑,出来的图自然乱七八糟。
2.2 词组的“不可拆分性”和组合幻觉
文本编码器对词组的处理,远比你想象的更“死板”。尤其是CLIP这一类编码器,它对“a cat wearing a hat”的理解,并不是拆成“cat”(猫)和“hat”(帽子)分别取特征,再组合成一个新概念。它是把整句话当成一个整体去匹配,但由于训练数据中“穿帽子的猫”图片足够多,它整体匹配的效果还不错。
但如果你的描述是“a pelican riding a bicycle”(鹈鹕骑自行车),这里就很有意思了。这个提示词的出现频率几乎为零,模型没有完整的对应图像可以检索。然而,你实际出图会发现,模型大概率能给你画出一只鹈鹕在骑自行车的画面,虽然动作很僵硬,但元素都在。这说明模型并不是完全死板的“查词典”,它能通过注意力机制,在已有的局部特征库中进行某种程度的“重新组合”和“幻觉构建”。这也是为什么像“鹈鹕骑车”这样的荒诞组合提示词会成为测试模型能力的经典用例——它逼迫模型展示自己的组合推理能力。
理解了这一层,你就明白为什么“词组顺序”很重要了。以SD 1.5为例,CLIP对文本的编码是分步进行的,前面的token会占主导权重。你如果把“bicycle”放在最前面,出来的图可能会偏向自行车而不是鹈鹕。这也是为什么很多人写提示词时,会把最核心的主体名词放在最前面。
但有一个变化值得注意:新一代模型(比如SDXL、FLUX)对文本的理解能力已经大幅增强,语义解析的容错性更高,不再像SD 1.5那样对词序极度敏感。不过,把核心词前置仍然是一个稳妥的好习惯——因为文本编码器的注意力机制即便再优化,也会对序列开头的内容保持更高的全局注意力。
2.3 负面提示词同样存在“词汇壁垒”
很多人写负面提示词只会写“bad quality, blurry, ugly”,效果往往不尽如人意。问题在哪?因为这些负面词同样太“大”了。它们在大规模数据集里覆盖了太多不同类型的缺陷,模型不知道该具体避开什么。
我实测下来,负面提示词需要写得尽可能具体,效果才会明显。比如,与其写“bad hands”,不如写“extra fingers, deformed fingers, malformed hand”;与其写“bad face”,不如写“asymmetric eyes, crooked nose, distorted face”。绝大多数底层模型训练时确实见过大量手指畸形的图,你把“extra fingers”(多余的手指)这个具体形态写出来,模型才能真正去修正这个具体的病灶。
3. 从“空泛”到“具体”:一套可复用的词汇颗粒度体系
3.1 五个层级的词汇颗粒度
我在大量对比测试后,把提示词的具体程度分成了五个颗粒度等级。你可以用这个框架来检查自己写的提示词处于哪个层级:
| 颗粒度等级 | 描述方式 | 实例 | 出图预期 |
|---|---|---|---|
| L1 概念级 | 一个名词或形容词 | cat | 随机性极高,完全取决于模型默认偏好 |
| L2 特征级 | 名词+修饰语 | a white cat | 开始有基础定向,但仍然空间很大 |
| L3 场景级 | 主体+位置+环境氛围 | a white cat sitting on a sofa, sunny living room | 画面布局开始明确 |
| L4 细节级 | 场景+材质+光型+镜头语言 | a white persian cat sitting on a dark green velvet sofa, warm afternoon sunlight, shallow depth of field, 85mm lens | 画面质感与氛围基本可控 |
| L5 风格级 | 细节+艺术家风格+画质后缀 | ... + soft focus, film grain, cinematic lighting, octane render | 接近可稳定复现的成品提示词 |
你可以对照一下自己平时写的提示词在哪个层级。大多数人长期停留在L2或L3,而强的提示词一般都在L4甚至L5。差距不在于你是不是知道“沙发”这个英文单词,而在于你是否会把“深绿色天鹅绒沙发”和“午后暖阳侧光”这样的微细节写进去。
3.2 颗粒度越细,模型的“猜测空间”越小
为什么越具体出图越稳定?回到第一部分的逻辑:提示词是模型的“约束条件”。你给的约束条件越多,模型的检索范围就越窄,可发挥的“自由裁量权”就越小,乱创的概率就越低。
我做一个实验对比给大家看。用同样的种子、同样的采样器:
提示词A:a beautiful girl in a garden
提示词B:a young woman with wavy honey-brown hair, wearing a white linen sundress, standing in a wildflower meadow under soft golden hour light, delicate petals floating in the air, shot on 85mm f/1.2, shallow depth of field, pastel color palette
结果非常明显:提示词A每次生成的女孩长相都不一样,姿势也随机,甚至有时候花园风格都截然不同。提示词B则基本上稳定在同一张脸上,构图的偏差幅度很小,角度和光线的风格也比较统一。这说明,对主体外观描述越详细,模型对外貌特征的锁定就越精准。
所以在写提示词的时候,我建议核心主体必须过一遍“5W检查法”:who穿着什么(外貌+衣着)、what在做什么(动作)、where在什么环境、when什么时间光线、how用什么镜头/视角/画质呈现。这五个维度全部写全,提示词的颗粒度就基本达到L4以上。
3.3 别急着追求“长”,先追求“准”
这里有一个必须提醒的误区:不是提示词越长越好。堆砌大量重复的近义词、空泛的夸赞词(比如“masterpiece, best quality, amazing”)并不会提升画面质量,只会白白浪费模型的注意力权重。
真正的提示词应该是“信息密度高但互不重复”。每一个词都在提供新的有效信息,而不是在强化已有的信息。比如“a cute adorable lovely beautiful girl”这一串形容词,在CLIP编码器看来几乎是同一个词在重复,能提供的约束能力远不如“a girl with freckles and braided hair”这种明确的外貌特征。
从我自己的经验来看,有效提示词的单词数并不是关键指标,画面主体(Subject)、环境(Environment)、光线(Lighting)、构图(Composition)、风格(Style)五个维度的完整度才是。你把五个维度都覆盖到,哪怕是50个词也能出不错的图;缺了维度,写500个词也是浪费。
4. 搭建属于自己的提示词词库:结构、分类与拓展方法
4.1 六段式提示词模板
为了解决“词汇不够用”和“不知道写什么”的问题,我给自己总结了一套六段式模板。每次写提示词,我按这个结构填空,基本不会出现无从下手的情况:
- 主体(Subject):谁/什么 + 外貌特征 + 衣着/材质
- 动作/姿态(Pose):正在做什么 + 表情 + 视角朝向
- 环境(Environment):地点 + 背景元素 + 氛围
- 光照/色调(Lighting):光源类型 + 光线方向 + 色彩倾向
- 镜头/构图(Camera):焦距 + 景深 + 拍摄角度 + 画幅
- 风格/画质(Style):艺术风格 + 渲染方式 + 质量后缀
我拿一张实际作品来拆解。当时想画一个“雨夜站在霓虹灯下的女孩”,但不想落入赛博朋克的俗套,于是按模板填:
- 主体:a young woman with short platinum-blonde hair, wearing a translucent yellow plastic raincoat
- 动作:looking up at the sky, raindrops running down her face, slight smile
- 环境:empty Tokyo backstreet at night, wet asphalt reflecting neon signs, vending machines glowing
- 光照:mixed warm and cool neon lighting, strong contrast, reflections on wet surfaces
- 镜头:low-angle shot, 35mm lens, deep focus, cinematic composition
- 风格:photorealistic, Kodak Portra 400 film grain, muted color palette with vibrant neon accents
最终出图效果非常稳定,氛围感直接拉满。大家可以看到,这个提示词里没有一个词是“复杂词汇”,基本都是日常会用的描述性短语。它厉害的地方在于每一个短语都有明确的指向性,组合在一起就形成了完整画面。
4.2 建立自己的“功能性词汇抽屉”
词库最怕“一盘散沙”。我建议按功能分类去积累,而不是收藏一大堆整段提示词。因为整段提示词往往把多个功能混在一起,换场景时无法复用。我的做法是开一个表格或者笔记软件,维护以下分类:
| 分类 | 高频可用词 | 适用场景 |
|---|---|---|
| 材质词 | velvet, silk, brushed metal, frosted glass, cracked leather | 需要精确指定物体质感时 |
| 光效词 | rim light, backlight, volumetric light, candlelight, neon glow | 控制光线氛围 |
| 镜头词 | wide shot, close-up, dutch angle, fisheye, macro lens | 控制画面构图 |
| 胶片词 | Kodak Gold 200, Fuji Pro 400H, Polaroid, expired film | 营造复古氛围 |
| 天气词 | drizzle, fog, snow flurry, overcast, heat haze | 建立环境情绪 |
| 渲染词 | unreal engine 5, octane render, blender cycles, ray tracing | 增加CG质感 |
| 笔触词 | impasto, watercolor wash, cross-hatching, palette knife | 变化绘画风格 |
每个分类不需要背太多,每个分类能稳定掌握五到十个词就够用了。真正在使用的时候,你会发现这些词之间是可以自由组合的,比如“velvet + candlelight + close-up”就能构出一个温暖的室内特写场景。
这里还有一个技巧:在向词库添加新词时,不要只看词本身,要做一次“词义验证”——在模型上用它出几张图,确认这个词在特定模型库里对应什么样的画面。因为同一个词在不同模型里的表现可能差异很大,比如“cinematic”在SD 1.5里往往意味着画面变暗、对比度加重,而在某些微调模型里可能显得很平淡。经过验证的词才能进入你的常用词库,否则就是在碰运气。
4.3 风格词不是越多越好,要“同源互撑”
风格类词汇有一类特殊问题:词库内部的兼容性。举个例子,你既写了“watercolor”(水彩),又写了“photorealistic”(照片级真实),模型就会很为难,因为它不知道是要往绘画感还是写实感上靠。最终的图很可能装饰感很强但画面脏乱。
我的经验是:风格词要“同源互撑”,也就是围绕同一个方向做加强。走写实路线,就坚持photorealistic + film grain + natural skin texture + f/1.8 bokeh;走厚涂油画的路线,就坚持oil painting + visible brushstrokes + rich impasto + canvas texture。混搭最多可以选一个“主干风格+一个辅助材质”,比如“oil painting + canvas texture”是可以的,因为两个词都指向油画。但“oil painting + photorealistic”就别试了,大概率会四不像。
与之类似的还有“comic”、“anime”、“3D render”与“photograph”这四个方向的混用,也是新手最容易犯的错误之一。先确定你要的素材底模(完全不同的模型家族,如动漫底模与写实底模),再围绕那个方向去选风格词,而不是自己费尽心思组合一个不存在的风格。
5. 用“反推”工作流快速突破词汇瓶颈
5.1 反向打标:把别人的画面翻译成你的词库
当你积累了基础词库以后,提升最快的方法就不再是自己闷头试了,而是“逆向拆解”优秀作品。这里说的不是去下载人家的图然后直接套用——而是用“反推提示词”工具,把一张图的特征翻译成文本标签,然后从中学习别人的词汇组织逻辑。
常用的反推工具主要有几类:一是老牌的WD14 Tagger(在SD WebUI的扩展里可以直接运行),二是系统层面更灵活的JoyCaption系列,三是像Midjourney的/describe功能这类内置于产品里的反推命令。这些工具的原理各不相同:WD14用的是图像分类模型打标签,反推出来的结果偏“标签风”;JoyCaption这类多模态大模型则会生成自然语言描述。两者各有用途,标签风适合快速提取具体的元素词,自然语言描述则能还原画面的整体氛围和构图逻辑。
5.2 反推不是为了“抄”,是为了建立“视觉—词汇对照表”
很多人以为反推就是拿来抄一抄,然后感叹一句“原来如此”。其实价值远比这个大。你可以通过反推做三件非常有用的事:
第一,拆解词法。看一张氛围感很强的图,反推出“soft window light, muted earth tones, linen texture”这一串词,从而明白这种氛围感的来源其实是光的方向、色温、材质三个维度的组合。你提取的是“组合关系”,而不只是那几个单词。
第二,做风格实验。找到喜欢的画师或摄影师风格,把他们的图批量反推,提取高频词和共性词,就能得到一份“风格基因报告”。你会发现他们常写的词是哪些,光是怎么布置的,背景中经常出现的元素是什么。这些数据比任何“XX画风提示词合集”都来得靠谱,因为它是从实际作品产出里反向验证过的。
第三,掌握“异词同义”。讲个真实案例,我曾经想表达“阳光透过百叶窗在墙上投下条纹光影”,写英文怎么都不对。后来看别人的反推结果,发现原来这个词组光是我能用到的不同语法表达就有四种:“venetian blind shadows on the wall”“striped light through window blinds”“linear shadow pattern from blinds”“dappled light and shadow stripes”。我收藏了这些说法之后,再想画这个场景就可以自由变体。这就是“视觉—词汇对照表”的价值:你知道一种视觉现象在词汇层面有多少种表达,模型就有多条路径触达这个画面。
5.3 不要照搬反推结果,要“清洗”和“重组”
这里必须给一个实操警告:反推出来的提示词不是一个可以直接使用的成品。因为反向打标模型和生成模型的词汇偏好存在差异,反推结果能否在生成模型里复现出类似画面,是需要验证的。很多时候,反推结果会带出一堆无关紧要的标签,比如大量服装款式词、动作词,这些标签对氛围的影响很小。
我通常的处理流程是:
- 用WD14先打一层标签,提取基础元素;
- 过滤掉明显无效的标签(色彩近似词保留最强的一个,材质词保留能匹配画面的两个);
- 按“主体—环境—光照—镜头—风格”五维重组结构;
- 用不同采样器各出两张图做对比,观察画面与原图的差距,再微调权重。
这四步做完,反推结果才能变成真正属于你自己词库的一部分。你会逐渐发现,通过这种方式收集的词汇,比从教程里背来的词汇更贴合你的常用模型,也更经得起实战检验。
6. 提示词实操中的高频踩坑与避坑技巧
6.1 靠前词不等于权重词
虽然前面提到核心词前置是个好习惯,但很多人误以为调整词序就是调整权重,这是错的。在纯提示词层面,词序影响的是“被优先解析和处理”的程度,并不是类似数学公式里的“乘以2”这样的倍率关系。想要真正控制权重,需要借助权重语法,比如在SD WebUI里用(关键词:1.3)表示增强、用[keyword:0.8]表示减弱、用(关键词:0.9)表示降低。不过权重值不建议超过1.5,否则画面很容易出现过度硬化、色彩溢出、边缘刺眼等问题。
以我常用的权重策略为例:主体名词给1.2~1.3,关键气氛词给1.1,环境背景词保持1.0,最后加一个负面提示词的强限制。这样的配比出图比较稳,既不会主体模糊,也不会氛围词喧宾夺主。
6.2 负面提示词写太多也会“翻车”
不少人有个误区,觉得负面提示词越写越长越壮观,比如写一整屏的“ugly, bad, low quality, awful, deformed...”。我试过这种极端情况,结果模型把画面的细节都“吓跑”了,整体变得灰蒙蒙、软绵绵,完全没有对比度和锐度。原因是负面提示词中的概念并不完全等于“正向提示词取反”,它们本身也是通过词典检索,负面词太多会干扰模型对画面的整体判断。
我的建议是负面提示词精炼一点,聚焦在三四类最常见的问题上:画面质量差(low quality, bad anatomy)、结构畸形(deformed hands, extra fingers)、画面瑕疵(oversaturated color, noise, blurry)、以及其他特定模型容易犯的问题(text watermark, signature)。每类选一两个最强的词就够了。
6.3 一个参数上的配合问题:提示词再好,采样器和CFG不对也是白搭
提示词写得再精确,如果采样器和CFG(Prompt Guidance Scale,提示词引导比例)设置不合理,出图效果也会非常糟糕。这里提供一个我常用的参数速查表:
| 参数项 | 推荐区间 | 说明 |
|---|---|---|
| CFG Scale | 5~9 | 低于4容易跟提示词脱节,高于12容易颜色过饱和、画面脏 |
| 采样器(Sampler) | DPM++ 2M Karras / Euler a / Restart | DPM++系列细节保留好,Euler a速度快 |
| 步数(Steps) | 20~30 | DPM++推荐25步左右,Euler a可到30 |
| 种子(Seed) | 固定或随机 | 同提示词换种子可微调构图细节 |
| 分辨率 | 按底模建议 | 超出训练分辨率会造成元素重复、畸形 |
这里想特别提醒:使用“非Karras”类型的采样器时,CFG的建议区间和默认值会不同。比如Euler a配合7的CFG通常没大问题,但如果你把CFG拉到10以上,再用这类采样器,画面会出现明显的“糊成一团”的色块。所以当一张图效果不佳时,先别急着改提示词,检测一下采样器和CFG的组合是否在合理范围内。
6.4 提示词里不要混用场景语言
如果你要画写实风格,尽量用描述画面本身的语言,而不要混入程序语言或3D渲染指令。因为一旦你写了“ray tracing, octane render, unreal engine 5”,模型的“字典”就会偏向CG渲染风格,即使你已经写了“photorealistic”,最终也可能出来一种“照片级3D感”的“假照片”。这不是说不能用渲染词,而是你要明确自己想要的是“照片感”还是“渲染感”,两者混用时,模型会倾向于取一个折中值。
类似的情况也出现在“artstation”这类平台上,如果你写“trending on artstation”,实际上是在调用艺术社区的主流审美偏向,它会一定程度上把画面拉向“商品插画感”。这本身不是什么问题,而是你要能意识到这些词是一种“风格开关”,而不是纯粹的褒义词。
6.5 中文提示词与英文提示词的差距
很多新手朋友习惯直接写中文提示词,然后抱怨“国产模型出图不好看”。这里面有一个客观原因:CPU时代就奠定的底模训练数据,绝大多数高质量美术、摄影作品对应的描述都是英文,所以英文提示词在绝大多数开源底模中的“词典条目数”远多于中文。你写中文时,模型需要先把中文映射到语义空间,再找视觉特征,这一步会有信息损耗,远不如直接命中英文词条来得直接。
我的建议是:如果使用SD系列底模,直接写英文提示词。如果英文不熟练,可以用翻译软件先翻成英文,再检查一下关键语义是否被正确翻译。像“氛围”这个词,直译成“atmosphere”通常不如“mood”或“ambience”能正确触达画面感受。至于国内一些大模型的绘画产品,中文理解能力已经很强了,那就可以直接中文,但也要留意它们使用的底层模型是哪套,根据底层模型数据分布去调整用词。
写在最后:词汇壁垒是认知壁垒,不是天赋壁垒
我一开始也被“词汇壁垒”卡了很久,总觉得别人写提示词有一套“独门心法”。后来做了大量反推拆解才发现,所谓心法就是扎实的词汇积累和结构意识,几乎没有玄学成分。你看到的那些惊艳画面,背后绝大多数是经过数十次、上百次测试迭代后沉淀下来的词汇组合习惯——用什么词描述体积,用什么词控制光比,用什么词避免元素冲突,这些都是可以习得的。
最后分享一个我这半年一直在用的小练习:每天选一张喜欢的图,不看原提示词,手动用六个维度反推一遍,再打开反推工具对照漏了哪些关键信息。坚持一个月之后,你对画面特征捕捉的敏锐度和提示词颗粒度都会明显提升。这个习惯成本很低,但带来的提升远比今天背十个“万能提示词模板”要大得多。