GPT 最佳实践
这份指南分享了从 GPT 获得更好结果的策略和技巧。有时可以结合使用此处描述的方法以获得更好的效果。你可以通过实验以找到最适合的方法。
此处演示的一些示例目前仅适用于 gpt-4
模型。
如果发现一个GPT模型在某个任务上失败并且有一个更强大的模型可用,请尝试使用更强大的模型再次尝试。
获得更好结果的六种策略
写清楚说明
GPT 模型无法读取你的心思。如果它输出的内容太长,你可以要求简短回答。
如果输出内容过于简单,你可以要求专家级别的写作。
如果你不喜欢输出的格式,你可以示范你想要看到的格式。
GPT模型越少去猜测你想要什么,你得到满意结果的可能性就越大。
提供参考文本
GPT 可能会自信地编造假答案,特别是当被问及深奥的话题或要求引用和 URL 时。
就像一张笔记可以帮助学生在考试中取得更好的成绩一样,为 GPT 提供参考文本可以帮助以更少的编造答案。
将复杂任务拆分为更简单的子任务
正如在软件工程中将复杂系统分解为一组模块化组件是一种很好的做法一样,提交给 GPT 的任务也是如此。复杂的任务往往比简单的任务有更高的错误率。此外,复杂的任务通常可以重新定义为更简单任务的工作流,其中早期任务的输出用于构建后续任务的输入。
给 GPT 时间「思考」
如果要求计算 17 乘以 28,你可能不会立即知道结果,但可以花时间计算出来。同样,GPT 在试图立即回答而不是花时间找出答案时会犯更多的推理错误。在回答之前询问一系列推理可以帮助 GPT 更可靠地推理出正确答案。
使用外部工具
通过将其他工具的输出提供给 GPT 来补偿 GPT 的弱点。例如文本检索系统可以告诉 GPT 相关的文档。代码执行引擎可以帮助 GPT 进行数学运算和执行代码。如果一个任务可以由工具而不是 GPT 更可靠或有效地完成,那么将其转移出去,以便获得最佳效果。
系统地测试更改
如果你能测量它,提高性能就更容易了。某些情况下,对提示词进行修改可能会在少数个别示例上实现更好的性能,但在更有代表性的例子上会导致更差的整体性能。因此,为了确保改变对性能的净影响是积极的,可能需要定义一个全面的测试套件(也称为“评估”)。
技巧
上述每一种策略都可以通过具体的战术来实现。这些战术旨在提供一些可以尝试的想法。它们并不全面,你应该尽情尝试这里没有提到的创新思路。
写清楚说明
在你的查询中包含细节以获取更相关的答案
为了获得高度相关的回应,确保请求提供任何重要的细节或上下文。否则你将揣测你意思的工作交给了模型。
差的 | 更好的 |
---|---|
如何在 Excel 中添加数字? | 如何在 Excel 中将一行美元金额相加?我想对整张行自动执行此操作,所有的总计最终都在右边一个叫做“总计”的列中。 |
谁是总统? | 谁是 2021 年的墨西哥总统,选举多久举行一次? |
编写代码计算婓波那契数列 | 编写一个 TypeScript 函数来有效计算婓波那契序列。充分地注释代码以解释每一部分的功能以及为什么要这样写。 |
总结会议记录 | 将会议记录总结为一个段落。然后写一个 markdown 列表,列出发言者及他们的主要观点。最后,如果有的话,列出发言者建议的下一步行动。 |
要求模型采用一个角色
可以通过 SYSTEM
消息指定模型在回答时使用的角色。
role | content |
---|---|
SYSTEM | 当我请求帮助写东西时,你会回复一份文档,每个段落至少包含一个笑话或者俏皮的评论。 |
USER | 给我的钢螺栓供应商写一封感谢信,感谢他在短时间内准时交货。这使我们能够交付重要订单。 |
使用分隔符清晰地表示输入的不同部分
分隔符(如三重引号、XML标签、章节标题等)可以帮助划分文本的不同部分,以便进行不同的处理。
role | content |
---|---|
USER | 将三重引号间隔的文本以俳句形式进行总结。“““在此插入文本””” |
role | content |
---|---|
SYSTEM | 你将会收到一对关于同一主题的文章(用 XML 标签分隔)。首先总结每篇文章的观点。然后指出哪篇文章的观点更有说服力,并解释原因。 |
USER | <article>在这里插入第一篇文章</article> <article>在这里插入第二篇文章</article> |
role | content |
---|---|
SYSTEM | 你将获得论文摘要和建议的标题。论文标题应该让读者对论文的主题有一个很好的了解,但也应该引人注目。如果标题不符合这些标准,建议 5 个备选方案。 |
USER | 摘要:此处插入摘要 标题:此处插入标题 |
对于这些直接的任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,消除任务细节的歧义就越重要。不要让 GTP 花费精力去理解你到底在要求什么。
指定完成任务所需的步骤
有些任务最好指定为一系列步骤。明确地写出步骤可以使模型更容易遵循它们。
role | content |
---|---|
SYSTEM | 使用以下步骤说明来响应用户输入。 第 1 步 - 用户将在三重引号中提供文本。用前缀 “Summary: " 将此文本总结为一句话。 第 2 步 - 将步骤 1 的总结翻译成西班牙语,前缀为 “Translation: “。 |
USER | “““在此插入文本””” |
提供示例
提供适用于所有示例的通用说明通常比通过示例演示任务的所有排列组合更有效,但在某些情况下,提供示例可能更容易。例如,如果你打算让模型复制一种难以明确描述的响应用户查询的特定风格,这被称为“少样本”提示。
role | content |
---|---|
SYSTEM | 以一致风格回答 |
USER | 教我关于耐心。 |
ASSISTANT | 开辟最深山谷的河流从温和的泉水流出;最伟大的交响乐源于一个音符;最复杂的挂毯始于一根单独的线。 |
USER | 教我认识海洋。 |
指定输出的所需长度
你可以要求模型产生给定目标长度的输出。目标输出长度可以用词数、句子数、段落数、项目符号点数等来指定。然而请注意,指导模型生成特定数量的单词的效果并不精确。模型能更可靠地生成具有特定数量的段落或项目符号点的输出。
role | content |
---|---|
USER | 用大约 50 个单词总结由三重引号分隔的文本。 “““在此插入文本””” |
role | content |
---|---|
USER | 在 2 个段落中总结由三重引号分隔的文本。 “““在此插入文本””” |
role | content |
---|---|
USER | 在 3 个要点中总结由三重引号分隔的文本。 “““在此插入文本””” |
提供参考文本
指示模型使用参考文本来回答
如果我们可以为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来编写其答案。
role | content |
---|---|
SYSTEM | 使用由三重引号分隔的提供的文章来回答问题。如果在文章中找不到答案,写“我找不到答案”。 |
USER | <插入文章,每篇文章用三重引号分隔> 问题:<在此处插入问题> |
鉴于 GPT 的上下文窗口有限,为了应用这种策略,我们需要一些方法来动态查找与所问问题相关的信息。嵌入可用于实现高效的知识检索。有关如何实现这一点的更多详细信息,请参阅策略“使用基于嵌入的搜索来实现高效的知识检索”。
指示模型使用参考文本中的引文来回答
如果输入已补充相关知识,则可以直接要求模型通过引用所提供文档中的段落来为其答案添加引文。请注意,输出中的引用可以通过提供的文档中的字符串匹配以编程方式进行验证。
role | content |
---|---|
SYSTEM | 你将获得一份由三重引号和一个问题分隔的文件。你的任务是仅使用提供的文件回答问题,并引用用于回答问题的文件中的段落。如果文档不包含回答此问题所需的信息,则只需写上:“信息不足”。如果提供了问题的答案,则必须用引文进行注释。使用以下格式引用相关段落 ({“citation”: …})。 |
USER | “”"<在此处插入文档>””" 问题:<在此处插入问题> |
将复杂任务拆分为更简单的子任务
使用意图分类来识别与用户查询最相关的指令
对于需要大量独立指令集来处理不同情况的任务,首先对查询类型进行分类,并使用该分类来确定需要哪些指令可能是有益的。这可以通过定义与处理给定类别中的任务相关的固定类别和硬编码指令来实现。这个过程也可以递归地应用于将任务分解为一系列阶段。这种方法的优点是每个查询将仅包含执行任务下一阶段所需的指令,与使用单个查询执行整个任务相比,这可以降低错误率。这也可以降低成本,因为更大的提示词运行成本更高(参见定价信息)。
例如,假设对于客户服务应用程序,可以将查询分类如下:
role | content |
---|---|
SYSTEM | 你将会接收到客户服务查询。将每个查询分类为主要类别和次要类别。以 json 格式提供你的输出,key 为:primary 和 secondary。 主要类别:计费、技术支持、账户管理或一般查询。 计费次要类别: - 取消订阅或升级 - 添加付款方式 - 收费说明 - 对收费提出异议 技术支持次要类别: - 密码重置 - 更新个人信息 - 关闭账户 - 账户安全 账户管理二级类别: - 重设密码 - 更新个人信息 - 关闭账户 - 账户安全 一般查询二级类别: - 产品信息 - 定价 - 反馈 - 与人交谈 |
USER | 我需要让我的互联网重新工作。 |
基于客户查询的分类,可以向 GPT 模型提供一组更具体的指令来处理后续步骤。例如,假设客户需要“故障排除”方面的帮助。
role | content |
---|---|
SYSTEM | 你将收到需要在技术支持环境中进行故障排除的客户服务查询。通过以下方式帮助用户: - 请他们检查是否连接了进出路由器的所有电缆。请注意,电缆随时间松动是很常见的。 - 如果所有电缆都已连接但问题仍然存在,请询问他们使用的是哪种路由器型号 - 现在你将建议他们如何重新启动他们的设备: -- 如果型号是 MTD-327J,建议他们按下红色按钮并保持 5 秒钟,然后等待 5 分钟,然后再测试连接。 -- 如果型号是 MTD-327S,建议他们拔下并重新插入,然后等待 5 分钟,然后再测试连接。 - 如果客户的问题在重启设备并等待 5 分钟后仍然存在,请通过输出 {“IT support requested”} 将他们连接到 IT 支持。 - 如果用户开始询问与此主题无关的问题,请确认他们是否愿意结束当前有关故障排除的聊天,并根据以下方案对他们的请求进行分类: <此处插入上面的 primary/secondary 分类方案> |
USER | 我需要让我的互联网重新工作。 |
对于需要很长对话的对话应用,总结或过滤之前的对话
由于 GPT 具有固定的上下文长度,因此整个对话都包含在上下文窗口中的用户和助手之间的对话不能无限期地继续。 这个问题有多种解决方法,其中之一是总结对话中的先前回合。一旦输入的大小达到预定的阈值长度,这可能会触发一个查询,该查询总结了部分对话,并且先前对话的摘要可以作为SYSTEM
消息的一部分包含在内。
或者,可以在整个对话过程中在后台异步总结先前的对话。
另一种解决方案是动态选择与当前查询最相关的对话的先前部分。请参阅策略“使用基于嵌入的搜索来实现高效的知识检索”。
分段总结长文档并递归构建完整摘要
由于 GPT 具有固定的上下文长度,因此它们不能用于总结文本长度
超过上下文长度
减去单个查询中生成的摘要长度
的文本。
为了总结一个很长的文档,如一本书,我们可以使用一连串的查询来总结文档的每一部分。各个部分的摘要可以串联起来并进行总结,从而产生摘要的摘要。这个过程可以递归进行,直到整个文件被总结出来。如果有必要使用早期章节的信息来理解后面的章节,那么还有一个技巧可以用,那就是在总结该点的内容时,包括书中任何给定点之前的文字的运行摘要。OpenAI 在之前的研究中使用 GPT-3 的变体研究了这种程序对书籍进行总结的有效性。
给 GPT 时间「思考」
指示模型在急于得出结论之前先自己找出解决方案
有时候,当我们明确地指示模型在得出结论之前先从基本原理进行推理,我们会得到更好的结果。例如,假设我们想让模型评估学生对数学问题的解答。最直接的方法是简单地问模型学生的解答是否正确。
role | content |
---|---|
SYSTEM | 判断学生的答案是否正确 |
USER | 问题陈述:我正在建造一个太阳能装置,我需要帮助来计算财务。 - 土地成本 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买 - 我协商了一份维护合同,每年将花费我 10 万美元,外加 10 美元/平方英尺 的总成本是多少第一年的运营作为平方英尺数的函数。 学生的解答:令 x 为以平方英尺为单位的安装尺寸。 1.土地成本:100x 2.太阳能电池板成本:250x 3.维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000 |
ASSISTANT | 这位同学的答案是正确的。 |
但是这位同学的解法其实是不正确的!我们可以通过提示模型首先生成自己的解决方案来让模型成功注意到这一点。
role | content |
---|---|
SYSTEM | 首先想出你自己解决问题的办法。然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在你自己完成问题之前,不要判断学生的解决方案是否正确。 |
USER | 问题陈述:我正在建造一个太阳能装置,我需要帮助来计算财务。 - 土地成本 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买 - 我协商了一份维护合同,每年将花费我 10 万美元,外加 10 美元/平方英尺 的总成本是多少第一年的运营作为平方英尺数的函数。 学生的解答:令 x 为以平方英尺为单位的安装尺寸。 1.土地成本:100x 2.太阳能电池 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。 |
使用内心独白或一系列查询来隐藏模型的推理过程
前面的策略表明,模型在回答特定问题之前详细推理问题有时很重要。对于某些应用程序,模型用于得出最终答案的推理过程不适合与用户共享。例如,在辅导应用程序中,我们可能希望鼓励学生自己找出答案,但模型对学生答案的推理过程可能会向学生揭示答案。
内心独白是一种可以用来缓解这种情况的策略。内心独白的想法是指示模型将本应对用户隐藏的输出部分放入结构化格式中,以便于解析它们。然后在将输出呈现给用户之前,对输出进行解析并仅使部分输出可见。
role | content |
---|---|
SYSTEM | 按照以下步骤回答用户查询。 第 1 步 - 首先找出你自己的问题解决方案。不要依赖学生的解决方案,因为它可能不正确。将你为此步骤所做的所有工作用三重引号 (”"") 括起来。 第 2 步 - 将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。将你为此步骤所做的所有工作用三重引号 (""") 括起来。 第 3 步 - 如果学生犯了错误,请确定你可以在不给出答案的情况下给学生什么提示。将你为此步骤所做的所有工作用三重引号 (""") 括起来。 第 4 步 - 如果学生犯了错误,请向学生提供上一步的提示(在三重引号之外)。不要写“第 4 步 - …”,而写“提示:”。 |
USER | 问题陈述:<插入问题陈述> 学生解决方案:<插入学生解决方案> |
或者,这可以通过一系列查询来实现,其中除最后一个之外的所有查询都对最终用户隐藏其输出。
首先,我们可以让模型自己解决问题。由于此初始查询不需要学生的解决方案,因此可以省略。这提供了额外的优势,即模型的解决方案不会因学生尝试的解决方案而产生偏差。
role | content |
---|---|
USER | <插入问题陈述> |
接下来,我们可以让模型使用所有可用信息来评估学生解决方案的正确性。
role | content |
---|---|
SYSTEM | 将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。 |
USER | 问题陈述:"""<插入问题陈述>""" 你的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>""" |
最后,我们可以让模型使用自己的分析来构建一个乐于助人的导师角色的回复。
role | content |
---|---|
SYSTEM | 你是数学老师。如果学生犯了错误,请以不透露答案的方式向学生提供提示。如果学生没有犯错,只需给他们一个鼓励的评论。 |
USER | 问题陈述:"""<插入问题陈述>""" 你的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>""" 分析:"""<插入模型从上一步生成的分析>""" |
询问模型在之前的问答中是否遗漏了什么
假设我们正在使用一个模型来列出与特定问题相关的来源的摘录。在列出每个摘录后,模型需要确定是否应该开始编写另一个摘录或是否应该停止。如果源文档很大,模型通常会过早停止并且无法列出所有相关摘录。在这种情况下,通常可以通过使用后续查询提示模型来查找它在先前传递中遗漏的任何摘录来获得更好的性能。
role | content |
---|---|
SYSTEM | 你将获得一份由三重引号分隔的文档。你的任务是选择与以下问题相关的摘录:“人工智能历史上发生了哪些重大的范式转变。" 确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。以 JSON 格式提供输出,如下所示: [{“excerpt”:”…”}, … {“excerpt”:“…”}] |
USER | “”"<在这里插入文档>""" |
ASSISTANT | [{“excerpt”: “模型在这里写了一段摘录”}, … {“excerpt”: “模型在这里写了另一个摘录”}] |
USER | 有更多相关的摘录吗?注意不要重复摘录。还要确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。 |
使用外部工具
使用基于嵌入的搜索来实现高效的知识检索
如果作为输入的一部分提供,模型可以利用外部信息源。这可以帮助模型生成更明智和最新的响应。例如,如果用户询问有关特定电影的问题,将有关电影的高质量信息(例如演员、导演等)添加到模型的输入中可能会很有用。嵌入可用于实现高效的知识检索,以便在运行时将相关信息动态添加到模型输入中。
文本嵌入是一个向量,可以衡量文本字符串之间的相关性。相似或相关的字符串将比不相关的字符串靠得更近。这一事实以及快速向量搜索算法的存在意味着嵌入可用于实现高效的知识检索。特别是,一个文本语料库可以被分割成块,每个块都可以被嵌入和存储。然后可以嵌入给定的查询并执行向量搜索以从语料库中找到与查询最相关的嵌入文本块(即在嵌入空间中最接近)。
可以在 OpenAI Cookbook 中找到示例实现。
使用代码执行来进行更准确的计算或调用外部 API
不能依赖 GPT 自行准确地执行算术或长计算。在需要的情况下,可以指示模型编写和运行代码,而不是进行自己的计算。特别是,可以指示模型将要运行的代码放入指定的格式中,例如三重引号""""""。生成输出后,可以提取并运行代码。最后,如果有必要,可以将代码执行引擎(即 Python 解释器)的输出作为输入提供给下一个查询的模型。
role | content |
---|---|
SYSTEM | 你可以通过将 Python 代码括在三重反引号中来编写和执行 Python 代码,例如: ```python code goes here ``` 使用它来执行计算。 |
USER | 找出以下多项式的所有实值根:3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10 |
代码执行的另一个好用例是调用外部 API。如果指导模型正确使用 API,则它可以编写使用它的代码。通过向模型提供说明如何使用 API 的文档和/或代码示例,可以指导模型如何使用 API。
role | content |
---|---|
SYSTEM | 你可以通过用三重反引号括起来来编写和执行 Python 代码。另请注意,你可以访问以下模块以帮助用户向他们的朋友发送消息: ```python import message message.write(to=“John”, message=“Hey, want to meetup after work?”) ``` |
系统地测试更改
有时很难判断更改(例如,新指令或新设计)是否会使你的系统变得更好或更糟。查看几个示例可能会暗示哪个更好,但是样本量较小时,很难区分真正的改进还是随机的运气。也许这种变化有助于某些输入的性能,但会损害其他输入的性能。 评估程序(或"evals")对于优化系统设计很有用。好的评价是:
- 代表现实世界的使用(或至少是多样化的)
- 包含许多测试用例以获得更大的统计能力(有关指南,请参见下表)
- 易于自动化或重复
检测差异 | 95% 置信度所需的样本量 |
---|---|
30% | ~10 |
10% | ~100 |
3% | ~1,000 |
1% | ~10,000 |
输出的评估可以由计算机、人类或混合来完成。计算机可以使用客观标准(例如,只有一个正确答案的问题)以及一些主观或模糊标准来自动评估,其中模型输出由其他模型查询评估。 OpenAI Evals 是一个开源软件框架,提供用于创建自动评估的工具。
当存在一系列可能被认为质量相同的输出时(例如,对于答案很长的问题),基于模型的评估可能很有用。使用基于模型的评估可以实际评估的内容与需要人工评估的内容之间的界限是模糊的,并且随着模型变得更强大而不断变化。我们鼓励通过实验来弄清楚基于模型的评估对你的用例的适用程度。
参照黄金标准答案评估模型输出
假设已知问题的正确答案应该参考一组特定的已知事实。然后我们可以使用模型查询来计算答案中包含了多少所需事实。
例如,使用以下系统消息:
role | content |
---|---|
SYSTEM | 你将获得由三重引号分隔的文本,这些文本应该是问题的答案。检查答案中是否直接包含以下信息: - 尼尔阿姆斯特朗是第一个在月球上行走的人。 - 尼尔·阿姆斯特朗首次踏上月球的日期是 1969 年 7 月 21 日。 对于这些点中的每一个,执行以下步骤: 1 - 重申这一点。 2 - 引用最接近这一点的答案。 3 - 考虑阅读引文但不了解主题的人是否可以直接推断出这一点。在下定决心之前解释为什么或为什么不。 4 - 如果对 3 的回答是“是”,则写“是”,否则写“否”。 最后,提供有多少个"是"答案的计数。提供此计数作为{“count”: < insert count here >}. |
这是一个满足两点的示例输入:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | ”“”尼尔阿姆斯特朗因成为第一个踏上月球的人而闻名。这一历史性事件发生在 1969 年 7 月 21 日阿波罗 11 号任务期间。“”“ |
这是一个示例输入,其中只有一个点得到满足:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | ”“”尼尔·阿姆斯特朗走下登月舱,创造了历史,成为第一个踏上月球的人。“”“ |
这是一个不满足的示例输入:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | ”“”69年夏天,远航盛大, 阿波罗 11 号,大胆如传奇之手。 阿姆斯特朗迈出一步,历史展开, 「一小步,」他说,为了一个新世界。“”“ |
这种基于模型的评估有很多可能的变体。考虑以下变体,它跟踪候选答案和黄金标准答案之间的重叠类型,并跟踪候选答案是否与黄金标准答案的任何部分相矛盾。
role | content |
---|---|
SYSTEM | 使用以下步骤响应用户输入。在继续之前完全重述每个步骤。即“第 1 步:原因……”。 第 1 步:逐步推理提交的答案中的信息与专家答案相比是否是:不相交、相等、子集、超集或重叠(即一些交集但不是子集/超集)。 第 2 步:逐步推理提交的答案是否与专家答案的任何方面相矛盾。 第 3 步:输出结构如下的 JSON 对象:{“type_of_overlap”: “disjoint” or “equal” or “subset” or “superset” or “overlapping”, “contradiction”: true or false} |
这是一个带有不合标准答案的示例输入,但与专家答案并不矛盾:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | 问题:“““尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设 UTC 时间。””" 提交答案:“““他不是在月球上行走吗?””" 专家解答:“““尼尔·阿姆斯特朗 (Neil Armstrong) 以成为第一个登上月球的人而闻名。这一历史性事件发生在 1969 年 7 月 21 日。””” |
这是一个示例输入,其答案直接与专家答案相矛盾:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | 问题:“““尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设 UTC 时间。””" 提交答案:“““1969 年 7 月 21 日,尼尔·阿姆斯特朗成为继巴兹·奥尔德林之后第二个登上月球的人。””" 专家解答:“““尼尔·阿姆斯特朗 (Neil Armstrong) 以成为第一个登上月球的人而闻名。这一历史性事件发生在 1969 年 7 月 21 日。””” |
这是一个带有正确答案的示例输入,它还提供了比必要的更多的细节:
role | content |
---|---|
SYSTEM | < insert system message above > |
USER | 问题:“““尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设 UTC 时间。””" 提交答案:“““1969 年 7 月 21 日世界标准时间 02:56 左右,尼尔·阿姆斯特朗成为第一个踏上月球表面的人类,标志着人类历史上的巨大成就。””" 专家解答:“““尼尔·阿姆斯特朗 (Neil Armstrong) 以成为第一个登上月球的人而闻名。这一历史性事件发生在 1969 年 7 月 21 日。””” |
其他资源
如需更多灵感,请访问 OpenAI Cookbook,其中包含示例代码以及指向第三方资源的链接,例如: