提示工程

OpenAI 的提示工程指南:掌握 ChatGPT 进阶应用

mm
Prompt Engineering

了解提示工程

提示工程 是一种通过精心设计输入(提示)来获得期望输出的艺术和科学,尤其是在像 ChatGPT 这样的 AI 模型中。它是最大化这些模型有效性的关键技能。

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

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

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

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

1. 清晰度和细节

为像 GPT-4 这样的 AI 模型设计有效的提示,需要精确、上下文和清晰度的结合。一个设计不良的提示和一个经过深思熟虑的提示之间的差异可能是模糊、通用的响应和高度相关、具体答案之间的差异。

示例 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 响应

在提示工程中战略性地使用参考文本可以显著提高像 GPT-4 这样的 AI 模型的响应质量和准确性。通过提供相关、可靠的信息来引导 AI 根据给定的材料来回答问题,使响应更加可靠和上下文准确。

示例 1:科学解释

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

示例 2:法律解释

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

使用参考文本的见解

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

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

处理像 GPT-4 这样的 AI 模型的复杂任务的关键在于将其分解为更简单的子任务。这种方法不仅简化了流程,还提高了 AI 响应的准确性和相关性。

示例 1:客户服务查询

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

示例 2:长文档摘要

  • 无效方法:尝试一次性总结整个长文档。
    • 用户提示:“总结这本 300 页的书。”
    • AI 输出:“抱歉,我无法处理比我的上下文窗口更长的文档。”
  • 有效方法:将文档分解为章节,然后递归地创建总结。
    • AI 指令:“分别总结每个章节,然后创建一个总结的总结,递归进行。”
    • 用户提示:“总结这本书的第一章。”
    • AI 输出:“第一章总结:[第一章的简要总结]。”
    • 继续过程:同样的过程适用于每个章节,然后是最终的总结,结合所有单独的总结。

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

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

4. 给 GPT 时间思考

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

示例 1:数学问题评估

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

示例 2:文档分析

  • 无效方法:尝试一次分析整个大型文档。
    • 用户提示:“总结这个文档的关键点。”
    • AI 输出:“抱歉,我无法处理比我的上下文窗口更长的文档。”
  • 有效方法:提取相关摘录并进行后续查询以进行全面分析。
    • 用户提示:“提取与 [特定主题] 相关的文档摘录。”
    • AI 输出:“摘录 1:[相关段落]。摘录 2:[另一个相关段落]。”
    • 后续用户提示:“还有更多相关摘录吗?确保它们包含完整的上下文。”
    • AI 输出:“额外摘录:[进一步相关段落]。”

益处和见解

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

5. 利用外部工具

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

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

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

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

  • 无 API 调用:仅限于静态、预编程的响应。
    • 用户提示:“提醒我的朋友约翰关于我们明天的会议。”
    • AI 输出:“提醒:不要忘记向你的朋友发送关于明天会议的消息。”
  • 有 API 调用:与外部系统交互以执行实时操作。
    • 用户提示:“提醒我的朋友约翰关于我们明天的会议。”
    • AI 指令:“使用消息 API 发送提醒。”
    • AI 输出:“python import 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个不同的软件工程项目做出了贡献,特别关注AI/ML。我的持续的好奇心也让我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。