Connect with us

提示工程

OpenAI 的提示工程指南:掌握 ChatGPT 进行高级应用

mm
Prompt Engineering

了解提示工程

提示工程 是设计输入(提示)以从 AI 模型(如 ChatGPT)中获得所需输出的艺术和科学。它是最大化这些模型有效性的关键技能。

ChatGPT 建立在 OpenAI 的 GPT-3 和 GPT-4 架构之上,已经取得了显著的进步,变得更加响应和上下文感知。了解其演变对于掌握提示工程至关重要。

像一位熟练的指挥家领导乐队一样,提示工程使我们能够指导这些模型执行复杂的任务,从编写详细的技术文档到生成创造性和吸引人的内容。本指南将带您了解转变您与 AI 交互的策略和战术,从基本的交流到细致和有意义的对话。

考虑一下询问“如何在 Excel 中添加数字?”与“如何在 Excel 中自动求一列美元金额的总和,并在右侧的“总计”列中显示总计?”之间的区别。后者更详细的提示,减少了 AI 的解释空间,导致更准确和有用的响应。同样,了解使用人物、分隔符和分步指令的作用可以对 AI 的输出质量产生深远的影响,特别是对于复杂的任务。

本指南不仅涵盖提示工程的理论方面,还提供了实践的、实用的例子。您将学习如何有效地使用策略,例如提供参考文本来引导 AI 远离虚构,或者如何将复杂任务分解为更简单的子任务以获得更准确的结果。

1. 清晰度和细节

为 AI 模型(如 GPT-4)设计有效的提示需要精确、上下文和清晰度的结合。设计良好的提示和设计不良的提示之间的区别可以是模糊的、通用的响应和相关的、具体的答案之间的区别。

示例 1:利用 ChatGPT 的语言理解进行技术查询

  • 无效提示: “如何修复我的代码中的 bug?”
    • AI 输出: “要修复代码中的 bug,首先需要识别 bug,了解为什么会发生,然后修改代码来纠正它。”
  • 有效的技术查询: “我正在使用 Python 编码,尝试访问字典时出现 KeyError。代码片段是:[代码片段]。这个错误的原因是什么以及如何修复它?”
    • AI 输出: “您的 Python 代码中的 KeyError 很可能是由于尝试访问字典中不存在的键所致。以下是如何修改代码来处理此错误:[修改后的代码片段,附有说明]。”

示例 2:具有风格模仿的创作写作

  • 无效提示: “写一个短篇故事。”
    • AI 输出: “从前,在一个遥远的土地上,有一个王国面临着巨大的危险…”
  • 有效的风格模仿提示: “以欧内斯特·海明威的风格写一个短篇故事,重点是两个老朋友在意外相遇时的对话。”
    • AI 输出: “太阳照在尘土飞扬的道路上,杰克和汤姆,两个老朋友,碰巧相遇。‘已经过去很多年了,’杰克说,他的声音和空气一样干燥。‘自从战争以来,’汤姆回答。[故事继续以海明威简洁、对话驱动的风格写成]。”

示例 3:旅行建议

  • 无效提示: “在巴黎我可以做什么?”
    • AI 输出: “在巴黎,您可以参观像埃菲尔铁塔、卢浮宫和巴黎圣母院这样的地标。”
  • 有效提示: “我将在夏天访问巴黎三天,重点是艺术和历史。您可以建议一个详细的行程吗?”
    • AI 输出: “第一天:上午参观卢浮宫,接着前往巴黎圣母院。[更多详细行程]。”

关于设计更好提示的见解

  1. 具体性: 尽可能具体。您的提示越详细,响应就会越有针对性。
  2. 上下文信息: 包括所有相关的上下文。这有助于 AI 理解您请求的确切性质。
  3. 明确的目标: 清楚地说明您期望的输出。无论是配方、旅行计划还是技术解决方案,请明确您的目标。
  4. 避免模糊性: 模糊的提示会导致通用的响应。澄清您的请求以获得精确的答案。
  5. 利用已知格式: 如果适用,请以特定的格式请求信息,例如列表、分步指南或图表。

2. 使用参考文本增强 AI 响应

在提示工程中战略性地使用参考文本可以显著提高 AI 模型(如 GPT-4)响应的质量和准确性。通过在查询中提供相关的可靠信息,您可以引导 AI 根据提供的材料组成答案,使响应更加可靠和上下文准确。

示例 1:科学解释

  • 传统提示: “黑洞是如何形成的?”
    • AI 输出: “黑洞是由一颗大型恒星死亡并在超新星爆炸中形成的。如果核心的质量足够大,它就会在自己的重力下坍缩成一个黑洞。”
  • 增强提示,带有参考文本
    • 提供的参考文本: “[关于恒星演化和黑洞的科学论文]”
    • 提示: “使用提供的科学论文中的信息,解释黑洞形成的过程。”
    • AI 输出: “根据提供的科学论文,黑洞是在一颗巨大的恒星耗尽其核燃料并且其核心坍缩时形成的。该论文详细介绍:[论文中的相关摘录]”

