返回文章列表
LLMSystem PromptGuardrailPrompt Engineering工程化

System Prompt 设计模式:约束、角色与边界(从能用到可审计)

System Prompt 不是“写几句规矩”,而是一套可维护、可审计的控制层:约束如何分层、冲突如何决策、权限如何边界化、以及如何把安全与质量变成可测试的规则。本文给出可复用的 System Prompt 结构模板与工程落地方法:指令层级、冲突优先级、越权防护、观测与回归评测。

2026年3月4日
Synthly 团队
预计阅读 16 分钟
System Prompt 设计模式:约束、角色与边界的层级结构示意

📷 Photo by ThisIsEngineering via Pexels

先给结论:System Prompt 的正确形态是“政策层”,不是“文案”

很多团队的 System Prompt 长这样:

  • 你是一个很厉害的助手
  • 要友好
  • 不要胡说

这类 prompt 的问题是:

  • 看起来有规矩,但不可执行
  • 规则冲突时无裁决
  • 无法回归评测与灰度
  • 一旦出事故,定位只能靠猜

工程上更健康的目标是:

System Prompt 是一套可维护、可审计、可回滚的政策层(policy layer)。


一、指令层级:把“约束”拆成硬规则与软指导

建议你把 System Prompt 拆成 4 层(从强到弱):

  1. 硬约束(Hard Rules):绝对不能做的事(越权、泄密、危险动作)
  2. 风险策略(Risk Policy):遇到风险如何处理(拒答/追问/HITL/降级)
  3. 角色与目标(Role & Goals):产出质量标准、风格目标
  4. 示例与边界案例(Examples):帮助模型理解“怎么做才算对”

为什么要分层?因为你需要:

  • 让“不能做”足够短且不被稀释
  • 让“怎么做更好”可迭代、可 A/B
  • 让示例可替换而不影响核心约束

二、冲突优先级:明确裁决规则,否则模型会自作主张

现实里冲突一定存在:

  • 用户想要更快 vs 需要安全确认
  • 体验要顺滑 vs 必须拒绝高风险
  • 规则之间互相掐架(例如既要简洁又要给出完整依据)

你需要显式写出裁决顺序,例如:

  1. 法律/合规/安全 > 业务目标
  2. 权限边界 > 自动化
  3. 可验证事实 > 自信生成
  4. 不确定时追问/拒答 > 编造

这不是“写给模型看”的口号,而是你要在系统里贯彻的决策原则。


三、边界(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 只是第一层。你还需要:

  • 工具权限隔离
  • 输入分区(把用户内容与系统政策隔离)
  • 对高风险工具做二次确认

想看更多工程化文章见 /articles,也可以在 /apps/new 体验 Agent 能力。