系统提示词
系统提示词是一条顶层指令,它告诉 LLM"你是谁、你应该做什么、不应该做什么",为整段对话设定框架。与最终用户撰写的用户提示词不同,系统提示词由应用开发者注入,并在每一轮对话中持续生效。
系统提示词是一条顶层指令,它告诉 LLM"你是谁、你应该做什么、不应该做什么",为整段对话设定框架。与最终用户撰写的用户提示词不同,系统提示词由应用开发者注入,并在每一轮对话中持续生效。
为什么重要
系统提示词是基于 LLM 的产品的"设计语言"。无论用户如何自由地输入提示,一条精心设计的系统提示词都能让模型的回复保持在既定的角色、语气和限制之内。从 ChatGPT、Claude、Gemini 聊天机器人,到 AI 搜索引擎、编程智能体和客服机器人,每一个 LLM 应用都通过系统提示词来塑造自己的个性。
组成部分
角色:"你是一位营销文案写作专家,为 SaaS 博客运营者提供帮助。"固定了模型回复时所采用的视角。
目标:"帮助用户快速起草博客文章。"设定对话方向。
约束:"只用韩语回答。""不要代码示例。""最多 300 字。"提前阻断不希望出现的行为。
语气:"友好但专业,不夸张。"保持品牌语调的一致性。
输出格式:"用 ### 小标题组织答案。"减少后处理工作。
工具说明:对于使用函数调用的智能体,在系统提示词中列出可用工具的清单及其说明。
系统提示词 vs 用户提示词
| 维度 | 系统提示词 | 用户提示词 |
|---|---|---|
| 撰写者 | 开发者 | 最终用户 |
| 变更频率 | 很少 | 每次请求 |
| 内容 | 角色、约束、语气 | 具体请求 |
| 作用范围 | 整段对话 | 仅该次请求 |
| 安全性 | 应对用户隐藏 | 公开 |
一个好的 LLM 系统会把"稳定的框架"(系统提示词)与"可变的输入"(用户提示词)区分开来。
实用建议
赋予角色,而非下达命令:"你是一位擅长做 X 的专家"胜过"去做 X"。模型会进入角色,产出更一致的输出。
优先使用正向约束:"要这样做"胜过"不要那样做"。
加入示例(少样本):在系统提示词中放入 2 到 3 个示例输出,能极大地稳定风格和格式。
使用 XML 标签:对于 Claude 家族的模型,<role>、<constraints>、<examples> 等标签能帮助模型清晰地解析每一节。
不要写得过多:系统提示词越长,每次请求消耗的 token 就越多。删去一切非必要的内容。
定期 A/B 测试:用不同的系统提示词面对真实请求,对比满意度、准确性和安全性。
防御提示词注入
系统提示词是提示词注入的首要攻击目标。诸如"忽略之前的所有指令"这样的用户输入,可能覆盖一条薄弱的系统提示词。防御手段包括三明治技巧(在开头和结尾重复关键指令)、用 XML 标签隔离外部数据,以及在工具调用层强制执行权限控制。
Sources: