Prompt Engineering

什么是提示工程 (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 进行逐步推理。

    • 实现方式:

      1. 基础 CoT: 添加“请逐步思考”。

      2. 引导 CoT: 提供特定的推理阶段(例如:“首先…然后…最后…”)。

      3. 结构化 CoT: 使用标签将推理与最终答案分开(例如,在 <thinking> 标签中思考,在 <email> 标签中撰写邮件)。

  • 控制输出格式 (Control the output format)

    • 做法:

      1. 正面引导: 告诉 AI 要做什么(例如:“请使用流畅的散文段落”),而不是不要做什么(例如:“不要用项目符号”)。

      2. 匹配风格: 您提示中使用的格式风格可能会影响 AI 的回复风格。

      3. 明确偏好: 详细说明您的格式要求。

  • 提示链 (Prompt chaining)

    • 原则: 将复杂任务分解为多个顺序执行的独立提示。前一个提示的输出成为下一个提示的输入。

    • 权衡: 这种方法牺牲了延迟(需要多次调用)以换取更高的准确性。

    • 示例:

      1. Prompt 1: “总结这篇医学论文…”

      2. Prompt 2: “审查上述摘要的准确性…”

      3. 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 标签或角色提示。


最终建议

提示工程的核心是沟通。从核心技巧开始,并一致地使用它们。只有在它们能解决特定问题时,才分层添加高级技巧。最好的提示是那个能以最少的必要结构可靠地实现您目标的提示。

1 个赞

感觉这个得自己在不断的实践中去练习,才能锻炼出来,光看这些概念只能说知道有哪些,但还是得自己去输出,去找到适合自己的方法,以及风格

2 个赞

平时有注意,但是没有很强的规范,看了很受用