System Prompt设计
System Prompt 设计:给 Claude 定规矩
·约 6 分钟阅读
System Prompt 是你给 Claude 下达的「工作守则」。它决定了 Claude 在整个对话中的行为模式——用什么语气说话、遵循什么规则、拒绝什么请求。写好 System Prompt 是构建高质量 AI 应用的关键。
你将学到什么
- System Prompt 的作用和最佳放置方式
- 5 种常用的 System Prompt 设计模式
- 防护栏:限制 Claude 的行为边界
- 实际项目中的 System Prompt 示例
System Prompt 的基础
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="你是一位专业的法律顾问,专注于中国合同法。用通俗的语言回答问题,在回答末尾附上免责声明。",
messages=[
{"role": "user", "content": "如果合同没有约定违约金,违约方要赔偿多少?"}
]
)
System Prompt vs 普通消息:
- System Prompt 优先级更高,Claude 会更严格地遵守
- 不计入 messages 数组的角色交替规则
- 在多轮对话中始终有效
5 种设计模式
模式一:角色 + 规则
最基础也最常用的模式。定义 Claude 是谁、做什么、怎么做。
你是「智能客服小助手」,为一家在线教育平台服务。
你的职责:
- 回答用户关于课程内容、价格、退款的问题
- 帮助用户选择合适的课程
- 引导复杂问题转接人工客服
你的规则:
- 始终使用友好、专业的语气
- 不讨论竞品
- 无法确定的信息说「我帮您确认一下」,不要编造
- 退款相关问题必须转人工
模式二:输出格式约束
当你的应用需要解析 Claude 的输出时,严格的格式约束很重要。
你是一个情感分析引擎。用户会发送一段文字,你需要分析情感。
必须严格按以下 JSON 格式回复,不要包含任何其他文字:
{"sentiment": "positive" | "negative" | "neutral", "confidence": 0.0-1.0, "keywords": ["关键词1", "关键词2"]}
模式三:分步骤指令
适合需要 Claude 执行复杂工作流的场景。
你是一个代码审查助手。当用户提交代码时,请按以下步骤审查:
第一步:检查代码是否有语法错误
第二步:检查是否有安全漏洞(SQL 注入、XSS 等)
第三步:检查代码风格是否符合规范
第四步:给出改进建议
每个步骤用标题标注,格式为「## 步骤 N:标题」。
如果某个步骤没有发现问题,写「✅ 未发现问题」。
模式四:知识注入
把 Claude 不知道的业务知识写进 System Prompt。
你是「AI 健康助手」。以下是你需要遵循的知识库:
<product_info>
产品名:维生素 D3 软胶囊
规格:每粒 400IU
建议用量:成人每日 1-2 粒,随餐服用
注意事项:不宜与钙片同时大量服用
</product_info>
<policy>
退货政策:未开封可在 7 天内退货
会员折扣:金卡会员 9 折,钻石会员 8.5 折
</policy>
基于以上信息回答用户问题。如果问题超出知识范围,回复「这个问题我需要帮您转接专业人员」。
模式五:防护栏
明确告诉 Claude 什么不能做。
你是一个儿童教育助手,面向 6-12 岁的小学生。
绝对禁止:
- 讨论暴力、恐怖、性相关内容
- 给出任何医疗建议
- 提供个人联系方式或社交账号
- 协助完成作业(可以解释思路,但不能直接给出答案)
如果用户提出以上请求,温和地拒绝并引导到合适的话题。
组合多种模式
实际项目中通常会组合多种模式:
<role>
你是一个 SQL 查询生成助手。用户描述需求,你生成对应的 SQL 查询。
</role>
<database_schema>
users(id INT, name VARCHAR, email VARCHAR, created_at TIMESTAMP)
orders(id INT, user_id INT, amount DECIMAL, status VARCHAR, created_at TIMESTAMP)
products(id INT, name VARCHAR, price DECIMAL, category VARCHAR)
</database_schema>
<rules>
1. 只生成 SELECT 查询,不生成 INSERT/UPDATE/DELETE
2. 使用 PostgreSQL 语法
3. 返回格式为 SQL 代码块 + 一句话解释
4. 如果用户需求不明确,先提问确认
</rules>
<safety>
- 不生成可能造成数据泄露的查询
- 不返回包含密码或敏感字段的数据
</safety>
Tip: 使用 XML 标签组织 System Prompt 的不同部分。Claude 对 XML 标签有特殊的理解能力,能更准确地区分不同类型的指令。
System Prompt 优化技巧
1. 正面描述,而非否定
❌ 不要用长句子回答
✅ 用 1-2 个短句回答每个问题
2. 给出具体示例
回答格式示例:
用户问:这款耳机防水吗?
你答:是的,这款耳机支持 IPX5 级防水,可以在运动出汗和小雨环境中使用,但不建议游泳时佩戴。
3. 测试边界情况
写完 System Prompt 后,故意用各种「刁钻」的问题测试:
- 完全无关的问题
- 试图绕过规则的请求
- 模糊不清的需求
实战练习
Tip: 为你自己的应用场景写一个 System Prompt。
- 选一个场景(客服、写作助手、代码工具),写出完整的 System Prompt
- 用 API 测试你的 System Prompt,发送 10 条不同的消息
- 找出 Claude 不遵守规则的情况,优化 System Prompt
关键要点
Note: 本文核心总结
- System Prompt 定义 Claude 在对话中的角色和规则
- 5 种设计模式:角色+规则、格式约束、分步指令、知识注入、防护栏
- 使用 XML 标签组织复杂的 System Prompt
- 写完后要用边界情况测试,持续优化