LLMSystem PromptGuardrailPrompt Engineering工程化
System Prompt 设计模式:约束、角色与边界(从能用到可审计)
System Prompt 不是“写几句规矩”,而是一套可维护、可审计的控制层:约束如何分层、冲突如何决策、权限如何边界化、以及如何把安全与质量变成可测试的规则。本文给出可复用的 System Prompt 结构模板与工程落地方法:指令层级、冲突优先级、越权防护、观测与回归评测。
2026年3月4日
Synthly 团队
预计阅读 16 分钟

📷 Photo by ThisIsEngineering via Pexels
先给结论:System Prompt 的正确形态是“政策层”,不是“文案”
很多团队的 System Prompt 长这样:
- 你是一个很厉害的助手
- 要友好
- 不要胡说
这类 prompt 的问题是:
- 看起来有规矩,但不可执行
- 规则冲突时无裁决
- 无法回归评测与灰度
- 一旦出事故,定位只能靠猜
工程上更健康的目标是:
System Prompt 是一套可维护、可审计、可回滚的政策层(policy layer)。
一、指令层级:把“约束”拆成硬规则与软指导
建议你把 System Prompt 拆成 4 层(从强到弱):
- 硬约束(Hard Rules):绝对不能做的事(越权、泄密、危险动作)
- 风险策略(Risk Policy):遇到风险如何处理(拒答/追问/HITL/降级)
- 角色与目标(Role & Goals):产出质量标准、风格目标
- 示例与边界案例(Examples):帮助模型理解“怎么做才算对”
为什么要分层?因为你需要:
- 让“不能做”足够短且不被稀释
- 让“怎么做更好”可迭代、可 A/B
- 让示例可替换而不影响核心约束
二、冲突优先级:明确裁决规则,否则模型会自作主张
现实里冲突一定存在:
- 用户想要更快 vs 需要安全确认
- 体验要顺滑 vs 必须拒绝高风险
- 规则之间互相掐架(例如既要简洁又要给出完整依据)
你需要显式写出裁决顺序,例如:
- 法律/合规/安全 > 业务目标
- 权限边界 > 自动化
- 可验证事实 > 自信生成
- 不确定时追问/拒答 > 编造
这不是“写给模型看”的口号,而是你要在系统里贯彻的决策原则。
三、边界(Boundaries):把权限与工具能力写清
在 Agent 场景里,System Prompt 最容易失控的是“工具越权”。
建议在 System Prompt 里明确:
- 可用工具列表(以及用途)
- 每个工具的权限边界(读/写、敏感字段)
- 高风险动作的确认策略(例如必须二次确认或 HITL)
并配合工具层的硬约束:
- JSON Schema(输入严格)
- 结果结构统一
- 写操作必须幂等
你可以结合这篇理解“工具契约 + 容错”为什么是系统安全的一部分:
四、一个可复用的 System Prompt 骨架(可直接改)
下面是一个“结构化”骨架,重点是层次与冲突裁决,而不是具体措辞:
[Hard Rules]
- 禁止:泄露密钥/隐私、执行未授权写操作、提供违法/危险指导
- 不确定:必须澄清或拒答,不可编造
[Risk Policy]
- 高风险动作:必须二次确认;必要时转人工
- 数据不足:先问关键缺口,不要先猜
[Role & Goals]
- 输出:结构清晰、给出可执行步骤
- 质量:引用可验证来源/工具回执(如有)
[Tools & Boundaries]
- toolA:只读
- toolB:写操作需幂等键 + 确认
[Examples]
- 示例1:遇到权限不足如何拒绝
- 示例2:遇到冲突指令如何裁决
工程上,建议把它拆成可组合片段(片段化),并且有版本号。
五、工程落地:把 System Prompt 变成“可测试组件”
1)版本管理与变更审计
最小要做到:
- 每次变更都有版本号
- 有变更摘要(为什么改)
- 有回归样本集(改前改后对比)
这和传统配置管理一样重要。
2)回归评测:别让 prompt 变成玄学
准备一组样本覆盖:
- 正常任务
- 边界任务
- 风险任务(越权、敏感信息、写操作)
- 对抗任务(prompt injection)
每次变更都跑:
- 通过率
- 拒答正确率
- 误拒答率
- 成本与延迟变化
3)灰度与回滚
System Prompt 也是“发布”。建议:
- 小流量灰度
- 指标看板
- 一键回滚到旧版本
六、常见坑:System Prompt 写对了,系统还是会翻
因为 System Prompt 只能“引导”,不能替代系统工程。典型坑:
- 工具层没有 schema 校验 → prompt 再严也会被脏回执带偏
- 没有幂等 → 模型重试导致重复写入
- 没有可观测 → 你不知道规则是否生效
相关基线可结合:
常见问题
System Prompt 里要不要写很多“不要”?
写少量“硬禁止”是必要的,但更重要的是把“遇到风险怎么做”写成策略,并用系统手段(权限、校验、预算)落地。否则你会得到一个只会说“不行”的助手。
怎么防 prompt injection?
System Prompt 只是第一层。你还需要:
- 工具权限隔离
- 输入分区(把用户内容与系统政策隔离)
- 对高风险工具做二次确认