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

465 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 结构
- [ ] 复杂任务包含示例或分步骤
- [ ] 定义了明确的输出格式
- [ ] 使用正向表述而非否定
- [ ] 如需要,设定了合适的角色
- [ ] 约束条件清晰
- [ ] 提供了足够的变量占位符