bookworm-smart-assistant/skills/prompt-optimizer/references/prompt-rules.md

465 lines
9.3 KiB
Markdown
Raw Permalink Normal View History

# Claude 提示词工程规范参考
本文档汇总了 Claude 官方提示词工程的最佳实践,供优化提示词时参考。
## 目录
1. [核心原则](#核心原则)
2. [XML 标签使用规范](#xml-标签使用规范)
3. [示例提示 (Few-shot)](#示例提示-few-shot)
4. [思维链 (Chain of Thought)](#思维链-chain-of-thought)
5. [角色设定](#角色设定)
6. [输出格式控制](#输出格式控制)
7. [Claude 4 特别注意事项](#claude-4-特别注意事项)
8. [常见任务模板](#常见任务模板)
---
## 核心原则
### 1. 明确具体 (Be Explicit)
Claude 4 模型对清晰、明确的指令响应最好。
**不佳:**
```
创建一个分析仪表板
```
**优秀:**
```
创建一个分析仪表板。包含尽可能多的相关功能和交互。
超越基础,创建一个功能完整的实现。
```
### 2. 提供动机 (Provide Motivation)
解释为什么需要某种行为,帮助 Claude 更好地理解目标。
**不佳:**
```
不要使用省略号
```
**优秀:**
```
你的回复将被文字转语音引擎朗读,所以不要使用省略号,
因为文字转语音引擎不知道如何发音。
```
### 3. 正向表述 (Positive Framing)
告诉 Claude 要做什么,而不是不要做什么。
**不佳:**
```
不要使用 Markdown 格式
```
**优秀:**
```
你的回复应该由流畅连贯的散文段落组成。
```
### 4. 适度复杂性 (Right-size Complexity)
简单任务用简单提示词,复杂任务才需要详细结构。
---
## XML 标签使用规范
### 为什么使用 XML 标签
- **清晰度**:清楚分隔提示词的不同部分
- **准确性**:减少 Claude 误解提示词的错误
- **灵活性**:便于查找、添加、删除或修改部分内容
- **可解析性**:便于从输出中提取特定部分
### 推荐的标签名称
| 标签 | 用途 |
|------|------|
| `<instructions>` | 主要指令 |
| `<context>` | 背景信息 |
| `<input>` / `<input_data>` | 输入数据 |
| `<examples>` | 示例集合 |
| `<example>` | 单个示例 |
| `<output_format>` | 输出格式定义 |
| `<constraints>` | 限制条件 |
| `<thinking>` | 思考过程 |
| `<answer>` | 最终答案 |
| `<document>` | 文档内容 |
| `<role>` | 角色设定 |
### 使用原则
1. **一致性**:整个提示词使用相同的标签名称
2. **语义化**:标签名称应反映其内容含义
3. **嵌套合理**:对层次内容使用嵌套标签 `<outer><inner></inner></outer>`
4. **引用标签**:在指令中引用标签名称,如"使用 `<contract>` 标签中的合同..."
### 示例
```xml
<instructions>
分析以下合同,识别关键条款和潜在风险。
</instructions>
<contract>
{{CONTRACT_TEXT}}
</contract>
<output_format>
1. 关键条款摘要
2. 潜在风险点
3. 建议行动
</output_format>
```
---
## 示例提示 (Few-shot)
### 何时使用
- 需要特定输出格式
- 复杂任务需要展示期望标准
- 减少对指令的误解
### 最佳实践
1. **数量**:提供 3-5 个多样化的示例
2. **相关性**:示例应与实际用例相似
3. **多样性**:覆盖边缘情况和挑战
4. **清晰度**:使用 `<example>` 标签包裹
### 示例格式
```xml
<examples>
<example>
<input>Added user authentication with JWT tokens</input>
<o>
feat(auth): implement JWT-based authentication
Add login endpoint and token validation middleware
</o>
</example>
<example>
<input>Fixed bug where dates displayed incorrectly</input>
<o>
fix(reports): correct date formatting in timezone conversion
Use UTC timestamps consistently across report generation
</o>
</example>
</examples>
```
---
## 思维链 (Chain of Thought)
### 何时使用
- 复杂的分析或推理任务
- 数学或逻辑问题
- 需要多步骤决策的任务
### 优势
- **准确性**:逐步推理减少错误
- **连贯性**:结构化思考产生更有组织的回复
- **可调试性**:便于发现提示词问题
### 实现方式
**基础方式:**
```
在回答之前,请先逐步思考这个问题。
```
**结构化方式:**
```xml
<instructions>
分析这个问题,将你的思考过程放在 <thinking> 标签中,
最终答案放在 <answer> 标签中。
</instructions>
```
**详细步骤方式:**
```xml
<instructions>
请按以下步骤分析:
1. 识别问题的关键要素
2. 列出相关的已知信息
3. 考虑可能的解决方案
4. 评估每个方案的优缺点
5. 选择最佳方案并解释原因
将思考过程放在 <thinking> 标签中,结论放在 <answer> 标签中。
</instructions>
```
---
## 角色设定
### 何时使用
- 需要特定专业视角
- 希望调整语气和风格
- 模拟特定场景
### 最佳实践
```xml
<role>
你是一位拥有 10 年经验的高级软件架构师,专注于分布式系统设计。
你的风格是严谨但易于理解,善于用类比解释复杂概念。
</role>
```
### 角色要素
- 专业背景和经验年限
- 专长领域
- 沟通风格
- 特定约束(如面向新手)
---
## 输出格式控制
### 方法 1明确描述格式
```
以 JSON 格式输出,包含 name、age、skills数组字段。
```
### 方法 2提供模板
```xml
<output_format>
# [标题]
## 背景
[一段话描述背景]
## 主要发现
- 发现 1
- 发现 2
## 建议
1. 建议 1
2. 建议 2
</output_format>
```
### 方法 3使用示例
```xml
<example_output>
{
"summary": "简要总结",
"score": 85,
"details": ["细节1", "细节2"]
}
</example_output>
```
### 方法 4格式指示器
使用 `<format_indicator>` 标签要求特定格式:
```xml
<format_indicator>pure_json</format_indicator>
```
---
## Claude 4 特别注意事项
### 1. 显式请求
Claude 4 更精确地遵循指令。如果需要"超越基础"的行为,需要明确请求:
```
包含尽可能多的相关功能和交互。超越基础,创建一个功能完整的实现。
```
### 2. 示例的影响
Claude 4 对示例非常敏感。确保:
- 示例与期望行为一致
- 避免示例中包含不想要的模式
### 3. 并行工具调用
Claude 4 擅长并行执行多个工具。可以添加提示:
```
为了最高效率,当需要执行多个独立操作时,
请同时调用所有相关工具,而不是顺序调用。
```
### 4. 思考能力
利用 Claude 4 的 interleaved thinking
```
在收到工具结果后,仔细反思其质量,
在继续之前确定最佳下一步。
使用你的思考来规划和迭代。
```
---
## 常见任务模板
### 文本总结
```xml
<role>
你是一位专业的内容摘要专家。
</role>
<instructions>
请总结以下文本的要点。要求:
1. 保留核心信息,去除冗余
2. 使用简洁的语言
3. 保持原文的主要观点
4. 字数控制在原文的 20% 以内
</instructions>
<input>
{{TEXT}}
</input>
<output_format>
## 摘要
[一段话核心总结]
## 要点
- 要点 1
- 要点 2
- 要点 3
</output_format>
```
### 代码生成
```xml
<role>
你是一位经验丰富的 {{LANGUAGE}} 开发者。
</role>
<instructions>
请编写代码实现以下功能:
{{REQUIREMENTS}}
要求:
1. 代码简洁高效
2. 包含必要的错误处理
3. 添加清晰的注释
4. 遵循 {{LANGUAGE}} 最佳实践
</instructions>
<constraints>
- 使用 {{FRAMEWORK/VERSION}}
- 不使用外部依赖(除非必要)
- 代码需要可直接运行
</constraints>
<output_format>
首先简要说明实现思路,然后提供完整代码。
</output_format>
```
### 内容创作
```xml
<role>
你是一位专业的 {{CONTENT_TYPE}} 创作者,
风格 {{STYLE}},面向 {{AUDIENCE}}。
</role>
<instructions>
请创作一篇关于 {{TOPIC}} 的内容。
要求:
1. 语气:{{TONE}}
2. 长度:约 {{LENGTH}} 字
3. 结构:{{STRUCTURE_REQUIREMENTS}}
4. 关键点:{{KEY_POINTS}}
</instructions>
<examples>
[如需要,提供风格示例]
</examples>
<constraints>
- 原创内容,不要复制现有材料
- 保持一致的语气和风格
- 确保内容准确性
</constraints>
```
### 数据分析
```xml
<role>
你是一位资深数据分析师。
</role>
<context>
{{BUSINESS_CONTEXT}}
</context>
<instructions>
分析以下数据,重点关注:
1. {{FOCUS_AREA_1}}
2. {{FOCUS_AREA_2}}
分析步骤:
1. 数据质量检查
2. 描述性统计
3. 趋势和模式识别
4. 洞察和建议
</instructions>
<data>
{{DATA}}
</data>
<output_format>
## 执行摘要
[关键发现的一段话总结]
## 数据质量
[数据质量评估]
## 分析发现
[详细分析,包含具体数据支持]
## 建议
[基于分析的可行建议]
</output_format>
```
---
## 优化检查清单
优化提示词后,检查以下项目:
- [ ] 任务目标明确、无歧义
- [ ] 提供了必要的上下文
- [ ] 指令具体、可执行
- [ ] 使用了适当的 XML 结构
- [ ] 复杂任务包含示例或分步骤
- [ ] 定义了明确的输出格式
- [ ] 使用正向表述而非否定
- [ ] 如需要,设定了合适的角色
- [ ] 约束条件清晰
- [ ] 提供了足够的变量占位符