GPT最佳实践-第六部分-系统化地测试改变

更新时间:2023/08/11, 20:01

这部分内容比较难懂,不需要点击示例链接,测试下才明白怎么回事。第五部分(使用外部工具)在这里,更多部分在这里

系统化地测试改变

如果你能测量性能,提高性能就会更容易。在某些情况下,对提示的修改可能会在几个孤立的示例上获得更好的性能,但在更具代表性的示例集合上可能会导致整体性能下降。因此,为了确定一项改变是否对性能产生了净效益,可能有必要定义一个全面的测试套件(也被称为"评估")。

策略:

  • 参考金标准答案评估模型输出。

策略:参考金标准答案评估模型输出

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

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

角色(Role)数据
SYSTEMYou will be provided with text delimited by triple quotes that is supposed to be the answer to a question. Check if the following pieces of information are directly contained in the answer:
- Neil Armstrong was the first person to walk on the moon.
- The date Neil Armstrong first walked on the moon was July 21, 1969.
For each of these points perform the following steps:
1 - Restate the point.
2 - Provide a citation from the answer which is closest to this point.
3 - Consider if someone reading the citation who doesn't know the topic could directly infer the point. Explain why or why not before making up your mind.
4 - Write "yes" if the answer to 3 was yes, otherwise write "no".
Finally, provide a count of how many "yes" answers there are. Provide this count as {"count": <insert count here>}.
我将提供由三引号分隔的文本,该文本应该是对问题的答案。检查答案中是否直接包含以下信息:
- 尼尔·阿姆斯特朗是第一个在月球上行走的人。
- 尼尔·阿姆斯特朗第一次在月球上行走的日期是1969年7月21日。
对于这些要点,执行以下步骤:
1 - 重述该点。
2 - 提供与该点最接近的答案的引述。
3 - 考虑一下,如果一个不了解该主题的人读了这个引文,是否能直接推断出这一点。在做出决定之前,解释为什么能或者不能。
4 - 如果对3的答案是肯定的,就写“是”,否则就写“否”。
最后,提供有多少个“是”的答案。将这个数量提供为{"count": <插入数量>}.

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

角色(Role)数据
SYSTEM<insert system message above>
<插入上述系统消息>
USER"""Neil Armstrong is famous for being the first human to set foot on the Moon. This historic event took place on July 21, 1969, during the Apollo 11 mission."""
"""尼尔·阿姆斯特朗以成为第一个踏上月球的人而闻名。这一历史事件发生在1969年7月21日,阿波罗11号任务期间。"""

OpenAI Playground 示例

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

角色(Role)数据
SYSTEM<insert system message above>
<插入上述系统消息>
USER"""Neil Armstrong made history when he stepped off the lunar module, becoming the first person to walk on the moon."""
"""当尼尔·阿姆斯特朗从月球模块走下来时,他创造了历史,成为了第一个在月球上行走的人。"""

OpenAI Playground 示例

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

角色(Role)dialogue
SYSTEM<insert system message above>
<插入上方的系统信息>
USERIn the summer of '69, a voyage grand,
Apollo 11, bold as legend's hand.
Armstrong took a step, history unfurled,
"One small step," he said, for a new world.

在'69年的夏天,一次伟大的航程,
阿波罗11,大胆如传说中的手。
阿姆斯特朗迈出了一步,历史展开了,
他说:“一小步,为了一个新世界。”

OpenAI Playground 示例

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

角色(Role)dialogue
SYSTEMUse the following steps to respond to user inputs. Fully restate each step before proceeding. i.e. "Step 1: Reason...".
Step 1: Reason step-by-step about whether the information in the submitted answer compared to the expert answer is either: disjoint, equal, a subset, a superset, or overlapping (i.e. some intersection but not subset/superset).
Step 2: Reason step-by-step about whether the submitted answer contradicts any aspect of the expert answer.
Step 3: Output a JSON object structured like: {"type_of_overlap": "disjoint" or "equal" or "subset" or "superset" or "overlapping", "contradiction": true or false}

使用以下步骤来回应用户输入。在进行下一步之前,请完整重述每个步骤,例如:"Step 1: Reason..."。
Step 1: 逐步推理提交答案中的信息与专家答案之间的关系,判断它们是:disjoint(不相交)、equal(相等)、subset(子集)、superset(超集)还是overlapping(重叠,即存在交集但不是子集/超集)。
步骤 2: 逐步推理提交答案是否与专家答案的任何方面相矛盾。
步骤 3: 输出一个结构化的 JSON 对象,格式如下:{"type_of_overlap": "disjoint(不相交)" 或 "equal(相等)" 或 "subset(子集)" 或 "superset(超集)" 或 "overlapping(重叠)", "contradiction": true 或 false}

以下是一个示例输入,其中包含一个质量不佳的答案,但并不与专家答案相矛盾:

角色(Role)dialogue
SYSTEM<insert system message above>
使用上面的数据
USERQuestion: """What event is Neil Armstrong most famous for and on what date did it occur? Assume UTC time."""

Submitted Answer: """Didn't he walk on the moon or something?"""

Expert Answer: """Neil Armstrong is most famous for being the first person to walk on the moon. This historic event occurred on July 21, 1969."""

OpenAI Playground 示例

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

roledialogue
SYSTEM<insert system message above>
使用上面的数据
USERQuestion: """What event is Neil Armstrong most famous for and on what date did it occur? Assume UTC time."""

Submitted Answer: """On the 21st of July 1969, Neil Armstrong became the second person to walk on the moon, following after Buzz Aldrin."""

Expert Answer: """Neil Armstrong is most famous for being the first person to walk on the moon. This historic event occurred on July 21, 1969."""

Question: "Neil Armstrong最出名的是什么事件,它发生的日期是什么?假设使用的是UTC时间。"
Submitted Answer: "在1969年7月21日,尼尔·阿姆斯特朗成为第二个登上月球的人,在巴兹·奥尔德林之后。"
Expert Answer: "Neil Armstrong最出名的是成为第一位登上月球的人。这一历史事件发生在1969年7月21日。"

OpenAI Playground 示例

以下是一个示例输入,其中包含一个正确的答案,并且提供了比所需更多的细节:

角色(Role)dialogue
SYSTEM<insert system message above>
使用上面的数据
USERQuestion: "What event is Neil Armstrong most famous for and on what date did it occur? Assume UTC time."
Submitted Answer: "At approximately 02:56 UTC on July 21st 1969, Neil Armstrong became the first human to set foot on the lunar surface, marking a monumental achievement in human history."
Expert Answer: "Neil Armstrong is most famous for being the first person to walk on the moon. This historic event occurred on July 21, 1969."

Question: "Neil Armstrong最出名的是什么事件,它发生的日期是什么?假设使用的是UTC时间。"

Submitted Answer: "在1969年7月21日的UTC时间02:56左右,尼尔·阿姆斯特朗成为第一位踏上月球表面的人类,这标志着人类历史上的重大成就。"

Expert Answer: "Neil Armstrong最出名的是成为第一位登上月球的人。这一历史事件发生在1969年7月21日。"

OpenAI Playground 示例

其他资源

如需更多灵感,请访问OpenAI Cookbook,其中包含示例代码以及指向第三方资源的链接,例如:

AI奇想空间
AI奇想空间
https://aimazing.site
AI惊奇站是一个汇聚人工智能工具、资源和教程的导航网站。 在这里,你可以发现最新的AI技术、工具和应用,学习如何使用各种AI平台和框架,获取丰富的AI资源。 欢迎广大AI爱好者加入我们的社区,开启你的AI之旅!
AI交流群
Copyright © 2024 AI奇想空间.微信