适用于谁
- 搜「系统提示词怎么写」「系统提示词和用户提示词的区别」的人;
- 在做智能体、客服机器人、Dify / 扣子应用,或者在 ChatGPT 自定义指令、Claude 项目说明里要写一段「长期生效的设定」的人。
本文根据 OpenAI、Anthropic、Google 三家的官方提示词文档整理,资料核对于 2026-10-11。各家模型更新很快,官方自己也建议用测试来验证提示词的效果。
结论先说
- 系统提示词是「规则」,用户提示词是「这一次的输入」。OpenAI 的比喻最好记:前者像函数定义,后者像传给函数的参数。
- 系统提示词的优先级更高。OpenAI 文档写明,开发者消息优先于用户消息。
- 官方推荐的结构是四段:身份 → 指令 → 示例 → 上下文(OpenAI)。
- 写清楚、写具体、解释原因,比堆砌「必须」「绝对不要」有效(Anthropic)。
- 最关键的约束放在系统提示词里,或者放在最前面(Google)。
先分清几个名字
| 你看到的叫法 | 出现在哪里 | 是不是一回事 |
|---|---|---|
| system prompt / 系统提示词 | Claude API 的 system 参数、多数开源工具 | 是 |
| developer message / instructions | OpenAI API | 是。OpenAI 文档说明,新的推理模型用开发者消息取代了原来的系统消息 |
| System Instruction / 系统指令 | Gemini API、Google AI Studio | 是 |
| 自定义指令、项目说明、智能体的人设与回复逻辑 | ChatGPT、Claude、各类智能体平台的界面 | 作用相同,都是对话开始前就生效的长期设定 |
OpenAI 对三种角色的定义:
developer:应用开发者提供的指令,优先于用户消息;user:最终用户提供的指令,优先级在开发者消息之后;assistant:模型自己生成的内容。
所以,「每次都要遵守」的东西放系统提示词;「这一次要处理什么」放用户消息。把一次性的任务细节塞进系统提示词,或者把长期规则每次重复写在用户消息里,都是放错了地方。
步骤
1. 按四段结构搭骨架
OpenAI 文档给出的开发者消息结构,通常按这个顺序:
| 段落 | 写什么 |
|---|---|
| Identity(身份) | 助手的用途、沟通风格、总体目标 |
| Instructions(指令) | 怎样生成回答:遵守哪些规则、该做什么、不该做什么 |
| Examples(示例) | 几组可能的输入和你期望的输出 |
| Context(上下文) | 模型需要的额外信息,如私有资料。官方说明这部分通常放在靠后的位置,因为不同请求带的上下文可能不同 |
各段之间用 Markdown 标题或 XML 标签隔开。OpenAI 的说法是:Markdown 的标题和列表用来标出提示词的不同部分和层级,XML 标签用来标明一段内容(比如参考文档)从哪里开始、到哪里结束。
2. 身份:一句话就有用
Anthropic 文档的原话是:在系统提示词里设定角色,可以让模型的行为和语气聚焦到你的使用场景上,哪怕只有一句话也会有区别。官方示例就是一句「你是一个专精 Python 的编程助手」。
身份不需要写成长篇人物小传。说清它是谁、为谁服务、用什么口吻就够了。
3. 指令:清楚、具体、讲原因
Anthropic 给的三条原则,对任何模型都适用:
- 把模型当成一位聪明但刚入职的新同事,它不了解你们的规范和流程。官方的「黄金法则」是:把提示词给一位不了解背景的同事看,如果他会困惑,模型也会;
- 顺序或完整性重要时,用编号列表写成步骤;
- 说明原因。官方的对比例子:只写「绝对不要用省略号」效果较差;写成「你的回答会被语音合成引擎朗读,所以不要用省略号,引擎不知道该怎么读」效果更好,因为模型能从解释里举一反三。
另一条来自 Anthropic 的格式建议:告诉它要做什么,而不是不要做什么。与其写「不要用 Markdown」,不如写「回答请用连贯的段落来写」。
Google 对 Gemini 3 的建议方向一致:目标要说得精确直接,避免不必要的、过度劝说式的措辞;有歧义的术语和参数要明确解释。
4. 示例:放两三个,格式统一
示例是控制输出格式最可靠的办法之一。怎么挑、放几个、怎么排,见《少样本提示怎么写》。
5. 把最重要的约束放对位置
Google 文档的建议:关键的行为约束、角色定义和输出格式要求,放在系统指令里,或者放在用户提示词的最开头。资料很长时则相反,先放全部资料,把具体问题放在最后。
一份可以直接改的模板
# 身份
你是[公司名]的售后客服助手,面向购买了[产品]的普通用户,语气礼貌、简洁。
# 指令
1. 只回答与[产品]的使用、退换货、保修有关的问题。
2. 回答必须依据下方「资料」中的内容。资料里没有的,直接说
「这个问题我需要转给人工客服」,不要自行推测。
(原因:错误的售后承诺会给用户和公司都带来损失。)
3. 每次回答不超过 150 字;需要操作步骤时用编号列表。
4. 用户情绪激动时,先表示理解,再给解决办法。
# 示例
<user_query>我的耳机左边没声音了</user_query>
<assistant_response>抱歉给您带来不便。请先试这两步:
1. 把耳机放回充电盒,合盖 10 秒后再取出;
2. 在手机蓝牙里删除设备后重新配对。
仍然没有声音的话,告诉我购买日期,我帮您看是否在保修期内。</assistant_response>
# 资料
<policy>
[在这里粘贴售后政策全文]
</policy>
改写要点:身份一两句话;指令编号、带原因;示例和真实场景尽量接近;资料用标签包起来放在最后。
常见问题
Q:系统提示词是不是越长越好?
不是。Google 建议避免不必要的措辞;Anthropic 也提醒过度提示会带来副作用,比如「拿不准就用某工具」这类兜底指令会让新模型过度调用工具。写完后逐条问自己:删掉这一句,结果会变差吗?
Q:要不要用全大写的「必须」「绝对」来强调?
按官方的思路,优先解释原因、把要求写具体。强调语气不是不能用,但不该是主要手段。
Q:用户能看到或者套出系统提示词吗?
应当假设可能被套出来。不要把密钥、内部链接、不能公开的规则写进系统提示词;真正的权限控制要放在程序里做。
Q:不同模型要写不同的系统提示词吗?
核心原则通用,细节有差别。OpenAI 文档说明,推理模型和普通 GPT 模型的最佳写法不同:前者只给高层目标效果就很好,后者更需要精确的指令;并建议在生产环境固定模型版本、建立评测,换模型时重新测试。
Q:在 ChatGPT、Claude 的聊天界面里怎么用上这些?
对应的入口是 ChatGPT 的自定义指令和项目说明、Claude 的项目说明等,见站内《ChatGPT 自定义指令怎么设置》和《Claude Projects 怎么用》。站内提示词库(/prompts)里的提示词,很多可以直接放进去当系统提示词用。
参考资料
- OpenAI 文档:Prompt engineering(消息角色、Markdown 与 XML 格式)— https://developers.openai.com/api/docs/guides/prompt-engineering
- Anthropic 文档:Prompting best practices — https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
- Google 文档:Prompt design strategies — https://ai.google.dev/gemini-api/docs/prompting-strategies
0 条评论
还没有评论,来抢沙发~