想象你走进一家生意火爆的“AI画师小馆”,店里的大厨林师傅只要看一眼客人手写的“点菜单”,就能端出令人惊艳的画作。作为学徒的你,最困惑的不是大厨的手艺,而是他那张写得密密麻麻的菜单——为什么同样的食材(关键词),林师傅写出来是米其林三星,你写出来却像食堂大锅菜? 原来,林师傅的菜单有一套“加密暗号”:有的食材名外面画着圆圈“(),像是在说”这个料多放三倍“;有的食材后面跟着数字,精确到”加两勺盐“;点单的顺序也有讲究,第一行永远是主菜;有时他甚至会写上”千万不要放香菜"这样的禁忌清单。 这套“加密暗号”,就是Stable Diffusion的提示词权重与语法。掌握了它,你写提示词就像拿到了林师傅的“魔法菜单”,能精确控制画面的构图、光影、氛围和细节,指哪儿打哪儿。

岗位关联

对AI绘画创作者而言,提示词权重与语法是“从玄学走向科学”的分水岭。掌握这套语法,意味着你能稳定复现好效果、快速调试画面问题,是专业AI绘图的必备基本功。

目录
  1. 可视化演示
  2. 权重基础概念
  3. 权重语法符号
  4. 关键词顺序
  5. AND/OR语法
  6. 负面提示词
  7. 画面控制配方
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示Stable Diffusi的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Stable Diffusi:提示词权 提示词权重增强机制与括号语法 数字权重精确调节与范围控制 核心机制可视化 Stable Diffusi整体架构与关键组件

权重基础概念

林师傅炒菜时,每一勺调料都有讲究。他说:“盐是百味之首,但放多放少全凭这——'话语权'。”在Stable Diffusion的世界里,权重(Weight)就是每个关键词对画面最终效果说话的权力大小。权重高的词,画师会老老实实照着画;权重低的词,画师可能只是顺手带过。

在SD中,每个词都自带一个“嗓门大小”的默认值,这个默认值就是1.0。权重为1时,AI对每个词一视同仁;当你调整权重,就是在给这个词加麦克风或戴消音器。

在WebUI的实际操作中,你不需要手算这个公式——它是模型底层的注意力分配机制。你只需要记住:权重调节范围在0.4到1.5之间效果最自然,超过这个范围画面容易失真。就像林师傅说的:“再好的盐,放多了也会齁着客人。”

wi=esi/τ∑j=1nesj/τw_i = \frac{e^{s_i / \tau}}{\sum_{j=1}^{n} e^{s_j / \tau}}
这就像一张桌上坐了六位客人,每个人说话声音($s_i$)不同。经过“注意力机制”这个调音师调节后,最终每人的实际话语权($w_i$)是所有人声音按比例归一化后的结果。声音越大,分到的“话筒时间”越多。
  1. 分子一个人的原始嗓门:某个词的注意力分数做指数放大,让嗓门大的更突出。
    esi/τe^{s_i / \tau}
  2. 分母整桌人的嗓门总和:把所有词的放大后嗓门加在一起,作为归一化的“总音量”。
    ∑j=1nesj/τ\sum_{j=1}^{n} e^{s_j / \tau}
  3. 温度系数 $\tau$相当于调音师的“耳朵灵敏度”,值越大,大家嗓门差异越不明显;值越小,大嗓门越占绝对主导。
    τ∈(0,1]\tau \in (0, 1]

权重语法符号

林师傅的菜单上有三种“加重号”:画个圈表示“多放”、画个框表示“少放”、写个数字表示“精确到克”。SD的权重语法同理,用不同的符号包裹关键词,就能微调它的“话语权”。

最常用的是小括号:(word) 表示把权重乘以1.1。如果想要更强的效果,可以叠加括号:((word)) 就是1.1的平方,约等于1.21。反之,方括号 [word] 表示削弱,权重乘以0.9。还有花括号 {word},权重乘以1.05,是更温和的增强。

最精确的方式是数字权重法:(word:1.4) 直接指定权重为1.4。这就像林师傅不跟你绕弯子,直接写“加盐3克”。

林师傅的“重量级菜单”建议:优先使用数字权重,因为1.1的固定倍率经常不够灵活。比如你想把权重调到1.3,用 (word:1.3) 一步到位,比套三层括号更清晰,也更好排查问题。

w增强=1.1k,w减弱=0.9kw_{\text{增强}} = 1.1^{k}, \quad w_{\text{减弱}} = 0.9^{k}
$k$ 是括号的层数。写一对圆括号 $k=1$,权重就是1.1;写两对 $k=2$,权重就是1.21。方括号同理,每层把权重乘0.9,两层的效果是0.81。数字权重 (word:数值) 则是直接赋值,一锤定音。
  1. 增强公式每加一对小括号,词权重就乘以1.1。连续叠加就是乘法累乘。
    1.1k1.1^{k}
  2. 减弱公式每加一对方括号,词权重就乘以0.9,让AI“少关注它一点”。
    0.9k0.9^{k}
  3. 层数 $k$表示括号的对数。$k=0$ 时不加括号,权重保持默认1.0。
    k=1,2,3,…k = 1, 2, 3, \dots

关键词顺序

有一次林师傅做红烧肉,徒弟把“冰糖”写在“五花肉”前面,结果出锅成了一盘拔丝肉——糖抢了戏。SD出图也是这个道理:提示词越靠前,权重越高。整个提示词序列中,前面的词分配到的注意力更多。

为什么会有这个效果?因为SD的文本编码器(CLIP)在处理文本时,注意力会随位置衰减。靠前的词会被更充分地编码,靠后的词容易被“忽略”。所以写提示词,要把画面的“主角”放在前面,“配角”放中间,“环境点缀”放最后。

实操口诀是“主谓宾,定状补”:主体靠前、动作次之、场景与风格靠后。如果你想让某个元素更突出,把它往前提,比单纯加权重更自然,因为位置调整不会破坏画面的整体和谐度。

ai=a0×γi−1a_i = a_0 \times \gamma^{i-1}
$a_i$ 是第 $i$ 个位置的注意力权重,$a_0$ 是第一个词的基础权重,$\gamma$ 是衰减因子(通常接近1,比如0.999)。位置越靠后($i$ 越大),$\gamma^{i-1}$ 越小,注意力权重越低。这跟演唱会抢麦一样,第一个抢到话筒的人能唱完整首歌,后面的人只能分到和声。
  1. 初始权重位置1的词拿到最大的注意力份额,这是“主角位”。
    a0a_0
  2. 衰减因子每往后挪一个位置,注意力就乘一次 $\gamma$,积累成幂次衰减。
    γi−1\gamma^{i-1}
  3. 位置指数$i$ 是词在序列中的序号。第1个词指数为0(不衰减),第10个词指数为9(衰减9次)。
    i−1i-1

AND/OR语法

林师傅的菜单上偶尔会出现“牛蛙and鱼头”这种组合菜,或者“宫保or鱼香”这种口味二选一。SD的提示词同样支持逻辑组合语法,让创作者能灵活控制元素的融合与切换。

AND语法用 AND 连接两个概念,让AI同时生成两者。比如 cat AND dog,AI会画一只“猫狗合体”的奇妙生物——类似双拼盘,两种食材都保留。而OR语法是二选一,AI在生成时随机选其中一个来画,适合做风格或概念的快速切换测试。

关键区别是:逗号是“排队并列”,AI按顺序逐一画出每个元素;AND是“融合合一”,AI把两个元素融合进同一画面主体。比如 女孩, 猫 画的是“一个女孩和一只猫”(两个独立主体),而 女孩 AND 猫 画的是“猫娘”——一个融合后的主体。

建议初学者优先精通逗号并列,熟练掌握后再尝试AND。因为AND容易产生“缝合怪”,特别是在两个不相关主体之间(比如“汽车AND香蕉”),出图结果会比较难以预测。OR则适合画风探索阶段快速试错。

P(AND)=max⁡(PA,PB),P(OR)=PA×(1−PB)+PBP(\text{AND}) = \max(P_A, P_B), \quad P(\text{OR}) = P_A \times (1 - P_B) + P_B
AND的结果是“两个都算数”,取两者中确定性更高的那个做基底;OR是不确定性的切换,有点像抛硬币——正面画A,反面画B,但整体呈现A或B其中一个的完整特征,而不是各取一半。
  1. AND取最大值融合时以两概念中更稳定的那个为主骨架,另一个作为修饰附着其上。
    max⁡(PA,PB)\max(P_A, P_B)
  2. OR的概率互斥两个概念互斥出现,总概率 = A出×B不出 + B出×A不出,归一后等价于随机二选一。
    PA×(1−PB)+PBP_A \times (1 - P_B) + P_B

