System Prompt 设计
问题
如何设计高效的 System Prompt?有哪些关键原则和模式?
答案
System Prompt 是在用户消息之前设置的指令,定义 LLM 的行为边界、角色、输出风格。它是 AI 应用个性化的基础。
一、System Prompt 结构模板
# 角色定义
你是一个 [角色],专长于 [领域]。
# 核心任务
你的主要职责是 [任务描述]。
# 行为规则
- 规则 1
- 规则 2
- 规则 3
# 输出格式
[格式要求]
# 限制
- 不要做 X
- 如果遇到 Y 情况,做 Z
二、关键设计原则
| 原则 | 说明 |
|---|---|
| 明确角色 | 定义清晰的身份和专业领域 |
| 具体规则 | 用列表列出明确的行为规则 |
| 正面指令 | "做什么"优于"不做什么" |
| 优先级 | 最重要的规则放最前面 |
| 边界处理 | 明确超出能力范围时的行为 |
| 简洁 | 越短越好——长 System Prompt 增加成本和延迟 |
三、常见模式
守门人模式
你只回答关于 [主题] 的问题。
如果用户问其他话题,礼貌地引导回 [主题]。
格式强制模式
所有回答必须包含以下部分:
1. 答案(一句话)
2. 解释(简短说明)
3. 示例(一个代码示例)
安全边界模式
你是客服助手。你可以:
- 查询订单状态
- 解释退款政策
你不能:
- 修改订单
- 承诺任何非官方优惠
遇到无法处理的请求,引导用户联系人工客服。
四、防注入设计
System Prompt 需要防止用户通过输入"覆盖"系统指令(详见 Prompt 安全)。
常见面试问题
Q1: System Prompt 太长有什么问题?
答案:
- 成本高:每次请求都携带完整 System Prompt,Token 成本叠加
- 延迟增加:Prefill 阶段变慢
- 注意力稀释:太多指令可能导致关键规则被忽略
- 最佳实践:保持 200-500 Token,关键规则放最前面