跳转到主要内容

OpenAI昨天发布了一个新的ChatGPT API。很多人都很兴奋尝试它。但它与现有的API相比究竟如何?要有一个明确的答案还需要一段时间,但这里有一些初步的想法。因为我很懒,我还注册了ChatGPT API本身的帮助来帮助进行此评估。困惑的别这样,我们进去吧。

相关链接:

我们正在评估什么任务?

在本文中,我们将评估特定数据集上问答链的性能。这个链进行查询,执行“检索”步骤在向量存储中查找相关文档,然后执行“生成”步骤将它们与原始查询一起传递给模型以获得答案。我们将保持“检索”步骤不变,所以我们只是在评估链的“生成”步骤。

我们在比较哪些模型/提示?

首先,我们得到了标准的text-davinci-003模型,带有标准的VectorDBQAChain提示。

我们想将其与ChatGPT进行比较。有两种可能的方法可以做到这一点。一种是使用一个包装器,并将ChatGPT处理为只有另一个LLM。另一种方法是尝试更本地地使用ChatGPT API。

我的意思是什么?ChatGPT API与GPT-3 API的不同之处在于,它接受消息列表(而不是单个字符串)并返回消息。这些消息本质上是具有两个字段的dict:内容和角色。两者都在提示中使用。内容字段可以是任何内容,而角色字段应该是用户、系统或助理之一。据推测,该模型被训练为将用户消息视为人工消息,将系统消息视为某些系统级配置,并将助手消息视为来自助手的先前聊天响应。

那么,我们如何利用它来回答问题呢?让我们回顾一下我们需要传递的信息。有三个组成部分:

  • 说明(关于如何回答、格式等)
  • 用户问题
  • 检索到的内容

指令似乎应该是第一条信息,并具有系统的作用。用户问题似乎应该有用户的角色,但不太清楚它应该去哪里。目前还不清楚检索到的内容应该在消息列表中扮演什么角色或处于什么位置。请注意,我说的是“应该”,但我们的理解可能在不久的将来会改变。

关于如何组合用户问题和检索到的内容片段的一些想法:

  1. 将这些内容放在系统消息中,并告诉模型只使用这些信息。
  2. 将每段内容作为自己的消息(助理或用户角色)放在对话中间
  3. 把用户的问题放在第一位,然后为每一条内容发一条消息(带角色助理),然后再发另一条用户消息,要求用户回答这些内容。

有很多选择!为了这个实验的目的,我选择了选项2,将角色设置为用户,并指示模型在回答时只使用用户之前告诉它的信息。

我们是如何评估的?

我们使用了我们通常用作玩具的简单的“国情咨文”。然后,我们从这个数据集中生成了一堆问题和相应的答案。这是使用GPT-3完成的,使用我们现有的问答生成管道。然后,我们通过两个链(GPT3和ChatGPT)运行每个问题。然后,我们使用GPT3和ChatGPT对答案进行了评估。具体来说,我们有另一个称为QAEvalChain的链,它使用GPT3来评估问答回答。我们创建了一个相应的QAEvalChatChain,它使用ChatGPT API做类似的事情。为了在上面加上一个樱桃,我们创建了一个QACompChatChain,它接受问题、真实答案和预测答案,并对它们进行比较。

在这篇文章中,我们将主要关注评估人员的结果。因此,从元的角度来看,我们使用语言模型来评估语言模型,但(暂时)我们仍然是评估评估者模型的人。

那么结果是什么呢?

请在此处查看我们的完整结果。为了速度/简单性,我们只评估了7个问题,所以这涉及到非常小的样本量问题。

请注意,导入的代码仍在一个分支上,因为我们正在为这个新的Chat范式找出最佳抽象。

首先,GPT3是如何对这两个模型进行评分的?

  • GPT3分级GPT3:4/7
  • GPT3分级聊天GPT:4/7

ChatGPT是如何对这两个模型进行评分的?

  • ChatGPT评分GPT3:5/7
  • ChatGPT评分ChatGPT:4/7

看看差异在哪里很有趣。有一个例子是,GPT3对GPT3和ChatGPT都被评为不正确,但ChatGPT对两者都被评是正确的。还有一个单独的例子,GPT3对两者的评分都是正确的,但ChatGPT对ChatGPT的评分是不正确的。让我们看看。

首先,GPT3分级为不正确但ChatGPT分级为正确的示例:

在这里,由于答案的冗长,GPT3可能将其评为不正确,但ChatGPT并不介意。另一种解释可能是,ChatGPT更能真正理解“赞扬她的法律能力”与给出的答案是一致的。

接下来,GPT3对这两种情况都评为正确,但ChatGPT对ChatGPT评为不正确的例子。

我们可以在这个例子中看到,GPT3几乎与真实答案完全相同。这几乎可以肯定是因为我们使用了GPT3来生成问答对。ChatGPT的答案更详细,虽然在技术上没有错误,但它不像GPT3的答案那样具体和直接。同样,这可能是由于使用GPT3来生成问题/答案对。自我注意:可能需要为未来手动策划一个测试集。

直接比较呢?

我们所做的最终评估是向ChatGPT给出问题、答案和两个预测答案,并要求其比较答案。在此处综合结果:

  • GPT3比ChatGPT更简洁
  • ChatGPT比GPT3更详细
  • 聊天GPT比GPT3更有礼貌

请记住,这不仅仅是基本模型,还有所使用的提示。因此,这并不是两种模式之间的真正比较,而是现有的链条。

接下来的步骤

探索ChatGPT API还有很多工作要做!如何最好地使用角色参数?系统角色的实际作用是什么?这种新型API的正确抽象是什么?

只有时间才能证明。激动人心的时刻!