系统提示的结构:角色、规则、边界、格式
消融实测——四段里只有一段真正提分,"你是一个专家"贡献 0.0
系统提示的"四段式"(角色 / 规则 / 边界 / 格式)是被讲烂了的东西。但没人告诉你每一段值多少分。
我把这四段一段一段拆掉,在同一套 20 条评测集上各跑 3 轮:
配置 系统提示字数 得分/20 JSON解析失败 相对完整版
完整四段式 230 18.0 0/60 +0.0
去掉①角色 217 18.0 0/60 +0.0 ← 一分没掉
去掉②规则 100 14.0 0/60 -4.0
去掉③边界 197 18.0 0/60 +0.0 ← 一分没掉
去掉④格式 201 18.0 60/60 +0.0 ← 分没掉,但全解析不了
只剩任务一句话 25 8.3 57/60 -9.7
"你是一位资深客服专家"这一段,贡献 0.0 分。
而四段各自的贡献加起来只有 4.0 分,全拆掉却掉了 9.7 分——这个差额本身就是这一节最值得讲的东西。
给新人交代工作,有两种说法:
- "你把这些工单分下类" —— 他会按他以为的标准分;
- "你是客服分类员;规则是这五条,有优先级;遇到多意图取优先级高的;结果填进这张表" —— 他按你的标准分。
模型就是那个能力很强、但对你们公司一无所知的新人。四段式就是那份交代。
四段式
① 角色:你是电商客服工单分类器。
② 规则:分类规则(按优先级):
1. 表达不满、要求赔偿、威胁投诉 → 投诉
2. 要求退货/换货/取消订单/退钱 → 退款
...
③ 边界:多个意图并存时,取优先级最高的那个。
极短或无实质内容 → 其他。
④ 格式:只输出 JSON:{"category": "...", "urgent": true/false}
逐段看实测下来它到底在治什么:
| 段 | 单独拆掉的代价 | 它真正治的东西 |
|---|---|---|
| ① 角色 | 0.0 分 | 在这个任务上,任务描述已经说清了做什么,角色是冗余的 |
| ② 规则 | -4.0 分 | 你们家的业务定义——模型永远猜不到的那部分 |
| ③ 边界 | 0.0 分 | 有规则在时,边界情况已被规则的优先级覆盖了 |
| ④ 格式 | 0.0 分,但 JSON 解析失败 60/60 | 它管的不是"答得对不对",是"程序能不能接住" |
去掉规则后的典型错例,全都指向同一件事——它在按自己的常识分,不是按你们的:
「我买的鞋子小了,能换个大一码吗?」 应=退款 实=商品咨询
「收到的杯子碎了!!!要求赔偿」 应=投诉 实=退款
「买大了能否补差价换小的」 应=退款 实=商品咨询
「你们家产品是正品吗?我怀疑是假货」 应=投诉 实=商品咨询
"换货算退款类"、"质疑正品算投诉"——这些定义只存在于你们公司里,写不进提示词,模型就只能猜。
关键:各段之和 ≠ 整体
回头看那两个数:四段各自的贡献加起来是 4.0 分,而全部拆掉掉了 9.7 分。
差在哪?看两个配置的对比:
| 配置 | 得分 |
|---|---|
| 去掉规则(角色/边界/格式还在) | 14.0 |
| 只剩任务一句话(四段全没) | 8.3 |
同样是没有规则,多了角色+边界+格式就多 5.7 分。
也就是说:规则在的时候,其他三段是冗余的;规则不在的时候,它们能救回一大半。它们不是没用,是被规则遮住了。
这是消融实验的通病,也是读任何"XX 有没有用"结论时都要小心的地方:单独拆一个组件,量到的是“在其他组件都健全时它的边际价值”,不是它的绝对价值。当你的其他部分变弱时,它的价值会重新显现。
实用的推论:别因为"实测贡献 0"就把角色和边界删掉——它们是便宜的保险(角色 13 字、边界 33 字)。该删的是那种既不提分、又很贵的东西(ap2.4 那 127 字边界规则:0 提升、+43% 成本)。
写规则的三条经验
1. 给规则排优先级,别列平行清单。 「投诉」和「退款」经常同时成立,平行列出时模型只能随缘;写成"按优先级 1→5,取第一个匹配的",歧义立刻消失。
2. 用你们的真实措辞,别用抽象词。 ❌ "妥善处理客户情绪" → ✅ "出现『投诉到平台』『曝光』等字眼 → urgent=true"。能被机器判断的词,才是有效规则。
3. 规则不是越多越好(ap2.4 的教训)。 那节实测里,v3 加了 127 字边界规则,分数一分没涨、成本涨 43%。所以:每加一条规则,都该有一次跑分为它背书——这正是下下节要建的机制。
④格式段的两个硬要求
- 明确"只输出 X":不加这句,模型爱在 JSON 前后写"好的,以下是分析结果";
- 给出精确样例:
{"category": "...", "urgent": true/false}比"输出一个包含类别和紧急度的 JSON"有效得多。
⚠️ 但要认清:格式段只能提高成功率,不能保证——ap0.2 那个"5 次 4 种结构"就是在有格式要求下发生的。真正的保证在 AP3(schema 约束 + 校验 + 自动修复)。
🔧 动手做:对你自己的提示词做一次消融(15 分钟)
- 跑本节代码,亲眼看"角色段贡献 0.0"和"格式段分没掉但解析全废"。
- 把你的提示词拆成四段(哪一段是空的?多数人缺 ③边界,以及 ②里没排优先级)。
- 做你自己的消融:把
ablation.py的四段换成你的,评测集换成你的,跑一遍。 每段跑 3 轮——单轮波动会让你把噪声当成贡献(ap2.5)。 - 看两个数:哪一段贡献最大(下次写新提示词从它开始写)、以及各段之和与全拆掉的差额(差额越大,说明你的段之间冗余越多)。
- 对贡献为 0 的段做二选一:便宜就留着当保险,贵就删掉——判据是"字数 × 调用量",不是"看起来重不重要"。
- 挨条审视规则:有没有"妥善""合理""注意"这类机器判断不了的词?换成可判定的表述。
✅ 做到这里你应该有:一份四段完整的系统提示 + 一张你自己的消融表 + 一个"从哪段开始写"的结论。
为什么:四段式不是格式洁癖,是把"模型猜不到的信息"系统性地补齐。
但这一节真正想给你的是消融这个动作本身——它是提示词工程里最接近"科学"的一步:不问"这样写好不好",问"去掉它掉几分"。你后面每一次想加一段话进提示词,都可以用这 20 行脚本回答它值不值。
新手爱写:"你是一位拥有 20 年经验、极度严谨、追求卓越、深受客户信赖的资深客服专家……"
本节实测:把整个角色段("你是电商客服工单分类器。"13 个字)拆掉,分数一分没掉。一句话的角色段尚且贡献 0.0,一段人格小作文能贡献什么可想而知——而它每次调用都要付 token 钱,还挤占上下文。
但也别矫枉过正:上面讲过,贡献 0 是"在规则健全时"的边际值。角色段 13 个字,留着是笔便宜的保险。真正该砍的是"又长又不提分"的部分——判据是字数乘以调用量,不是它听起来重不重要。
顺带一条:如果你的产品要控制语气(客服要礼貌、法律助手要严谨),角色段是有用的——只是本节这个分类任务量不到它,因为分类的输出里没有语气可言。你的任务量不量得到某一段,取决于你的评测集测的是什么。
这是我现在的提示词:【粘贴】。请按「角色/规则(带优先级)/边界/输出格式」四段式帮我重写:1) 指出我缺了哪几段;2) 把我的规则改成可机器判定的表述(去掉『妥善』这类抽象词);3) 补上多意图和极端输入的边界处理;4) 标出哪些内容是「只有我公司知道、必须由我补充」的空位。
四段式的实测结论:只有规则真正提分(+4.0),角色和边界在规则健全时贡献 0.0,格式段管的是"能不能解析"而不是"答得对不对"(拆掉后 60/60 解析失败);各段之和 4.0 ≠ 全拆掉的 9.7——段之间有冗余,单独消融量到的是边际价值。
下一节讲另一种提分手段:给例子——什么时候该塞、塞几个、以及"动态挑例子"这个进阶玩法。
🔎 来源与核验· 3 条,点开核对
