本来打算先聊理论,但我觉得还是先搞明白一件事:你真的会用提示词吗?
“提示词怎么写才有效”这个问题,我最近几乎每天都会被问一遍。有的人对着ChatGPT说“帮我写篇文章”,出来的内容四平八稳像新闻稿;有的人把需求洋洋洒洒写了两千字,结果模型抓不住重点,输出的东西还不如一句话问出来的。问题基本都出在同一个地方:你把提示词当成了“命令”,而不是“上下文工程”。
这篇文章要分享的,是我自己一直在用的六要素框架:角色、任务、背景、约束、格式、示例。听起来简单,但真正逐条落到实际场景里,会发现大多数“AI不听话”的案例,都能归到某个要素缺失或要素冲突上。为了让你直观看到效果,我会拿最近AI绘画圈特别火的“鹈鹕骑自行车”测试提示词,以及公众号文章自动生成工作流,作为两个完整案例走一遍。刚接触提示词的新手可以照着抄,已经会写提示词但总觉得“不稳定”的老手,也能从框架里找到自己漏掉的那一环。
1. 为什么提示词需要框架:从“说人话”到“建模”
1.1 提示词的本质:不是命令,是上下文工程
很多人的第一反应,是把提示词理解成“给AI下指令”。这个理解其实害了不少人。大语言模型本质上是在做“下一个词的概率预测”,它给出什么回答,取决于前面那段上下文里有多少可用的信息。你说得越含糊,它就只能猜得越离谱。
我常打一个比方:提示词就是在给一个能力很强但完全不了解你处境的新员工布置工作。你说“帮我写个方案”,他交上来的一定是网上能搜到的那种通用方案。但如果你告诉他项目背景、目标用户、竞品情况、你偏好什么风格、哪些话不能说、输出要什么结构,他交上来的东西至少能用。AI也一样,它不缺能力,缺的是你脑子里那个“默认上下文”。
所以提示词真正的价值不是“命令AI”,而是“帮AI建模”——把你脑子里的需求,翻译成它能理解的信息结构。六要素框架本质上是给这个翻译过程做了一个模板,保证你不会漏掉关键信息。
1.2 无效提示词的三种典型失败模式
先别急着背框架,我总结了三类最常见的无效提示词,你可以对照一下自己的使用习惯:
第一类是“太短”。只有任务,没有背景和约束。比如“写一首诗”“分析一下这份数据”。模型只能根据它的平均值来回答,而平均值通常等于平庸。第二类是“太长太乱”。信息全堆在一起,没有结构,一段话里既有背景又有要求还有示例,模型没法区分哪些是重点,注意力被稀释之后,每个要求都执行不到位。第三类是“自相矛盾”。前面说“语言要简洁”,后面又说“每个点都要详细展开”,模型不知道听谁的,最后经常是两头不讨好。
六要素框架的另一个好处,就是强制你按顺序把信息摆清楚。这种结构化输入会显著降低模型的“猜测空间”,输出稳定性的提升是立竿见影的。
2. 六要素框架逐项拆解:每个要素解决什么问题
2.1 角色:先给模型一双眼睛
“角色”是六要素里最容易被滥用、也最容易被低估的一个。很多人写提示词喜欢加一句“你是一位专家”,以为这样就够了,其实远远不够。角色定义的是一种“看问题的视角”,它决定了模型调用哪一类知识、用什么样的语气、关注哪些信息。
真正有效的角色描述,要包含三个层级:身份、经验、价值立场。比如“你是一位在电商行业做了八年运营的资深编辑,带过三个从零到一的品牌,擅长把复杂的产品卖点转化成用户听得懂的大白话”。这句话给模型的信息量,比“你是一位电商专家”大得多。模型会因此更倾向于用具象的、有行业味道的表达,而不是教科书式的罗列。
角色和任务必须匹配。你让一个财务背景的角色去写代码,写出来的注释风格都带着报表味,这就是角色错位。写角色之前先问自己:这份工作如果是人来干,应该是什么背景的人?
2.2 任务:把你要做的事说成一个动词
任务是提示词的核心,它回答的问题是“你到底要模型做什么”。很多人写任务的时候用了一大堆抽象名词,比如“优化”“分析”“探讨”,模型听完一脸懵。
有效的任务描述是一个可执行的单句:做什么动作、作用在什么对象上、最终目的是什么。举个例子:“根据这份产品资料,写一封面向老用户的召回邮件,目的是提升复购率。”这里面“写邮件”是动作,“根据产品资料”是输入,“面向老用户”是对象,“提升复购率”是目的,每一个词都在压缩模型的思考空间。
如果任务比较复杂,可以拆成多个子任务,用编号明确顺序。比如“第一步,提炼这份访谈稿里的三个核心观点;第二步,围绕每个观点写一段两百字的论述;第三步,把三段内容合并成一篇带小标题的文章”。这种写法等于给模型画了一条流水线,它不用自己去判断先做什么后做什么。
2.3 背景:让模型知道“现在是什么情况”
背景要素是很多人最容易忽略的。你以为AI知道你的账号是什么调性、读者是什么人、上一篇写了什么,其实它什么都不知道。
背景可以分两块。一块是客观背景:目标读者是谁、发布平台在哪、素材来自哪里、有没有竞品参考。另一块是限制背景:这篇文章的用途是什么、有没有必须覆盖的信息点、有没有不能提的内容。写作场景尤其明显,同样是“写一篇职场文章”,面向程序员和面向HR的内容完全不同,你不说,模型只能按它的默认受众来写。
我一般会在背景里直接粘贴素材或者素材的关键摘要。注意是“关键摘要”,不要把几千字的原始材料一股脑塞进去,模型处理长文本时会稀释重点。我习惯的做法是:先用自己的话把素材压缩成三到五条要点,再放进背景里。这样既保留了信息,又不会冲淡任务的权重。
2.4 约束:把看不见的边界划清楚
约束可能是在实际使用中提升效果最明显的一个要素。很多人的提示词只告诉模型“要什么”,没告诉它“不要什么”,于是模型就在它自己的偏好里狂奔。
约束分成两种:内容约束和形式约束。内容约束是“必须包含什么、不能出现什么”,形式约束是“字数多少、用什么风格、要不要小标题”。其中负面约束尤其好用:“不要使用‘赋能’‘抓手’‘闭环’这类黑话”比“语言要自然”有效得多。因为负面约束给的是明确的禁区,正面描述反而容易产生歧义。
还有一点要注意,约束必须具体可验证。你说“语言要有趣”,模型不知道怎么判断“有趣”;但你说“每段至少包含一个具体案例或一个数据”这就是可验证的。好的约束是那种模型输出之后你能立刻判断它有没有照做的约束。
2.5 格式:直接决定输出能不能用
格式要素解决的是“输出成本”问题。很多人觉得模型内容还行但用不了,问题基本出在这里——模型按照它自己的结构来组织输出,你还要花大量时间重新排版。
有效的格式描述是直接规定输出骨架。比如:“先输出标题列表,给出5个备选项,每个不超过20字;然后输出正文,正文分四段,每段小标题加粗,每段不超过300字;最后输出一段80字的摘要。”把格式写清楚,模型输出的东西就可以直接复制进后台,不用二次加工。
需要更结构化输出的时候,我甚至会在提示词里直接给一个模板,让模型往空位里填。比如“按照以下结构输出:“【标题】:…、【导语】:…、【正文】:…、【金句】:…”。给模板不是限制AI的发挥,而是把它的发挥空间聚焦在内容本身,而不是结构上。
2.6 示例:一张图胜过千言万语
在所有要素里,示例是约束力最强的。你前面写了再多要求,都不如直接给模型看一段“你以前写出来的正确结果”。示例起到了锚点的作用,模型会不自觉地模仿示例的风格、节奏和深度。
示例可以是一个完整样例、一段风格参考、甚至可以只是两三句金句。关键是把示例放在提示词的末尾,和任务描述分开。如果示例和任务混在一起,模型容易分不清哪部分是要求、哪部分是参考。我会在示例前面加一句“以下是一段风格参考,不是待处理内容”,把这个边界划清楚。
值得多说一句:当你发现某个模型怎么调都写不出你要的味道时,大概率是缺了一个好示例。去翻翻你过去写得最好的那篇文章,截一段放进去,效果往往立竿见影。
2.7 要素优先级:不同场景先抓哪个
六要素不是每次都要平均用力。实际使用中,不同场景侧重的要素完全不一样。
文生图、文生视频场景,角色和约束往往没那么重要,背景、任务、格式才是关键。你要描述清楚主体、动作、环境、构图、风格和负面约束。写文章类场景,角色、任务、约束、示例更重要,背景和格式服务于前三个。做自动化工作流的时候,格式和约束优先级最高,因为工作流要求输出稳定可解析。
我自己的经验是:如果一个提示词写出来超过三百字,而且你还在一味往里面加内容,就先停下来,用六要素逐条对照,把重复的删掉,把冲突的理顺。好的提示词不是越长越好,而是每个字都有它的位置。
3. 完整案例一:鹈鹕骑自行车的视觉提示词拆解
3.1 为什么全网都在聊“鹈鹕骑车”这个测试
最近文生图和文生视频圈子里,“鹈鹕骑自行车”几乎成了默认的压力测试题。我第一次看到这个测试的时候也觉得好笑,但试过几次之后发现,它真的是一个特别考验模型理解能力的场景。
原因在于鹈鹕这种生物的结构太特殊了:巨大的喙、修长的脖子、翅膀、短腿,再加上一辆自行车,模型需要同时处理好“身体比例”“部件位置”“物理接触”这三件事,任何一个环节出错,画面上就会出现灾难——喙插进车把里、翅膀长在车架上、腿和脚蹬错位。很多画画的老手一眼就能看出模型翻车在哪里,所以这个题材成了判断一个视觉模型到底行不行的“探针”。
网上搜“鹈鹕测试提示词原版”,找到的大多是很简单的一句话,比如“a pelican riding a bicycle”或者“一只鹈鹕骑着自行车”。这种提示词放在两年前可能还行,放到现在,等于把所有的判断空间都丢给了模型——它根本不知道你要什么风格、什么机位、什么光线、什么细节。所以这个案例特别适合用来演示六要素框架。
3.2 用六要素重新写鹈鹕骑车提示词
视觉生成场景里,六要素的映射方式和文字场景不太一样。角色要素基本退化为“主体描述”,你要把鹈鹕的品种、羽毛颜色、姿态写清楚。任务要素是“动作”,也就是它正在做什么。背景要素是“环境与时机”。约束要素就是负面提示词。格式要素是“画面构成”。示例要素可以是参考图,也可以是参考风格短语。
下面是我实际在用的一个版本,中文和英文各一套,你可以直接复制:
中文版:一只体型健硕的鹈鹕,白色羽毛,巨大的橙色喉囊自然收拢,正坐在一辆复古黑色自行车的车座上;双爪稳稳踩住脚踏板,翅膀收拢在身体两侧,长脖子微微前倾看向前方。自行车行驶在沿海公路的柏油路面上,背景是黄昏时分的海岸线,天空呈现橙紫色渐变,海面泛着金色反光。镜头采用低角度跟拍,主体位于画面左侧,右侧留出骑行前进方向的空间,浅景深虚化背景。写实风格,电影感光照,羽毛细节清晰。禁止出现多余肢体、翅膀变形、喙部错位、腿部穿透车架。
英文版:A robust pelican with white feathers and a large orange gular pouch, sitting on the saddle of a vintage black bicycle. Its feet are firmly on the pedals, wings tucked against the body, neck slightly forward looking ahead. The bicycle is moving along a coastal road at dusk, an orange-purple gradient sky, the sea reflecting golden light. Low-angle tracking shot, subject on the left with leading space on the right, shallow depth of field. Realistic style, cinematic lighting, crisp feather details. No extra limbs, no deformed wings, no misplaced beak, no legs clipping through the frame.
这段提示词和“一只鹈鹕骑自行车”的区别在哪里?每一个信息点都在帮模型减少猜测:体型给了它比例基准,喉囊“自然收拢”告诉它不要画成膨胀状态,“翅膀收拢”排除了翅膀张开的构图,“双爪踩住踏板”明确了腿部接触点,环境、镜头、风格都是直接可执行的指令。负面提示词更是把最容易翻车的几个点提前堵死了。
3.3 从翻车到稳定的迭代过程
我再分享一个实际迭代的路径,照着走可以帮你少踩坑。
第一版如果只写“a pelican riding a bicycle”,生成出来的图大概率是各种诡异组合,最有名的问题就是喙和车把穿插在一起。第二版我会加上主体结构和环境描述,这一步能解决一部分问题,但翅膀的位置还是容易乱,因为模型不理解鹈鹕的翅膀在骑行时应该放在哪里。第三版才是决定性的一步:加入“翅膀收拢在身体两侧”“禁止翅膀变形”这类结构和负面约束。到这一步,已经能出稳定的可用图了。
如果遇到更复杂的构图需求,比如让鹈鹕在骑行的同时做某个动作,我会把任务拆成两段:先用静态提示词生成一版满意的画面,再通过局部重绘或者图生视频的方式加动态。文生视频的提示词写法,我还会在六要素基础上追加时间线描述:开头画面、运动趋势、镜头运动方式、结尾画面。这就是近期很多人在聊“文生视频提示词模板”时的通用做法。
这个案例给我们的经验是:视觉提示词不是堆形容词,而是把结构、空间、物理接触讲清楚。你越是把“部件关系”写明白,模型越不容易画出结构崩坏的东西。
4. 完整案例二:公众号文章自动生成的提示词工作流
4.1 需求拆解:从“自动生成文章”到“稳定输出能用文章”
第二个案例,聊聊很多人在做的“用AI自动生成公众号文章”。我见过太多人第一步就走错了:给AI一个公众号主题,让它直接写一篇推文出来,然后对着满屏的“正确的废话”发呆。
先拆一下真实需求。做公众号自动生成,真正要解决的不是“能不能生成文章”,而是三个层次的问题。第一层是内容质量:文章要符合账号的调性,不能写得像AI的默认腔调。第二层是格式统一:每次输出都能直接复制进后台,不用再人工调整排版。第三层是批量稳定:连续生成十篇,每一篇看起来都像同一个人写的。前两层靠提示词解决,第三层要靠“工作流加提示词模板”的组合。
以扣子这类编排工具为例,我会把流程拆成:信息输入、标题生成、正文生成、格式校验、人工审稿。每个节点单独调用一个提示词,而不是让一个大提示词包办所有事情。这样做的最大好处是可控:标题不满意就只调标题节点的提示词,正文逻辑有问题就只调正文节点,不会牵一发而动全身。
4.2 六要素在工作流中的落地写法
下面是我用在正文生成节点的一套提示词模板,配合变量使用,每次只需要把素材填进去,其余内容保持不变:
你是一位有八年公众号运营经验的资深编辑,服务过多个职场类账号,擅长把访谈素材加工成有观点、有故事感的文章。现在请根据下面提供的素材,写一篇适合本账号发布的推文。账号定位是“35岁以上职场人的自我管理”,读者普遍工作十年左右,关注效率、升职、家庭平衡,不喜欢鸡汤,不喜欢空谈。素材来自一篇三千字的访谈,已经提炼出三个核心观点:第一,中年人的时间管理核心是放弃,不是高效;第二,真正拉开差距的是下班后的两小时;第三,稳定情绪比提升能力更重要。请你围绕这三个观点展开。要求:全文900到1100字;语气口语化但不轻浮;每段开头用一句有冲击力的话引领;正文必须包含一个具体的人物场景,不能全是道理;禁止使用“赋能”“抓手”“闭环”“总的来说”“值得注意的是”这类表达;不得出现“最”“第一”“国家级”等绝对化用语。输出格式:先给出三个备选标题,每个不超过20字;然后输出正文,分四段,每段加粗小标题;最后附一段40字以内的摘要。
这个模板背后是完整的六要素:角色是“八年经验的公众号编辑”,任务被拆成了“观点提炼加正文写作”,背景包含了账号定位、读者画像和素材要点,约束里既有风格禁令也有合规禁令,格式规定了标题数量、字数、分节方式。真正需要你每次改动的,只有素材和核心观点这两块。
在扣子这类工具里,我会把“素材”和“核心观点”设成变量,让用户填一个表单就能触发整个流程。很多人做公众号自动生成做不明白,不是因为工具不会用,而是提示词没有设计成“模板加变量”的结构,导致每次生成都要从头写提示词,稳定性自然没法保证。
4.3 提示词版本管理与稳定输出
说到稳定性,我强烈建议你给提示词做版本管理。不要觉得这是软件开发才需要的东西,提示词迭代到一定程度,没有版本号你会疯掉的。
我的习惯是在每个提示词文件开头标一个版本号,比如“公众号正文生成 v1.2”,然后每次只改一个地方。改了什么,就在文件末尾加一行更新说明。比如“v1.2:新增广告法禁用词约束”“v1.3:正文每段增加加粗小标题”。这个习惯的成本极低,但能帮你省掉大量“上次明明好用的提示词怎么这次不行了”的排查时间。
另外一个测试稳定性的方法:用同一个素材连续跑三次,对比三次结果。如果风格差异很大,说明提示词里的角色和约束还不够强,模型有太多自由发挥的空间。如果三次结果高度相似,说明提示词已经把模型管住了。我的经验是,一个稳定的提示词,三次输出应该像是同一个人在不同状态下的发挥,而不是三个陌生人写的。想达到这个效果,角色要素和示例要素最重要,其次是负面约束。
5. 常见问题与排查技巧实录
5.1 模型不听话,约束失效怎么办
先说结论:大多数“模型不听话”不是模型的问题,是约束本身有问题。
我排查约束失效,一般按三个方向走。第一个方向是约束之间互相打架。比如你既要求“语言要幽默”,又要求“语气要严肃正式”,模型只能取一个折中,结果哪个都没到位。第二个方向是正向约束和负向约束互相抵消,比如你强调“内容要丰富”又强调“禁止啰嗦”,丰富和啰嗦之间的边界模型很难拿捏。第三个方向是约束放的位置太靠后,前面大段背景已经把模型注意力占满了,后面的约束就没有存在感了。
还有一个特别实用的小技巧:让模型在正式输出前,先复述一遍约束。我们可以在提示词里加上一句“在开始回答前,请先列出你将遵守的五条规则,然后开始正文”。这一招是我实测下来提升指令遵循度最有效的方法,它相当于强制模型把注意力放到约束上。一开始会觉得多了一步输出,但为了稳定性,这一步值得。
5.2 输出格式总乱,怎么根治
格式乱的根本原因,往往不是模型不听话,而是你没给够结构信息。三个常见问题:没指定分隔符,模型自由发挥自己的结构;给了格式要求但太模糊,比如“写得有条理一些”;格式要求本身和示例冲突,模型只能随机选一个跟。
解决办法也很直接:在格式要素里给硬模板。用方括号或书名号把字段名定死,让模型往里面填。比如“【标题】:…【导语】:…【正文第一节】:…”。给硬模板不是限制创造,是降低模型的决策成本。格式一旦稳定,后续的人工处理基本可以取消。
要说一句实在话:提示词是有边界的。如果你需要的是稳定解析的JSON输出,直接使用工具提供的函数调用或者结构化输出能力,而不是靠提示词硬控。提示词适合做内容生成的质量控制,不适合做系统级的格式保障,这是两码事。
5.3 角色代入不成功,写出来仍然像机器人
角色代入失败,十有八九是角色太单薄。我自己也踩过这个坑:早期写提示词就会用一句“你是一位作家”,然后指望它能写出作家级的内容,结果是白日做梦。作家也有类型:侦探小说家、非虚构写作者、段子手,他们写出来的东西天差地别。
做角色增强,我会用两个方法。第一是给角色加“量级”,比如“写过三本畅销书的职场作家”比“你是一位作家”有用得多。第二是给角色加“底线”,也就是这个角色不会做什么。比如“你是一个写作者,但你不写鸡汤,不用排比句,不喊口号”,这条底线信息量极大,模型会主动避开那些AI味十足的表达。
如果你在角色上怎么努力都没用,我建议上一个更粗暴的手段:给“人设签名”。所谓人设签名,就是一段能代表目标风格的参考文本。你把它放在示例位置,让模型先模仿,再自由发挥。风格这个东西,语言描述永远不如一个实际样例来得精准。
5.4 提示词迭代的三个好习惯
最后整理三个我用下来最受益的迭代习惯,希望对你有用。
第一个习惯是每次只改一个变量。很多人的提示词是“这次改三个地方”,然后模型输出变了,你根本不知道是哪个改动起了作用。一次只改一个点,问题定位的速度会快很多。第二个习惯是保留历史版本。我维护了一个提示词库,每个版本都留有当时的示例输出,每次迭代都会跑一遍对比。没有这个依据,你很容易把回退当成新增,绕一大圈回到原点。第三个习惯是把好的提示词沉淀成模板,而不是每次从零开始。我自己有一份“六要素自查清单”,草稿写完之后逐条过一遍:角色有没有给量级,任务是不是一个动词句,背景有没有包含读者和平台,约束有没有禁区和验证标准,格式有没有硬模板,示例有没有放对位置。这份清单帮我解决过至少八成的输出质量问题。
提一个问题,当你下次写提示词的时候,先把“内容”和“结构”分清楚。内容是你想说的具体信息,结构是六要素。大多数人写不好提示词,不是因为不会说人话,而是他们脑子里根本没有一张检查表。六要素框架那张表,你可以先抄一遍再丢掉,用几个月之后它会变成一种本能。到那时候你再回头看一开始写得那些“帮我写篇文章”,大概就能理解模型当时的处境了。
我个人在实际操作中最深的体会是:提示词能力本质上不是技术能力,是表达能力。你能不能用最短的篇幅,把需求、边界、参考说清楚,这件事放在任何场景下都是稀缺能力。模型只是把这个能力直接变现了而已。所以别急着背一堆花哨的模板,先把六要素吃透,比什么都管用。