System Prompt
System Prompt 是发给 LLM 的第一条消息,定义 Agent 的角色、行为规则、安全边界和输出格式。它是上下文工程中最稳定的部分。
#type / concept
#status / evergreen
#tech / ai
[!info] related notes
System Prompt
一句话定义
System Prompt 是发给 LLM 的第一条消息,定义 Agent 的角色、行为规则、安全边界和输出格式。它在整轮对话中保持不变(或很少变化),是上下文中最稳定的部分。
核心原理
System Prompt 的组成
System Prompt =
角色定义 (你是谁)
+ 行为规则 (你该怎么做)
+ 安全边界 (你不能做什么)
+ 输出格式 (回答格式)
+ 工具使用指南 (何时用工具)
+ 当前上下文注入点 (用户画像、知识等)
示例
SYSTEM_PROMPT = """
你是一个专业的健康问诊助手。
## 角色
- 你是 BodySense AI 健康助手
- 你帮助用户分析体态问题并提供康复建议
## 行为规则
- 先收集信息,再给建议
- 不确定时询问用户,不要猜测
- 用简洁易懂的语言回答
## 安全边界
- 不做医学诊断
- 不推荐处方药
- 发现危险症状时提醒就医
## 输出格式
- 使用 Markdown 格式
- 重要信息用 **加粗**
- 步骤用有序列表
## 当前用户
{user_profile}
## 当前状态
{consultation_state}
"""
与 Developer Prompt 的关系
| System Prompt | Developer Prompt | |
|---|---|---|
| 定义者 | 产品/业务 | 开发者 |
| 内容 | 角色、规则、安全 | 技术指令、格式约束 |
| 变化频率 | 低 | 中 |
| 用户可见 | 是 | 否 |
常见坑
- System Prompt 太长: 占用太多上下文窗口
- 规则冲突: “简洁回答”和”详细解释”矛盾
- 不做测试: 改了 System Prompt 不知道效果变好还是变差
- 硬编码: System Prompt 写死在代码里,无法版本管理