负面提示词

林师傅的菜单底部,永远有一行小字:“忌口:香菜、芹菜、肥肉。”这不是主料,却能决定客人是否满意。SD的负面提示词(Negative Prompt)就是这行“忌口清单”,告诉AI“千万不要画这些东西”。

负面提示词写法非常简单:直接输入你不想要的内容,用逗号分隔。比如 模糊, 畸形, 水印, 低质量。SD的原理是Classifier-Free Guidance(CFG),在生成时同时参考正向词的评分(打分越高越好)和负向词的评分(打分越低越好),两端拉扯之下,最终画面会远离负面词描述的方向。

负面提示词是提升出图质量的“捷径”。一张图好不好看,正向词决定上限,负面词决定下限。新手最快提升画质的办法,就是先学会写一组标准负面词,把常见的畸形、模糊、崩坏问题全部拉黑,画面马上干净一个量级。

score=spos−λ⋅sneg\text{score} = s_{\text{pos}} - \lambda \cdot s_{\text{neg}}
$s_{\text{pos}}$ 是正向提示词的匹配分数,$s_{\text{neg}}$ 是负面提示词的匹配分数,$\lambda$ 是负面词的“纠偏力度”。如果画面出现“水印”特征,负面词会亮起红灯,大幅扣分,AI就会避开这个方向。就像上菜前林师傅会绕开客人忌口的食材。
  1. 正向分数画面内容越符合提示词描述,这个分数越高,是拉分项。
    sposs_{\text{pos}}
  2. 反向惩罚负面提示词的匹配度越高,隔离惩罚越大,把生成方向从“雷区”推开。
    λ⋅sneg\lambda \cdot s_{\text{neg}}
  3. 纠偏系数$\lambda$ 控制负面词的影响强度。需要强烈避开某种瑕疵时,可以把关键词权重调高,变相增大 $\lambda$。
    λ>0\lambda > 0

画面控制配方

林师傅教会徒弟最值钱的东西,不是单道菜,而是“配菜的公式”:前菜清脆、主菜浓郁、汤头鲜甜、饭后清口。SD提示词也有组合配方,不同模块各司其职,组合起来才能出好图。

一个完整的正向提示词,通常包含四个模块:构图词(如 “masterpiece, best quality“)、主体词(描述画什么)、环境与风格词(如 ”cinematic lighting, oil painting“)、细节修饰词(如 ”intricate details, 8k”)。顺序上,风格质量词放最前,然后是主体、环境、细节。

一套常用的基础配方是:(masterpiece:1.2), (best quality:1.2), 你的主体词, 环境描述词, style tags, (intricate details:1.1)。负面词固定写 lowres, bad anatomy, bad hands, extra fingers, blurry, watermark。按照这个“四菜一汤”的框架填内容,你也能配出林师傅那样的“镇店之宝”。

Prompt=wg⋅G+ws⋅S+we⋅E+wd⋅D\text{Prompt} = w_g \cdot G + w_s \cdot S + w_e \cdot E + w_d \cdot D
最终画面 = 质量词(G)× 权重 + 主体词(S)× 权重 + 环境词(E)× 权重 + 细节词(D)× 权重。四个模块各占其位,就像一场音乐会,定调、主旋律、和声、装饰音缺一不可。
  1. 质量基调词奠定整张图的“品级”,通常放最前面。
    wg⋅Gw_g \cdot G
  2. 主体内容词画面核心对象,权重要给足,防止被AI弱化。
    ws⋅Sw_s \cdot S
  3. 环境氛围词背景、光影、风格,控制整体情绪与色调。
    we⋅Ew_e \cdot E
  4. 细节修饰词让画面更精致、更耐看,通常放在末尾做补充。
    wd⋅Dw_d \cdot D

AI 应用场景

AI绘画工作室的批量出图

阶段:提示词工程与图像生成

