Mindket
提示词工程入门课程第 2 节,共 4 节

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

黑色横幅,标题“提示词入门课”,下面写着“提示词、系统提示词、上下文窗口与 AI 智能体”。

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

本节内容

  • 系统提示词装的是每条消息都不变的规则,比如角色、语气和格式。
  • 写成四部分:身份、指令、示例和背景资料。
  • 各家厂商给这个字段起的名字不同:system、instructions 或 system_instruction。
  • 先写短的,只有真的出了问题,才加一条规则。
全部课程
本页目录
  1. 开始之前
  2. 分四部分写系统提示词
  3. 各家厂商把它放在哪
  4. 系统提示词能做什么,做不到什么
  5. 先写短的,再根据失败一点点补
  6. Amanda Askell 和 Alex Albert 谈 Claude 应用背后的系统提示词
  7. 常见错误
  8. 自己试一试
  9. 下一课:上下文窗口
  10. 自测一下
  11. 常见问题
  12. 资料来源

开始之前

你需要一个能设置长期指令的地方。可以是 API 调用里的 system 参数,可以是 OpenAI Agents SDK 里智能体的 instructions 参数,也可以是 Claude Code 里的 CLAUDE.md 文件,它存放的是 Claude 每次会话都该知道的指令。这三样都没有,也能跟着学,因为写法是一样的。

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

分四部分写系统提示词

OpenAI 的指南说,开发者消息通常按这个顺序包含四个部分:身份、指令、示例和背景。Google 给 Gemini 3 的模板则把系统指令分成角色、分步指令、约束和输出格式。下面的示例照 OpenAI 的顺序来写:用 Markdown 标题分段,用 XML 标签包住示例和贴进来的政策文本,这两种做法 OpenAI 都提到过,一种用来标出段落,一种用来界定内容。

# 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 的指南说,系统提示词里哪怕只有一句角色设定,也能让模型的行为和语气更聚焦。
  2. 列出规则。说清要做什么、答案必须出自哪里、答不上来时怎么办。每条规则写一行,这样日后才知道是哪一条出了问题。
  3. 定好格式。给出回复的长度、语气和形状。Google 的模板里就有篇幅详略、语气和输出结构这几个位置。
  4. 加一两个示例。像 OpenAI 的例子那样,用标签把每一对包起来,让模型分得清它和指令。
  5. 参考资料单独放一块。把模型回答时要依据的政策、价目表或常见问题贴进来,加上标签。OpenAI 说这类背景资料通常放在提示词靠后的位置最好。

各家厂商把它放在哪

想法到处一样,字段名各不相同。在不同服务商之间搬提示词时,要改的就是这一处。下面的名字取自 Anthropic、OpenAI 和 Google 的页面。

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

系统提示词能做什么,做不到什么

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

聊天产品会替你设好一份。Anthropic 公开了claude.ai 和手机应用背后的系统提示词。它们提供当前日期这类信息,也引导某些行为,比如始终用 Markdown 给出代码片段,Anthropic 还说明这些提示词不适用于 Claude API。

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

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

系统提示词也是用户会想办法去读的东西。OpenAI 的智能体构建指南把防止系统提示词泄露,列为护栏要覆盖的数据隐私风险。

2026 年 9 月以来,Claude 应用系统提示词的带日期条目
  1. Claude Fable 5.1

    该页的第一条。

    来源:Anthropic:Claude Fable 5.1 系统提示词 (2026年11月5日 查阅)

  2. Claude Opus 5.5

    该页的第一条。

    来源:Anthropic:Claude Opus 5.5 系统提示词 (2026年11月5日 查阅)

  3. Claude Sonnet 5.5

    该页的第一条。

    来源:Anthropic:Claude Sonnet 5.5 系统提示词 (2026年11月5日 查阅)

  4. Claude Haiku 5.5

    该页的第一条。

    来源:Anthropic:Claude Haiku 5.5 系统提示词 (2026年11月5日 查阅)

  5. Claude Sonnet 5.5

    第二条。

    来源:Anthropic:Claude Sonnet 5.5 系统提示词 (2026年11月5日 查阅)

  6. Claude Haiku 5.5

    第二条。

    来源:Anthropic:Claude Haiku 5.5 系统提示词 (2026年11月5日 查阅)

  7. Claude Opus 5.5

    第二条。

    来源:Anthropic:Claude Opus 5.5 系统提示词 (2026年11月5日 查阅)

  8. Claude Sonnet 5.5

    第三条。

    来源:Anthropic:Claude Sonnet 5.5 系统提示词 (2026年11月5日 查阅)

  9. Claude Fable 5.1

    第二条,也是九条里最新的。

    来源:Anthropic:Claude Fable 5.1 系统提示词 (2026年11月5日 查阅)

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

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

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

语气的轻重,两个方向都有影响。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 的系统提示词,并用一串帖子做了拆解。

五个月后,2024 年 8 月 26 日,在 Anthropic 做研究的 Alex Albert 宣布,此后 claude.ai 和手机应用默认系统提示词的改动,都会记在文档里。

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

我们会把对 Claude dot ai 和手机应用默认系统提示词所做的改动记录下来。(系统提示词不影响 API。)

Alex Albert, 在 Anthropic 做研究,引文为译文 · X (2026年11月5日 查阅)
Amanda Askell(@AmandaAskell)2024 年 3 月 6 日在 X 上发帖,开启一串拆解 Claude 3 系统提示词的帖子
Amanda Askell 在 X 上,2024 年 3 月 6 日
Alex Albert(@alexalbert__)2024 年 8 月 26 日在 X 上发帖:我们在文档里新加了系统提示词发布说明这一栏
Alex Albert 在 X 上,2024 年 8 月 26 日

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

常见错误

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

自己试一试

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

下一课:上下文窗口

系统提示词每次请求都会带上,所以它要占地方。下一课什么是上下文窗口,讲还有什么会把这块地方占满,满了以后会发生什么。

Claude Code 里的长期指令放在一个文件里,CLAUDE.md 文件里该写什么有详细的讲解。

自测一下

  1. 在 Anthropic Messages API 里,系统提示词放在哪里?

    查看答案

    C. 顶层的 system 参数,和 messages 并列 本课的表里写着,Anthropic 用顶层的 system 参数,OpenAI 用 instructions,Google 用 system_instruction。

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

    查看答案

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

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

    查看答案

    D. 之前几轮用过的指令不会自动延续,要重新发一遍 OpenAI 提到,用 previous_response_id 接着对话时,之前几轮用过的 instructions 不会出现在上下文里。

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

    查看答案

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

常见问题

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

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

系统提示词应该写多长?

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

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

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

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

长文档放在问题上面。Anthropic 说,2 万 token 以上的文档要放在问题之前,Google 的长上下文页面则说,长上下文里要把问题放在末尾。OpenAI 的开发者消息模板反而把背景资料放在靠后的位置,所以系统提示词比较短的话,照你所用厂商的模板来。

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

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

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

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

资料来源

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

分享本节课

看看别人的智能体是怎么设置的

浏览 Mindket 上的智能体,在写自己的指令之前,先读读它们是怎么工作的。

浏览智能体

本节课的 Markdown 版本 · 提示词工程入门课程 · 全部课程