注意:OpenAI现已推出托管评估产品并提供API接口!我们建议您直接使用该服务。 详情请参阅Evals
OpenAI Evals 框架包含以下内容
- 一个用于评估LLM(大型语言模型)或基于LLM构建的系统的框架。
- 一个开源的挑战性评估注册表
本笔记本将涵盖:
- 评估简介与OpenAI Evals库
- 构建评估
- 运行评估
什么是评估/ evals?
评估是验证和测试您的LLM应用程序所产生输出的过程。拥有强大的评估("evals")意味着应用程序更加稳定可靠,能够适应代码和模型的变化。评估任务是用于衡量LLM或LLM系统输出质量的方法。给定一个输入提示后,系统会生成输出。我们通过一组理想答案来评估这个输出,从而判断LLM系统的质量。
评估的重要性
如果您正在使用像GPT-4这样的基础模型进行开发,创建高质量的评估是您能做的最具影响力的事情之一。开发AI解决方案涉及一个迭代的设计过程。如果没有评估,理解不同模型版本和提示如何影响您的用例可能会非常困难且耗时。
随着OpenAI的持续模型升级,评估功能让您能够以标准化的方式高效测试模型在您用例中的表现。开发一套针对您目标定制的评估方案,将帮助您快速有效地了解新模型在您用例中的可能表现。您还可以将评估纳入CI/CD流程,确保在部署前达到预期的准确度。
评估类型
评估/评分补全主要有两种方法:在代码中编写一些验证逻辑,或使用模型本身来检查答案。我们将通过一些示例来介绍每种方法。
编写答案检查逻辑
最简单和最常见的评估类型包含一个输入和一个理想的响应或答案。例如, 我们可以设计一个评估样本,其中输入是"奥巴马第一次当选总统是哪一年?", 而理想答案是"2008"。我们将输入提供给模型并获取其补全结果。如果模型回答"2008", 则会被评为正确。我们可以编写字符串匹配来检查补全结果是否包含短语"2008"。 如果包含,我们就认为它是正确的。
考虑另一个评估场景,输入要求生成有效的JSON:我们可以编写一些代码,尝试将完成内容解析为JSON,如果可解析则认为完成正确。
模型评分:一个两阶段过程,首先模型回答问题,然后我们让另一个模型检查回答是否正确。
考虑一个要求模型编写一个有趣笑话的输入。模型随后生成一个完成内容。接着我们创建一个新的模型输入,询问:"以下笑话是否有趣?首先逐步推理,然后回答是或否",并将之前的完成内容包含在内。如果新模型的完成内容以"是"结尾,我们最终认为原始完成内容是正确的。
模型评分在使用最新、最强大的模型(如GPT-4)时效果最佳,如果我们让它们在做出判断前具备推理能力。模型评分会有一定的错误率,因此在规模化运行评估前,通过人工评估验证性能非常重要。为了获得最佳结果,最好使用与生成内容不同的模型进行评分,例如用GPT-4来评估GPT-3.5的答案。
OpenAI 评估模板
在使用评估时,我们发现了几种能适配多种基准测试的"模板"。我们已在OpenAI Evals库中实现了这些模板,以简化新评估的开发工作。例如,我们定义了两类开箱即用的评估模板:
-
基础评估模板: 这些模板包含确定性函数,用于将输出与理想答案进行比较。当期望的模型响应变化很少时,例如回答选择题或具有直接答案的简单问题,我们发现以下模板很有用。
-
模型评分模板: 这些模板包含一些功能,其中大型语言模型会将输出与ideal_answers进行比较,并尝试判断准确性。在期望的模型响应可能存在显著变化的情况下,例如回答开放式问题时,我们发现使用模型自行评分是一种可行的自动化评估策略。