解决的问题:甲方要“夕阳下穿红裙的女孩,背景是麦田,氛围要唯美”。传统做法是碰运气式改提示词,生成了几十张都不满意。使用权重语法后,可以快速锁定关键要素:(red dress:1.4), (sunset glow:1.3), wheat field, cinematic lighting,再把 blurry, ugly 写进负面词,稳定复现高质量出图。

具体案例:某电商平台需要为“秋季新品连衣裙”生成100张不同场景的模特图。画师将每一套配方的权重模板化,主体词替换商品款式,环境词切换场景,配合负面词统一拉黑畸形手部,最终把平均出图合格率从30%提升到75%。

游戏原画的风格探索

阶段:概念设计阶段的发散探索

解决的问题:原画师在“水墨风”和“油画风”之间犹豫,不想各画一张完整草图。用OR语法 chinese ink painting OR oil painting 快速生成对比图,一张图时间看两种风格倾向,决策效率提升一半。

具体案例:独立游戏工作室做角色设定,需要“狼人”形象但不要“恐怖”。画师用 wolfman AND gentle expression 控制融合倾向,负面词写 horror, gore, sharp teeth,最终得到温和憨厚的狼人形象,颠覆了传统刻板印象。

新媒体封面图的快速迭代

阶段:内容配图的生产与优化

解决的问题:公众号每篇文章都要配图,编辑器里的素材千篇一律。用权重语法把“封面核心元素”权重提高,“背景虚化”权重降低,配合负面词去掉水印和杂色,10分钟产出符合调性的专属封面。

具体案例:一个科技类公众号需要“AI机器人+城市夜景”封面。用 (robot:1.3), (city night:1.2), neon lights, futuristic 出图,在负面词中标注 text, watermark, low quality,稳定输出高质感封面,阅读打开率提升了15%。

Python 演示

python56 行
# -*- coding: utf-8 -*-"""SD提示词权重解析器:解析括号、数字权重与逻辑语法"""import re  class PromptParser:    """把提示词字符串解析成带权重的词条列表"""     def __init__(self, prompt):        self.raw = prompt        self.tokens = []     def parse(self):        tokens = []        pattern = r"\(([^:()]+):([\d.]+)\)"  # 匹配 (word:1.3)        for match in re.finditer(pattern, self.raw):            word, weight = match.group(1), float(match.group(2))            tokens.append({"word": word, "weight": weight, "method": "数字权重"})        pattern2 = r"\(\(([^()]+)\)\)"  # 匹配 ((word))        for match in re.finditer(pattern2, self.raw):            word = match.group(1)            tokens.append({"word": word, "weight": 1.21, "method": "双层括号"})        pattern3 = r"\(([^()]+)\)"  # 匹配 (word)        for match in re.finditer(pattern3, self.raw):            word = match.group(1)            tokens.append({"word": word, "weight": 1.1, "method": "单层括号"})        pattern4 = r"\[([^\[\]]+)\]"  # 匹配 [word]        for match in re.finditer(pattern4, self.raw):            word = match.group(1)            tokens.append({"word": word, "weight": 0.9, "method": "方括号"})        cleaned = re.sub(r"[()\[\]:\d.]", "", self.raw)        parts = [p.strip() for p in cleaned.split(",")]        for part in parts:            if part:                tokens.append({"word": part, "weight": 1.0, "method": "默认"})        self.tokens = tokens        return tokens     def sorted_tokens(self):        """按权重降序返回词条"""        return sorted(self.tokens, key=lambda t: t["weight"], reverse=True)     def summary(self):        """输出权重概览"""        lines = []        for token in self.sorted_tokens():            lines.append(f"  {token['word']:<20s} 权重={token['weight']:<5.2f} ({token['method']})")        return "\n".join(lines)  if __name__ == "__main__":    demo_prompt = "(masterpiece:1.2), (best quality:1.2), (red dress:1.4), sunset glow, [clouds], ((golden field))"    parser = PromptParser(demo_prompt)    parser.parse()    print("提示词解析结果按权重排序:")    print(parser.summary())
目的:解析一段SD提示词字符串,自动识别数字权重、圆括号、方括号等语法,并按权重从高到低输出词条清单。帮助创作者排查“哪个词权重过高导致画面失衡”。
  1. pattern = r"\(([^:()]+):([\d.]+)\)"用正则匹配 (word:数字) 形式的精确权重语法,第一个捕获组是词,第二个是权重数字
  2. tokens.append({"word": word, "weight": weight, "method": "数字权重"})把解析出的词根按字典存入列表,记录权重来源方式便于排查
  3. pattern3 = r"\(([^()]+)\)"匹配普通圆括号 (word),权重固定为1.1
  4. pattern4 = r"\[([^\[\]]+)\]"匹配方括号 [word],权重固定为0.9
  5. re.sub(r"[()\[\]:\d.]", "", self.raw)清洗掉所有语法符号,剩下的就是无修饰的默认词,权重1.0
  6. parser.parse()` 后调用 `sorted_tokens()按权重降序排列,一眼看出谁是“主角”谁是“龙套”

常见误区

误区“为了让某个元素更突出,我把权重调到3.0、4.0,结果画面全崩了。是不是权重不够高?应该继续往上加?”

正解权重不是越高越好,超过1.5后画面往往会失真、过曝、元素过度膨胀。权重超过2.0时,AI会像“喊破嗓子的服务员”,把所有精力都花在放大这一个元素上,忽略了画面整体的和谐。合理范围是0.4~1.5,需要更强效果时,优先调整关键词顺序,把元素往前提,比无脑堆权重更自然。

为何常见:初学者容易把“权重”理解成音量旋钮——以为开得越大效果越强,忽视了模型底层注意力分配的非线性特性。

误区“((((((dreamy)))))) 写了6层括号,梦幻感一定爆棚!”

正解SD的文本编码器(CLIP)对过深的括号嵌套会产生“语义饱和”。超过2~3层后,权重提升的边际效应急剧下降,甚至触发编码器的异常处理,让该词变得不稳定。就像林师傅说的:“盐放三勺能提鲜,放三十勺就只能倒掉重做。”推荐用数字权重:想要1.3就直接写 (dreamy:1.3),等于一个动作解决。

为何常见:括号语法直观且省事,复制粘贴6层括号比算1.1的6次方快得多。再加上网上有些教程用力过猛地演示了多层括号的效果,形成误导。

误区“我在负面词里写了`red, blue, green`三种颜色,AI是不是就不会用这些颜色了?”

正解负面提示词不是“绝对禁令”,它只是把画面向反向推离。SD的生成过程是随机噪声逐步去噪,负面词通过CFG机制降低“含有该特征”的概率,但并不能做到100%禁止。特别是色彩这种极度基础的特征,负面词很难完全压制。真正有效的负面词是针对构图瑕疵(如 extra hands, deformed face)和画质问题(如 blurry, watermark)的。

为何常见:人们对“负面词”三个字抱有不切实际的期待,把它想象成“看图写话的反义句”,忽略了它底层只是score公式中的一个负向偏置项。

误区“`cat AND bicycle` 应该生成一只骑自行车的猫,为什么出图变成一只半猫半车的缝合怪?”

正解AND语法做的是特征空间的向量融合,不是画面内容的逻辑编排。对于语义相近、兼容性好的概念(如 cat AND tiger),融合效果自然;对于两个不相干的实体(如 cat AND bicycle),模型不知道怎么融合,只能强行在特征层面做加权平均,于是产生“四不像”。想要“骑自行车的猫”这种动作关系,应该用逗号描述 cat riding a bicycle,让模型理解场景语义。

为何常见:AND的命名容易让人联想到“逻辑与运算”,误解为“把A和B叠加在一个画面里”。实际上它是在特征向量层面做混合,遵循的是视觉相似性而非语言逻辑。

误区“AI那么聪明,我把`forest, girl, red dress`写成`red dress, girl, forest`效果应该一样吧?”

正解CLIP文本编码器处理长文本时有注意力衰减,越靠前的词分配到的编码比重越大。上面的例子,第一种写法AI会重点关注“森林”,第二种写法会把“红裙子”当主角,两张图的主次关系截然不同。稳定复现某张图的秘诀之一,就是“复制原图的提示词顺序”,改动顺序等同于修改了权重分布。

为何常见:人理解一句话不关心词序,但神经网络是数值计算,位置是编码信息的一部分。这种“人机认知差异”如果没有实操对比,很难凭直觉发现。

面试题

Q1. 在SD提示词中,(cat) 表示什么含义?

单选题 · easy

  • A.增强cat的权重← 正确答案
  • B.减弱cat的权重
  • C.删除cat关键词
  • D.添加cat风格标签

答案:A。圆括号在SD提示词语法中表示权重增强,(cat) 的权重会乘以1.1。方括号才是减弱,删除词需要其他操作。这就像菜单上画圈的菜,是“重点推荐”。

Q2. SD提示词中每个词的默认权重是多少?

单选题 · easy

  • A.0
  • B.1← 正确答案
  • C.1.5
  • D.0.5

答案:B。默认权重为1.0,表示AI对所有词一视同仁。0意味着完全不考虑该词,1.5已属于较高权重。就像林师傅每道菜的默认盐量,不额外标注就是“一勺”。

Q3. 要把某元素的权重精确设置为1.4,正确写法是?

单选题 · mid

  • A.((element))
  • B.(element:1.4)← 正确答案
  • C.{element}
  • D.(element)1.4

答案:B。(element:1.4) 是数字权重语法,直接指定权重值。双层括号大约1.21,花括号约1.05,(element)1.4 是无效语法。数字权重像电子秤,括号像“凭手感抓一把”。

Q4. 在SD出图中,提示词顺序如何影响生成结果?

单选题 · mid

  • A.靠前的词权重更高← 正确答案
  • B.靠后的词权重更高
  • C.顺序完全不重要
  • D.顺序只影响速度

答案:A。CLIP编码器有注意力衰减机制,越靠前的词编码越充分。所以主体词要放前面,环境词放后面。就像点菜时先说主菜,服务员才记得住。

Q5. 关于AND语法,下列说法正确的是?

多选题 · mid

  • A.可以融合两个概念为一体← 正确答案
  • B.适合连接语义相近的词← 正确答案
  • C.适合连接完全无关的词
  • D.效果等同逗号并列

答案:AB。AND语法在特征向量层面融合两个概念,适合语义相近的词(如cat AND tiger)。无关词融合会产生“缝合怪”,逗号并列则是两个独立主体,不等同。

Q6. ((flower)) 的实际权重约为多少?

单选题 · hard

  • A.1.1
  • B.1.21← 正确答案
  • C.0.9
  • D.1.05

答案:B。每层圆括号权重乘1.1,两层就是 1.1×1.1=1.21。这个题考的是权重叠加的乘法逻辑,类似复利计算,别按加法算。

Q7. 负面提示词在CFG机制中的作用是?

单选题 · hard

  • A.提高正向词评分
  • B.降低负面特征的评分← 正确答案
  • C.直接删除画面元素
  • D.加快生成速度

答案:B。CFG在生成时同时评估正负提示词,负面词匹配度越高,惩罚越大,画面越远离该特征。它不是“删除”,而是“引导绕开”。就像宴会名单上标注“忌辣”,厨房上菜时会主动避开。

Q8. 以下哪些是常用的负面提示词?

多选题 · hard

  • A.blurry← 正确答案
  • B.watermark← 正确答案
  • C.masterpiece
  • D.extra hands← 正确答案

答案:ABD。负面词描述“不想要的特征”,如模糊、水印、多余的手。masterpiece 是正向质量词,用来提升画面品质的,放负面词里会起反作用。

Q9. 当关键词顺序无法调整时,要让背景元素“让位”于主体,最合理做法是?

单选题 · extreme

  • A.给背景词加大权重
  • B.给背景词加中括号并调低权重← 正确答案
  • C.删除背景词改用AND语法
  • D.把背景词全部大写

答案:B。[background] 把背景权重乘0.9,或者用 (background:0.8) 精确调低。加大权重会起反作用,AND语法不解决主次问题,大写无效。这相当于给背景菜“少放盐”。

Q10. 关于权重调节的正确做法是?

多选题 · easy

  • A.优先用数字权重精确控制← 正确答案
  • B.权重范围建议0.4到1.5← 正确答案
  • C.权重越高越好
  • D.配合调序效果更好← 正确答案

答案:ABD。数字权重最精确,0.4~1.5是常用安全区间,调整顺序能自然改变主次,三者结合效果最佳。权重无脑拉高会导致画面失真,所以C错误。