林逍遥 AI林逍遥 AI
登录
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。

  1. 选一个场景(客服、写作助手、代码工具),写出完整的 System Prompt
  2. 用 API 测试你的 System Prompt,发送 10 条不同的消息
  3. 找出 Claude 不遵守规则的情况,优化 System Prompt

关键要点

Note: 本文核心总结

  • System Prompt 定义 Claude 在对话中的角色和规则
  • 5 种设计模式:角色+规则、格式约束、分步指令、知识注入、防护栏
  • 使用 XML 标签组织复杂的 System Prompt
  • 写完后要用边界情况测试,持续优化

延伸阅读

二维码
微信公众号:lingxiaoyao

关注公众号,获取最新 AI 教程和课程更新

加载评论中...