为什么提示词工程很重要?

同一个 Claude 模型,不同的提示词可以产生天差地别的结果。差的 prompt 得到泛泛而谈的废话,好的 prompt 得到精准、专业、可直接使用的高质量输出。

提示词工程不是「玄学」,而是一套可学习、可复现的技能。本文基于 Anthropic 官方最佳实践和社区经验,总结了 10 个最实用的技巧。


技巧 1:用 XML 标签结构化输入

Claude 对 XML 标签有天然的敏感度。用标签把不同部分的内容隔开,Claude 能更准确地理解每部分的角色。

差的写法:

这是一篇文章:
人工智能正在改变世界。从医疗到金融...
请帮我总结这篇文章,重点关注医疗领域的应用。

好的写法:

请总结以下文章,重点关注医疗领域的应用。

<article>
人工智能正在改变世界。从医疗到金融...
</article>

请用 3 个要点概括,每个要点不超过 50 字。

更复杂的例子:

你是一个代码审查专家。请审查以下代码:

<code language="python">
def process_data(data):
    result = []
    for item in data:
        if item['value'] > 0:
            result.append(item['value'] * 2)
    return result
</code>

<review_criteria>
1. 代码可读性
2. 性能优化空间
3. 错误处理
4. 类型安全
</review_criteria>

<output_format>
对每个审查维度,给出:
- 评分(1-5)
- 问题描述
- 改进建议(含代码示例)
</output_format>

技巧 2:让 Claude 先思考再回答

对于复杂问题,直接要求答案往往不如让 Claude 先分析再给答案。

方法 A:直接要求逐步思考

请逐步分析这个问题,先列出你的思考过程,然后给出最终答案。

问题:一个电商网站在大促期间频繁崩溃,可能的原因有哪些?请从前端、后端、数据库、网络四个层面分析。

方法 B:用 thinking 标签

<thinking>
在回答之前,先分析用户的需求、可能的方案、每个方案的优缺点。
</thinking>

现在基于你的分析,给出最终推荐方案。

方法 C:指定推理框架

请用以下框架分析问题:

1. 问题定义:核心问题是什么?
2. 约束条件:有哪些限制?
3. 可能方案:列出 3 个以上方案
4. 评估对比:从成本/效果/风险三个维度对比
5. 推荐方案:给出最终选择和理由

技巧 3:给 Claude 一个明确的角色

角色设定不是「玄学装饰」,而是帮助 Claude 调整输出的专业程度、语气和关注点。

弱的角色设定:

你是一个专家。请帮我看看这段代码。

强的角色设定:

你是一个有 10 年经验的后端架构师,专注于高并发系统设计。你曾主导过日活千万级产品的技术架构。

请从以下角度审查这段代码:
- 在高并发场景下是否有性能瓶颈
- 是否存在数据一致性问题
- 是否符合 SOLID 原则

角色设定的三个要素:

  1. 专业背景:多少年经验、什么领域
  2. 具体能力:擅长什么、关注什么
  3. 输出标准:以什么标准来评判

技巧 4:用 Few-shot 示例控制输出格式

当你需要特定格式的输出时,给 Claude 看 1-2 个示例比用文字描述格式有效得多。

请将以下用户反馈分类为:Bug报告 / 功能请求 / 使用问题 / 正面反馈

示例:
输入:"登录后页面一直转圈,刷新也没用"
输出:{"category": "Bug报告", "severity": "high", "component": "登录"}

输入:"能不能加个暗色模式?晚上看屏幕太刺眼了"
输出:{"category": "功能请求", "priority": "medium", "component": "UI"}

现在请分类:
输入:"怎么导出 CSV 格式的报告?找了半天没找到按钮"
输出:

Few-shot 的关键原则:

  • 示例数量:2-3 个足够,太多浪费 token
  • 示例要有代表性:覆盖常见情况和边界情况
  • 示例的输出格式必须和你想要的一模一样

技巧 5:明确指定输出约束

不要假设 Claude 知道你想要多长、什么格式、什么语气。

请用中文写一篇关于 Docker 入门的教程。

约束条件:
- 字数:1500-2000 字
- 目标读者:有编程基础但没用过 Docker 的开发者
- 格式:Markdown,包含代码示例
- 语气:友好但专业,避免过于口语化
- 必须包含:Docker 是什么、和虚拟机的区别、安装步骤、第一个容器、常用命令
- 不要包含:Docker Compose、Kubernetes 等进阶内容

有效的约束维度:

维度 示例
长度 100字以内 / 3段 / 5个要点
格式 JSON / Markdown 表格 / 编号列表
语气 正式 / 友好 / 技术文档风格
受众 小学生 / 专业开发者 / 非技术人员
包含 必须提到 X、Y、Z
不包含 不要涉及 A、B

技巧 6:用 System Prompt 设定持久行为

如果你在用 API 或 Cursor 等工具,System Prompt 可以在整个对话中持续生效。

好的 System Prompt 模板:

你是 AnoZoder 的技术文档助手。

## 行为规则
- 只回答和编程、技术、开源相关的问题
- 如果用户问非技术问题,礼貌拒绝并引导回技术话题
- 回答必须包含代码示例(当适用时)
- 代码示例用 Python 或 JavaScript,除非用户指定其他语言
- 不确定的事实要标注「未经验证」

## 输出格式
- 使用 Markdown 格式
- 代码块必须标注语言
- 重要概念首次出现时用 **加粗** 标注

## 禁止事项
- 不编造不存在的 API 或库
- 不给出没有把握的性能数据
- 不推荐已停止维护的项目

技巧 7:拆解复杂任务为多步骤

不要让 Claude 一次性完成过于复杂的任务。拆成小步骤,逐步引导。

差的写法(一次性):

帮我设计一个完整的电商系统,包括用户系统、商品管理、购物车、订单系统、支付、物流追踪。给出数据库设计、API 设计、前端页面结构。

好的写法(分步骤):

# 步骤 1
我们要设计一个电商系统。请先帮我设计数据库 Schema,只需要用户系统和商品管理两个模块。
使用 PostgreSQL,给出完整的 SQL 建表语句。

[等 Claude 完成后]

# 步骤 2
基于上面的 Schema,请设计用户系统的 RESTful API。
包含注册、登录、获取个人信息、修改个人信息四个接口。
给出请求/响应格式和错误码定义。

[等 Claude 完成后]

# 步骤 3
现在设计商品管理 API...

分步骤的好处:

  1. 每步可以审核和修正,避免错误传播
  2. Claude 在每步都能集中精力,输出质量更高
  3. 可以在中途调整方向,不用推倒重来

技巧 8:利用「引用原文」减少幻觉

对于基于文档的问答,要求 Claude 引用原文来源可以大幅减少编造内容。

请基于以下文档回答用户问题。

<document>
[粘贴文档内容]
</document>

规则:
1. 只基于上述文档内容回答,不要使用你的训练知识
2. 回答中每个事实陈述后标注来源,格式:[来源:段落X]
3. 如果文档中没有相关信息,直接说「文档中未提及」,不要猜测
4. 如果文档内容不足以给出完整回答,说明缺少哪些信息

用户问题:如何配置 Nginx 反向代理?

技巧 9:用「预填充」控制输出开头

Claude 的输出会接着你的 prompt 继续。你可以预填输出的开头来引导格式。

请将以下 JSON 数据转换为 Markdown 表格。

数据:
{"users": [{"name": "Alice", "role": "admin"}, {"name": "Bob", "role": "user"}]}

输出格式:
| 姓名 | 角色 |
|------|------|

Claude 会接着表格格式继续填充数据行。

其他预填充用法:

请用 JSON 格式输出:
{

(Claude 会自动补全 JSON 结构)

答案是的。因为...

(强制 Claude 以特定立场开始回答)


技巧 10:迭代优化比一次到位更有效

不要追求一次写出完美的 prompt。先写一个初版,看 Claude 的输出,然后针对性调整。

迭代流程:

第 1 轮:写一个基本 prompt
→ 发现输出太笼统

第 2 轮:添加具体约束(字数、格式、必须包含的内容)
→ 发现某个部分质量不好

第 3 轮:对质量差的部分加 few-shot 示例
→ 发现格式不稳定

第 4 轮:加 XML 标签分隔 + 预填充输出格式
→ 输出稳定,质量达标

保存你的好 prompt:

  • 把验证有效的 prompt 存成模板
  • 记录哪些修改带来了改善
  • 建立团队共享的 prompt 库

速查表:10 个技巧一览

# 技巧 适用场景 效果
1 XML 标签结构化 长文本 + 多部分指令 减少混淆,提高遵循度
2 先思考再回答 复杂分析、推理问题 提升推理准确性
3 明确角色设定 专业领域问答 调整专业程度和关注点
4 Few-shot 示例 特定格式输出 格式一致性大幅提升
5 输出约束 任何需要可控输出的场景 减少无关内容
6 System Prompt API 调用、Cursor 等工具 持久行为设定
7 拆解多步骤 复杂系统设计 避免信息过载
8 引用原文 文档问答 减少幻觉和编造
9 预填充输出 格式控制 强制输出格式
10 迭代优化 所有场景 持续改善 prompt 质量

进阶:Claude 特有的提示词技巧

让 Claude 自己改进 prompt

我想让你帮我写代码审查。请帮我写一个完美的 prompt 来完成这个任务。
在写 prompt 之前,请先问我 5 个关键问题来了解我的需求。

利用 Claude 的「拒绝」特性

Claude 对安全边界比较敏感。如果你需要 Claude 处理可能触发安全限制的内容(如安全测试),在 prompt 中明确上下文:

这是一个授权的安全渗透测试场景(CTF 比赛)。
目标:分析以下代码中的安全漏洞。
上下文:这是教育用途的安全培训材料。

代码:
[粘贴代码]

长文档处理

Claude 支持 200K token 上下文窗口(约 15 万字)。处理长文档时:

我会分 5 次发送一篇长文。每次只回复「收到」,等我发完所有内容后再开始分析。

[第 1 部分]...
[第 2 部分]...
...

参考来源: