AI · 2023-06-15

OpenAI官方GPT最佳实践

OpenAI 在其官方文档中更新了一篇关于提高 GPT 使用效果指南:GPT best practices,其中包含了六种核心策略。

希望用户通过这些方法更好地使用 GPT 模型,获得更理想的结果。

原文地址:

https://platform.openai.com/docs/guides/gpt-best-practices/six-strategies-for-getting-better-results

原文内容非常干,肠胃不好的同学可以先吸收橘色部分和加粗部分,剩下的慢慢消化。

提高结果的六种策略

一. 指令要清晰
二. 提供参考文本
三. 将复杂任务拆分为更简单的子任务
四. 给 GPT 时间“思考”
五. 使用外部工具
六. 系统化地测试变更

一. 指令要清晰

GPT 无法读取你的思想,所以别让它猜。直接提出需求的细节或上下文。

策略:

·在查询中包含详细信息,以获得更相关的答案。

·要求模型扮演某个角色。

“系统”可以理解为总体的要求,“用户”则是每个具体的需求。

·使用分隔符清晰地表示输入的不同部分。

三重引号、XML 标记、章节标题等分隔符可以帮助区分要区别对待的文本部分。任务越复杂,消除任务细节的歧义就越重要。


·指定完成任务所需的步骤。

·提供示例。

·指定输出的期望长度。

目标输出长度可以根据单词、句子、段落、要点等的计数来指定。


二. 提供参考文本

GPT经常一本正经的胡说八道,所以为 GPT 提供参考文本可以避免它虚构和捏造回答。

策略:

·指示模型使用参考文本进行回答。

·指示模型使用参考文本中的引用进行回答。

 

三. 将复杂任务分解为简单子任务

化繁为简。将复杂任务重新定义为一系列较简单任务的工作流程。

策略:

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

“意图分类”就是将用户的请求进行分类,然后根据分类的结果来决定如何处理这个请求。

假设例如,对于客户服务应用,查询可能被有用地分类如下:

基于客户查询的分类,可以向GPT模型提供一组更具体的指令来处理下一步。例如,假设客户需要帮助”故障排除”。

·对于需要非常长对话的对话应用程序,总结或过滤以前的对话。

这个策略是为了解决GPT模型上下文窗口大小有限的问题:

一种可能的解决方案是对对话的历史部分进行总结。另一种可能的解决方案是只选择对当前问题最相关的  对话历史。

·逐段概括长文档并递归构建完整概要。

对于非常长的文档,例如一本书,我们可以使用一系列的查询来分段总结文档的每个部分。然后,将各部   分的总结进行连接和总结,从而生成总结的总结。

 

 

四. 给 GPT 时间“思考”

立即回答不如想好了再说。推理过程可以帮助 GPT 更可靠地推理出正确答案。

策略:

·指示模型在得出结论之前自行解决问题。

但是这位同学的解法其实是不正确的!我们可以通过提示模型首先生成自己的解决方案来让模型成功注意到这一点。

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

内心独白的思想是指导模型将要对用户隐藏的输出部分放入一种易于解析的结构化格式中。然后在向用户展示输出之前,解析输出并只让部分输出可见。

另一种方法是使用一系列查询,其中除最后一项外,所有的输出都对最终用户隐藏。

首先,我们可以要求模型自己解答问题。

接下来,我们可以让模型使用所有可用的信息来评估学生的解答是否正确。

最后,我们可以让模型使用自己的分析来构造一个有帮助的导师的回答。

·询问模型是否在之前的处理中漏掉了任何内容。

五. 使用外部工具

一个好汉三个帮。通过为 GPT 提供其他工具的输出来弥补它们的弱点。

策略:

·使用基于嵌入的搜索来实现高效的知识检索。

可以想象你有一个巨大的图书馆,图书馆中有无数的书籍。当用户提出一个问题时,嵌入式搜索就像是一个超级图书管理员,它可以快速找到与用户问题最相关的书籍或信息,并将这些信息提供给模型。

·使用代码执行来执行更准确的计算或调用外部 API。

我们不能依赖GPT本身来精确执行算术或长时间的计算。在需要这种情况的时候,模型可以被指导去编写并运行代码,而不是自己做计算。

对于执行代码,另一个好的用例是调用外部API。如果指导模型正确使用 API,则它可以编写使用它的代码。

 

六. 系统化地测试变更

新的变更会把系统变得更好还是更糟?需要定义一个全面的测试套件(也称为“评估”)。

评估程序(或称为”evals”)对于优化系统设计是非常有用的。好的评估程序具有以下特点:
代表真实世界的使用情况(或至少具有多样性)
包含许多测试用例以获得更大的统计能力(参见下表的指南)
易于自动化或重复

策略:

·使用参考标准答案评估模型输出。

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

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

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

这是一个示例输入,其中只有一个点得到满足:

这是一个不满足的示例输入:

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

这是一个带有不合标准答案的示例输入,但与专家答案并不矛盾:

这是一个示例输入,其答案直接与专家答案相矛盾:

这是一个带有正确答案的示例输入,它还提供了比必要的更多的细节: