什么是提示工程 (Prompt Engineering)?
提示工程是构建指令以从 AI 模型获得更好输出的技巧。它关乎您如何表述查询、指定风格、提供上下文以及引导模型行为以实现您的目标。
核心技巧 (Core Techniques)
这些是有效 AI 互动的基础,能立即改善回复质量。
-
明确具体 (Be explicit and clear)
-
原则: 明确告诉模型您想看到什么。
-
做法: 使用直接的动词(如“编写”、“分析”、“生成”);跳过前言,直奔请求;明确说明对质量和深度的期望。
-
-
提供背景和动机 (Provide context and motivation)
-
原则: 解释为什么某件事很重要,能帮助 AI 理解您的目标。
-
做法: 解释输出的目的或受众;澄清为何存在某些限制;描述输出将如何被使用。
-
-
保持具体 (Be specific)
-
原则: 提供的指导方针和要求越具体,结果越好。
-
做法: 包含明确的约束(字数、格式);相关的上下文(受众、目标);期望的输出结构(表格、列表、段落);任何限制(如饮食需求、预算)。
-
-
使用示例 (Use examples)
-
原则: “展示”而非“告知”。当解释概念或演示特定格式时效果很好(也称为 “one-shot” 或 “few-shot” 提示)。
-
注意: 确保您的示例与您希望鼓励的行为一致。
-
-
允许 AI 表达不确定性 (Give permission to express uncertainty)
-
原则: 明确允许 AI 在信息不足时承认不确定性,而不是猜测。
-
做法: 添加诸如“如果数据不足以得出结论,请说明,不要猜测”的指令,以减少“幻觉”(hallucinations)。
-
高级提示工程技巧 (Advanced Techniques)
用于构建代理解决方案、处理复杂数据结构或分解多阶段问题。
-
预先填充 AI 的回复 (Prefill the AI’s response)
-
原则: 您替 AI 开始回应,以引导其格式、语气或结构。
-
何时使用: 当您需要 JSON、XML 等结构化格式时;当您想跳过寒暄直奔内容时;当您需要控制 AI 如何开始其回应时。
-
示例: 在 API 调用中,将助手的最后一条消息设置为
{",AI 将自动补完 JSON。
-
-
思维链 (Chain of Thought, CoT) 提示
-
原则: 在回答之前,要求 AI 进行逐步推理。
-
实现方式:
-
基础 CoT: 添加“请逐步思考”。
-
引导 CoT: 提供特定的推理阶段(例如:“首先…然后…最后…”)。
-
结构化 CoT: 使用标签将推理与最终答案分开(例如,在
<thinking>标签中思考,在<email>标签中撰写邮件)。
-
-
-
控制输出格式 (Control the output format)
-
做法:
-
正面引导: 告诉 AI 要做什么(例如:“请使用流畅的散文段落”),而不是不要做什么(例如:“不要用项目符号”)。
-
匹配风格: 您提示中使用的格式风格可能会影响 AI 的回复风格。
-
明确偏好: 详细说明您的格式要求。
-
-
-
提示链 (Prompt chaining)
-
原则: 将复杂任务分解为多个顺序执行的独立提示。前一个提示的输出成为下一个提示的输入。
-
权衡: 这种方法牺牲了延迟(需要多次调用)以换取更高的准确性。
-
示例:
-
Prompt 1: “总结这篇医学论文…”
-
Prompt 2: “审查上述摘要的准确性…”
-
Prompt 3: “根据此反馈改进摘要…”
-
-
可能不再那么必要的技巧
这些技巧在早期模型中很流行,但对于像 Claude 这样的现代模型,其必要性已经降低。
-
XML 标签 (XML tags)
-
过去: 用于帮助模型区分提示的不同部分。
-
现在: 现代模型通常通过清晰的标题和明确的语言(例如:“使用下面的运动员信息…”)就能很好地理解结构。
-
-
角色提示 (Role prompting)
-
过去: “你是一名财务顾问。分析这个投资组合…”
-
现在: 这种方式有时会过度限制 AI。通常,更有效的方法是明确说明您想要的视角:“请分析这个投资组合,重点关注风险承受能力和长期增长潜力。”
-
技巧组合与选择 (Putting It All Together)
-
组合示例: 一个好的提示可能会结合多种技巧(例如:明确的指令 + 示例格式 + 预填充 + 允许不确定性)。
-
如何选择技巧:
-
任务简单? → 使用核心技巧。
-
需要特定格式? → 使用示例或预填充。
-
任务复杂? → 考虑提示链。
-
需要推理? → 使用思维链 (CoT)。
-
常见问题与排错 (Troubleshooting)
-
问题:回复太泛 (Too generic)
- 解决: 增加具体性、示例,或明确要求“超越基础”。
-
问题:偏离主题 (Off-topic)
- 解决: 更明确地说明您的目标和背景。
-
问题:格式不一致 (Inconsistent format)
- 解决: 添加示例 (few-shot) 或使用预填充。
-
问题:任务太复杂,结果不可靠 (Task too complex)
- 解决: 将其分解为多个提示(提示链)。
-
问题:AI 包含不必要的开场白 (Unnecessary preambles)
- 解决: 使用预填充或明确要求:“跳过前言,直奔答案。”
-
问题:AI 编造信息 (AI makes up information)
- 解决: 明确给予其在不确定时说“我不知道”的许可。
要避免的常见错误 (Common Mistakes)
-
不要过度工程 (Don’t over-engineer): 更长、更复杂的提示不总是更好。
-
不要忽视基础 (Don’t ignore the basics): 如果核心提示模糊不清,高级技巧也无济于事。
-
不要假设 AI 懂你 (Don’t assume mind reading): 必须明确具体。
-
不要忘记迭代 (Don’t forget to iterate): 第一个提示很少是完美的,需要测试和改进。
-
不要依赖过时的技术 (Don’t rely on outdated techniques): 从明确、清晰的指令开始,而不是过度依赖 XML 标签或角色提示。
最终建议
提示工程的核心是沟通。从核心技巧开始,并一致地使用它们。只有在它们能解决特定问题时,才分层添加高级技巧。最好的提示是那个能以最少的必要结构可靠地实现您目标的提示。