Stable Diffusion知识库整理提示词怎么按平台生成不同版本
在使用Stable Diffusion的过程中,一个让人头大的问题往往不是模型怎么选,而是——提示词怎么“翻车”。
明明在WebUI上跑得好好的提示词,到了ComfyUI里效果变了味,放到SDXL工作流里更是直接崩掉。这种现象非常普遍,原因不在于词本身,而在于不同平台的提示词解析机制完全不同。
简单来说,WebUI用圆括号加权、逗号分隔;ComfyUI更依赖关键词的排列顺序来控制权重,括号用起来要格外小心;而SDXL最特别,必须把提示词拆成两段分别输入,并且完全禁止使用括号权重。如果搞不清楚这些差异,直接复用提示词,出图失败几乎是必然的。

下面我们就逐一拆解,不同平台到底该怎么写提示词。
WebUI平台适配:逗号分隔+括号加权
比如我们拿“赛博朋克女孩,霓虹雨夜,机械义眼,胶片颗粒感”这个描述来举例。首先,要把它们转成英文基础句式:
cyberpunk girl, neon rain night, mechanical eye, film grain
接下来,按照WebUI的解析逻辑调整结构——质量词放在最前面、主体居中、风格与质感往后排。同时用圆括号控制权重:
(masterpiece:1.3), (best quality:1.2), cyberpunk girl, (neon rain night:1.1), mechanical eye, film grain
需要注意一个关键细节:WebUI不识别方括号[]嵌套,所有权重必须用圆括号(),而且括号里不能包含空格或中文。像[cyberpunk]这种写法会被直接截断为“cyberpunk”,权重完全失效。
【必须手动替换为(cyberpunk)】
ComfyUI平台适配:JSON节点化+CLIP文本编码器兼容
ComfyUI的做法和WebUI不太一样,它有两种常见写法。
方法一:直接使用CLIPTextEncode节点输入字符串。直接在Positive Prompt框里粘贴:
"masterpiece, best quality, cyberpunk girl, neon rain night, mechanical eye, film grain"
方法二:拆分成独立的CLIPTextEncode节点链,适合调试场景。具体操作是:
→ 创建两个CLIPTextEncode节点
→ 第一个节点输入:"masterpiece, best quality, cyberpunk girl"
→ 第二个节点输入:"neon rain night, mechanical eye, film grain"
→ 将两个节点的输出同时接入到KSampler的positive输入端。
这里要特别提醒:ComfyUI对括号加权支持并不稳定,某些自定义节点甚至完全忽略( )内的数值。因此,
【建议优先用逗号分隔+关键词顺序来控制权重】
SDXL平台适配:双文本编码器分域输入
SDXL是最特殊的一个平台。它必须要拆分成Prompt A(基础描述)和Prompt B(风格强化)两个字段,否则CLIP ViT-L/14和CLIP ViT-G/14这两个编码器根本没法协同工作。
具体操作分三步:
第一步,分离语义层级。
Prompt A(由ViT-L/14处理):cyberpunk girl, mechanical eye, neon rain night
Prompt B(由ViT-G/14处理):masterpiece, best quality, film grain, cinematic lighting
第二步,禁用所有括号权重。SDXL原生不支持( )加权语法,强行加入会导致文本编码器把后半段直接截断,结果就是“film grain”这类关键质感词完全丢失——生成的画面会变得非常不理想。
第三步,在SDXL专用工作流中,将Prompt A填入“Base Prompt”字段,Prompt B填入“Refiner Prompt”字段。两个字段必须同时存在且内容非空,否则Refiner模型不会被激活,出图效果也会大打折扣。
理解了这三套机制的差异,再写提示词就不是碰运气了——而是真正做到了“对症下药”。