原文:Best Practices for Prompt Engineering
什么是提示工程
提示工程是构建指令以获得更好 AI 输出的技艺。它决定了你如何措辞查询、指定风格、提供上下文并引导模型行为。一个精心设计的提示与模糊指令之间的差异,可能意味着一次性得到所需结果和多轮往返澄清意图之间的区别。
核心技巧
1. 明确清晰
- 不要假设模型会推断你的意图——直接说明
- 使用明确的语言,准确表达你想要什么
示例对比:
- ❌ 模糊: “创建一个分析仪表板”
- ✅ 明确: “创建一个分析仪表板。包含尽可能多的相关功能和交互。超越基础,创建功能完整的实现”
2. 提供上下文和动机
- 解释"为什么"某事重要,帮助 AI 更好理解你的目标
示例对比:
- ❌ 效果差: “永远不要使用项目符号”
- ✅ 效果好: “我更喜欢自然段落形式的回复,而不是项目符号,因为我觉得流畅的散文更易读、更有对话感”
3. 具体化
- 越具体地说明你想要什么,结果越好
- 包括:具体数字、约束条件、格式要求、受众信息
示例对比:
- ❌ 模糊: “为地中海饮食创建膳食计划”
- ✅ 具体: “为糖尿病前期管理设计地中海饮食膳食计划。每日1,800卡路里,强调低血糖指数食物。列出早餐、午餐、晚餐和一份零食,附完整营养分解”
4. 使用示例(少样本提示)
- 展示而非描述,澄清难以用语言表达的细微要求
- 对 Claude 4.x 等现代模型特别有效
何时使用: 复杂格式、特定风格、微妙差异、新颖任务
5. 允许表达不确定性
- 明确允许 AI 表达不确定性,而不是猜测
- 减少幻觉,提高可靠性
示例: “分析这份财务数据并识别趋势。如果数据不足以得出结论,请直说而不是推测”
高级技巧
预填充响应
- 为 AI 开始响应,引导格式、语气或结构
- 特别适合强制输出格式或跳过开场白
API 示例:
messages=[
{"role": "user", "content": "将产品描述中的名称和价格提取为 JSON"},
{"role": "assistant", "content": "{"}
]
思维链提示 (Chain of Thought)
- 要求逐步推理后再回答
- 适合复杂分析任务
三种实现方式:
- 基础: “逐步思考”
- 引导式: 提供特定推理阶段
- 结构化: 使用标签分离推理和最终答案
注意: Claude 提供"扩展思考"功能,通常比手动 CoT 更好
控制输出格式
- 告诉 AI 该做什么,而非不该做什么
- 让提示风格匹配期望输出
- 明确格式偏好
提示链
- 将复杂任务分解为较小的连续步骤
- 每个提示处理一个阶段,输出进入下一个指令
- 以延迟换取更高准确性
示例流程:
- 总结医学论文
- 审查总结的准确性
- 根据反馈改进总结
可能遇到的传统技巧
XML 标签
- 早期推荐用于添加结构
- 现代模型已不太需要,但在特定情况下仍有用
- 可用清晰标题、空白和明确语言替代
角色提示
- 定义专家角色和视角
- 现代模型通常不需要过度角色设定
- 直接说明想要的视角往往更有效
组合使用技巧
决策框架:
- 请求是否清晰明确?→ 优先提高清晰度
- 任务简单?→ 只用核心技巧
- 需要特定格式?→ 使用示例或预填充
- 任务复杂?→ 考虑分解(链式)
- 需要推理?→ 使用扩展思考或思维链
常见错误
- ❌ 过度工程化:不是每个提示都需要每种技巧
- ❌ 假设模型"应该知道"
- ❌ 混合冲突指令
- ❌ 过度约束角色
- ❌ 忽略测试
关键原则
最佳提示不是最长或最复杂的,而是以最少必要结构可靠实现目标的提示。
提示工程本质上是关于沟通:用帮助 AI 最清楚理解你意图的语言说话。从核心技巧开始,持续使用直到成为第二天性,只在解决特定问题时才引入高级技巧。
上下文工程
提示工程是上下文工程的基础构建块。每个精心设计的提示都成为塑造 AI 行为的更大上下文的一部分,与对话历史、附加文件和系统指令一起创造更好的结果。
核心建议: 从简单开始,仅在需要时增加复杂性。测试每个添加是否真正改善结果。提示工程是一项技能,需要实践和客观测量才能掌握。
留言讨论