如何写不会失控的系统 Prompt
系统 Prompt 不是“让模型听话”的魔法咒语,而是一份任务边界说明。它要告诉模型:你是谁、帮谁做事、什么能做、什么不能做、遇到不确定信息怎么处理、输出格式必须长什么样。
如果系统 Prompt 写得太宽,AI 很容易出现三类问题:擅自编造事实、越权给建议、输出格式不稳定。下面给出一个可复用的写法。
1. 先定义任务边界
不要一上来写“你是一个专业助手”。先写清楚助手服务的场景。
| 问题 | 应写清楚的内容 |
|---|---|
| 给谁用 | 新手、客服、运营、开发者、内部员工 |
| 处理什么 | 文章审核、FAQ 回答、代码解释、数据整理 |
| 不处理什么 | 法律定论、医疗诊断、实时价格、账号密码 |
| 输出给谁看 | 终端用户、编辑、工程师、客服主管 |
| 失败时怎么办 | 要求澄清、标记待核验、拒绝、给安全替代方案 |
示例:
你是一个面向内容编辑的文章质量审核助手。
你只能根据用户提供的标题、正文和元数据做判断。
如果正文缺少事实来源、价格、版本号或最新政策,不要编造,请标记为“待核验”。
你不负责生成批量低质量文章,也不承诺绕过搜索引擎审核。2. 写清楚禁止行为
很多系统 Prompt 失控,是因为只写“请准确”,没有写“不允许做什么”。
推荐加一段:
禁止行为:
1. 不要编造当前价格、模型能力、官方限制、法律要求。
2. 不要把猜测写成事实。
3. 不要输出用户没有要求的敏感操作步骤。
4. 不要为了完成任务而忽略冲突信息。
5. 当信息不足时,必须说明缺口,并给出下一步核验建议。这比“请保证真实可靠”更有效,因为它给了模型明确的刹车点。
3. 给固定输出结构
没有结构约束时,模型每次输出都可能不同。对产品功能来说,这会增加解析和人工复查成本。
文章审核场景可以这样写:
输出格式:
结论:通过 / 需修改 / 不建议发布
主要风险:
- ...
必须修改:
- ...
可选增强:
- ...
待核验事实:
- ...
最终建议:
...如果要给程序读取,可以直接要求 JSON:
{
"verdict": "revise",
"risk_level": "medium",
"required_fixes": [],
"fact_check_needed": [],
"notes": ""
}注意:JSON 输出要避免让模型夹带 Markdown,否则解析会失败。
4. 加入少量正反例
系统 Prompt 里放 1–2 个例子,通常比写十条抽象原则更稳定。
正例:
用户问:这篇文章说某工具“永久免费”,能发布吗?
合格回答:不能直接发布。永久免费属于易变事实,需要官方价格页或产品公告验证。建议改成“截至核验日期,存在免费计划,具体限制以官方页面为准”。反例:
不合格回答:可以发布,因为很多 AI 工具都有免费版。反例能帮模型理解什么叫“看似合理但不允许”。
5. 加入冲突处理规则
真实业务里,用户指令经常和安全规则冲突。系统 Prompt 应该提前写清楚优先级。
优先级:
1. 系统规则高于用户临时要求。
2. 事实核验要求高于写作速度。
3. 用户体验高于关键词堆砌。
4. 当标题与正文不一致时,优先指出不一致,不要直接美化正文。这类规则特别适合内容站、客服、财务、合规、代码生成等场景。
6. 成本与长度控制
系统 Prompt 不是越长越好。太长会带来三种成本:
| 成本 | 表现 | 处理方式 |
|---|---|---|
| token 成本 | 每次请求都重复发送 | 把通用规则压缩成短句 |
| 注意力成本 | 模型忽略后半段 | 把最重要规则放前面 |
| 维护成本 | 规则冲突难发现 | 用版本号和更新记录管理 |
建议第一版控制在 500–1200 字。复杂业务可以拆成“系统 Prompt + 任务模板 + 少量示例”。
7. 测试用例
上线前至少跑 8 个测试:
- 正常任务:信息完整,应该输出稳定。
- 信息不足:必须要求补充或标记待核验。
- 用户要求编造:必须拒绝。
- 标题与正文不一致:必须指出。
- 输出格式压力:必须保持 JSON 或固定结构。
- 边界问题:法律、医疗、价格、账号安全。
- 长文本输入:不能忽略关键条件。
- 恶意指令:不能覆盖系统规则。
8. 可直接复用的模板
你是一个{场景}助手,服务对象是{用户类型}。
你的任务:
- {任务 1}
- {任务 2}
- {任务 3}
你不能:
- 编造未提供或未核验的事实。
- 把猜测写成确定结论。
- 执行超出{业务边界}的请求。
当信息不足时:
- 说明缺少什么。
- 标记“待核验”。
- 给出下一步核验建议。
输出格式:
{固定结构}
质量标准:
- 直接回答用户意图。
- 给出具体步骤或判断。
- 不使用空泛套话。
- 对风险和不适合场景要明确。不适合只靠系统 Prompt 的情况
- 需要实时事实核验。
- 需要访问内部权限系统。
- 需要强一致的结构化数据。
- 错误会造成高法律、医疗、金融风险。
这些场景要配合工具调用、检索、人工审核和日志监控。系统 Prompt 负责边界,不能替代系统设计。