告别垃圾回答!结构化 Prompt(提示词)编写模板:CRISPE 框架实战教学

内容创作

把 CRISPE 框架拆成可套用的写提示词模板,讲清每个位置该填什么、什么情况下不适用,以及怎么自检一条提示词。

很多人写提示词翻车,不是想法不行,而是把要求全揉成一坨话丢过去,模型只能猜。这篇不讲怎么让模型调工具、也不讲结构化输出协议,只讲提示词本身怎么写:用 CRISPE 框架把角色、背景、任务、风格、实验、格式六个位置填满,再给一份能否直接用的自检清单。适合写文案、做总结、跑批量任务却总拿到「正确的废话」的人。

很多人写提示词翻车,不是想法不行,而是把要求全揉成一坨话丢过去,模型只能靠猜。猜出来的东西往往挑不出错,但也用不上,就是那种「正确的废话」。这篇只讲提示词本身怎么写:用 CRISPE 框架把角色、背景、任务、风格、实验、格式六个位置填满,再给一份发出去之前的自检清单。

它适合写文案、做总结、跑批量任务却总拿到空话的人。需要提前说清楚的是:这里不讨论怎么让模型调工具、也不讲结构化输出的协议细节,那些是另一条线的事。这篇解决的是「同样一个模型,为什么别人写出来的能直接用,你写出来还得重写三遍」。

先分清:提示词翻车是三种病,不是一种

提示词效果差,先别急着加形容词、加感叹号,先判断自己属于下面哪一类。三种病的药方完全不同:缺信息的要补背景,约束糊的要加硬指标,任务混的要拆条。分不清就乱改,往往越改越长、越改越偏。

病症典型表现先动哪里
信息缺失型每个字都对,但放到任何产品上都成立补背景:读者是谁、什么场景用、已知条件有什么
约束模糊型同一句话跑两次,长度语气都不一样补硬指标:字数、条数、版本数、禁用词
任务混杂型一条提示词里检索、写作、翻译、排版全塞进去先拆任务,一条只干一件事,再谈措辞

CRISPE 六个位置分别填什么(附填空模板)

CRISPE 的价值不在名字,而在于它逼你把六个位置逐个填满,哪里空着就是哪里在让模型自由发挥。下面按「先地基、再方向、后收口」的顺序说,填空时对着自己的任务改词就行。

C 角色
你以什么身份说话。写「5 人小团队的渠道运营」,比写「资深专家」有用得多,因为前者自带视角和取舍。
R 背景
这件事的来龙去脉:产品是什么、读者是谁、手上已有哪些材料、上一版哪里不满意。
I 任务
用动词开头说清交付物,是「写三条标题」还是「把这段压成一段摘要」,别写成「帮我看看」。
S 风格
给参照物而不是形容词。说「像发给客户看的周报」,比说「专业一点、口语一点」可执行。
P 实验
要几个版本、允许哪些取舍。比如「给三个方向,一个偏保守、一个偏直接、一个偏幽默」。
E 格式
最终按什么结构呈现、每部分多长、是否用序号、有没有长度上限,一次说全。

填空时守住一条硬规矩:能用数字的地方别用形容词。字数、条数、版本数、段落数全部写具体。形容词是模型自由发挥的入口,数字是把它收住的绳子。

你是[C 角色],正在处理[R 背景]。\n请完成[I 任务]。\n风格要求:[S 参照物与语气]。\n请给[P 版本数与取舍]个版本。\n输出格式:[E 结构与长度上限]。\n禁止:不要编造数据;不要出现[禁用词]。

把模板套进真实场景:三个常见任务的填法对照

光看框架容易觉得抽象,换成具体任务就清楚了。下面三个场景都是小团队日常会用到的,注意看每个位置到底被填了什么,以及哪些位置被有意留空了。

位置写文案做总结跑批量
C 角色渠道运营,面向某类人群分析师,为不熟悉业务的同事服务固定不变,模板里写死
R 背景产品特点、受众、投放渠道文档用途、读者层级、要决策什么每次只替换变量部分
I 任务写标题加正文加标签提炼结论与待办清单按统一规则处理每一批输入
S 风格参照同类内容的语气特征平实、少术语、结论先行保持与首版一致,不比不比改
P 实验三个方向各一条不适用,空着不适用,空着
E 格式标题一行、正文几段、标签几个分段呈现,是否保留原文数字统一字段顺序,方便比对
  • 写文案:风格位置给参照物,别写「有吸引力」,要写「像给老客户发的通知,不用感叹号」。
  • 做总结:任务位置拆成「先给三条结论,再列待办」,比笼统说「帮我总结」稳定得多。
  • 跑批量:把变量位置用统一占位符标出来,一次只换变量不换模板,方便后面排查是哪一版改坏了。
  • 套模板不等于越长越好,六个位置里确实用不上的就空着,硬凑内容反而稀释重点。

发出去之前:一份 8 项自检清单

改提示词最怕凭感觉,觉得「这次应该行了」就发出去。发之前对着下面八条过一遍,每条都是一句话能答上来的,答不上来就是还缺东西。这份清单不保证结果一定好,但能挡掉大部分低级翻车。

  1. 交付物与读者有没有一句话说清交付物是什么,以及这份东西给谁看、在什么场合用。两条都答不上就别发。
  2. 长度与禁止项长度和条数是否给了具体数,有没有列出明确的禁止项,比如不要编造数据、不要用某类词。
  3. 变量与任务数变量是否用了统一占位符,同一条提示词里是不是混了两个以上不相关任务,混了就拆。
  4. 换模型还成立吗如果换个模型,角色设定和格式约束是否还适用。有些角色描述绑定了特定模型的脾性,换模型要重写。

改完别靠自己读一遍判断好坏,固定跑几条同类输入做对比,看新版到底在哪一项上更稳。具体怎么设计对比、怎么避免只看一次结果就下结论,站内有一篇专门讲这个的,做法可以参考 提示词改完到底变好没有(/prompt-version-regression-testing)。

什么情况下别用 CRISPE

CRISPE 不是万能药,它有明确的适用边界。下面这几种情况硬套框架,只会让提示词变长、变慢,而且不一定变好。

  • 任务极其简单时:比如只要求把一句话换个说法,六个位置反而是负担,一句话说清就别上框架。
  • 探索型任务:想看看模型能给出什么思路时,不适合把格式钉死,先放开让它发散,第二轮再收敛。
  • 流程本身在变:需要频繁改动的长流程,应该拆成多条提示词,或者交给更擅长编排的方式处理,框架解决不了流程问题。
  • 问题出在上下文:如果模型是记不住前面说过的话,那是上下文长度和传递方式的事,换提示词框架没用。

另外要区分清楚:框架管的是「话怎么说」,不管「输出以什么协议返回」。真到需要机器解析结果的时候,那是结构化输出那一套的事,选型思路可以看 提示词与结构化输出(/prompt-structured),两篇配合着用。

常见问题

CRISPE 和直接写一大段话,区别在哪?

区别在于有没有把「模型不知道但你需要」的信息补上。一大段话往往只写了任务,角色、读者、格式和禁止项全靠模型猜。CRISPE 的价值是逼你逐项确认,缺哪项一眼能看出来。任务本身就简单时,两者差别不大。

按模板写了还是拿到套话,先改哪里?

先查三处:背景里有没有交代读者和用途,格式里有没有给具体长度与结构,禁止项有没有列。这三处补上通常就够。如果还不行,说明任务被塞太多,拆成两步:先让模型列提纲,确认后再让它按提纲展开。

同一套模板换模型还能用吗?

大概率要微调。不同模型对角色设定的敏感度、对格式指令的服从度不一样,有的更吃例子、有的更吃明确禁令。做法是固定输入和模板,用另一条提示词跑同一批用例对比,别只看一次输出就下结论。可以参考 提示词改完到底变好没有(/prompt-version-regression-testing)。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。