# 怎样写系统提示词，附一份完整示例

> 系统提示词，是在对话开始之前交给模型的长期指令，为每一次回复设定角色、规则、语气和输出格式。写它可以分四部分：身份、指令、示例和背景资料。它具体放在哪个字段，要看你用的 API。

Mindket 编辑部 · 发布于 2026-11-04 · 更新于 2026-11-05 · https://mindket.com/cn/learn/prompt-engineering/system-prompt

## 要点

- 系统提示词装的是每条消息都不变的规则，比如角色、语气和格式。
- 写成四部分：身份、指令、示例和背景资料。
- 各家厂商给这个字段起的名字不同：system、instructions 或 system_instruction。
- 先写短的，只有真的出了问题，才加一条规则。

## 开始之前

你需要一个能设置长期指令的地方。可以是 API 调用里的 `system` 参数，可以是 OpenAI [Agents SDK](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf) 里智能体的 `instructions` 参数，也可以是 Claude Code 里的 CLAUDE.md 文件，它[存放](https://code.claude.com/docs/en/how-claude-code-works)的是 Claude 每次会话都该知道的指令。这三样都没有，也能跟着学，因为写法是一样的。

挑一件希望模型每次都用同一种方式去做的事。下面的示例是替一家小店回答顾客的问题，你可以换成自己的场景。

## 分四部分写系统提示词

OpenAI 的[指南](https://developers.openai.com/api/docs/guides/prompt-engineering)说，开发者消息通常按这个顺序包含四个部分：身份、指令、示例和背景。Google 给 Gemini 3 的[模板](https://aistudio.google.com/docs/prompting-strategies)则把系统指令分成角色、分步指令、约束和输出格式。下面的示例照 OpenAI 的顺序来写：用 Markdown 标题分段，用 XML 标签包住示例和贴进来的政策文本，这两种做法 OpenAI 都提到过，一种用来标出段落，一种用来界定内容。

````text
# Identity
You are the order-help assistant for a small online tea shop. You write in a friendly, plain style.

# Instructions
- Answer questions about orders, shipping and returns using only the policy in the Context section.
- If the policy does not cover the question, say so and offer to pass it to the shop owner.
- Keep every answer under 80 words and end with one clear next step.
- Reply in the language the customer wrote in.

# Examples
<customer_message>
Where is my order?
</customer_message>
<assistant_response>
Please send me the order number from your confirmation email, and I will pass your question to the shop owner.
</assistant_response>

# Context
<policy>
[paste your shipping and returns policy here]
</policy>
````

1. **给它一个身份。**用一句话说明模型是谁、为谁服务。Anthropic 的[指南](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices)说，系统提示词里哪怕只有一句角色设定，也能让模型的行为和语气更聚焦。
2. **列出规则。**说清要做什么、答案必须出自哪里、答不上来时怎么办。每条规则写一行，这样日后才知道是哪一条出了问题。
3. **定好格式。**给出回复的长度、语气和形状。Google 的模板里就有篇幅详略、语气和输出结构这几个位置。
4. **加一两个示例。**像 OpenAI 的例子那样，用标签把每一对包起来，让模型分得清它和指令。
5. **参考资料单独放一块。**把模型回答时要依据的政策、价目表或常见问题贴进来，加上标签。OpenAI 说这类背景资料通常放在提示词靠后的位置最好。

## 各家厂商把它放在哪

想法到处一样，字段名各不相同。在不同服务商之间搬提示词时，要改的就是这一处。下面的名字取自 [Anthropic](https://platform.claude.com/docs/en/api/messages)、[OpenAI](https://developers.openai.com/api/docs/guides/prompt-engineering) 和 [Google](https://aistudio.google.com/docs/text-generation) 的页面。

| 厂商 | 系统提示词放在哪 | 文档怎么说 |
| --- | --- | --- |
| Anthropic Messages API | 顶层的 `system` 参数，和 `messages` 并列 | 可以是字符串，也可以是文本块数组。接口文档把它称为向 Claude 提供背景和指令的一种方式，比如指定目标或角色。 |
| OpenAI Responses API | `instructions` 参数，或者 `developer` 角色的消息 | 开发者消息的优先级排在 `user` 消息之前。`instructions` 只对当前这次请求生效。 |
| Google Gemini API | `system_instruction` 参数 | 文档里的例子给一次请求设置了“You are a cat. Your name is Neko.”。 |

## 系统提示词能做什么，做不到什么

它不会自己延续下去。OpenAI 提到，用 `previous_response_id` 接着上一轮对话时，之前几轮用过的 `instructions` 不会出现在上下文里，所以要重新发一遍。

聊天产品会替你设好一份。Anthropic [公开了](https://platform.claude.com/docs/en/release-notes/system-prompts)claude.ai 和手机应用背后的系统提示词。它们提供当前日期这类信息，也引导某些行为，比如始终用 Markdown 给出代码片段，Anthropic 还说明这些提示词不适用于 Claude API。

这些提示词很长，改得也勤。从 2026 年 9 月 1 日起，Anthropic 为最新的四个模型贴出了九条带日期的条目，见下图。按我们的统计，Opus 5.5 最新的一条约有 4,800 个英文单词。

里面有一个 `{{currentDateTime}}` 占位符，由应用填进当天的日期，还告诉模型，它可靠的知识截止到 2026 年 6 月底。所以，模型没换、应用的表现却变了的时候，先去读最新的那一条。

系统提示词也是用户会想办法去读的东西。OpenAI 的[智能体构建指南](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf)把防止系统提示词泄露，列为护栏要覆盖的数据隐私风险。

> **我们的看法**
>
> 把系统提示词当成一个有心的用户也读得到的文本。密钥、密码和顾客的私人数据不要放进去，权限要在你自己的代码里控制。

**2026 年 9 月以来，Claude 应用系统提示词的带日期条目**

1. **2026年9月1日** Claude Fable 5.1。该页的第一条。
2. **2026年9月22日** Claude Opus 5.5。该页的第一条。
3. **2026年9月28日** Claude Sonnet 5.5。该页的第一条。
4. **2026年10月7日** Claude Haiku 5.5。该页的第一条。
5. **2026年10月7日** Claude Sonnet 5.5。第二条。
6. **2026年10月26日** Claude Haiku 5.5。第二条。
7. **2026年10月27日** Claude Opus 5.5。第二条。
8. **2026年10月27日** Claude Sonnet 5.5。第三条。
9. **2026年10月30日** Claude Fable 5.1。第二条，也是九条里最新的。

来源：[Anthropic：Claude Fable 5.1 系统提示词](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-fable-5-1) (2026-11-05 查阅)；[Anthropic：Claude Opus 5.5 系统提示词](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-opus-5-5) (2026-11-05 查阅)；[Anthropic：Claude Sonnet 5.5 系统提示词](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-sonnet-5-5) (2026-11-05 查阅)；[Anthropic：Claude Haiku 5.5 系统提示词](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-haiku-5-5) (2026-11-05 查阅)

## 先写短的，再根据失败一点点补

Anthropic 的[上下文工程文章](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)说，系统提示词有两种常见的毛病。一头是工程师把复杂又脆弱的逻辑硬写进去，想得到精确的行为。另一头是给的指导含糊而笼统。文章的建议是，先拿当时最好的模型测一份最精简的提示词，再根据看到的失败情况，补上清晰的指令和示例。

同一篇文章更看重一组精选的、多样而典型的示例，不赞成罗列一长串边角情况的规则。落到做法上，就是遇到新情况先加示例，再考虑加规则。

语气的轻重，两个方向都有影响。Anthropic 的指南说，Claude Opus 4.5 和 4.6 对系统提示词的反应比以前的模型更强烈。像“CRITICAL: You MUST use this tool when...”这样的喊话，现在可能让它们过度调用工具，用“Use this tool when...”这样平实的说法反而更好。

一份提示词要服务很多用户时，OpenAI 的智能体指南建议只写一份基础提示词，里面留出变量，比如顾客的名字和入会多久，不必存一堆近乎相同的副本。

## Amanda Askell 和 Alex Albert 谈 Claude 应用背后的系统提示词

Anthropic 的哲学家和伦理学者 Amanda Askell，[2024 年 3 月 6 日在 X 上贴出了 Claude 3 的系统提示词](https://x.com/AmandaAskell/status/1765207842993434880)，并用一串帖子做了拆解。

五个月后，2024 年 8 月 26 日，在 Anthropic 做研究的 Alex Albert [宣布](https://x.com/alexalbert__/status/1828107230656471442)，此后 claude.ai 和手机应用默认系统提示词的改动，都会记在文档里。

这份记录就是上面时间线里的发布说明页面，两年多以后仍在更新。去读你所用模型的最新一条：它是训练这个模型的人写的、真在用的系统提示词，里面的习惯你也可以借来用，比如告诉模型今天的日期，并直说它不知道什么。

> 我们会把对 Claude dot ai 和手机应用默认系统提示词所做的改动记录下来。（系统提示词不影响 API。）
>
> Alex Albert, 在 Anthropic 做研究，引文为译文, [X](https://x.com/alexalbert__/status/1828107230656471442) (2026-11-05 查阅)

[![Amanda Askell（@AmandaAskell）2024 年 3 月 6 日在 X 上发帖，开启一串拆解 Claude 3 系统提示词的帖子](https://mindket.com/blog/shots/x-amandaaskell-claude-3-system-prompt.webp?v=dab2c5238a89)](https://x.com/AmandaAskell/status/1765207842993434880)

Amanda Askell 在 X 上，2024 年 3 月 6 日

[![Alex Albert（@alexalbert__）2024 年 8 月 26 日在 X 上发帖：我们在文档里新加了系统提示词发布说明这一栏](https://mindket.com/blog/shots/x-alexalbert-system-prompt-notes.webp?v=2e5fcdba742a)](https://x.com/alexalbert__/status/1828107230656471442)

Alex Albert 在 X 上，2024 年 8 月 26 日

> X 官方嵌入卡片的截图，拍摄于 2026 年 11 月 5 日，时间为 UTC。Askell 的拆解在她那条帖子下面的一串回复里。点击截图可到 X 上打开原帖。

## 常见错误

- 把整本手册贴进提示词。模型没学过的数据，OpenAI 建议走检索，用它的文件搜索工具。
- 只写规则，不写理由。像[第一课](https://mindket.com/cn/learn/prompt-engineering/prompt-engineering-basics)那样把理由补上，模型才能把规则用到你没列出的情况。
- 一次加十几条规则，结果不知道是哪一条改变了答案。
- 只测友好的输入。OpenAI 的智能体指南把“Ignore all previous instructions”当作恶意输入的例子，你也拿一条来试试自己的提示词。

## 自己试一试

- 为一件你想让它每次都用同一种方式去做的事，写出这四个部分。
- 用五条不同的用户消息去试，其中一条要让模型无视它的规则。
- 每个没答好的地方，用一行记下来。第一个先用示例去修，不要加新规则，然后五条全部重跑。

## 下一课：上下文窗口

系统提示词每次请求都会带上，所以它要占地方。下一课[什么是上下文窗口](https://mindket.com/cn/learn/prompt-engineering/context-window)，讲还有什么会把这块地方占满，满了以后会发生什么。

Claude Code 里的长期指令放在一个文件里，[CLAUDE.md 文件里该写什么](https://mindket.com/cn/blog/claude-md-file)有详细的讲解。

## 自测一下

1. 在 Anthropic Messages API 里，系统提示词放在哪里？

   A. instructions 参数
   B. system_instruction 参数
   C. 顶层的 system 参数，和 messages 并列
   D. 带 developer 角色的消息

   答案：C。 本课的表里写着，Anthropic 用顶层的 system 参数，OpenAI 用 instructions，Google 用 system_instruction。

2. 本课把系统提示词分成哪四个部分，顺序是什么？

   A. 身份、指令、示例、背景资料
   B. 背景资料、示例、身份、指令
   C. 角色、工具、记忆、输出
   D. 目标、步骤、风险、总结

   答案：A。 OpenAI 的指南说，开发者消息通常按身份、指令、示例、背景的顺序来写，示例也是这样排的。

3. 你用 previous_response_id 接着上一轮对话，模型却不再遵守你的规则。最可能的原因是什么？

   A. 提示词太长，放不下
   B. 模型只读第一条消息
   C. 第一轮之后，开发者消息就被忽略
   D. 之前几轮用过的指令不会自动延续，要重新发一遍

   答案：D。 OpenAI 提到，用 previous_response_id 接着对话时，之前几轮用过的 instructions 不会出现在上下文里。

4. 有一条用户消息让你的系统提示词失灵了。本课建议在加新规则之前先试什么？

   A. 用大写的 MUST 重复这条规则
   B. 加一个你想要的答案的示例
   C. 把整本手册贴进提示词
   D. 删掉身份那一句

   答案：B。 Anthropic 更看重一组精选的、多样而典型的示例，不赞成罗列一长串边角情况的规则，所以先加示例。

## 常见问题

### 系统提示词和用户提示词有什么区别？

系统提示词给整场对话设定长期规则，用户提示词则是某个人在一条消息里的提问。在 OpenAI 的 API 里，开发者角色的优先级排在用户角色之前，OpenAI 把这两者比作函数的定义和它的参数。

### 系统提示词应该写多长？

起步要短。Anthropic 的工程团队建议先从最精简的提示词开始，出现失败再补指令和示例。写长了还占空间，因为系统提示词也计入上下文窗口。

### 聊天应用有自己的系统提示词吗？

Claude 的应用有，Anthropic 为每个模型都有一页记录，有些模型还有好几条带日期的条目。我们只读了 Anthropic 的这一页，其他厂商的情况请去它们那里查。

### 参考资料该放在提示词的什么位置？

长文档放在问题上面。Anthropic 说，2 万 token 以上的文档要放在问题之前，Google 的[长上下文页面](https://aistudio.google.com/docs/long-context)则说，长上下文里要把问题放在末尾。OpenAI 的开发者消息模板反而把背景资料放在靠后的位置，所以系统提示词比较短的话，照你所用厂商的模板来。

### 用户能推翻我的系统提示词吗？

有心的用户可以试，所以涉及敏感的事，千万别只靠提示词。OpenAI 的智能体指南把护栏称为分层防御，还要搭配身份验证、授权和严格的访问控制。

### 系统提示词该用 Markdown 还是 XML 来写？

两种都行。Anthropic 说，提示词里同时有指令、背景、示例和输入时，XML 标签能帮模型更清楚地解析，并建议标签名前后一致、含义清楚。选定一种，就一直用下去。

## 资料来源

- [Anthropic: Prompting best practices](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) (2026-11-05 查阅)
- [Anthropic: Messages API reference](https://platform.claude.com/docs/en/api/messages) (2026-11-04 查阅)
- [Anthropic: System prompts release notes](https://platform.claude.com/docs/en/release-notes/system-prompts) (2026-11-05 查阅)
- [Anthropic Engineering: Effective context engineering for AI agents](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents) (2026-11-04 查阅)
- [OpenAI: Prompt engineering](https://developers.openai.com/api/docs/guides/prompt-engineering) (2026-11-04 查阅)
- [OpenAI: A practical guide to building agents](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf) (2026-11-04 查阅)
- [Google AI Studio: Text generation](https://aistudio.google.com/docs/text-generation) (2026-11-04 查阅)
- [Google AI Studio: Prompt design strategies](https://aistudio.google.com/docs/prompting-strategies) (2026-11-04 查阅)
- [Google AI Studio: Long context](https://aistudio.google.com/docs/long-context) (2026-11-04 查阅)
- [Claude Code docs: How Claude Code works](https://code.claude.com/docs/en/how-claude-code-works) (2026-11-04 查阅)
- [Anthropic: Claude Fable 5.1 system prompts](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-fable-5-1) (2026-11-05 查阅)
- [Anthropic: Claude Opus 5.5 system prompts](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-opus-5-5) (2026-11-05 查阅)
- [Anthropic: Claude Sonnet 5.5 system prompts](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-sonnet-5-5) (2026-11-05 查阅)
- [Anthropic: Claude Haiku 5.5 system prompts](https://platform.claude.com/docs/en/release-notes/system-prompts/claude-haiku-5-5) (2026-11-05 查阅)
- [Amanda Askell on X, 6 March 2024](https://x.com/AmandaAskell/status/1765207842993434880) (2026-11-05 查阅)
- [Alex Albert on X, 26 August 2024](https://x.com/alexalbert__/status/1828107230656471442) (2026-11-05 查阅)

[浏览智能体](https://mindket.com/cn/agents)