示例 2:法律解释

  • 传统提示: “知识产权盗窃的法律影响是什么?”
    • AI 输出: “知识产权盗窃可能导致法律后果,例如诉讼、罚款,严重的情况下甚至可能导致监禁。”
  • 增强提示,带有参考文本
    • 提供的参考文本: “[关于知识产权法的法律期刊文章]”
    • 提示: “参考提供的法律期刊文章,解释知识产权盗窃的具体法律影响。”
    • AI 输出: “法律期刊文章指出,知识产权盗窃可能导致民事诉讼、法定损害赔偿和潜在的刑事指控。具体来说,该文章提到:[文章中的直接引用]”

关于在提示中使用参考文本的见解

  1. 选择相关文本: 选择与您的查询直接相关的参考文本。
  2. 提示规范: 清楚地指示 AI 使用提供的参考文本来组成其答案。
  3. 引用: 请求 AI 在其响应中引用参考文本的特定部分,以确保准确性和可验证性。
  4. 处理不足信息: 指示 AI 如果提供的文本中不包含回答问题所需的必要信息,则应明确说明。

3. 使用子任务分解简化复杂任务

将复杂任务分解为更简单的子任务是有效处理 AI 模型(如 GPT-4)复杂任务的关键。这种方法不仅简化了流程,还提高了 AI 响应的准确性和相关性。以下示例通过特定的示例展示了使用意图分类、摘要技术和结构化对话来处理复杂查询的优势。

示例 1:客户服务查询

  • 无效方法: 提出一个询问一般帮助的单一提示。
    • 用户提示: “我在我的帐户上遇到问题。”
    • AI 输出: “您能否请具体说明您帐户问题的性质?”
  • 有效方法: 将查询分类并提供有针对性的帮助。
    • 用户提示: “我在访问我的帐户时遇到问题。”
    • AI 指令: “将查询分类为“帐户管理”,然后提供访问问题的特定步骤。”
    • AI 输出: “听起来您在访问您的帐户时遇到问题。让我们从重置您的密码开始。[接着是详细的步骤]。”

示例 2:长文档摘要

  • 无效方法: 尝试一次性总结长文档。
    • 用户提示: “为我总结这本 300 页的书。”
    • AI 输出: “我很抱歉,但我无法处理比我的上下文窗口更长的文档。”
  • 有效方法: 逐步提取摘要,递归构建完整的摘要。
    • AI 指令: “逐章总结,然后创建一个摘要的摘要,递归进行。”
    • 用户提示: “总结这本书的第一章。”
    • AI 输出: “第一章摘要:[第一章的简要摘要].”
    • 继续过程: 对每个章节应用相同的过程,然后是最终的总结,汇总所有单独的总结。

子任务分解和上下文提示工程的好处

  1. 提高准确性: 通过关注复杂任务的特定方面,AI 可以提供更准确和相关的响应。
  2. 增强效率: 将任务分解为更易于管理的部分,并降低错误或不相关输出的可能性。
  3. 更好的用户体验: 用户获得有针对性的、分步骤的指导,这比通用响应更有帮助。
  4. 成本效益: 较小、有针对性的提示可能比较大、更复杂的提示更具成本效益。

4. 给 GPT 留出思考时间

给模型留出“思考”时间并将复杂任务分解为可管理的步骤,显著提高了 AI 模型(如 GPT-4)响应的质量。

示例 1:数学问题评估

  • 无效方法: 直接询问模型评估学生的解决方案。
    • 用户提示: “学生对这个数学问题的解决方案是正确的吗?”
    • AI 输出: “学生的解决方案似乎是正确的/不正确的。”
  • 有效方法: 指示模型首先自己解决问题,然后评估学生的工作。
    • 用户提示: “首先解决这个数学问题。然后,将您的解决方案与学生的解决方案进行比较并评估其正确性。”
    • AI 输出: “我的解决方案:[详细解决方案]。将其与学生的解决方案进行比较,我发现他们计算[特定部分]时有一个错误。正确的方法应该是[正确方法]。”

示例 2:文档分析

  • 无效方法: 尝试一次分析整个文档。
    • 用户提示: “总结这份整个文档的要点。”
    • AI 输出: “我无法处理整个文档,因为它太长了。”
  • 有效方法: 采用顺序提取和后续查询的方式进行全面分析。
    • 用户提示: “从这份文档中提取与[特定主题]相关的关键摘录。”
    • AI 输出: “摘录 1:[相关段落]。摘录 2:[另一相关段落]。”
    • 后续用户提示: “是否有更多相关摘录?请确保它们包含完整的上下文。”
    • AI 输出: “附加摘录:[进一步相关段落]。”

