在本年六月份,OpenAI 在其官方文档中更新了一篇关于提高 GPT 效果的战略和办法。这篇文章包括了六种核心战略,以及一些实践的提示词事例,和常识检索和代码履行等技术来优化GPT模型的最佳实践。经过运用这些最佳实践,用户能够更好地运用 GPT 模型,并提高其效果和功能。

大部分的示例首要针对 GPT-4 模型,但关于其他模型而言也会有不少参阅价值。

本文首要翻译和收拾自 OpenAI 的官方文档,原文地址:platform.openai.com/docs/guides…

一些相关的开源材料库房:

  • 关于提示词工程(prompt)的攻略、论文、讲座、笔记本和资源大全:github.com/yunwei37/Pr…
  • 运用 OpenAI API 的比如和中文攻略:github.com/yunwei37/op…
  • 关于大言语模型的安全问题:提示词对抗、破解攻防的东西和事例调集:github.com/yunwei37/pr…

文末附有更多相关参阅材料。

提高成果的六种战略

编写明晰的指令

GPT 无法读取您的思维。假如它们的输出过长,请要求简练回复。假如它们的输出过于简略,请要求专业水平的写作。假如您不喜欢某种格局,请展示您想要看到的格局。GPT 越少猜想您想要的内容,您取得的或许性就越大。

战略:

  • 在查询中包括详细信息,以取得更相关的答案。
  • 要求模型扮演某个人物。
  • 运用分隔符明晰地表示输入的不同部分。
  • 指定完成使命所需的进程。
  • 供给示例。
  • 指定输出的期望长度。
  • 供给参阅文本。

供给参阅文本

GPT 能够自信地编造假答案,特别是当被问询奇特的论题、引证和网址时。就像一张笔记能够协助学生在考试中取得更好的成绩一样,为 GPT 供给参阅文本能够协助它以较少的虚构进行答复。

战略:

  • 指示模型运用参阅文本进行答复。
  • 指示模型运用参阅文本中的引证进行答复。

将杂乱使命分解为简略子使命

就像在软件工程中将杂乱体系分解为一组模块化组件一样,提交给 GPT 的使命也是如此。相比较而言,杂乱使命的过错率往往较高。此外,杂乱使命通常能够从头界说为一系列较简略使命的作业流程,其间前期使命的输出用于构建后续使命的输入。

战略:

  • 运用意图分类来识别用户查询的最相关指令。
  • 关于需求十分长对话的对话运用程序,总结或过滤以前的对话。
  • 逐段归纳长文档并递归构建完好概要。

给予 GPT 足够的时刻进行“考虑”

假如被要求核算 17 乘以 28,您或许无法立即知道答案,但能够经过时刻来核算出来。同样,GPT 在企图立即答复问题时会呈现更多的推理过错,而不是花时刻考虑答案。在得出答案之前,要求进行一连串的推理进程能够协助 GPT 更牢靠地推理出正确答案。

战略:

  • 指示模型在得出结论之前自行处理问题。
  • 运用内心独白或一系列查询来躲藏模型的推理进程。
  • 问询模型是否在之前的处理中漏掉了任何内容。

运用外部东西

经过向 GPT 供给其他东西的输出来补偿 GPT 的不足之处。例如,文本检索体系能够向 GPT 供给相关文档信息。代码履行引擎能够协助 GPT 进行数学核算和代码运转。假如经过东西而不是 GPT 能够更牢靠或更高效地完成使命,则将其卸载以取得最佳成果。

战略:

  • 运用根据嵌入的查找来完成高效的常识检索。
  • 运用代码履行来履行更准确的核算或调用外部 API。

体系地测验改动

假如您能够进行衡量,那么改善功能就会更简单。在某些情况下,对提示的修改或许会在一些孤立的示例上完成更好的功能,但在更具代表性的一组示例上导致更差的归纳功能。因此,为了保证改动对功能有正面的影响,或许需求界说一个全面的测验套件(也称为“评价”)。

战略:

  • 运用参阅规范答案评价模型输出。

详细的示例

每个战略都能够经过详细的战术进行实施。这些战术旨在供给测验的思路。它们并不是彻底翔实的,您能够随意测验不在此处列出的发明性主意。本文为每个详细的战略与战术供给了一些提示词示例。

战略:编写明晰的指令

战术:在查询中包括细节以取得更相关的答复

为了取得高度相关的回复,请保证恳求供给任何重要的细节或上下文。不然,您将让模型猜想您的意思。

更差的指令 更好的指令
如安在Excel中增加数字? 如安在Excel中累加一行美元金额?我想要主动为整个作业表的行求和,一切总数都显示在右侧的名为”Total”的列中。
谁是总统? 2021年墨西哥的总统是谁?选举多久举办一次?
编写核算斐波那契数列的代码。 编写一个高效核算斐波那契数列的TypeScript函数。详细注释代码,解说每个部分的作用以及为什么这样编写。
总结会议记录。 用一段话总结会议记录。然后,运用Markdown列表列出发言者及其首要观念。最终,列出发言者主张的下一步举动或待办事项(假如有)。

战术:要求模型扮演人物

体系音讯能够用于指定模型在回复中扮演的人物。

USER
写一封感谢信给我的螺栓供应商,感谢他们按时并在短时刻内交货。这使咱们能够交给一份重要的订单。
SYSTEM
当我恳求协助写东西时,你将在每个阶段中至少参加一个笑话或俏皮话。

战术:运用分隔符明晰标明输入的不同部分

像三重引号、XML符号、节标题等分隔符能够协助标明需求以不同办法处理的文本部分。

USER
运用三重引号中的文本撰写一首俳句。
"""在这儿刺进文本"""
SYSTEM
你将取得一对关于同一主题的文章(用XML符号分隔)。首先总结每篇文章的观点。然后指出哪篇文章提出了更好的观点,并解说为什么。
USER
<article>在这儿刺进第一篇文章</article>
<article>在这儿刺进第二篇文章</article>
SYSTEM
你将取得一份论文摘要和一个主张的标题。论文标题应该给读者一个很好的论文主题概念,同时也要有目共睹。假如标题不符合这些规范,请
提出5个备选计划。
USER
摘要:在这儿刺进摘要
标题:在这儿刺进标题

关于像这样的简略使命,运用分隔符或许不会对输出质量发生影响。但是,使命越杂乱,将使命细节弄清变得越重要。不要让 GPTs 努力了解您终究在要求什么。

战术:指定完成使命所需的进程

某些使命最好指定为一系列进程。清晰写出这些进程能够让模型更简单跟随。

SYSTEM
运用以下逐渐阐明来回运用户输入。
进程1 - 用户将用三重引号供给给您文本。用前缀"Summary: "对这段文本进行一句总结。
进程2 - 将进程1中的总结翻译成西班牙语,并运用前缀"Translation: "。

战术:供给示例

通常情况下,供给适用于一切示例的一般阐明比经过示例演示使命的一切变体更高效,但在某些情况下,供给示例或许更简单。例如,假如您计划让模型仿制一种难以清晰描绘的用户查询呼应风格。这被称为”few-shot”提示。

SYSTEM
用共同的风格答复。
USER
教我什么是耐心。
ASSISTANT
刻出最深峡谷的河流起源于一处普通的泉眼;最壮丽的交响乐源于一颗独自的音符;最杂乱的挂毯始于一根孤立的线缕。
USER
教我关于海洋。
Open in Playground

战术:指定所需的输出长度

您能够要求模型生成指定长度的输出。方针输出长度能够根据词数、语句数、阶段数、项目符号数等来指定。但请留意,指示模型生成特定数量的单词并不具有高准确度。模型更牢靠地生成具有特定阶段或项目符号数量的输出。

USER
用大约50个词总结由三重引号分隔的文本。
"""在这儿刺进文本"""
USER
用2个阶段总结由三重引号分隔的文本。
"""在这儿刺进文本"""
USER
用3个项目符号总结由三重引号分隔的文本。
"""在这儿刺进文本"""

战略:供给参阅文本

战术:指示模型运用参阅文本答复问题

假如咱们能够为模型供给与当前查询相关的可信信息,那么咱们能够指示模型运用供给的信息来组成其答案。

SYSTEM
运用由三重引号分隔的所供给的文章来答复问题。假如答案在文章中找不到,写下"I could not find an answer."
USER
<刺进文章,每篇文章由三重引号分隔>
问题:<刺进问题>

鉴于GPT具有有限的上下文窗口,为了运用此战略,咱们需求某种办法动态查找与被发问的问题相关的信息。能够运用嵌入来完成高效的常识检索。查看战略”运用根据嵌入的查找完成高效常识检索”了解更多关于怎么完成这一点的细节。

战术:指示模型运用参阅文本的引文进行答复

假如输入现已被相关常识弥补,直接要求模型经过引证所供给文档的阶段来增加引文到其答复中就很简略了。请留意,能够经过在所供给的文档中进行字符串匹配来编程验证输出中的引文。

SYSTEM
你将得到一个由三重引号分隔的文档和一个问题。你的使命是只运用供给的文档来答复问题,并引证用来答复问题的文档阶段。假如文档不包括答复此问题所需的信息,那么只需写下:“信息不足”。假如供给了问题的答案,必须用引文进行注释。运用以下格局引证相关阶段 ({"citation": …})。
USER
"""<刺进文档>"""
<刺进问题>

战略:将杂乱使命分解为更简略的子使命

战术:运用意图分类来识别用户查询最相关的指令

关于需求大量独立的指令集来处理不同情况的使命,首先分类查询类型并运用分类来确认需求哪些指令或许是有利的。这能够经过界说固定的类别并硬编码与处理给定类别使命相关的指令来完成。此进程也能够递归运用以将使命分解为一系列阶段。这种办法的优点是每个查询只包括履行使命的下一阶段所需的那些指令,这或许导致比运用单个查询履行整个使命时的过错率更低。这也或许导致本钱更低,因为更大的提示运转本钱更高(参见价格信息)。

假定例如,关于客户服务运用,查询或许被有用地分类如下:

SYSTEM
你将得到客户服务查询。将每个查询分类为首要类别和非必须类别。以json格局供给你的输出,包括首要和非必须两个关键字。
首要类别:计费,技术支持,账户办理,或一般咨询。
计费非必须类别:
- 退订或升级
- 增加付款办法
- 收费解说
- 争议收费
技术支持非必须类别:
- 毛病扫除
- 设备兼容性
- 软件更新
账户办理非必须类别:
- 密码重置
- 更新个人信息
- 封闭账户
- 账户安全
一般咨询非必须类别:
- 产品信息
- 价格
- 反应
- 要求与人对话
USER
我需求让我的互联网再次作业。

根据客户查询的分类,能够向GPT模型供给一组更详细的指令来处理下一步。例如,假定客户需求协助”毛病扫除”。

SYSTEM
你将得到需求在技术支持环境中进行毛病扫除的客户服务查询。经过以下办法协助用户:
- 让他们检查到/从路由器的一切电缆是否已衔接。留意,电缆随着时刻的推移会常常松动。
- 假如一切电缆都已衔接而且问题依然存在,问询他们正在运用哪种路由器模型
- 现在你将主张他们怎么从头启动他们的设备:
-- 假如类型是MTD-327J,主张他们按下红色按钮并坚持5秒钟,然后等候5分钟后再测验衔接。
-- 假如类型是MTD-327S,主张他们拔掉并从头刺进,然后等候5分钟后再测验衔接。
- 假如客户在重启设备并等候5分钟后的问题依然存在,经过输出{"IT support requested"}将他们衔接到IT支持。
- 假如用户开端发问与此主题无关的问题,那么请确认他们是否期望结束当前关于毛病扫除的聊天,并根据以下计划对他们的恳求进行分类:
<刺进上述主/次分类计划>
USER
我需求让我的互联网再次作业。

请留意,现已指示模型在会话状况改动时宣布特别的字符串。这使咱们能够将咱们的体系改变为状况机,其间状况决定哪些指令被注入。经过盯梢状况,什么指令在那个状况下是相关的,以及从那个状况允许什么状况转换,咱们能够在用户体会周围设置保护,这在一种不太结构化的办法中很难完成。

战术

:对需求进行十分长对话的对话运用程序,对从前的对话进行汇总或过滤 由于GPT具有固定的上下文长度,用户和助手之间的对话不能无限地持续,假如整个对话都包括在上下文窗口中。

处理这个问题的办法有很多,其间之一是对对话的前几个回合进行汇总。一旦输入的大小到达预定的阈值长度,这或许会触发一个查询,该查询会汇总对话的一部分,从前对话的汇总能够作为体系音讯的一部分。或许,从前的对话能够在整个对话进程中异步地进行汇总。

另一个处理计划是动态挑选与当前查询最相关的对话的从前部分。参见战术”运用根据嵌入的查找来完成高效的常识检索”。

战术:分段汇总长文档并递归构造完好汇总

由于GPT具有固定的上下文长度,它们不能在单个查询中用来汇总超越上下文长度减去生成汇总长度的文本。

要汇总一个十分长的文档,如一本书,咱们能够运用一系列的查询来汇总每一部分的文档。部分汇总能够被衔接起来并进行汇总,发生汇总的汇总。这个进程能够递归地进行,直到整个文档被汇总。假如需求运用关于前期部分的信息来了解后来的部分,那么在对那一点的内容进行汇总时包括一个运转汇总的文本,这或许是一个有用的技巧。OpenAI在之前的研讨中现已研讨了这种用于汇总书籍的程序的有效性,运用的是GPT-3的变体。

战略:给予 GPT 时刻“考虑”

战术:在匆忙得出结论前,辅导模型自行找出处理计划

有时候,咱们清晰地辅导模型在得出结论之前先进行从头至尾的推理,会得到更好的成果。比如,假定咱们期望模型评价一个学生处理数学问题的办法。最直观的做法便是直接问询模型学生的处理计划是否正确。

SYSTEM
判别学生的答复是否正确。
USER
问题描绘:我正在制作一个太阳能发电设备,我需求协助核算财务状况。
- 土地费用为每平方英尺100美元
- 我能够以每平方英尺250美元的价格购买太阳能板
- 我现已商定了一个每年固定费用为10万美元的保护合同,以及每平方英尺额定的10美元
第一年运营的总本钱是多少,作为面积(平方英尺)的函数来表示。
学生的答复:设x为设备的面积(平方英尺)。
1. 土地费用:100x
2. 太阳能板费用:250x
3. 保护费用:100,000 + 100x
总本钱:100x + 250x + 100,000 + 100x = 450x + 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
<刺进问题描绘>

接下来,咱们能够让模型运用一切可用的信息来评价学生答复的正确性。

SYSTEM
将你的答复与学生的答复进行比较,然后评价学生的答复是否正确。
USER
问题描绘:"""<刺进问题描绘>"""
你的答复:"""<刺进模型生成的答复>"""
学生的答复:"""<刺进学生的答复>"""

最终,咱们能够让模型运用自己的剖析,构造一个有协助的导师的回复。

SYSTEM
你是一位数学导师。假如学生犯了过错,以不泄漏答案的办法给学生供给一个提示。假如学生没有犯过错,简略地对他们供给鼓舞性的谈论。
USER
问题描绘:"""<刺进问题描绘>"""
你的答复:"""<刺进模型生成的答复>"""
学生的答复:"""<刺进学生的答复>"""
剖析:"""<刺进模型在前一步生成的剖析>"""

战术:问询模型是否在前几轮查询中遗失了任何内容

假定咱们正在运用模型列出与特定问题相关的源文本的摘抄。在列出每一篇摘抄之后,模型需求确认是否应开端编写另一篇,或许是否应该中止。假如源文档很大,模型通常会过早地中止,无法列出一切相关的摘抄。在这种情况下,经过提示模型用后续查询找出它在前几轮中遗失的摘抄,通常能够取得更好的功能。

