提示词我写了半年,最后收敛成这四条
从攒模板到写说明书。少花心思在措辞上,多花心思在"什么算做对了"上。
一开始我也热衷于攒"万能提示词"。半年下来,模板删得只剩四条真正常用的东西。
一、先说结论
- 任务描述的质量,远大于措辞技巧。
- 把"什么算做对了"写清楚,比把"你要认真做"写十遍有用。
- 例子要挑边界例子,不要挑典型例子。
- 输出格式用显式结构规定,别指望它猜。
二、四段式模板
这是我唯一还在用的骨架,适合任何有点复杂度的任务:
【任务】一句话说清要产出什么。
【输入】我会给你的材料,以及材料的边界(哪些不在其中)。
【约束】必须遵守的规则,尤其是那些"违反了结果就作废"的硬规则。
【验收】怎么判断输出是对的。能给具体例子就给例子。
【输出格式】字段、顺序、不要前言后语。
前三个是大多数人会写的,第四个「验收」是关键差异项。
写「验收」最好的办法,是给一对正反例:这个输入应该得到这样的输出;而那种输入应该拒答。有了这一对,模型对边界的把握会明显更准,比写"要谨慎判断"有效得多。
三、几个我确实见到的效果
把推理要求改成"输出中间结论",而不是"请一步步思考"。后者在很多模型上已经被训练成套话,它会写一段"让我们逐步分析"然后直接跳到答案。有用的写法是规定结构:"先列出你需要的输入字段 → 再给出你打算用的规则 → 最后给结论"。这样它出错时我知道错在哪一步。
约束用肯定句。"不要使用长句"不如"每句不超过 25 字"。否定式约束的遵守率普遍低于可检验的肯定式,因为前者需要它自己推断边界在哪。
要求它标注不确定性。加一句"对任何你不确定的判断,在句末标 [存疑] 并说明缺什么信息",能把一部分编造转成显式提问。这招不是万灵药,模型有时会过度标记或漏标,但比完全没有信号好。
长指令会被稀释。规则写到三十条,遵守率会掉。我现在超过十几条就拆成"必须遵守(写进系统位置)"和"风格偏好(可牺牲)"两层。
四、几个我踩过的错觉
"它没认真读材料"——大多数时候是材料没给全,或者关键约束被埋在了长文本中段。先自查输入,再评价输出。
换个说法就好了——有时是真的,但不可复现,等于没解决。我的处理是:任何"调出来的效果"都要落到一个可重跑的脚本里,固定输入、固定参数、留一份输出快照。不然一周后你自己都不知道当时改了什么。
例子被当答案抄——给了 few-shot 示例,模型有时会把示例里的实体带进结果。示例里用占位符(<姓名>、<日期>)比用真实值安全。
要求 JSON 就一定拿到合法 JSON——仍会有尾部多余文字、把数字写成字符串、在字段里塞 Markdown。所以我的规矩是:提示里规定格式,代码里校验格式,两者都要有,后者是唯一的裁判。
五、一份最小可用示例
【任务】从合同文本中抽取"违约责任"条款相关的关键信息。
【输入】用户提供的合同正文(可能缺失该章节)。
【约束】
- 只使用给定文本中的信息,禁止推断未写明的内容。
- 每条结果必须附上原文片段作为依据。
- 文本中没有对应内容时,该字段返回 null。
【验收】
- 正例:文本写明"逾期按日万分之五支付违约金",则"违约金计算方式"应返回该比例及原文片段。
- 反例:文本未提及违约金,则该字段返回 null,不得给出行业惯例值。
【输出格式】仅输出 JSON,字段为 amount、deadline、penalty、evidence;不要任何解释文字。
这套写法真正省时间的地方不在第一次,而在第三次——当你需要解释"上次那批结果为什么有的字段是空的",原文依据就在那里。
内容标识:本文为本人经验总结;文中示例任务均为我自己工作里脱敏后的场景,示例回答未使用 AI 生成。
本文出处:http://honeysss.cn/post/prompt-engineering-notes.html 转载请注明出处。