好处和见解

  1. 分析深度: 通过首先解决问题或分析,AI 可以提供更准确和深入的评估。
  2. 引导式学习: 在辅导场景中,使用内部独白和提示鼓励学生独立找到解决方案,提高了他们的学习体验。
  3. 全面覆盖: 对于文档分析,顺序和递归方法确保了彻底的覆盖而不会错过重要细节。
  4. 避免偏见: 通过首先生成自己的解决方案,AI 避免了直接评估给定答案可能产生的偏见。

5. 利用外部工具

将外部工具和资源集成到 AI 交互中可以大大提高 AI 模型(如 GPT-4)生成的响应的准确性和相关性。本节演示了使用基于嵌入的搜索进行知识检索、代码执行进行准确计算以及函数调用来增强 AI 模型的功能。

示例 1:使用代码执行进行准确计算

  • 无代码执行: 仅依赖模型的计算能力。
    • 用户提示: “529 的平方根是多少?”
    • AI 输出: “529 的平方根约为 23。”
  • 带代码执行: 确保计算精确。
    • 用户提示: “计算 529 的平方根。”
    • AI 指令: “编写和执行 Python 代码来计算这个值。”
    • AI 输出: “python 导入 math math.sqrt(529) 529 的平方根正好是 23。”

示例 2:使用 API 调用进行动态交互

  • 无 API 调用: 仅限静态、预编程响应。
    • 用户提示: “提醒我的朋友我们明天的会议。”
    • AI 输出: “提醒:不要忘记向你的朋友发送关于明天会议的消息。”
  • 带 API 调用: 与外部系统交互以进行实时操作。
    • 用户提示: “向我的朋友约翰提醒我们明天的会议。”
    • AI 指令: “使用消息 API 发送提醒。”
    • AI 输出: “python 导入 message message.write(to='John', message='嘿,记得我们明天的会议!') 已向约翰发送了关于明天会议的提醒。”

好处和见解

  1. 扩展知识库: 通过使用基于嵌入的搜索,AI 可以访问和整合大量最新信息,提高其响应的相关性和准确性。
  2. 计算精度: 代码执行允许 AI 执行准确的数学计算,这在技术或科学背景下特别有用。
  3. 交互能力: API 调用使 AI 能够与外部系统交互,促进了如发送消息或设置提醒等实际操作。

6. 系统测试

系统测试或评估程序对于确定 AI 系统中更改的有效性至关重要。这种方法涉及将模型输出与一组预先确定的标准或“金标准”答案进行比较,以评估准确性。

示例 1:识别答案中的矛盾

  • 测试场景: 检测模型响应与专家答案之间的矛盾。
    • 系统指令: 确定模型的响应是否与专家提供的答案的任何部分相矛盾。
    • 用户输入: “尼尔·阿姆斯特朗成为第二个登上月球的人,继巴兹·奥尔德林之后。”
    • 评估过程: 系统检查与专家答案的一致性,专家答案指出尼尔·阿姆斯特朗是第一个登上月球的人。
    • 模型输出: 模型的响应直接与专家答案相矛盾,表明存在错误。

示例 2:比较答案的详细程度

  • 测试场景: 评估模型的答案是否与专家答案在详细程度上保持一致、超过或不及。
    • 系统指令: 比较模型的响应和专家答案的信息深度。
    • 用户输入: “尼尔·阿姆斯特朗于 1969 年 7 月 21 日 02:56 UTC 首次登上月球。”
    • 评估过程: 系统评估模型的响应是否提供了与专家答案相同、更多或更少的详细信息。
    • 模型输出: 模型的响应提供了更多详细信息(确切时间),这与专家答案一致且有所扩展。

好处和见解

  1. 准确性和可靠性: 系统测试确保 AI 模型的响应在处理事实信息时是准确和可靠的。
  2. 错误检测: 它有助于识别模型响应中的错误、矛盾或不一致之处。
  3. 质量保证: 这种方法对于在教育、历史或其他对事实敏感的背景下保持 AI 生成内容的高标准至关重要。

结论和要点

通过讨论的示例和策略,我们已经看到提示的具体性如何以戏剧性的方式改变输出,以及如何将复杂的任务分解为更简单的子任务,使令人望而生畏的挑战变得可控。我们探索了外部工具在增强 AI 能力的作用以及系统测试在确保 AI 响应的可靠性和准确性方面的重要性。访问 OpenAI 的提示工程指南 以获取补充我们对高级技术和策略的全面探索的基础知识,用于优化 AI 交互。

我过去五年一直沉浸在令人着迷的机器学习和深度学习世界中。我的热情和专业知识使我能够为超过50个不同的软件工程项目做出贡献,特别注重人工智能/机器学习。我的持续好奇心也使我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。