OpenAI函数调用和解释的基准测试
特别感谢Roger Yang对本文的贡献
由于Anthropic的Claude模型、OpenAI的GPT模型和Google的PaLM 2模型都是专有的,第三方大型语言模型(LLM)的可观察性主要通过基准测试和评估来进行。在这篇博文中,我们使用函数调用和解释来对OpenAI的GPT模型进行基准测试,评估各种性能指标。我们特别关注GPT模型和OpenAI功能在正确分类虚构和相关的回答方面的表现。下面的结果显示了不同LLM应用系统的速度和性能之间的权衡,以及如何利用这些带有解释的结果进行数据标注、LLM辅助评估和质量检查的讨论。我们提供了下面使用的实验框架,以便从业者可以对默认的分类模板进行迭代和改进。
OpenAI函数调用和解释
通过OpenAI函数调用,您可以描述各种GPT模型的函数,这些函数可以用于输出包含调用这些函数的参数的JSON对象。函数调用本质上充当一种工具或代理,用于以给定格式记录响应,以便可靠地连接OpenAI GPT模型的功能与外部工具和API。至于解释,由于在许多情况下很难理解LLM以特定方式响应的原因,解释的目的是促使LLM证明其输出是正确的还是错误的。然后,您可以给输出附上一个标签(’relevant’或’irrelevant’)和LLM的解释。下面是一个带有解释的“relevant”评估的示例,用于调试LLM的响应。
在下面的结果和权衡部分,我们为两种用例提供了比较表格:预测相关性和预测幻象(分别对应表1和表2)。每个表格都比较了GPT-4-turbo、GPT-4、GPT-3.5和GPT-3.5-turbo在特定提示指令和LLM属性下的各种分类指标(准确率、精确度、召回率和F1得分)的性能。
这四个基础模型通过以下情况进行评估:
- 无函数调用和无解释
- 有函数调用和无解释
- 有函数调用和解释
- 无函数调用和解释
因此,对于没有函数调用和无解释的示例,LLMs中的提示模板保持不变(即普通的提示补全)。具有函数调用和无解释的示例要求LLM将其答案放入只接受枚举作为输入的JSON对象中,具有函数调用和解释的示例要求LLM在同一个JSON对象中同时提供答案和解释(见Google colab笔记本)。
基准测试数据集和评估指标
在LLM输出中正确识别幻觉和相关回答是我们的客户当前正在实施LLM应用的两个最大痛点。为了优化幻觉的LLM评估系统,需要正确识别所有虚构的回答,同时跟踪事实性的输出。对于利用搜索和推荐作为用户体验的一部分的用例,与用户满意度相关的最重要因素是结果的速度和相关性。为了评估LLM系统在相关和无关输出上的性能,您应该了解关键指标:
- 精度和召回率:检索到的信息有多相关?
- 准确性:响应的上下文准确程度如何?
- 延迟:系统提供响应所需的时间有多长?
- 用户反馈:结果的相关性和响应时间如何影响用户体验?
结果与权衡
下面是对LLM系统在无关和相关预测方面进行基准测试的结果:
下面是对LLM系统在幻觉和事实预测方面进行基准测试的结果:
在分析结果之前,您可以在此Google Colab笔记本中自行复现这些结果。请注意,由于LLMs的非确定性特性,您通常无法完全复制这些表中的数字,但对于此笔记本,我们已添加了一个种子以进行采样,因此每次结果都相同。此外,我们还添加了分层采样,使二元类别恰好为50/50。请注意,使用您的OpenAI API密钥运行此笔记本会导致计算成本。默认样本数设置为2,但如果您想要复制此博文中的结果,可以将数量更改为100。
VoAGI处理时间
为了清晰起见,这些比较(使用100个样本)在Google Colab上使用标准的OpenAI API帐户和密钥运行。因此,当在不同的设置上运行时,延迟值可能不会准确,但最慢和最快的模型将被重现。
另外,使用解释来评估可能需要3-20倍的时间来编译(这与函数调用无关)。
对于整体相关性的模型预测能力
- 延迟:GPT-3.5-instruct > GPT-3.5-turbo > GPT-4-turbo > GPT-4
对于幻觉的模型预测能力
- 延迟:GPT-3.5-instruct > GPT-3.5-turbo ~ GPT-4-turbo > GPT-4
在带有函数调用的GPT模型中,延迟往往比没有函数调用的LLMs略高,但请注意,这有几个注意事项。首先,延迟是从OpenAI返回给我们的HTTP头中提取的,因此根据您的帐户和发出这些请求的方法,延迟值可能会变化,因为它们是由OpenAI内部计算的。对于您的用例,函数调用的权衡也取决于。例如,如果您的用例是结构化数据提取,那么直接使用OpenAI函数调用API进行工作将是最简单的。
总体而言,具有函数调用的LLMs与不使用函数调用且使用普通提示完成的LLMs表现相当。您是否决定在提示工程中使用OpenAI函数调用API,将取决于您的用例和输出的复杂性。
GPT模型性能比较
对于整体相关性的模型预测能力:
- 性能:GPT-4 ~ GPT-4-turbo ~ GPT-3.5-turbo >>> GPT-3.5-instruct
针对幻觉的模型预测能力:
- 性能:GPT-4 〜 GPT-4-turbo > GPT-3.5-turbo > GPT-3.5-instruct
有趣的是,无论在哪种使用情况下,使用解释并不总是能提高性能。下面将详细介绍。
评估指标
如果您正在决定选择哪个LLM来预测相关性,您可以使用GPT-4、GPT-4-turbo或GPT-3.5-turbo。
GPT-4-turbo能够准确地识别输出是否相关,但会牺牲召回所有50个例子,实际上即使使用解释,召回率也不比抛硬币好。
GPT-3.5-turbo也存在同样的权衡,同时具有较低的延迟和较低的准确性。根据这些结果,GPT-4具有最高的F1分数(精确度和召回率的调和平均值)和总体最佳性能,同时与GPT4-turbo运行时间相当。
GPT-3.5-instruct预测所有内容都是相关的,因此不适用于预测相关性。有趣的是,使用解释后,预测性能显著提高,尽管它仍然不如其他LLMs。此外,GPT-3.5-instruct无法使用OpenAI的函数调用API,预计将在2024年初被弃用。
如果您正在决定选择哪个LLM来预测幻觉,您可以使用GPT-4、GPT-4-turbo或GPT-3.5-turbo。
结果显示,与GPT-4-turbo相比,GPT-4更常正确识别出虚构和事实性输出(多出约3%的时间),无论是在精确度、准确度、召回率还是F1值方面。
虽然GPT-4和GPT-4-turbo的表现略优于GPT-3.5-turbo(请注意,在得出这个小差距不是噪声之前,应使用更多样本),但如果您打算使用解释,也许与GPT-3.5-turbo合作会更值得。
预测虚构和实际返回的解释,对于GPT-3.5-turbo来说比GPT-4和GPT-4-turbo更快三倍以上,但与GPT-4模型在正确预测幻觉方面的召回率相比,两个GPT-3.5模型的召回率都有所下降。
讨论与影响
在决定使用哪个LLM进行应用程序时,需要进行一系列的实验和迭代来做出决策。同样地,当决定是否使用LLM作为评估器时,也需要进行基准测试和实验。基本上,这些是基准测试LLMs的两种主要方法:LLM模型评估(评估基础模型)和通过可观测性评估LLM系统。
最终,当决定一个LLM是否适合作为您的用例中的性能评估器时,您需要考虑到您系统的延迟以及相关预测指标的性能。在本文中,我们总结了这些模型的开箱性能,没有添加任何增加速度和性能的技术。请记住,所有这些LLMs都使用零-shot模板,因此没有添加例子到LLM提示模板以提高模型输出。由于这些数字是基准,团队可以通过提示工程、提示模板(和存储库)、agents、微调以及像RAG和HyDE这样的搜索和检索应用来改善LLM系统性能。
未来潜在工作:数据标签解释
通过这个基准测试,我们发现一些有趣的例子,通过提供解释可以改变预测的标签。下面的例子在没有使用解释时预测为“相关”,并且实际的标签也是“相关”。由于即使是“黄金数据集”也可能存在错误标注(尤其是对于更主观的任务),一个合理的解释来自LLM可能足以编辑实际的标签。这可以被视为一种LLM辅助的评估或质量检查。
下面是一个来自维基数据集的相关示例,注意列‘D’是数据集提供的实际标签,列‘E’是没有调用函数和解释的预测标签,而列‘F’是使用解释(没有调用函数)创建的预测标签,解释在列‘G’中。因此,列‘E’和列‘F’&‘G’是来自两个单独的LLM调用的响应。F&G是从下图中的同一调用中生成的。
下表显示了一个示例,其中我们有一个实际标签=“相关”,一个没有调用函数的LLM预测标签=“相关”,但当要求LLM首先提供解释时,标签变为“不相关”。和我们遇到的几个类似的例子一样,LLM对将检索到的回答标记为“不相关”的论证是有效的。虽然我们中的许多人经常思考罗马帝国,但我们可以同意,“罗马帝国持续了多久?”的多段回答既不简洁也不相关,不能引发最终用户的积极反馈。对于需要标记数据的公司来说,LLM辅助评估有很多可能性,包括成本和时间的节约。这以及解释提供的可见性,以及LLM返回它们的参考(用于预测的文档),都是LLM可观察性空间的重大进展。
结论
希望本文能为希望更好地理解和平衡性能和速度的LLM应用系统的团队提供一个良好的起点。正如大家所知,生成式人工智能和LLMOps领域正在迅速发展,因此,观察这些发现和该领域随时间的变化将会很有趣。
有问题吗?请联系我们!