OpenAI官方给出的Prompt工程建议

OpenAI在自己的官方网站上之前发布了关于如何进行提示工程的指导文档,这份文档可以帮助我们更好的对AI发起提问,从而得到更有效的答案。以下是针对原文的翻译,主要使用ChatGPT4进行机翻,人工也会做一些微调,主要排版做了一点调整,此外有一些翻译不准确的地方请多见谅,但也希望大家看看原文,一起学习。本文主要提供的六个策略我这里直接列出来,方便大家归纳:

  1. 撰写明确的指令
  2. 提供参考文本
  3. 将复杂任务拆分为更简单的子任务
  4. 给模型时间思考
  5. 使用外部工具
  6. 系统性地测试更改

这份指南汇集了一系列策略和技巧,旨在帮助用户从大型语言模型(如 GPT-4,有时被称为 GPT 模型)中获取更优质的成果。介绍的方法可单独或组合使用,以达到更佳效果。我们推荐用户进行实验,找出最适合自己的使用方法。

目前,有些示例仅适用于我们最先进的模型,即 gpt-4。通常情况下,如果您在使用某个模型执行任务时遇到困难,而手头有更高级的模型可用,那么尝试使用更高级的模型通常是一个不错的选择。

此外,您还可以通过探索示例提示,来了解我们的模型能够完成哪些任务:

Prompt Examples

六种帮助我们得到更好结果的策略

撰写明确的指令

这些模型不能读懂您的思维。如果输出内容过长,可以要求模型提供简短的答复。如果输出过于简单,可以要求更专业的回答。如果您不满意输出的格式,可以展示您期望的格式。让模型少猜测您的需求,更有可能得到满意的答案。

技巧:在查询中添加细节,以获得更相关的回答

为了得到高度相关的反馈,请确保您的请求提供了所有重要的细节或背景信息。否则,您就是在让模型去猜测您的意图。

Worse Better
如何在 Excel 中进行加法运算? 如何在 Excel 中对一行美元金额进行求和?我想要这个操作对整个表格的行都自动进行,并且所有的总计都出现在右侧名为“Total”的列中。
谁是总统? 2021年墨西哥的总统是谁,选举有多频繁举行?
编写计算斐波那契数列的代码。 编写一个 TypeScript 函数以高效计算斐波那契数列。请详细注释代码,解释每个部分的作用及其编写方式。
总结会议记录。 用单段文字总结会议记录。然后以 markdown 列表的形式列出发言者及其各自的关键观点。最后,列出发言者提出的下一步行动或建议事项(如果有的话)。

技巧:让模型采用特定的人物角色

您可以使用系统消息来指定模型在回复中应采用的人物角色。

SYSTEM
当我请求帮助写作时,你的回复中的每个段落都要包含至少一个笑话或俏皮评论。

USER
写一封感谢信给我的钢螺栓供应商,感谢他们及时并在短时间内送达货物。这使我们能够及时交付一份重要订单。

技巧:使用分隔符明确区分输入的不同部分

分隔符,如三重引号、XML 标签、章节标题等,可以帮助区分文本的不同部分,以便进行不同的处理。

USER
用俳句总结由三个引号括起来的文本。"""在此处插入文本"""
SYSTEM
你将获得两篇关于相同主题的文章(用 XML 标签分隔)。首先总结每篇文章的论点。然后指出哪篇文章的论点更有说服力,并解释原因。

USER
<article> 在此处插入第一篇文章 </article> <article> 在此处插入第二篇文章 </article>
SYSTEM
你将获得一份论文摘要和一个建议的标题。论文标题应该让读者清楚地了解论文的主题,但也应该引人注目。如果标题不符合这些标准,请提出5个备选标题。

USER
摘要:在此处插入摘要 标题:在此处插入标题

对于简单的任务,使用分隔符可能对输出质量没有太大影响。但是,任务越复杂,明确任务细节的重要性就越大。不要让模型费力理解您的具体要求。

技巧:明确指出完成任务所需的步骤

某些任务最好以一系列步骤的形式明确指出。将步骤明确写出可以帮助模型更容易地遵循。

SYSTEM
按照以下分步指示回应用户输入。
	步骤1 - 用户将用三个引号提供文本。用一句话总结这段文本,并加上前缀“Summary: ”。
	步骤2 - 将步骤1中的总结翻译成西班牙语,并加上前缀“Translation: ”。

USER
"""在此处插入文本"""

技巧:提供示例

一般来说,提供适用于所有示例的通用指令比通过示例展示任务的各种变体更有效,但在某些情况下提供示例可能更为简单。例如,如果您希望模型复制一种难以明确描述的响应用户查询的特定风格。这称为“少数示例”提示。

SYSTEM
以一致的风格回答。

USER
教我如何如何保持耐心。

ASSISTANT
雕刻最深谷的河流来自谦逊的泉源;最宏伟的交响乐起源于单一的音符;最复杂的挂毯始于孤立的线。

USER
教我关于海洋的知识。

技巧:指定输出的理想长度

您可以要求模型产生特定目标长度的输出。目标输出长度可以用词数、句数、段落数、项目符号点数等来指定。但请注意,指导模型生成特定数量的词并不是非常精确的。模型更可靠地生成具有特定数量段落或项目符号点的输出。

USER
用大约50个词总结由三个引号括起来的文本。"""在此处插入文本"""
USER
用2段文字总结由三个引号括起来的文本。"""在此处插入文本"""
USER
用3个要点总结由三个引号括起来的文本。"""在此处插入文本"""

提供参考文本

语言模型有时会自信地创造虚假答案,尤其是在被询问关于深奥话题或要求提供引用和网址时。就像考试时的备忘录能帮助学生取得更好成绩一样,提供参考文本能帮助模型减少错误答案。

技巧: 指导模型使用参考文本作答

如果我们能为模型提供与当前查询相关的可信信息,那么我们就可以指示模型使用所提供的信息来撰写答案。

SYSTEM
使用由三个引号分隔的文章回答问题。如果答案在文章中找不到,请写上“我找不到答案。”

USER
<插入由三个引号分隔的文章> 问题:<在此处插入问题>

为了提高模型的回答质量,我们可以通过向模型提供与用户问题紧密相关的可靠信息。由于模型处理信息的范围有限,动态地搜索与问题相关的知识变得尤为重要。为了实现这一目标,我们可以利用嵌入式搜索,这是一种高效检索知识的方法。更多关于如何使用此技术的细节,可以参考策略指南 “利用基于嵌入式的搜索技术实现高效的知识检索”

技巧: 指导模型引用参考文献回答问题

此外,如果模型的输入信息中已包含相关的知识内容,模型就能够在回答中加入引用。这些引用来源于提供的参考文档,并且可以通过与这些文档的内容进行字符串匹配来进行验证,确保信息的准确性。

SYSTEM
你将获得一份由三个引号分隔的文档和一个问题。你的任务是仅使用提供的文档来回答这个问题,并引用文档中用来回答问题的部分。如果文档中不包含回答这个问题所需的信息,则简单写上:“信息不足”。如果提供了问题的答案,必须附上引用。使用以下格式引用相关段落({"citation": …})。

USER
"""<insert document here>""" Question: <insert question here>

将复杂任务拆分为更简单的子任务

像在软件工程中将复杂系统拆分成多个模块化组件一样,向语言模型提交的任务也应该这样处理。复杂任务的错误率通常高于简单任务。此外,复杂任务常常可以重新定义为简单任务的工作流程,其中早期任务的输出用于构建后续任务的输入。

技巧: 使用意图分类来确定与用户查询最相关的指令

在处理需要多个独立指令集的任务时,首先对查询进行分类,然后根据这个分类确定需要的指令集是非常有益的。这可以通过定义固定的类别和为处理特定类别任务编写相关指令来实现。此过程还可以递归应用,将一个任务分解成一系列阶段。这种方法的优势在于,每个查询只包含执行任务下一个阶段所需的指令,相比于使用单个查询来完成整个任务,这可以降低错误率。这种方法还可以降低成本,因为更长的提示语会消耗更多资源(参见定价信息)。

举个例子,对于客户服务应用,查询可以有效地按以下方式分类:


SYSTEM
你将接收到客户服务的咨询。需要把每个咨询分为一个主要类别和一个次要类别。输出应以 json 格式,包含两个键:primary(主要类别)和 secondary(次要类别)。
主要类别包括:账单、技术支持、账户管理或普通咨询。
账单的次要类别有:
- 取消订阅或升级 
- 添加支付方式 
- 对收费的解释 
- 争议某项收费。
技术支持的次要类别有:
- 故障排除 
- 设备兼容性 
- 软件更新。
账户管理的次要类别有:
- 密码重置 
- 更新个人信息 
- 关闭账户 
- 账户安全。
普通咨询的次要类别有:
- 产品信息 
- 定价 
- 反馈 
- 与人工服务员对话。

USER
我需要重新连接网络。

根据客户查询的类别,可以向模型提供更具体的指令,以便它处理下一步。例如,如果客户需要“故障排除”方面的帮助。

SYSTEM
你将收到需要在技术支持环境下进行故障排查的客户服务咨询。帮助用户的方法如下:
- 让他们确认所有连至路由器的电缆是否已连接好。注意,电缆可能会随时间变得松动。
- 如果所有电缆已连接但问题依然存在,询问他们使用的是哪款路由器型号。
- 接下来,你需要指导他们如何重启设备:
- -- 如果型号是 MTD-327J,建议他们按住红色按钮5秒,然后在测试连接前等待5分钟。
- -- 如果型号是 MTD-327S,建议他们拔掉电源再重新插入,然后在测试连接前等待5分钟。
- 如果客户在重启设备并等待5分钟后问题仍未解决,通过输出{"IT support requested"}将他们转接到 IT 支持。
- 如果用户开始提出与本话题无关的问题,确认他们是否想结束当前的故障排除聊天,并按以下分类方案对他们的请求进行分类:
<在此处插入上述主要/次要分类方案>

USER
我需要重新连接网络。

请注意,模型被指示发出特殊字符串以指示对话状态的变化。这允许我们将系统转换为一个状态机,其中状态决定注入哪些指令。通过追踪状态、相关指令以及从该状态允许的转换(如果有的话),我们可以在用户体验中设置防护措施,这些措施在不那么结构化的方法中很难实现。

技巧: 对于需要很长对话的对话应用程序,可总结或过滤之前的对话

由于模型具有固定的上下文长度,用户与助手之间包含整个对话的对话不能无限持续。

有多种解决这个问题的方法,其中一个是总结之前的对话转折点。一旦输入达到预定的长度阈值,就会触发一个查询来总结部分对话,而之前对话的总结可以作为系统消息的一部分。或者,可以在整个对话过程中在后台异步总结先前的对话。

另一种解决方案是动态选择对当前查询最相关的对话的之前部分。详情请参阅策略 “利用基于嵌入式搜索的技术实现高效的知识检索”

技巧: 对长文档进行分块摘要,并递归构建完整摘要

由于模型的上下文长度是固定的,它们不能在单次查询中总结超过上下文长度减去总结长度的文本。

要总结一本长篇书籍等文档,我们可以使用一系列查询来总结文档的每一部分。部分总结可以连接并进行总结,形成总结的总结。这个过程可以递归进行,直到整个文档被总结。如果为了理解后面的部分需要使用有关前面部分的信息,则在总结书中任何特定点的内容时,包括对该点之前文本的持续总结是一个有用的技巧。OpenAI 使用 GPT-3 变体对这种总结书籍的方法的有效性进行了先前的研究

