> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/claude_guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/claude_guide/di-yi-bu-fen-ji-chu-pian/02_prompt/2.7_optimization.md).

# 2.7 提示词优化与调试：工程学视角

提示工程（Prompt Engineering）不仅仅是“文字艺术”，更是一门 **工程学**。 如果想要构建可靠的 AI 应用，就不能止步于“试了几次感觉不错”，而必须建立一套科学的开发、测试和优化流程。

## 2.7.1 提示工程生命周期

```mermaid
graph LR
    A["设计"] --> B["开发"]
    B --> C["评估"]
    C --> D["部署"]
    C -.->|"失败"| B
```

### 设计

* 明确业务目标：是想让它写诗，还是想提取 JSON？
* 识别边界：什么情况下它应该拒绝回答？

### 开发

* 利用 Metaprompting（元提示）：让 Claude 帮忙写 Prompt。
* 构建初始版本：包含 Role, Context, XML Tags, Few-Shot。

### 评估 - 最关键的一步

* **Golden Dataset (黄金数据集)**: 准备至少 20-50 个真实的测试用例（包含简单、困难、恶意输入）。
* **Metric**: 定义什么是“好”。是 JSON 格式正确？还是情感分析准确？

### 部署

* 监控生产环境的日志，收集失败案例加入 Golden Dataset，进入下一轮迭代。

## 2.7.2 工具化调试

### The Workbench

Anthropic 官方控制台提供了一个强大的 Workbench。

* **Evaluate 功能**: 可以一键运行多个测试用例，并在侧边栏对比输出。
* **Prompt Generator**: 一个内置的“提示词生成器”。只需输入“帮我写个邮件分类器”，它会自动生成包含 XML 标签、思维链的高级 Prompt。

### 常见的调试模式

| 症状                     | 诊断      | 处方                                                                                    |
| ---------------------- | ------- | ------------------------------------------------------------------------------------- |
| **啰嗦、废话多**             | 模型过于礼貌  | 增加 `<constraints>`，在系统提示词中要求直接输出，或用 Few-Shot 展示短回复。                                   |
| **格式错误 (Bad JSON)**    | 模型未理解语法 | 优先使用 Structured Outputs / `output_config.format`；旧模型无法使用时再退回 `<output_format>` 与严格解析。 |
| **幻觉 (Hallucination)** | 知识缺失    | 明确 `<knowledge_base>`, 要求“引用原文”，甚至让它说“不知道”。                                           |
| **逻辑错误**               | 任务太难    | 引入 CoT (`<thinking>`), 或拆分为多个 Prompt (Chaining)。                                      |

## 2.7.3 高级策略：Prompt Chaining：提示链

当一个任务过于复杂，即使加上 CoT 也容易出错时，应该将其 **拆解**。

**场景**：写一篇基于 5 份财报的深度分析文章。

* **Single Prompt**: “读这5份文件，写分析。” -> *结果：内容肤浅，遗漏细节。*
* **Prompt Chaining**:
  1. **Step 1**: “读财报 A，提取关键财务数据。” -> *Output A*
  2. **Step 2**: “读财报 B，提取关键财务数据。” -> *Output B*
  3. ...
  4. **Step 6**: “基于 Output A-E，写一篇对比分析文章。”

**优点**：

* 更清晰的上下文。
* 每一步都可以单独调试。
* 突破 Context Window 限制。

## 2.7.4 让 AI 帮你写 AI

不要从零开始写 Prompt。Anthropic 提供了一个官方的元提示词（Metaprompt），这是一个长达几千字的超级 Prompt，专门用来生成 Prompt。

**流程**：

1. 复制官方 Metaprompt 到 Claude。
2. 输入简短需求：“我想做一个代码审查助手。”
3. Claude 会输出一个包含 System Prompt, XML tags, Variable slots 的完美 Prompt 模板。
4. 在此基础上微调。

> *Tips: 在 Anthropic Console 中点击 “Generate a prompt” 按钮就是在调用这个功能。*

## 2.7.5 建立你的评估库

在工程中，**没有测试就没有重构**。 应该建立一个自动化测试脚本（使用 Python/Node.js）：

```python
test_cases = [
    {"id": 1, "input": "...", "expected": "...", "assert": "contains_json"},
    {"id": 2, "input": "...", "expected": "...", "assert": "length < 100"},
]

for case in test_cases:
    output = call_claude(prompt, case['input'])
    score = evaluate(output, case['expected'])
    print(f"Case {case['id']}: score={score}")
```

这不仅能帮忙量化 Prompt 的质量，还能在模型升级（如从 Sonnet 4.6 迁移到 Sonnet 5）时，确保业务逻辑没有回归 (Regression)。

***

## 2.7.6 小结

提示工程不是玄学，它是 **实验科学**。

* **Iterate**: 永远不要指望第一版 Prompt 就是完美的。
* **Measure**: 建立测试集，用数据说话。
* **Structure**: 始终使用结构化（XML）和模块化思维。

至此，已经掌握了驾驭 Claude 的核心语言艺术。 但 Claude 能做的远不止“聊天”。在下一章，将赋予它“双手”，让它通过 **Tool Use** 连接真实的数字世界。

➡️ [第三章：Tool Use 工具调用](/claude_guide/di-er-bu-fen-gong-ju-pian/03_tools.md)
