AI 文摘

分享OpenAI官方发布的prompt提示工程指南


  • By AiBard123
  • December 19, 2023 - 2 min read



作者: AI洞察笔记 来源: AI洞察笔记

提示词的重要性不言而喻,今天看到官方发布的这篇新的提示工程技巧,分享给有需要的你。

OpenAI 官网发布的提示工程指南,分享了如何更有效地利用像如 GPT-4 这样的大语言模型来获得更好的结果。

另外,这份指南的示例主要针对 GPT-4 模型,但理论上来说也适用其他模型。其中主要有六个策略,每个策略下再有具体的技巧。

策略一:撰写清晰的指令

这些模型并不会读心术,无法猜到你的想法。如果模型的输出内容过长,你可以要求它简短回答。如果模型输出内容过于简单,你可以要求使用更专业的水平写作。如果你对输出格式不满意,可以直接展示你期望的格式。最好就是让模型不需要去猜你想要什么,这样你最有可能获得想要的结果。

技巧:

  • 在查询中添加详细信息,以获得更准确的答案 - 请求模型扮演特定角色 - 使用分隔符来清晰区分输入的不同部分 - 明确指出完成任务需要的步骤 - 提供实例作为参考 - 明确指定希望输出的长度

技巧:在你的查询中包含详尽的信息,以获取更为准确的答案

为了得到更准确的回答,确保你的提问中包含了所有重要的细节和背景信息。否则你就是在让模型猜测你的意图。

较差的提问 较好的提问

我该如何在 Excel 中进行加法计算? 我该如何在 Excel 中自动计算一行中的美元总额?我想要的是自动为整张表格的每行进行计算,最终所有的总计数都显示在右侧名为“总计”的列中。

当前的总统是谁? 2021 年,谁是墨西哥的总统?墨西哥的选举是多久举行一次的?

编写一个计算斐波那契序列的代码。 编写一个 TypeScript 函数,用以高效计算斐波那契序列。请详细注释代码,解释每部分代码的作用以及为何这样编写。

总结一下会议记录。 请用一个段落总结会议记录。接着,用 markdown 列表的形式列出所有发言者及其关键观点。最后,如果有的话,列出发言者提出的下一步计划或建议的行动项。

技巧:让模型扮演一个角色

通过系统消息,我们可以指定模型在回答中所扮演的角色。

系统 当我请求帮助撰写某些内容时,你的回答中每个段落至少应包含一个幽默的笑话或俏皮的评论。

用户 请写一封感谢信给我的钢螺栓供应商,感谢他们及时且在短时间内的急速交付。正是由于他们的及时交付,我们才能按时完成一个重要的订单。

技巧:利用分隔符清晰区分输入的不同部分

使用三重引号、XML 标签、章节标题等作为分隔符,能够有效地区别并处理不同的文本内容。

用户 请使用三重引号中的文本进行总结,并用俳句的形式表达。

“““输入文本”””

系统 你将会接收到两篇关于相同主题的文章(用 XML 标签分隔)。首先分别总结这两篇文章的主要论点。接着评价哪篇文章的论据更具说服力,并说明理由。

用户

输入第一篇文章
输入第二篇文章

系统 你将获得一篇论文的摘要和一个建议的标题。论文标题应该能让读者对论文的主题有个清晰的认识,同时也要足够吸引人。如果现有的标题不够吸引人或不够明确,那么请提出五个备选标题。

用户 摘要:输入摘要

标题:输入标题 对于诸如此类的简单任务,使用分隔符可能不会对输出质量产生影响。但任务越复杂,就越需要清楚地区分每个任务的细节,以避免混淆。要让模型很准确地理解你究竟需要什么。

技巧:明确说明完成任务所需的每个步骤

对于某些任务,最好将其分解成一系列明确的步骤。将步骤清晰地写出来,可以帮助模型更有效地遵循指令。

系统 请按照以下步骤来回应用户的输入。

第 1 步 - 用户会给你提供带有三重引号的文本。请将这段文本总结为一句话,并以“摘要:”作为前缀。

第 2 步 - 将第 1 步中的摘要翻译成西班牙语,并以“翻译:”作为前缀。

技巧:提供示例

通常,给出适用于所有情况的通用指导比展示各种任务示例更高效。但在某些情况下,通过提供具体示例来说明可能更直观。比如,你想让模型学习某种特定的回应方式,这种方式可能难以用语言明确描述,这就是所谓的“少样本 (Few-shot)”提示方法。

策略二:提供参考文本

语言模型可能会自信地编造出虚假答案,特别是当回应一些深奥主题或被要求提供引文和 URLs 时。就像学生在考试中借助笔记能够帮助其取得更好的成绩一样,为这类模型提供参考文本也可减少其制造虚假信息的情况。

技巧:

  • 引导模型根据参考文本回答问题 - 引导模型根据参考文本中的引用信息回答问题

这块讲的就是少样本提示的内容,详细的可以参考之前的这篇文章:普通人如何轻松提问AI,一步到位写出动人散文

策略三:把复杂的任务拆分成简单的子任务

就像在软件工程中,我们会习惯于把复杂的系统分解成一套模块化的组件,对于提交给语言模型的任务也是同样的道理。相较于简单的任务,复杂任务的错误率往往会更高。而更进一步,我们常常可以把这些复杂任务重新设定为一系列的工作流程,每一个流程就是一个更简单的任务,而且这些任务之间是相互联系的,前一个任务的输出会作为后一个任务的输入。

技巧:

  • 利用意图分类识别用户查询中最相关的指令 - 对于需要长时间对话的对话应用,总结或筛选先前的对话内容 - 分步总结长文档,并递归地构建完整的总结

策略四:给模型更多时间“思考”

如果被要求计算 17 乘以 28,我们可能不能立即给出答案,但可以花一些时间逐步计算出结果。同样,在 AI 模型试图立刻回答问题时,往往比理性思考后再做出回答更容易出错。所以,在模型给出答案之前,要求其展示一下"思考过程",有助于模型更可靠地推导出正确的答案。

技巧:

  • 在仓促做出结论前,指导模型自己寻找解决方法 - 通过内心独白或连串问题来掩盖模型的思考过程 - 问模型在之前的步骤中是否有遗漏

策略五:运用外部工具

为了弥补模型的不足,我们可以利用其他工具的输出作为输入。例如,文本检索系统(有时被称为 RAG 或检索增强生成系统)可以向模型提供相关文档的信息。像 OpenAI 的代码执行引擎这样的工具,可以帮助模型进行数学运算和代码执行。如果某项任务通过工具来完成能比通过语言模型更可靠或更高效,那么就把任务交给这个工具处理,这样就能结合两者长处,达到最佳效果。

技巧:

  • 运用基于嵌入的搜索来高效实现知识检索 - 利用代码执行进行更精确的计算或调用外部 API - 使模型能够访问特定功能

策略六:系统地对变更进行测试

如果能对性能进行量化,那么就能更好地提高性能。有时,对提示词的修改在少数特定例子上可能表现更佳,但在更具普遍性的样本集上可能会导致整体性能下降。因此,为了确保改动对总体性能产生积极的影响,可能需要设计一份全方位的测试(也被称为"评估")。

技巧:

  • 根据标准答案的参考评估模型输出效果

对于上面提到的每一种技巧,都有非常详细的参考示例。

官网原文链接:

https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions

精彩回顾

1. 从 ChatGPT 系统提示中,分享几个拿来就能用的prompt提示工程技巧

  1. 普通人如何轻松提问AI,一步到位写出动人散文

  2. 借助AI免费完成一次MBTI职业性格测试,看看AI怎么看待你的性格,附详细教程

  3. 一文汇总大语言模型LLM所有prompt提示词框架的论文出处

欢迎分享、在看、点赞

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具