给模型时间“思考”

比如被要求计算17乘以28,你可能不会立刻知道答案,但随时间推移可以算出来。同样地,模型在立即回答时比花时间思考时更易犯逻辑错误。在给出答案之前,要求一个“思考链”可以帮助模型更可靠地推理出正确答案。

技巧:在急于得出结论之前,指导模型先自行找出解决方案

有时候,在模型做出结论之前,明确指导它先从基本原理进行推理可以获得更好的结果。例如,假设我们想要模型评估学生解决数学问题的方案。最直接的方法是直接询问模型学生的解决方案是否正确。

SYSTEM
判断学生的解决方案是否正确。

USER
`问题描述:我正在建设一个太阳能发电装置,需要帮助计算财务成本。
- 土地成本为每平方英尺100美元 
- 我可以以每平方英尺250美元的价格购买太阳能板 
- 我谈了一个维护合同,每年固定费用为10万美元,另外每平方英尺10美元 第一年运营的总成本作为平方英尺数量的函数是多少。

学生的解决方案:设 x 为装置的面积,以平方英尺计。1. 土地成本:100x 2. 太阳能板成本:250x 3. 维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 学生的解决方案是错误的。他们在计算维护成本时出错,使用了 100x 而不是 10x。正确的第一年运营总成本应为 360x + 100,000。`

ASSISTANT
学生的解决方案是不正确的。

但事实上学生的解决方案可能是错误的!我们可以通过提示模型先生成自己的解决方案来让模型成功地发现这一点。

SYSTEM
首先自己想出解决问题的办法。然后将自己的解法与学生的解法进行比较,评估学生的解法是否正确。在自己完成问题之前,不要决定学生的解法是否正确。

USER
问题陈述: 我正在建造一个太阳能发电装置,我需要帮助计算财务费用。
- 土地成本为 100 美元/平方英尺 
- 我可以以 250 美元/平方英尺的价格购买太阳能电池板 
- 我谈妥了一份维护合同,每年的固定维护费用为 10 万美元,每平方英尺的额外维护费用为 10 美元 平方英尺 运营第一年的总成本与平方英尺数的函数关系是什么?

学生的解答: 设 x 为安装面积(平方英尺)。1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000

ASSISTANT
设 x 为安装面积(平方英尺)。1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 学生的解答不正确。他们在计算维护成本时出了错,用了 100x,而不是 10x。正确的第一年运营总成本是 360x + 100,000。

技巧:使用内部独白或一系列查询来隐藏模型的推理过程

上一个策略表明,在回答具体问题之前,模型有时需要对问题进行详细推理。在某些应用中,模型用来得出最终答案的推理过程可能不宜与用户共享。例如,在辅导应用中,我们可能希望鼓励学生自行找出答案,但模型对学生解决方案的推理过程可能会泄露答案。

内部独白是一种可以减轻这一问题的策略。内部独白的想法是指导模型将本应对用户隐藏的输出部分放入一个便于解析的结构化格式。然后在向用户展示输出之前,对输出进行解析,并只展示部分内容。

SYSTEM
按照以下步骤回答用户询问。
第 1 步 - 首先自己找出问题的解决方案。不要依赖学生的解决方案,因为它可能是不正确的。将这一步的所有工作都括在三层引号("""")中。
第 2 步 - 将您的解法与学生的解法进行比较,并评估学生的解法是否正确。将此步骤中的所有作业用三引号("""")括起来。
第 3 步 - 如果学生出错了,确定在不泄露答案的情况下,可以给学生什么提示。将这一步的所有作业用三引号("""")括起来。
第 4 步 - 如果学生犯了错误,则将上一步的提示提供给学生(不带三重引号)。不要写 "第 4 步--......",而是写 "提示:"。

USER
问题陈述: <插入问题陈述> 学生解决方案: <插入学生解决方案>

另一种方法是通过一系列查询来实现,其中除了最后一个之外的所有查询的输出都对最终用户隐藏。

首先,我们可以让模型自己解决问题。由于这个初始查询不需要学生的解决方案,可以省略。这样做的额外优势在于,模型的解决方案不会受到学生尝试解决方案的影响。

USER
<insert problem statement>

接下来,我们可以让模型利用所有可用信息来评估学生解决方案的正确性。

SYSTEM
将您的解法与学生的解法进行比较,并评估学生的解法是否正确。

USER
问题陈述: """<插入问题陈述>""" 您的解决方案: """<插入模型生成的解决方案>""" 学生的解决方案: """<插入学生的解决方案>"""

最后,我们可以让模型根据自己的分析构建一个帮助型导师角色的回答。

SYSTEM
你是一名数学辅导员。如果学生出错了,以不透露答案的方式向学生提供提示。如果学生没有出错,只需给他们一个鼓励性的评价。

USER
问题陈述: """<插入问题陈述>""" 你的解决方案 """<插入模型生成的解决方案>""" 学生的解决方案: """<插入学生的解决方案>""" 分析: """<插入上一步生成的模型分析>"""

技巧:询问模型是否在之前的检查中遗漏了内容

假设我们正在使用模型从一个源文档中列出与特定问题相关的摘录。在列出每个摘录后,模型需要决定是继续写下一个摘录还是停止。如果源文档很大,模型很可能会过早停止,未能列出所有相关摘录。在这种情况下,通过用后续查询提示模型查找之前遗漏的任何摘录,通常可以获得更好的性能。

SYSTEM
您将收到一份用三引号分隔的文档。你的任务是选择与以下问题相关的摘录: "人工智能历史上发生了哪些重大范式转变"。确保摘录包含解释这些内容所需的所有相关上下文,换句话说,不要提取缺少重要上下文的小片段。提供如下 JSON 格式的输出: {"摘录":"..."},...{"摘录":"..."}]

USER
"""<此处插入文档>"""

ASSISTANT
[{"摘录": "模型在此写入摘录"}, ... {"摘录": "模型在此写下另一段摘录"}] USER

USER
还有更多相关摘录吗?注意不要重复摘录。还要确保摘录包含解释所需的所有相关上下文--换句话说,不要提取缺少重要上下文的小片段。

使用外部工具

利用其他工具的输出来补充模型的不足。例如,文本检索系统(有时称为 RAG 或检索增强生成)可以向模型提供相关文档信息。像 OpenAI 的代码解释器这样的代码执行引擎可以帮助模型进行数学计算和运行代码。如果某项任务通过工具而非语言模型可以更可靠或高效地完成,那么最好将其外包以实现最佳效果。

技巧:运用基于嵌入式的搜索实现高效知识检索

模型可以利用作为其输入部分的外部信息源。这有助于模型生成更具信息量和更更新的响应。例如,如果用户提出有关特定电影的问题,向模型的输入中添加有关该电影的高质量信息(如演员、导演等)可能会很有帮助。嵌入式搜索可以用来实现高效的知识检索,使相关信息能够在运行时动态地添加到模型的输入中。

文本嵌入是一种可以衡量文本字符串之间相关性的向量。相似或相关的字符串在嵌入空间中彼此更接近,而不相关的字符串则相距较远。这一事实,加上快速向量搜索算法的存在,意味着嵌入式搜索可以用来实现高效的知识检索。特别是,可以将文本语料库分割成块,每个块进行嵌入并存储。然后对给定的查询进行嵌入,并执行向量搜索,以找到与查询最相关的语料库中的嵌入文本块(即在嵌入空间中最接近的)。

具体实现可以在 OpenAI Cookbook 中找到。请参考策略 “指导模型使用检索到的知识回答问题”,了解如何使用知识检索来最大程度减少模型编造不正确事实的可能性。

技巧:使用代码执行进行更准确的计算或调用外部API

不能依靠语言模型自己准确地执行算术或长时间计算。在需要这种操作的情况下,可以指导模型编写和运行代码,而不是自己进行计算。特别是,可以指导模型将要运行的代码放入指定格式,如三个反引号。产生输出后,可以提取并运行代码。最后,如果需要,可以将代码执行引擎(如Python解释器)的输出作为下一个查询的输入提供给模型。

SYSTEM
您可以用三层反斜线括起来编写和执行 Python 代码,例如```代码到这里```。用它来执行计算。

USER
求下列多项式的所有实数值根: 3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10.

代码执行的另一个好用途是调用外部API。如果模型被正确指导使用API,它可以编写使用API的代码。可以通过提供文档和/或显示如何使用API的代码示例来指导模型如何使用API。

SYSTEM
您可以用三层反斜线括起来编写和执行 Python 代码。还请注意,您可以访问以下模块,帮助用户向朋友发送消息: ```python import message message.write(to="John", message="Hey, want to meetup after work?")```

警告:执行模型生成的代码本质上不是安全的,任何希望这样做的应用都应采取预防措施。特别是,需要一个沙盒化的代码执行环境,以限制不受信任代码可能造成的危害。

技巧:使模型能够访问特定函数

Chat Completions API 允许在请求中传递一系列函数描述。这使得模型能够根据提供的模式生成函数参数。API以JSON格式返回生成的函数参数,可以用于执行函数调用。然后,可以将函数调用的输出反馈给下一个请求中的模型,以完成闭环。这是使用OpenAI模型调用外部函数的推荐方法。要了解更多,请参阅我们的入门文本生成指南中的 函数调用部分,以及 OpenAI Cookbook 中的更多 函数调用示例

系统地测试更改

如果能够量化性能,提升性能会更容易。有时,对提示的修改可能会在个别案例上表现更好,但在更具代表性的样本集上整体表现变差。因此,为确保更改对性能有整体正面影响,可能需要定义一个全面的测试套件(也称为“评估”)。

有时很难判断某个改变——比如新指令或新设计——是使你的系统变得更好还是更差。观察一些例子可能会暗示哪个更好,但在小样本量的情况下,很难区分这是真正的改进还是随机的幸运。或许这个改变对某些输入提高了性能,但对其他输入却降低了性能。

评估程序(或“评估”)对于优化系统设计非常有用。好的评估应该是:

  • 代表现实世界使用情况(或至少是多样化的)
  • 包含大量测试用例,以获得更强的统计效力(参见下面的表格指南)
  • 容易自动化或重复
DIFFERENCE TO DETECT SAMPLE SIZE NEEDED FOR 95% CONFIDENCE
30% ~10
10% ~100
3% ~1,000
1% ~10,000

输出的评估可以由计算机、人工或二者结合完成。计算机可以自动化具有客观标准(如有单一正确答案的问题)的评估,以及一些主观或模糊标准的评估,其中模型输出由其他模型查询评估。OpenAI Evals 是一个开源软件框架,提供创建自动化评估的工具。

当存在一系列可能的输出被认为同样高质量时(例如,对于有长答案的问题),基于模型的评估是有用的。用基于模型的评估评价什么以及需要人类评价的边界是模糊的,并且随着模型变得更加能干,这个边界不断变化。我们鼓励进行实验,以了解基于模型的评估在您的用例中的有效性。

技巧:参照黄金标准答案评估模型输出

假设已知对问题的正确答案应该涉及一组特定的已知事实。那么我们可以使用模型查询来计算答案中包含了多少所需的事实。

例如,使用以下系统消息:

SYSTEM
您将收到用三引号分隔的文本,这些文本应该是问题的答案。请检查答案中是否直接包含以下信息: 
- 尼尔-阿姆斯特朗是第一个登上月球的人。
- 尼尔-阿姆斯特朗首次登上月球的日期是 1969 年 7 月 21 日。
针对每个要点,执行以下步骤: 
1 - 重述要点。
2 - 提供答案中与该要点最接近的引文。
3 - 考虑不了解题目的人在阅读引文时能否直接推断出该观点。在下定决心之前,解释一下为什么或为什么不能。
4 - 如果 3 的答案为 "是",则写 "是",否则写 "否"。
最后,统计有多少个 "是 "的答案。以 {"count": <此处插入计数>}。

以下是一个同时满足两个条件的示例输入:

SYSTEM
<insert system message above>

USER
"""尼尔-阿姆斯特朗因成为第一个踏上月球的人类而闻名于世。这一历史性事件发生在 1969 年 7 月 21 日的阿波罗 11 号任务中。"""

以下是一个只满足一个条件的示例输入:

SYSTEM
<insert system message above>

USER
""尼尔-阿姆斯特朗创造了历史,他走下登月舱,成为在月球上行走的第一人"""

以下是一个没有满足任何条件的示例输入:

SYSTEM
<insert system message above>

USER
""69年夏天,一次伟大的航行 阿波罗11号,像传奇之手一样大胆 阿姆斯特朗迈出了一步,历史就此展开 他说,"一小步,"迈向新世界"""

有许多可能的基于模型的评估变种。考虑以下变种,它跟踪候选答案与金标准答案之间的重叠类型,并且还跟踪候选答案是否与金标准答案的任何部分矛盾。

SYSTEM
使用以下步骤来回应用户输入。请在继续之前完整重述每个步骤,例如 "步骤 1:推理......"。第 1 步:逐步说明所提交答案中的信息与专家答案相比是否存在以下情况:不相交、相等、子集、超集或重叠(即存在某些相交,但不是子集/超集)。第 2 步:逐步推理提交的答案是否与专家答案的任何方面相矛盾。第 3 步:输出结构类似于 JSON 的对象: {"type_of_overlap": "不相交 "或 "相等 "或 "子集 "或 "超集 "或 "重叠","矛盾":true 或 false}

以下是一个与专家答案不矛盾的次标准答案的示例输入:

SYSTEM
<insert system message above>

USER
问题 """尼尔-阿姆斯特朗最著名的事件是什么,发生在哪一天?假设为协调世界时时间。""" 提交答案: """他不是登上过月球吗?""" 专家回答: """尼尔-阿姆斯特朗因成为第一个登上月球的人而最为著名。这一历史性事件发生在 1969 年 7 月 21 日。"""

以下是一个与专家答案直接矛盾的答案的示例输入:

SYSTEM
<insert system message above>

USER
问题 """尼尔-阿姆斯特朗最著名的事件是什么,发生在哪一天?假设为协调世界时时间。""" 提交答案: """1969 年 7 月 21 日,尼尔-阿姆斯特朗成为继巴兹-奥尔德林之后第二个登上月球的人。专家回答: """尼尔-阿姆斯特朗因成为第一个登上月球的人而最为著名。这一历史性事件发生在 1969 年 7 月 21 日。"""

以下是一个正确答案的示例输入,也提供了比必要的更多细节:

SYSTEM
<insert system message above>

USER
问题 """尼尔-阿姆斯特朗最著名的事件是什么,发生在哪一天?假设为协调世界时时间。""" 提交答案: """世界协调时 1969 年 7 月 21 日 02:56 左右,尼尔-阿姆斯特朗成为第一个踏上月球表面的人类,这标志着人类历史上的一个不朽成就""" 专家回答: """尼尔-阿姆斯特朗因成为第一个登上月球的人而最为著名。这一历史性事件发生在 1969 年 7 月 21 日。"""

以上列出的每个策略都可以通过具体的技巧来实现。这些技巧旨在提供尝试的思路,它们并不是全面的,您应该自由地尝试这里未涉及的创新想法。

其他资源

想要获得更多灵感,请访问 OpenAI Cookbook,其中包含示例代码,并且还链接到第三方资源,例如:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