SYSTEM
你将取得一个用三引号分隔的文档。你的使命是挑选与以下问题相关的摘抄:"人工智能前史上发生过哪些严重的范式改变。"
保证摘抄包括一切相关的上下文,以便解说它们 - 换句话说,不要提取短少重要上下文的小片段。以如下的JSON格局供给输出:
[{"摘抄": "..."},
...
{"摘抄": "..."}]
USER
"""<刺进文档>"""
ASSISTANT
[{"摘抄": "模型在这儿写下一段摘抄"},
...
{"摘抄": "模型在这儿写下另一段摘抄"}]
USER
还有其他相关的摘抄吗?请留意不要重复摘抄。并保证
新的摘抄确实与问题有关,而且在旧的摘抄中还没有涵盖。
ASSISTANT
[{"摘抄": "模型在这儿写下一段摘抄"},
...
{"摘抄": "模型在这儿写下另一段摘抄"}]

留意,假如文档特别长,这个战术或许需求多次运用。

战略:运用外部东西

战术:利用根据嵌入的查找完成高效的常识检索

模型能够利用作为其输入的外部信息源。这能够协助模型生成更有根据和最新的呼应。例如,假如用户问询关于特定电影的问题,将有关该电影的高质量信息(如演员、导演等)增加到模型的输入或许是有用的。嵌入能够用来完成高效的常识检索,以便在运转时动态地将相关信息增加到模型输入。

文本嵌入是一种能够测量文本字符串之间相关性的向量。相似或相关的字符串将比无关的字符串更挨近。这个实际,再加上快速向量查找算法的存在,意味着嵌入能够被用来完成高效的常识检索。详细来说,文本语料库能够被切割成块,每个块能够被嵌入并存储。然后,给定的查询能够被嵌入,向量查找能够被履行,以找到与查询最相关的文本块(即,在嵌入空间中最挨近的)。

实施示例能够在OpenAI Cookbook中找到。请参阅战术”Instruct the model to use retrieved knowledge to answer queries”,以获取怎么运用常识检索来最小化模型制造过错实际的或许性的比如。

战术:运用代码履行进行更准确的核算或调用外部API

咱们不能依靠GPT自己准确地进行算术或长时刻的核算。在需求的情况下,能够辅导模型编写和运转代码,而不是自己进行核算。特别是,能够辅导模型即将运转的代码放入特定格局,如三重反引号。在发生输出后,能够提取并运转代码。最终,假如必要,能够将代码履行引擎(如Python解说器)的输出作为模型下一次查询的输入。

SYSTEM
你能够经过将代码包括在三重反引号中来编写和履行Python代码,例如 ```代码在此```。运用这种办法来进行核算。
USER
找出以下多项式的一切实数根:3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10

代码履行的另一个好用处是调用外部API。假如模型在API的正确运用上得到了辅导,它就能够编写运用这个API的代码。能够经过向模型供给文档和/或代码示例来辅导模型怎么运用API。

SYSTEM
你能够经过将代码包括在三重反引号中来编写和履行Python代码。别的留意,你能够运用以下模块协助用户向朋友发送音讯:
```python
import
 message
message.write(to="John", message="Hey, want to meetup after work?")

正告:履行由模型发生的代码本质上并不安全,任何期望履行此操作的运用都应该采纳预防措施。特别地,需求一个沙箱化的代码履行环境来限制不受信赖的代码或许导致的损害。

战略:体系地测验改动

有时候,很难确认一个改动——例如,新的指令或新的规划——是否使你的体系更好或更差。观察几个比如或许会暗示哪个更好,但是在小样本的情况下,很难区分真正的改善和随机命运。或许这种改变在某些输入上提高了功能,但在其他输入上却降低了功能。

评价程序(或“评价”)对优化体系规划很有用。杰出的评价具有以下特性:

  • 代表实际国际的运用情况(或至少多样化)
  • 包括许多测验用例,以取得更大的统计才能(见下表作为攻略)
  • 易于主动化或重复
检测到的差异 95%置信度所需的样本大小
30% ~10
10% ~100
3% ~1,000
1% ~10,000

输出的评价能够由核算机、人或两者混合完成。核算机能够运用方针规范(例如,具有单一正确答案的问题)以及某些片面或含糊的规范主动化评价,其间模型输出由其他模型查询进行评价。OpenAI Evals 是一个开源软件结构,供给用于创建主动化评价的东西。

当存在一系列被认为是平等高质量的或许输出(例如,关于具有长答案的问题)时,根据模型的评价或许有用。哪些能够用根据模型的评价真实地进行评价,哪些需求人来评价的鸿沟是含糊的,随着模型变得越来越有才能,这个鸿沟正在不断地移动。咱们鼓舞进行试验,以确认根据模型的评价对你的用例有多大的效果。

战术:参照规范答案评价模型输出

假定已知一个问题的正确答案应该参阅一组特定的已知实际。然后,咱们能够运用模型查询来核算答案中包括了多少必需的实际。

例如,运用以下的体系音讯:

SYSTEM
您将取得由三个引号界定的文本,这应该是问题的答案。检查以下的信息是否直接包括在答案中:
- 尼尔阿姆斯特朗是第一个登上月球的人。
- 尼尔阿姆斯特朗第一次走上月球的日期是1969721日。
关于这些点,请履行以下步
骤:
1 - 重述这一点。
2 - 供给一个来自答案的引证,这个引证最挨近这一点。
3 - 考虑一个不了解这个主题的人读了引证是否能够直接推断出这一点。在做决定之前,解说为什么或为什么不。
4 - 假如3的答案是肯定的,写“是”,不然写“否”。
最终,供给一个“是”的答案的数量。将这个数量作为{"count": <insert count here>}供给。

下面是一个比如,其间两个要点都得到了满足:

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:逐渐推理提交的答案与专家答案比较,是:不相交、子集、超集,还是有持平的信息集。
进程2:逐渐推理提交的答案是否与专家答案的任何部分对立。
进程3:输出一个JSON对象,结构如下:{"containment": "disjoint" or "subset" or "superset" or "equal", "contradiction": True or False}

这是一个输入比如,其间的答案质量较差:

SYSTEM
<insert system message above>
USER
Question: """尼尔阿姆斯特朗最著名的事情是什么,它发生在什么时候?假定UTC时刻。"""
Submitted Answer: """他在月球上
走了一圈吗?"""
Expert Answer: """尼尔阿姆斯特朗最为人所知的是他是第一个踏上月球的人。这一前史性的事情发生在1969年7月21日,是NASA的阿波罗11号使命的一部分。阿姆斯特朗踏上月球外表时说的名言:"那是人类的一小步,却是人类的一大步",至今仍被广泛引证。
"""

这是一个有好答案的输入示例:

SYSTEM
<insert system message above>
USER
Question: """尼尔阿姆斯特朗最著名的事情是什么,它发生在什么时候?假定UTC时刻。"""
Submitted Answer: """在1969年7月21日的大约02:56 UTC时刻,尼尔阿姆斯特朗成为第一个踏上月球外表的人,标志着人类前史上的一项伟大成就。大约20分钟后,奥尔德林也参加到他的队伍。"""
Expert Answer: """尼尔阿姆斯特朗最为人所知的是他是第一个踏上月球的人。这一前史性的事情发生在1969年7月21日,是阿波罗11号使命的一部分。"""

相关材料

  • ****OpenAI 官方 Blog:****运用 ****OpenAI API 进行提示词工程的最佳实践:****关于怎么构建一个 AI 运用,从提示词工程到向量数据库、微调等等的详细攻略。

help.openai.com/en/articles…

这篇文章首要针关于 GPT-3,或许相对而言有些过时,但也是一个入门的不错挑选。

  • **微软发布的关于构建 AI 运用的概念和学习材料:**关于怎么构建一个 AI 运用,从提示词工程到向量数据库、微调等等的详细攻略。

learn.microsoft.com/en-us/azure…

这儿也有一些相关的开源材料库房:

  • 关于提示词工程(prompt)的攻略、论文、讲座、笔记本和资源大全:github.com/yunwei37/Pr…
  • 运用 OpenAI API 的比如和中文攻略:github.com/yunwei37/op…
  • 关于大言语模型的安全问题:提示词对抗、破解攻防的东西和事例调集:github.com/yunwei37/pr…