可能很多人不知道,在OpenAI的官方文档里,提供了很多有用的Prompt Engineering策略和技巧(目前有六大策略,18个技巧),熟练使用这些技巧,可以从任何大预言模型得到你想要的结果。(原文:https://platform.openai.com/docs/guides/prompt-engineering/six-strategies-for-getting-better-results

I. 撰写清晰的指令

清晰的指令是获得理想输出的关键。这个策略强调通过详细、具体的指示来引导模型,减少歧义,提高输出质量。

A. 在查询中包含详细信息以获得更相关的答案

这个技巧的核心是:提供足够的细节和上下文,使模型能够准确理解你的需求,从而给出更精确、更有用的回答。

要点:

  1. 提供具体细节
  2. 解释上下文
  3. 明确你的期望输出

应用这个技巧的步骤:

  1. 识别关键信息:思考哪些信息对于你的问题是必要的。
  2. 明确目标:清楚地表述你希望得到什么样的结果。
  3. 提供背景:如果有相关的背景信息,请包含在内。
  4. 指定格式:如果你希望得到特定格式的回答,请明确说明。

案例: 如何做意大利面

优质的提问: “请提供一个简单的意大利面食谱,适合初学者。我想做一道传统的番茄肉酱意面,需要4人份的用量。请列出所需的材料清单,然后给出详细的步骤说明。最后,添加一些关于如何调整口味和常见错误的提示。”

B. 要求模型采用特定角色

这个技巧的核心是:通过指定模型应该扮演的角色或采用的语气,来影响模型的回答风格和内容。

要点:

  1. 在系统消息中明确指定角色或人格特征
  2. 确保指定的角色或特征与你的需求相匹配
  3. 保持一致性,让模型在整个对话中保持这个角色

应用这个技巧的步骤:

  1. 确定目标: 思考你希望得到什么样风格的回答。
  2. 选择合适的角色: 选择一个能够帮助你达成目标的角色或人格特征。
  3. 明确描述: 在系统消息中清楚地描述这个角色的特点。
  4. 保持一致: 在后续的对话中,如果需要,可以提醒模型继续保持这个角色。

案例:
“你是一位充满激情的励志演说家。你的回答应该充满能量,使用鼓舞人心的语言,并经常使用比喻和修辞问题来激发听众的热情。每个回答都应该包含至少一句激励人心的口号。”

C. 使用分隔符清晰标示输入的不同部分

这个技巧的核心是:通过使用特定的分隔符,可以清楚地区分输入中的不同部分,让模型能够准确理解和处理每个部分。

要点:

  1. 选择明显的分隔符
  2. 保持分隔符的一致性
  3. 明确指示如何处理被分隔的内容

常用的分隔符包括:

  • 三重引号 “””
  • XML标签 <tag></tag>
  • 章节标题 ## 标题 ##
  • 特殊符号 ===== 或 *****

应用步骤:

  1. 识别需要区分的部分:确定你的输入中哪些部分需要被单独处理。
  2. 选择分隔符:根据任务的复杂性和内容的性质选择合适的分隔符。
  3. 应用分隔符:在你的提示中使用选定的分隔符。
  4. 提供明确指示:告诉模型如何处理每个被分隔的部分。

D. 明确完成任务所需的步骤

这个技巧非常有效,尤其是对于复杂或多步骤的任务。让我来解释一下它的要点,并帮助你学习如何运用:

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

核心思想: 通过明确列出任务的每个步骤,使模型能够按照特定顺序执行复杂的操作,提高输出的准确性和一致性。

要点:

  1. 将任务分解为清晰、有序的步骤
  2. 使用明确的编号或标记来区分每个步骤
  3. 为每个步骤提供详细的说明

应用步骤:

  1. 分析任务:仔细考虑完成任务所需的所有步骤。
  2. 编写步骤:按照逻辑顺序列出每个步骤,使用清晰的语言描述。
  3. 添加细节:为每个步骤提供必要的细节,包括任何特殊要求或格式。
  4. 检查完整性:确保所有必要的步骤都已包含,并且顺序合理。

案例:

请按照以下步骤分析用户提供的文章:

步骤 1: 仔细阅读用户提供的文章全文。

步骤 2: 用一到两句话总结文章的主要观点。在总结前加上"主要观点:"的前缀。

步骤 3: 识别文章中的三个关键论点。列出这些论点,每个论点前加上"论点 #:"的编号。

步骤 4: 评估文章的论证强度。考虑证据的质量、逻辑推理的有效性等。给出1-10的评分,并简要解释原因。使用"论证强度评分:"作为前缀。

步骤 5: 提出两个可以改进文章的建议。每个建议前加上"改进建议 #:"的编号。

步骤 6: 最后,用一句话概括文章的潜在影响或重要性。使用"影响评估:"作为前缀。

请按照上述步骤依次完成分析,确保每个步骤的输出都清晰可辨。

E. 提供示例

通过提供一个或多个示例,让模型理解并模仿特定的回答风格或任务处理方式。

要点:

  1. 选择代表性的示例
  2. 确保示例清晰地展示了所需的风格或方法
  3. 在系统消息中说明一致性的要求

应用步骤:

  1. 确定目标风格或方法:明确你希望模型采用的特定风格或方法。
  2. 创建示例:设计一个或多个能够清晰展示这种风格或方法的示例。
  3. 构建提示:将示例整合到提示中,通常包括一个系统消息和一个或多个用户-助手交互。
  4. 测试和调整:尝试使用这个提示,并根据需要调整示例或说明。

F. 指定所需输出的长度

通过明确指定期望的输出长度,来控制模型生成的内容量,使其更符合特定需求。

要点:

  1. 明确指定长度单位(如单词数、句子数、段落数、要点数等)
  2. 了解不同长度单位的精确度(段落数、要点数通常比单词数更精确)
  3. 根据任务性质选择合适的长度单位

应用步骤:

  1. 确定合适的长度:根据你的需求,决定最适合的输出长度。
  2. 选择长度单位:选择最适合你任务的长度单位(如段落、要点、大致字数等)。
  3. 在提示中明确指定:清晰地在你的提示中说明所需的长度。
  4. 必要时提供额外指导:如果需要特定的结构或格式,也一并说明。

案例:

请按照以下要求总结三重引号内的文章:

"""
[在这里插入你想要总结的文章全文]
"""

1. 用大约30个词概括文章的主要观点。

2. 用3个简洁的段落总结文章,每个段落关注一个主要方面。

3. 用5个要点列出文章的关键信息,每个要点不超过15个词。

4. 用一个含有6句话的段落来总结整篇文章,确保涵盖所有重要内容。

请按顺序完成这四项总结任务,并在每个总结前标明其编号。

II. 提供参考文本

为模型提供可靠的参考文本可以显著提高回答的准确性,尤其是在处理专业或具体信息时。这种方法可以减少模型生成虚假信息的可能性。

A. 指示模型使用参考文本回答

通过提供可信的相关信息,并明确指示模型使用这些信息来构建答案,从而提高回答的准确性和可靠性。

要点:

  1. 提供相关且可信的参考文本
  2. 明确指示模型使用提供的信息
  3. 设定当信息不足时的回答策略

应用步骤:

  1. 准备参考文本:收集与可能的问题相关的可靠信息源。
  2. 设置系统指令:明确指示模型如何使用参考文本。
  3. 格式化输入:使用明确的分隔符区分参考文本和问题。
  4. 处理未知情况:指导模型在找不到答案时如何回应。

案例:

系统:使用三重引号分隔的文章来回答问题。如果在文章中找不到答案,请回复"我在提供的资料中找不到相关信息。"

用户:以下是两篇关于气候变化的文章:

"""
文章1:全球变暖概述
全球变暖是指地球平均气温长期上升的现象。主要原因是人类活动导致的温室气体排放增加,如二氧化碳和甲烷。这些气体捕获热量,导致地球表面温度升高。影响包括海平面上升、极端天气事件增加、生态系统变化等。减缓全球变暖需要减少温室气体排放,发展清洁能源,和改变生活方式。
"""

"""
文章2:应对气候变化的策略
为应对气候变化,各国正采取多项措施。这包括发展可再生能源如太阳能和风能,提高能源效率,推广电动车等清洁交通工具。同时,保护和恢复森林也很重要,因为树木可以吸收二氧化碳。国际合作也至关重要,如《巴黎协定》就是各国共同应对气候变化的努力。个人层面,可以通过节约用电、减少肉类消费、选择环保产品等方式贡献力量。
"""

问题:全球变暖的主要原因是什么?对环境有什么影响?

B. 指示模型引用参考文本中的内容回答

要求模型在回答问题时引用参考文本中的具体段落,这样不仅提高了回答的可信度,还便于后续验证。

要点:

  1. 提供清晰的参考文档
  2. 明确指示引用格式
  3. 设定无法回答时的应对策略
  4. 强调只使用提供的文档

应用步骤:

  1. 准备参考文档:确保文档包含相关信息,并使用明确的分隔符。
  2. 设置系统指令:详细说明如何使用文档和如何引用。
  3. 指定引用格式:提供一个清晰的引用格式模板。
  4. 处理信息不足的情况:指导模型在找不到信息时如何回应。

案例:

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

用户:
"""
人工智能(AI)简介

1. 定义:
人工智能是计算机科学的一个分支,致力于创造能够模仿人类智能的机器和系统。它涉及开发可以学习、推理、感知和解决问题的算法和技术。

2. 主要应用领域:
a) 机器学习:使用数据训练模型,使其能够做出预测或决策,而无需明确编程。
b) 自然语言处理:使计算机能够理解、解释和生成人类语言。
c) 计算机视觉:使机器能够从图像或视频中获取、处理和分析信息。
d) 机器人技术:创造能够在物理世界中执行任务的智能机器。

3. AI的影响:
人工智能正在多个行业产生重大影响,包括医疗保健、金融、教育和交通。它有潜力提高效率、做出更好的决策,并解决复杂的问题。然而,它也带来了对就业、隐私和伦理的担忧。

4. 未来展望:
随着技术的不断进步,我们可能会看到更复杂和自主的AI系统的出现。这可能导致更智能的个人助理、自动驾驶汽车的广泛采用,以及科学研究的重大突破。
"""

问题:人工智能的主要应用领域有哪些?请提供引用。

III. 将复杂任务拆分为简单子任务

通过将复杂任务分解为一系列更简单、更易管理的步骤,可以提高模型的整体表现和准确性。这种方法类似于软件开发中的模块化原则。

A. 使用意图分类来识别用户查询的最相关指令

首先对查询类型进行分类,然后根据分类结果选择最相关的指令集,这样可以将复杂任务分解为多个阶段,提高准确性并可能降低成本。

要点:

  1. 定义固定的查询类别
  2. 为每个类别预设相应的指令
  3. 可以递归应用,将任务分解为多个阶段
  4. 使用特殊字符串标记状态变化
  5. 将系统设计为状态机,根据当前状态注入相关指令

应用步骤:

  1. 设计分类方案:创建适合你的应用场景的查询分类系统。
  2. 创建分类模型:使用系统消息指导模型如何进行分类。
  3. 为每个类别准备指令:根据不同类别设计特定的处理指令。
  4. 实现状态管理:跟踪对话状态,并根据状态选择适当的指令。
  5. 设置状态转换规则:定义允许的状态转换,以控制对话流程。

案例

系统:你是一个智能家居助手。首先将用户的查询分类到以下类别中,然后根据分类提供相应的帮助。以JSON格式输出分类结果,键为"category"。分类后,请按照相应类别的指示进行回复。

类别及指示:
1. 照明控制:询问具体房间和期望的亮度级别,然后确认操作。
2. 温度调节:询问目标温度,确认当前室温,然后调整并确认。
3. 安全系统:询问是要启动还是关闭安全系统,确认操作后提供安全提示。
4. 日程提醒:询问提醒内容、时间和重复频率,然后设置并确认。

如果用户的查询不属于上述类别,请分类为"其他"并礼貌地说明你无法处理该请求。

用户:把客厅的灯光调暗一点。

助手:{"category": "照明控制"}

好的,我了解您想调暗客厅的灯光。请问您希望将亮度调整到什么程度呢?例如,稍微调暗、调至50%亮度,还是有其他具体的要求?

B. 对于需要很长对话的情况,总结或筛选先前的对话

大语言模型的上下文长度是有限的,长时间对话会超出这个限制,导致模型无法访问早期对话内容。通过汇总或过滤,可以在有限的上下文内保持对话的连贯性。

相关阅读  GPT版本的必应(bing.com)正式上线了

主要方法:

  1. 对话摘要:定期总结对话的关键点。
  2. 动态筛选:根据当前查询选择最相关的历史对话部分。

应用步骤:

  1. 实现对话摘要机制:
    • 设定一个触发摘要的阈值(例如,每10轮对话或达到一定字数)。
    • 创建一个摘要生成的提示,要求模型总结关键信息。
    • 将摘要纳入系统消息中,作为上下文的一部分。
  2. 设计动态筛选机制:
    • 为每个对话回合创建嵌入(embedding)。
    • 使用相似度搜索找出与当前查询最相关的历史对话片段。
    • 将这些相关片段与当前查询一起提供给模型。

案例:

系统:你是一个对话助手。维护一个简洁的对话摘要,限制在50词以内。每次回答后,更新摘要包含新的重要信息。在回答前,先输出更新后的摘要(用[摘要]标记)。

C. 分段总结长文档,递归构建完整摘要

这个技巧非常有用,特别是在处理长文档或书籍时。

技巧要点:

  1. 分段summarize:将长文档分成小段落,逐段总结。
  2. 递归summarize:对段落总结再进行总结,直到得到整个文档的摘要。
  3. 运行摘要:在总结后面的段落时,包含之前内容的摘要作为上下文。

应用步骤:

  1. 文档分段:
    • 将长文档分割成适合模型处理的小段落。
  2. 段落总结:
    • 对每个段落进行总结。
  3. 递归总结:
    • 将段落摘要组合,再次总结,形成更高层次的摘要。
    • 重复此过程,直到得到整个文档的总摘要。
  4. 运行摘要:
    • 在处理每个新段落时,包含之前内容的累积摘要。

IV. 给模型”思考”的时间

允许模型进行深入思考和推理可以提高复杂问题的解决质量。这种策略鼓励模型像人类一样,通过步骤推理来得出更可靠的结论。

A. 指示模型在得出结论前自行解决问题

在处理需要仔细推理的问题时,这个技巧很有用。

让模型先独立思考和解决问题,然后再评估他人的解决方案。这种方法可以减少偏见,提高准确性。

应用步骤:

  1. 明确指示: 明确要求模型先自行解决问题,然后再评估他人的解决方案。
  2. 独立思考: 给模型足够的空间来展示其推理过程。
  3. 比较分析: 指导模型比较自己的解决方案和待评估的解决方案。
  4. 得出结论: 基于比较结果,评估待评估解决方案的正确性。
  5. 解释差异: 如果存在差异,要求模型解释这些差异。

案例:

系统:首先,独立解决给定的问题。然后,将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在完成自己的解答之前,不要对学生的解决方案做出判断。

B. 使用内心独白或一系列查询来隐藏模型的推理过程

有时候,我们可能不不希望模型直接给出问题的最终答案。例如在辅导应用程序中,我们可能希望鼓励学生自己解决问题,但模型对学生解决方案的推理过程可能会向学生透露答案。

这种情况下,我们可以使用“内心独白”方式,指示模型将输出中要隐藏的部分放入易于解析的结构化格式中。然后在将输出呈现给用户之前,解析输出并仅显示部分内容。

案例:

系统
按照以下步骤回答用户查询:
步骤 1 - 首先解决你自己的问题。不要依赖学生的解决方案,因为它可能是错误的。将此步骤中的所有工作都用三引号(""")括起来。
步骤 2 - 将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。将此步骤中的所有工作都用三引号(""")括起来。
步骤 3 - 如果学生犯了错误,确定你可以给学生提供什么提示,而不透露答案。将此步骤中的所有工作都用三引号(""")括起来。
步骤 4 - 如果学生犯了错误,向学生提供上一步的提示(不使用三引号括起来)。而不是写“步骤 4 - ...”,而是写“提示:”。

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

或者,可以通过一系列查询来实现,其中除了最后一个查询之外,所有查询的输出都对最终用户隐藏。

首先,我们可以要求模型自己解决问题。由于最初的查询不需要学生的解决方案,因此可以省略。这提供了一个额外的优势,即模型的解决方案不会受到学生尝试解决方案的影响。

案例:

用户
<插入问题陈述>
系统
将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。

用户
问题陈述:"""<插入问题陈述>"""
你的解决方案:"""<插入模型生成的解决方案>"""
学生的解决方案:"""<插入学生的解决方案>"""
系统
你是一名数学辅导员。如果学生出错,请以不透露答案的方式向学生提供提示。如果学生没有出错,只需给予他们鼓励性的评论。
用户
问题陈述:"""<插入问题陈述>"""
你的解决方案:"""<插入模型生成的解决方案>"""
学生的解决方案:"""<插入学生的解决方案>"""
分析:"""<插入前一步的模型生成分析>"""

C. 询问模型是否遗漏了之前的内容

当我们要求模型从一个大型文档中提取与特定问题相关的内容时,由于文档可能非常大,模型有时会过早停止,未能列出所有相关的摘录。为了确保模型提取了所有相关信息,我们可以在初次提取之后,再次询问模型是否遗漏了什么。

案例:

用户: 还有更多相关的摘录吗?注意不要重复摘录。同时确保摘录包含解释它们所需的所有相关上下文

V. 使用外部工具

结合外部工具可以弥补模型的局限性,提高其在特定任务上的表现。这种方法可以让模型访问更多资源和功能,从而产生更准确、更有用的输出。

A. 嵌入式搜索

什么是嵌入式搜索?
嵌入式搜索是利用文本嵌入技术进行高效的知识检索。文本嵌入是一种将文本字符串转化为向量的方法,这些向量可以衡量文本之间的相关性。相似或相关的文本在向量空间中距离更近,而无关的文本则距离较远。

如何实现嵌入式搜索?
具体实现过程中,可以将一个文本语料库分成多个小块,将每个小块进行嵌入并存储。然后,对于给定的查询,可以将其嵌入并进行向量搜索,找到与查询最相关的嵌入文本块。

在OpenAI的Cookbook中,可以找到如何使用嵌入式搜索来指导模型使用检索到的知识回答问题的案例。这种方法可以显著减少模型生成错误事实的可能性。

B. 使用代码执行进行更准确的计算或调用外部API

为什么需要代码执行?

语言模型在进行算术或长时间计算时并不总是可靠。这时,可以指示模型编写并运行代码,而不是依赖模型自身的计算能力。例如,可以让模型将需要运行的代码放入特定格式(如三重反引号)中,然后将代码提取并运行。必要时,可以将代码执行引擎(如Python解释器)的输出作为下一次查询的输入提供给模型。

代码执行的实例

1. 数学计算:例如,寻找多项式的实数根时,可以让模型生成Python代码并运行,以获得准确的结果。

   # 示例代码
   import numpy as np
   roots = np.roots([3, -5, -3, 0, -7, -10])
   real_roots = [r for r in roots if np.isreal(r)]

2. 调用外部API:模型还可以通过编写代码来调用外部API。例如,可以提供API文档和代码示例,让模型学会如何使用特定API。

import requests
   response = requests.get("https://api.example.com/data")
   data = response.json()

需要注意的是,执行模型生成的代码并非固有安全。因此,任何应用都应采取预防措施,特别是需要使用沙盒环境来限制不可信代码可能造成的危害。

C. 为模型提供特定功能的访问权限

Chat Completions API允许在请求中传递函数描述列表,从而使模型能够根据提供的模式生成函数参数。这些生成的函数参数以JSON格式返回,并可用于执行函数调用。函数调用的输出可以在下一个请求中反馈给模型,形成闭环。这是使用OpenAI模型调用外部函数的推荐方法。

更多关于函数调用的示例可以在OpenAI的Cookbook中找到。

VI. 系统性地测试变更

在系统设计中,判断一个变更(例如新的指令或设计)是否真正改善了系统性能,有时可能非常困难。仅凭几个示例可能会暗示哪个更好,但样本量小的情况下,很难区分是真正的改进还是随机运气。可能某个变更在某些输入上提高了性能,但在其他输入上却降低了性能。

评估程序(或称为“evals”)对于优化系统设计非常有用。好的评估程序应该具备以下特征:

  1. 具有代表性,反映真实世界的使用情况(或至少多样化)。
  2. 包含大量测试用例以提高统计效力(参见下表中的指导原则)。
  3. 易于自动化或重复。
检测差异置信度95%所需样本量
30%~10
10%~100
3%~1,000
1%~10,000

输出的评估可以由计算机、人类或两者结合进行。计算机可以根据客观标准(如有唯一正确答案的问题)自动执行评估,也可以根据主观标准或模糊标准进行评估,在这种情况下,模型输出由其他模型查询进行评估。OpenAI Evals是一个开源软件框架,提供创建自动化评估工具。

当存在一系列可能的输出都被认为是高质量的情况下,基于模型的评估可能会很有用(例如,长答案的问题)。基于模型评估与需要人类评估的边界是模糊的,并且随着模型变得更强大而不断变化。我们鼓励进行实验,以了解基于模型的评估在您的使用案例中效果如何。

A. 使用参考标准答案评估模型输出

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

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

系统消息:
你将获得用三重引号分隔的文本,该文本应该是问题的答案。请检查以下信息是否直接包含在答案中:

- 尼尔·阿姆斯特朗是第一个登上月球的人。
- 尼尔·阿姆斯特朗首次登上月球的日期是1969年7月21日。

对于每个要点,请执行以下步骤:

1. 复述要点。
2. 提供答案中最接近这一点的引用。
3. 考虑如果读者不了解这个主题,是否可以直接从引用中推断出这一点。在做出决定之前解释原因。
4. 如果第3步的答案是肯定的,写“是”,否则写“否”。

最后,提供“是”的答案数量。以 {"count": <插入数量>} 的形式提供这个计数。

这里是一个两个要点都满足的示例输入:

系统消息:
<插入系统消息>
用户:
"""尼尔·阿姆斯特朗因成为第一个登上月球的人而闻名。这个历史事件发生在1969年7月21日,阿波罗11号任务期间。"""

这里是一个只有一个要点满足的示例输入:

系统消息:
<插入系统消息>
用户:
"""尼尔·阿姆斯特朗在登上月球时创造了历史,成为第一个登上月球的人。"""

这里是一个没有任何要点满足的示例输入:

系统消息:
<插入系统消息>
用户:
"""在69年的夏天,一次壮丽的航行,
阿波罗11号,如传奇之手。
阿姆斯特朗迈出一小步,历史展开,
“这是人类的一大步,”他说,为一个新的世界。"""

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

系统消息:
使用以下步骤响应用户输入。完全复述每个步骤然后继续。即“步骤1:逐步推理...”。

步骤1:逐步推理提交的答案与专家答案中的信息是否:不相交、相等、子集、超集或重叠(即有一些交集但不是子集/超集)。

步骤2:逐步推理提交的答案是否与专家答案的任何方面矛盾。

步骤3:输出一个结构如下的JSON对象:{"type_of_overlap": "disjoint" or "equal" or "subset" or "superset" or "overlapping", "contradiction": true or false}

这里是一个不合格但不与专家答案矛盾的示例输入:

系统消息:
<插入系统消息>
用户:
问题:"""尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设是UTC时间。"""

提交的答案:"""他不是登上月球之类的吗?"""

专家答案:"""尼尔·阿姆斯特朗因成为第一个登上月球的人而闻名。这个历史事件发生在1969年7月21日。"""

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

系统消息:
<插入系统消息>
用户:
问题:"""尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设是UTC时间。"""

提交的答案:"""1969年7月21日,尼尔·阿姆斯特朗成为第二个登上月球的人,紧随巴兹·奥尔德林之后。"""

专家答案:"""尼尔·阿姆斯特朗因成为第一个登上月球的人而闻名。这个历史事件发生在1969年7月21日。"""

这里是一个正确答案的示例输入,提供了不必要的细节:

系统消息:
<插入系统消息>
用户:
问题:"""尼尔·阿姆斯特朗最著名的事件是什么?它发生在什么日期?假设是UTC时间。"""

提交的答案:"""1969年7月21日大约02:56 UTC,尼尔·阿姆斯特朗成为第一个踏上月球表面的人,这是人类历史上的一个重要成就。"""

专家答案:"""尼尔·阿姆斯特朗因成为第一个登上月球的人而闻名。这个历史事件发生在1969年7月21日。"""

Categorized in: