城东有家“魔法画坊”,坊主老周是位技艺精湛的画家,却出了名的“一根筋”——你只丢一句“画只猫”,他真就画只普普通通的猫;但如果你写下“布偶猫、侧坐、午后暖光、水彩风格、不要背景”,他交出的画作会让你眼前一亮。Prompt 工程,就是学会给这位“固执画家”写订单的艺术。订单不是越长越好,而是越精准越好:哪些要素要划重点,哪些瑕疵要明确划出边界,画笔粗细、作画时长、起笔草稿如何配合——这一整套方法论,贯穿图像生成管线的每个环节,从第一版草稿到最终成片,本质上都是一次次“修改订单”的迭代。本文就带你走进老周的画坊,看一份好“订单”是如何炼成的。
掌握 Prompt 工程,意味着你不需要重训模型、不需要改网络结构,仅凭文本就能稳定产出高质量视觉方案——这是 AIGC 时代投入产出比最高的核心技能之一。
可视化演示
演示负面提示词排除、关键词权重控制与Prompt优化迭代,引导扩散模型生成符合预期的图像,提升生成质量。
本节配有交互动效(进入视口后自动加载,约 3KB)。
负面提示词设计 明确告知模型排除元素 negative prompt 避免畸形、模糊等常见质量问题
Prompt基础概念
老周的画坊有个规矩:每位客官进门都得先“点单”。你嘴里说的“随便来只猫”,和他想象中的“猫”往往不是同一种生物。老周不是笨,而是他对语言的理解方式与你不同——一个词落进他耳朵,会被拆解成画笔、颜料和构图习惯的“配方”。AI 绘画模型也是如此:它把 prompt 拆成一个个最小的文字单位 Token,再经由 CLIP 文本编码器翻译成高维向量。这个向量,就是老周手里的“配方单”。
Prompt 工程的第一层功夫,就是学会用模型的语言下订单:结构清晰、词序稳定、语义聚焦。通常做法是用逗号分隔关键词,把核心主体放在最前,风格与细节依次展开。模型内部会不断计算“这份配方”与候选画面的匹配程度,匹配度越高,生成结果越贴近你的意图:
所以你会发现,老周看订单不是逐字读,而是整体“品”——他品的是配方的味道。写 prompt 时与其堆砌华丽辞藻,不如让每个词都指向清晰的视觉特征。
- 文本向量 $\mathbf{e}_T$提示词经 CLIP 编码后的数值化身,相当于“配方的数字化清单”。
- 图像向量 $\mathbf{e}_I$一张候选画面压缩后的数值签名,等同于“成画的指纹”。
- 点积与归一化分子衡量两个向量的同向程度,分母去除向量长度干扰,得到 $[-1, 1]$ 的相似度分数。
正向提示词
老周最爱收到“要素齐全”的订单:画什么、什么风格、什么光线、细节到什么程度。缺了任何一项,他就自由发挥,而自由发挥的结果往往让人哭笑不得。正向提示词就是订单的“正面主体栏”,通常由四类要素构成:主体描述、风格限定、细节补充,以及画质类质量词。
- 主体描述:画面核心对象,越具体越好,例如“一只橘猫”优于“一只猫”。
- 风格限定:规定美术风格,如“水彩插画”“赛博朋克”“吉卜力风”。
- 细节补充:光影方向、镜头焦距、材质质感,进一步约束老周的笔触。
- 质量词:如
best quality、masterpiece,抬高整体完成度。
综合质量可以由各项分数加权得到:
一张正向提示词写得好,就像一份让老周“不用动脑”的订单——他只需执行,成画自然靠谱。真正的功夫在于让每个词都能落地成画面,而不是说一堆抽象的形容词。
- 主体质量 $Q_s$描述清晰度决定“画的是不是它”,例如“布偶猫”比“猫”得分更高。
- 风格质量 $Q_g$风格词越有代表性,画面越容易被归入该流派。
- 细节质量 $Q_d$光影、构图、质感词丰富了画面的完成感。
负面提示词
老周再厉害,也常有“画蛇添足”的毛病——你让他画人像,他偏要加个奇怪背景。所以画坊的订单背面专门有一栏:“千万不能画的”。这一栏,就是负面提示词。在 AI 绘画里,负面提示词不是简单删掉某些词,而是让模型在采样时主动远离这些概念。
扩散模型在每一步去噪时,会同时参考两个方向:正向提示词把采样轨迹拉向目标画面,负面提示词把轨迹推离雷区。两者叠加,就是经典的 CFG 双向引导:
写负面提示词不是越多越好,正如“千万不要想大象”这句话反而让你满脑子都是大象。挑真正高频出现的毛病写,比如 lowres、watermark、extra fingers,比罗列五十个词更管用。
- 默认轨迹 $\epsilon(z_t, t)$完全不带提示词的“裸画”方向,是整个引导的基线。
- 正向偏置$c_p$ 与裸画之间的差值,代表“朝提示词靠近”的力度。
- 负向偏置$c_n$ 与裸画的差值,以减号作用于轨迹,等价于“避开负面内容”的推力。
- 强度系数 $s_p$、$s_n$正负引导的强弱旋钮,$s_n$ 越大避雷越坚决,但过大会扭曲构图。
权重与语法
订单里有重点。老周画猫时,你在“眼睛”下面划三道横线,他自然把八成心思放在眼睛上——Prompt 的权重语法就是这三道横线。在 Stable Diffusion 等模型中,(keyword:1.3) 表示把该关键词的权重提升到 1.3 倍,[keyword:0.7] 则表示弱化到七成。
语法层面还有 AND 融合、逗号分隔、方括号降权等技巧。核心思想是:所有关键词先被编码成各自的向量,再按权重合并成一条综合指令:
划重点要克制——一张订单上全是红线,等于没有红线。权重一旦超过 1.5,模型容易“用力过猛”,出现五官扭曲、金属感假面等伪影。权重是引导,不是命令。
- 关键词向量 $\mathbf{e}_i$每个词的语义坐标,比如“猫”与“老虎”在向量空间中距离较近。
- 权重系数 $\alpha_i$默认 1.0,
(w:1.3)提高到 1.3,[w:0.7]降到 0.7。 - 加权求和所有词的向量按权重叠加,得到一条“整体订单”。
参数协同
同样的订单,老周用什么画笔、多大的画布、画多久,结果天差地别。图像生成管线里,参数就是老周的工具箱:CFG Scale 是“听话程度”旋钮,采样步数是作画时长,分辨率是画布大小,Seed 是起笔时的草稿痕迹。它们不是孤立的,而是协同作用的。
采样过程可以看作一步步修正噪声图像:每一步根据当前状态和提示词预测一个去噪方向,然后沿着这个方向迈一步。步长由总步数决定:
实际调参中,CFG 从 7 起步,过高会色彩过饱和、画面发“塑料”;步数通常 20-50 步,超过 50 步收益递减;分辨率提高时需要同步增加步数,否则细节跟不上。先固定 seed 和其他参数,一次只动一个旋钮,是最稳的调参姿势。
- 当前状态 $z_t$扩散过程中的“半成品”,带着不同程度的噪声。
- 预测方向 $\tilde{\epsilon}$模型根据提示词和当前画面算出的“下一笔走向”。
- 步长 $h_t$由总步数决定,步数多则细腻,步数少则粗糙。
迭代调优
哪有一次成稿的订单?老周先出草图,你提修改意见,他再改。迭代调优就是这样一轮轮的“草图—意见—修改”。在图像生成管线中,最常用的迭代手段是固定 seed 对比和 img2img 重绘:固定 seed 保证“同一张底稿”上比较两次提示词改动;img2img 则把原图作为起点,只做部分重绘。
img2img 的关键是重绘强度 $\eta$,它控制“新灵感”与“原图结构”的混合比例:
好作品是改出来的。每轮迭代只改一个变量——要么换一条提示词,要么调一个参数,要么改一版负面词——然后拿结果和老周“对图确认”。这样一圈圈收敛下来,画面会越来越接近你心中的目标。
- 原图像征 $z^{\text{img}}$上一版草稿在潜空间里的表示,是修改的“地基”。
- 随机噪声 $z^{\text{noise}}$注入的新随机变量,相当于“新灵感”的种子。
- 混合系数$\sqrt{1-\eta}$ 保留旧结构,$\sqrt{\eta}$ 引入新变化,两者按比例叠加。
实战案例分析
翻开画坊的订单簿,有三类客户最典型,他们的订单几乎涵盖了 Prompt 工程的全部技巧。
- 人像写真:主体描述 + 镜头语言 + 光线方向 + 负面防畸形。提示词形如“半身像、35mm 镜头、柔光、浅景深”,负面词务必加入
extra fingers、deformed face。
- 场景构建:风格 + 构图 + 色调 + 参考图。先定“废弃古堡、清晨薄雾、青灰色调”,再用 img2img 低 $\eta$ 重绘微调细节。
- 产品设计:材质 + 机位 + 背景 + 一致性。固定产品结构词,用权重语法把“金属质感”提到 1.3,背景用负面词排除杂乱元素。
这些订单可以抽象成一个通用结构:
这三个案例说明:Prompt 工程不是玄学,而是一套可拆解、可组合的写作方法论。把结构记牢,换再多的主题也只是替换框架里的组件。
- 主体 $[\mathrm{subj}]$最核心的视觉对象,如“一位穿风衣的女士”。
- 风格与构图 $[\mathrm{style}] + [\mathrm{comp}]$限定美术方向与画面布局。
- 光影与质量词 $[\mathrm{light}] + [\mathrm{qual}]$拉高真实感和完成度。
工程化落地
画坊要开连锁店了。老周的好手艺不能只靠他一个人的记性,得写进《订单手册》:模板、评审、留档。Prompt 工程的终极形态同样是“去个人化”——把经验沉淀成模板库,用批量评测代替主观感觉,用版本管理记录每一次实验。
模板库解决“复用”问题:用占位符把主体、风格、光影参数化,一条模板批量生成百条变体。批量评测解决“比较”问题:同一批提示词生成多张图,按统一维度打分,用数字说话。版本管理解决“回溯”问题:每个 prompt 版本、每个参数组合都留档,出问题时能快速回退。综合打分可以写成:
Prompt 工程走到这一步,就从“手艺人手艺”变成了“可复制的流水线”——这恰恰是端到端图像生成管线的灵魂:把每一次成功的订单,变成下一次生产的标准答案。
- 单图三维度得分 $A_i, B_i, C_i$分别代表细节丰富度、视觉美观度、与提示词一致度。
- 权重 $w_A, w_B, w_C$不同业务场景侧重不同,如电商重一致性,艺术创作重美观。
- 取平均除以 $N$ 消除单张随机波动,让分数反映整体水平。
AI 应用场景
电商商品图“一键换背景”
阶段:提示词设计与参数协同
解决的问题:传统电商拍摄需要搭景、布光、后期抠图,一套主题场景成本数千元。用 Prompt 工程结合 img2img,可以批量把白底商品图重绘到指定场景中,成本降到几乎为零。
具体案例:某服装品牌用 Stable Diffusion 为当季风衣生成“秋日街角、暖黄灯光、浅景深”等多套场景。核心提示词写成模板:模特身穿 [服装],[场景],[光线],best quality,配合 $\eta=0.6$ 的重绘强度,一次性产出 5 套场景共 100 张图。
游戏概念美术的快速验证
阶段:迭代调优策略
解决的问题:游戏立项早期需要大量风格探索,传统概念画师每张约 1-2 天,试错成本极高。Prompt 工程让“多风格快速试错”成为可能,权重切换 + 固定 seed 还能保证对比公平。
具体案例:某工作室为“废弃古代遗迹”产出 100 张候选概念图。团队用 (ruins:1.2), overgrown, misty morning 等提示词组合,配合 seed 锁定与 CFG 阶梯扫描,三天内收敛到 3 个美术方向,再交由画师精修。
广告营销物料批量生产
阶段:工程化落地
解决的问题:多平台、多尺寸、多风格的营销物料需求巨大,人工设计无法快速放量。通过模板库 + 批量评测,把“爆款”提示词固化下来,按季度主题批量产出变体。
具体案例:某 4A 广告公司为“春日饮品”项目构建提示词模板库,统一品牌色与基调,批量生成 200 张小红书配图,再用自动评分函数从细节、美观、一致性三维打分,筛选出前 20 张进入人工微调,整体工时从两周压缩到三天。
Python 演示
# -*- coding: utf-8 -*-"""提示词工程小助手:模板生成、质量打分、迭代优化""" class PromptWorkshop: def __init__(self): self.templates = [ "{subject}, {style}, {lighting}, {detail}, best quality", "masterpiece of {subject}, {style}, {composition}, {detail}", "{subject}, {style}, {lighting}, {detail}", ] self.positive_words = ["detail", "sharp", "quality", "masterpiece"] self.negatives = ["lowres", "watermark", "blurry", "deformed", "extra"] self._count = 0 def build_prompt(self, subject, style, lighting, detail): tpl = self.templates[self._count % len(self.templates)] self._count += 1 return tpl.format(subject=subject, style=style, lighting=lighting, detail=detail, composition="good composition") def build_negative(self, extra): return ", ".join(self.negatives + [extra]) def score_prompt(self, prompt, neg_prompt=""): score = 10.0 hit = sum(1 for w in self.positive_words if w in prompt) score += hit * 8.0 if "sharp" in prompt or "focus" in prompt: score += 6.0 if ":1." in prompt: score += 6.0 bad = sum(1 for w in self.negatives if w not in neg_prompt) score -= bad * 4.0 length_penalty = max(0, len(prompt) - 140) * 0.1 score -= length_penalty return round(max(score, 0.0), 1) def optimize(self, subject, style, lighting, detail): prompt = self.build_prompt(subject, style, lighting, detail) neg = self.build_negative("ugly") results = [(prompt, neg, self.score_prompt(prompt, neg))] prompt2 = "detailed, sharp focus, " + prompt results.append((prompt2, neg, self.score_prompt(prompt2, neg))) prompt3 = "(masterpiece:1.2), " + prompt2 neg2 = neg + ", worst quality" results.append((prompt3, neg2, self.score_prompt(prompt3, neg2))) return results if __name__ == "__main__": ws = PromptWorkshop() rounds = ws.optimize("a white cat", "watercolor", "soft window light", "flowing fur") for i, (p, n, s) in enumerate(rounds, 1): print("round {}: score {}".format(i, s)) print(" positive: {}".format(p)) print(" negative: {}".format(n))
tpl = self.templates[self._count % len(self.templates)]轮流切换多个模板,模拟“多版本订单”轮换。return tpl.format(subject=subject, style=style, ...)把变量填入占位符,实现“模板化组装”。hit = sum(1 for w in self.positive_words if w in prompt)数一数正向质量词命中几个,命中越多加分越高。if ":1." in prompt: score += 6.0检测到权重标记就加分,体现“加权重”策略的价值。bad = sum(1 for w in self.negatives if w not in neg_prompt)检查负面词是否覆盖齐全,遗漏越多扣分越多。prompt3 = "(masterpiece:1.2), " + prompt2模拟“加权重强调”的迭代动作,对应(cat:1.3)语法。neg2 = neg + ", worst quality"迭代中不断补强负面清单,体现“双向引导”的工程习惯。
常见误区
误区“提示词堆得越多、写得越长,画面肯定越精细。我看大佬分享的词都是几百个英文单词,我也照抄一大段。”
正解模型注意力资源有限,长 prompt 会稀释核心语义,正向词与负面词还会互相干扰。老周面对三百字订单只会叹气:重点在哪?视觉词的最佳区间一般在 20-60 个词,关键是要素结构完整,而不是长度。
为何常见:早期社区分享的“超长 prompt”看起来专业,很多人误以为长度等于专业度,忽略了模型是“语义加权求和”而非逐字执行。
误区“负面提示词列得越多、权重给得越猛,模型就越不敢画丑,我把所有不想要的东西全塞进去。”
正解从双向引导公式可见,负向偏置 $s_n$ 过大会把采样轨迹推离合理分布,导致构图失衡、色彩浑浊。负面词应精准命中高频问题,如 extra fingers、watermark,而不是罗列百个低频词。
为何常见:“负面清单越全越安全”的直觉看似合理,却忽视了反向引导是“减法”,减太多会让画面失去自然底座。
误区“CFG Scale 调得越大,生成结果越贴近提示词,那我直接拉到 20 不就行了?”
正解CFG 是“贴合度”与“自然度”的权衡旋钮。过大会出现色彩过饱和、细节僵化、塑料感伪影。实际调参通常从 7-12 起步,先固定步数和种子,再单变量微调,而不是一味拉满。
为何常见:把“听话”等同于“质量高”,忽略了过度约束会让模型偏离它学到的自然图像分布。
误区“Seed 每次重新抽就好了,反正都是随机噪声,固定它浪费操作时间。”
正解Seed 决定初始噪声,是整个扩散过程的“起笔草稿”。固定 seed 才能公平地对比两次 prompt 修改到底改变了什么——这正是工程化回归测试和案例复盘的基础。
为何常见:日常随手刷图习惯了随机性,缺乏“控制变量”的实验意识,导致永远无法定位问题出在哪个环节。
面试题
Q1. Prompt 工程最核心的目标是什么?
- A.让生成结果更贴近用户意图← 正确答案
- B.缩短模型训练所需的时长
- C.提高模型推理运行的速度
- D.压缩提示词的字符总数量
答案:A。Prompt 工程是在模型已训练好的前提下,通过优化输入文本来控制生成方向,本质是“让结果更贴近意图”。它不改变训练时间、推理速度,也不以压缩字符数为目的。
Q2. 负面提示词的主要作用是什么?
- A.降低生成图像的初始分辨率
- B.排除画面中不需要的元素← 正确答案
- C.增强生成图像的画面细节
- D.提高扩散采样的执行速度
答案:B。负面提示词把采样轨迹推离指定概念,相当于订单“不要栏”。它不降低分辨率、不加细节、也不加速采样,只是让模型避开那些不该出现的东西。
Q3. 在扩散模型中使用负面提示词,本质上是?
- A.删除提示词中无用的单词
- B.额外进行一次反向的引导← 正确答案
- C.放大正向提示词的权重值
- D.降低采样步数以加速产出
答案:B。负面提示词通过公式中减号项实现,把采样方向推离负面内容,属于“反向引导”。它不删除词、不放大权重、也不影响步数。
Q4. 提示词中出现 (cat:1.3),一般表示什么?
- A.提升 cat 语义权重至 1.3 倍← 正确答案
- B.让 cat 在画面中出现 1.3 次
- C.将 cat 的像素尺寸放大 1.3 倍
- D.给 cat 的采样步数乘上 1.3
答案:A。权重语法 (词:数字) 调节的是该词的语义权重,等价于在加权求和中把 $\alpha_i$ 设为 1.3。它不控制出现次数、像素尺寸或采样步数。
Q5. 其他条件不变时,把 CFG Scale 调大,通常会?
- A.图像边缘开始变得模糊不清
- B.画面更贴合提示词但易过饱和← 正确答案
- C.单张图像生成耗时显著变短
- D.负面提示词自动失去约束作用
答案:B。CFG 调大意味着更强的引导力度,画面更贴提示词,但过大会色彩过饱和、出现伪影。它与速度无关,也不会让负面词失效。
Q6. Seed(种子)在 Prompt 工程中的主要作用是?
- A.让每张生成图结果互不相同
- B.锁定初始噪声便于复现对比← 正确答案
- C.控制提示词的最大长度上限
- D.仅对负面提示词产生影响
答案:B。Seed 决定初始噪声,固定 seed 等于固定“起笔草稿”。它能让你在修改提示词时做公平对照,是回归测试的锚点。它不是随机开关,也不控制长度或只影响负面词。
Q7. img2img 中 denoise 强度 $\eta$ 越大,表示什么?
- A.保留更多的原图结构与纹理
- B.重绘越强,原图保留越少← 正确答案
- C.让采样步数自动的减少
- D.使提示词权重全部失效
答案:B。$\eta$ 控制混合比例中噪声项的占比:$\eta$ 大则“新灵感”多,原图结构保留少;$\eta$ 小则更接近原图。它不改变步数,也不会让提示词失效。
Q8. 以下哪些属于正向提示词的组成要素?
- A.主体内容描述← 正确答案
- B.风格流派限定← 正确答案
- C.负面元素过滤
- D.光影细节补充← 正确答案
答案:ABD。正向提示词包含主体、风格、细节、质量词等要素。负面元素过滤属于“不要栏”,是负面提示词的职责,不属于正向订单的组成要素。
Q9. Prompt 工程化落地的关键手段包括?
- A.建立提示词模板库← 正确答案
- B.批量生成与评分评测← 正确答案
- C.移除全部负面提示词
- D.对关键版本做记录管理← 正确答案
答案:ABD。工程化核心是模板复用、批量评测、版本管理。移除全部负面提示词是错误做法——负面词只要精准适量,就是质量防线,不能一刀切删除。
Q10. 关于采样步数与 CFG 的关系,正确的说法有?
- A.步数越高,扩散去噪越充分← 正确答案
- B.高 CFG 时可增加步数缓解伪影← 正确答案
- C.步数越高,图像必然越清晰
- D.步数设置决定随机种子大小
答案:AB。步数越高去噪越充分,且高 CFG 引入的部分伪影可以通过更多步数缓解。但“必然越清晰”过于绝对,步数过高收益递减甚至可能引入额外噪声;步数与种子无关。