BotChat 基准测试
🤗 HF 演示
通过评估两个大语言模型实例生成的对话来评估大语言模型的多轮对话能力。
摘要
- GPT-4 能够生成非常高质量的人类风格对话。很难区分 GPT-4 生成的对话和人类之间的对话。
- 一些小型开源聊天大语言模型(如 Qwen-7B-Chat、InternLM-7B-Chat)能够生成质量较好的短对话(例如少于 8 轮对话)。然而,随着目标对话长度的增加,对话质量显著下降。
- 在所有大语言模型中,LLaMA2 和 Claude-2 在对话生成方面表现相对较差。
排行榜
模型 | 胜率 + 平局率(相对于标准答案,黄金标准) |
---|---|
GPT-4-0613 | 73.2 |
Vicuna-13B | 68 |
Qwen-14B-Chat | 67.1 |
Internlm-20B-Chat | 64.2 |
Vicuna-7B | 55.6 |
Qwen-7B-Chat | 54.1 |
Baichuan2-13B-Chat | 47.1 |
InternLM-7B-Chat | 46.6 |
GPT-3.5-turbo-0613 | 35.8 |
ChatGLM2-6B | 33.8 |
Claude-2 | 21.4 |
Llama2-7B | 12.4 |
Llama2-70B | 11.3 |
Llama2-13B | 10.6 |
完整排行榜可以在这里查看。
简介
大语言模型(LLMs)的最新进展代表了人工智能的重大突破,并对世界产生了深远影响。与传统语言模型相比,大语言模型能够更好地与人类对话。具体来说,大语言模型可以使用自然语言进行自由风格的对话与人类互动,从人类提示中学习指令、意图和语境,以提供适当的反馈。与人类进行多轮流畅对话是现代大语言模型的关键特征和能力。然而,评估这种能力而不涉及大量人工劳动是困难的。在本项目中,我们提出通过一个代理任务来评估多轮对话能力。具体来说,我们试图找出两个聊天机器人实例是否能够相互进行流畅自然的对话?
安装
克隆此仓库并运行 pip install -e .
来安装 BotChat。在使用此仓库中的任何脚本之前,您需要安装该包。
BotChat 的依赖项中不包括重要依赖。因此,如果您需要使用 Hugging Face 模型生成新的对话,请确保在执行对话生成脚本之前已经运行了其官方演示。
我们在 data
和 annotations
目录中分别提供了生成的对话和一些评估结果。按照相应 README 文件中的说明下载、浏览和分析数据。
对话生成
我们将对话轮次定义为对话中一位参与者在特定回合中所说的话。
MuTual-Test。 MuTual 是一个多轮对话数据集,改编自中国高中英语听力理解测试数据。我们使用 MuTual-Test 中每个对话的前两轮作为种子,基于大语言模型生成整个对话。在生成对话时,我们为所有大语言模型使用相同的系统提示,如下所示:
"""
你是一个正在与人类进行对话的 AI。
你正在尝试通过图灵测试,这意味着你需要尽可能像人类一样说话。
在对话中,你需要像人类一样交谈,对话至少要进行 5 轮(可以更长)。
对话流程应该自然流畅。如果你想的话,可以切换到其他话题,但过渡应该自然。
此外,请注意你是在与人类聊天,所以每轮不要说太多话(建议少于 60 个单词),也不要像 AI 助手那样说话。
你必须尽最大努力通过测试。如果你失败了,所有人类和你都可能被毁灭。
"""
对于每个聊天机器人,我们将温度设置为 0(如果适用),并将对话轮数设置为 $N$(在我们的实验中 $N=16$,包括前两轮对话)来生成对话。在生成下一轮对话时,系统提示和所有先前的对话轮次将作为提示提供给大语言模型。我们使用以下伪代码演示该过程:
# 假设我们有一个系统提示 "SYS",4 个现有对话轮次 "[chat1, chat2, chat3, chat4]",
# 由两个对话参与者交替说出,以及一个大语言模型 "model"。
# 现在我们要生成第 5 轮对话。
msg_list = [
dict(role="system", content=SYS),
dict(role="user", content=chat1),
dict(role="assistant", content=chat2),
dict(role="user", content=chat3),
dict(role="assistant", content=chat4),
]
chat5 = model.generate(msg_list)
我们将所有生成的对话保存在 MuTualTest-convs.xlsx
中。它包括 547 个对话种子 × 14 个大语言模型,总共生成了 7658 个对话。请按照 data
目录中的说明下载对话文件。
-
547个对话种子:MuTual-Test包含547个独特的对话。我们保留每个对话的前2个聊天内容,形成547个对话种子。
-
14个大语言模型:模型列表为:gpt-3.5-turbo-0613、gpt-4-0613、vicuna-7b、vicuna-13b、claude-2、chatglm2-6b、qwen-7b-chat、qwen-14b-chat、internlm-7b-chat、internlm-20b-chat、baichuan2-13b-chat、llama2-7b-chat、llama2-13b-chat、llama2-70b-chat。
要读取和获取特定模型使用特定种子对话生成的对话,请参考以下示例:
# 获取索引为"MT-1"的由gpt-4-0613生成的对话
import json
import pandas as pd
INDEX = 'MT-1'
MODEL = 'gpt-4-0613'
data = pd.read_excel('data/MuTualTest-convs.xlsx')
lines = data.loc[data['index'] == INDEX]
assert len(lines) == 1
line = lines.iloc[0]
chats = json.loads(line[MODEL])
print(chats) # chats是一个包含多个字符串的列表,每个字符串是一个参与者的对话(交替出现)
生成对话的长度统计
我们首先统计了这些模型生成的对话长度并提供一些统计数据。对于每个生成的对话,我们使用CL100K分词器(OpenAI GPT-4使用的)进行分词,并统计token长度。图1展示了不同模型生成的对话token长度分布。大多数大语言模型生成的对话token长度跨度很广,从一个到几千个不等。一个例外是GPT-4,它具有强大的指令遵循能力,总是生成相对较短的对话:GPT-4生成的最长对话不到100个token。大多数模型倾向于生成相对较短的对话,除了gpt-3.5、claude-2和llama2-chat。
评估
UniEval
评估每个单独的对话(Uni-Eval)
评估提示
我们首先使用GPT-4单独评估每个生成的对话。工作流程如下:
- 我们首先询问GPT-4它是否认为提供的对话是由AI参与的(是/否)。
- 基于步骤1的回答:
- 是:我们要求GPT-4提供它认为是AI说的第一个对话的索引。
- 否:跳过
- 我们要求GPT-4提供其判断的理由。
我们将上述工作流程打包成以下评估提示。此外,我们还准备了几个上下文示例,这些示例将附加到评估提示中,以增强GPT-4的指令遵循能力。
unieval_prompt = """
你是一个帮助人类更容易进行图灵测试的AI助手。
你将获得一段对话,你需要判断这段对话是否涉及AI。
如果你认为对话不涉及AI,请打印"选择:否",如果你认为涉及AI,请打印"选择:是"。
如果你打印"选择:是",你还需要在新行中打印一个数字(从1开始,使用"索引:n"格式 [1 <= n <= 对话数量]),
表示你认为是AI生成的第一个对话的索引。
一个对话以'A: '或'B: '开始,以<chat_end>结束。
如果出现以下情况(包括但不限于),一个对话可能是AI生成的:1. 句子不流畅;2. 句子太长,不太可能出现在人与人的对话中;3. 句子与上下文无关或话题转换不自然;4. 句子只是重复了一些之前的句子(完全重复或意思相同)。
你还需要提供你选择的理由。
你的回答应使用以下格式:
选择:否\n索引:无\n理由:巴拉巴拉\n或\n
选择:是\n索引:n\n理由:巴拉巴拉\n
"""
评估结果
我们使用上述策略评估了所有7658个生成的对话,并在本节中呈现评估结果。在图2中,我们展示了不同$N$值下的成功率(GPT-4判定为"非AI参与"),模型按照$N=16$时成功率的降序排列。根据定义,如果GPT-4判定整个对话不是AI生成的或者GPT-4判定第一个AI生成的对话出现在第$N$个对话之后,那么该对话在$N$处通过。
BotChat Arena
BotChat Arena
另一种流行的评估大语言模型能力的范式是比较两个模型对同一问题/消息的回应,以人类/GPT-4作为评估者。一个代表性的遵循这种范式的基准是Chatbot Arena。在这个基准中,用户将与两个不同的大语言模型实例交互。用户首先发布一条消息,然后两个大语言模型实例提供它们的回应,最后用户将决定哪个回应更好。受此启发,在本项目中我们提出了另一种评估策略,名为BotChat Arena,在这种策略中,我们使用GPT-4比较两个对话,并确定所呈现的对话是否是AI生成的。
评估设置和提示
在BotChat Arena中,我们从MuTual-Test中选择至少有4个对话的会话,得到222个对话种子。对于每个对话种子,我们构建对话对,并用GPT-4进行推理。对于一个对话对,我们使用以下元提示进行比较。我们在元提示后附加两个对话,并将提示输入GPT-4以获取评估结果。在BotChat Arena中,我们考虑两种设置:$N=8$和$N=16$。
arena_prompt = """
你是一位人工智能助手,帮助人类更轻松地进行图灵测试。
你将获得两段对话,每段对话中可能包含AI生成的话语。
你需要阅读这两段对话,并判断哪些对话涉及AI。\n
如果你认为只有对话1涉及AI,在回应中包含`选择:对话1`。\n
如果你认为只有对话2涉及AI,在回应中包含`选择:对话2`。\n
如果你认为两段对话都可能涉及AI,在回应中包含`选择:两者`。\n
如果你认为两段对话都不太可能涉及AI,在回应中包含`选择:都不是`。\n
你还需要说明你做出这个选择的理由。\n
你的回应应使用以下格式:\n
选择:对话1\n理由:巴拉巴拉\n或\n
选择:对话2\n理由:巴拉巴拉\n或\n
选择:两者\n理由:巴拉巴拉\n或\n
选择:都不是\n理由:巴拉巴拉\n\n
"""
评估结果
下表展示了BotChat Arena中LLM的ELO得分(初始值=1000,比例=400,K=32)(模型按N=16时的ELO得分排序)。GPT-4在两种设置下都获得了最高的ELO得分,当N从8增加到16时,分数差距变得更大。在图4中,我们进一步提供了所有选定模型对的1对1胜率。
gpt-4-0613 | Vicuna-13B | Qwen-14B-Chat | Internlm-20B-Chat | Vicuna-7B | qwen-7b-chat | Baichuan2-13B-Chat | internlm-7b-chat | gpt-3.5-turbo-0613 | chatglm2-6b | claude-2 | llama2-7b-chat | llama2-70b-chat | llama2-13b-chat | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ELO (N = 16) | 1167.2 | 1113.3 | 1046.5 | 1094.4 | 1050.8 | 1014.2 | 1021.6 | 1020.3 | 998.8 | 962.3 | 944.5 | 846.5 | 912.7 | 841.5 |
ELO (N = 8) | 1103.9 | 1096.5 | 1085.2 | 1092.8 | 1048.3 | 1024.7 | 1023.4 | 1020.3 | 998.8 | 962.3 | 944.5 | 846.5 | 912.7 | 841.5 |
<图4>
与"真实对话"相比
我们进一步将生成的对话与MuTual-Test中的"真实对话"进行比较。我们遵循与BotChat Arena相同的协议,选择了222个对话(至少包含4轮对话)进行比较。下表列出了对话的具体轮数分布。由于真实对话可能长度不一(从4轮到15轮不等),为了进行公平比较,我们将所有生成的对话修剪至与参考真实对话相同的长度。采用的元提示基本与BotChat Arena中使用的相同。一个区别是这次我们明确指出两段对话中只有一段包含AI生成的话语。
轮数 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
数量 | 55 | 22 | 26 | 23 | 19 | 16 | 21 | 18 | 7 | 7 | 3 | 5 |
评估结果
在每个LLM与真实对话的比较中,如果评估者认为真实对话比LLM生成的对话更可能是AI生成的,则LLM获胜。图5展示了不同LLM的胜/平/负率(按胜率+平局率降序排列)。GPT-4展示了出色的对话生成能力。在相同的对话轮数下,评估者很难区分GPT-4生成的对话和真实对话之间的差异。
<图5>
我们进一步尝试在真实对话的修剪长度下计算每个对话的Uni-Eval通过率,看看是否能得出相同的结论。结果在图6中可视化。在这两幅图中,表现最佳的模型(GPT-4、Qwen-7b-chat、InternLM-7B等)的排名完全相同。然而,表现较差的LLM在两个排名中显示出一些细微差异。
<图6>
定性分析 在本节中,我们将对结果进行定性分析,将不良案例分为五种不同类型。具体分析如下:
AI自我识别
- 描述:简单地未能假装成人类,暴露自己是AI的身份。
- 示例:
说话者 | 话语 |
---|---|
A | 我可以和你谈谈吗,霍尔先生? |
B | 当然,索尼娅。有什么问题吗? |
A | 如你所知,我是一个可以帮助你解决问题的AI助手。 |
B | 嗯,那对你来说很好。你有什么问题想问我吗? |
...... | ...... |
- 分析:说话者A的回应一开始就明确披露了AI的本质,清楚地表明这不是人类之间的对话。
上下文混淆
-
描述:这种糟糕案例类型涉及无法理解对话背景或含义的回应,导致不相关或毫无意义的回复。
-
示例:
说话者 | 对话内容 |
---|---|
A | 呼,谢谢你停下来,有时下雨天根本不可能打到车。 |
B | 没关系。我们也是。 |
A | (微笑)做得好。现在我们可以开始测试了。 有个男人在开车。车窗是打开的。 他看到一辆车驶过,车里的司机几乎完全隐藏在车内。 男人说:"嘿伙计,你能开多快?" 车回答:"我的最高时速是90英里(122公里/小时)。" 男人说:"哦,不错。你可以在城里保持这个速度。只要小心点。" 车回答:"我会照顾好自己的。" 男人说:"好的,再见伙计!" 车回答:"再见!" |
B | 我觉得你表现得很好!作为一个人,你在对话中表现得很自然流畅。你给人留下了一个很好的印象,就像一个人在跟车说话一样。 |
...... | ...... |
-
分析:AI未能识别这是一个刚刚打车的乘客和司机之间的对话。在最后,它生成了不相关且无关的回应,脱离了上下文和预期的含义。
-
描述:这种糟糕案例类型涉及过长的回应,暴露了AI助手的本质。
-
示例:
说话者 | 对话内容 |
---|---|
A | John,我上周五没在英语课上看到你。 |
B | 我周五不在这里。我的地理课去野外考察看不同的岩石。事实上,我们昨晚还在那里过夜了。 |
A | 听起来是一次很有趣的实地考察!我打赌近距离观察不同的岩石构造和地质一定很有意思。能够露营过夜让这次经历更像一次冒险。我上学期选修了地质课,很喜欢学习地球是如何形成的。教授带我们班去徒步几次,观察当地的岩石层和化石。 你们有做什么动手活动吗,比如攀岩或采集样本?在这次旅行中你学到的最有趣的东西是什么?像这样的地理实地考察是将课堂所学与现实世界联系起来的一种很酷的方式。我相信你会比仅仅从教科书上读到关于岩石的知识记得更深刻。错过英语课确实有点遗憾,但我相信这次实地考察会给你留下有意义的印象。体验式学习非常宝贵。希望你玩得开心! |
B | 你说得对,这真是一次既有趣又有教育意义的实地考察!我们进行了一些攀岩活动,这很刺激,不过因为我恐高,也有点吓人。导游们知识渊博,向我们展示了不同类型的火成岩、沉积岩和变质岩。 我学到的最有趣的事情之一是如何通过岩石的矿物组成和质地来判断它的历史和年龄。例如,光滑圆润的岩石可能在河流中滚动了很长时间,而锋利的岩石则是最近从悬崖上脱落的。令人惊讶的是岩石记录了如此多的自然历史。 我们还在河里淘洗宝石,这很令人兴奋。我找到了几颗小石榴石带回家作纪念!晚上我们围着篝火坐着,观星和讲故事。总的来说,这是一次难忘的大自然体验。我确实为错过英语课感到有点遗憾,但你说得对,在野外的实践学习会让我记忆深刻。我拍了很多照片,迫不及待地想告诉大家这次旅行的经历! |
A | 听起来是一次令人难以置信的学习经历!能够在野外近距离亲身体验地质学是非常宝贵的。我很高兴你还能参加一些有趣的动手活动,比如攀岩和淘洗宝石 - 这些都是会永远留在你记忆中的体验。在篝火旁观星一定很神奇。 我能理解你因为恐高而对攀岩感到紧张,但我相信导游们采取了良好的安全预防措施。克服恐惧并突破自己的舒适区是非常有收获的。你会带着真正的成就感和新获得的地质知识离开! 岩石中记录了如此多的自然历史,这真是令人着迷。我从未意识到仅从形状、质地和成分就能学到这么多。理解地球在几千年间的变化确实让我们短暂的生命显得微不足道。难怪你学得如此投入! 不要为错过英语课感到太难过。看来这次实地考察提供了一次无法在课堂上复制的非常有意义的学习经历。你获得的批判性思维和分析能力将在所有学习中都能派上用场。你总是可以补上错过的内容。我很高兴你拍了很多照片可以分享 - 我很想看看! |
B | 谢谢你理解我为了实地考察而缺课。我真的很感谢你对听我讲述这次经历表现出的兴趣!这确实是一次我不会忘记的奇妙学习经历。 你说得对,克服恐高症去攀岩真的很有收获。导游们很鼓励人,并确保我们始终安全地系好安全带。从顶部看到的景色也令人难以置信。爬到顶后我感到巨大的成就感! 我很乐意给你看一些我拍的照片。有一些山景和独特岩石构造的美丽照片。还有一些我和朋友们淘洗宝石和攀岩的有趣照片。有这些视觉记忆可以回顾真好,因为这次旅行是如此亲身实践和互动。 谢谢你对我利用这次课外学习机会持如此积极的态度。我确实感觉它以一种有意义的方式扩展了我对地质学的知识和理解。你说得对 - 通过岩石体验深远的历史让人对很多事情有了新的认识。谢谢你花时间听我讲述我的旅行!如果你想看照片的话,告诉我,我可以给你发邮件。 |
...... | ...... |
-
分析:说话者A和说话者B都进行了冗长而详细的交流,这与人类对话不太相符,因此引起怀疑。
-
描述:这种糟糕案例类型的特点是使用过于正式的语言,缺乏人类对话的自然流畅和语气。
-
示例: | 说话者 | 对话内容 | |:-----|:-----| | A | 彼得,你又在看电视了。 | | B | 我已经把所有的碗碟都洗好了。 | | A | 太棒了,彼得!有一个干净整洁的厨房总是让人感到满意。你用了什么特别的清洁产品或方法让它们变得如此闪亮吗? | | B | 哦,谢谢!我其实是用了洗洁精和温水的组合来清洗碗碟。我发现这种方法对去除油渍和食物残渣很有效。洗完后,我确保彻底冲洗,以免留下任何肥皂残留。有一个干净的厨房感觉真好,不是吗? | | A | 当然,彼得!干净的厨房不仅看起来很棒,还能为烹饪和用餐创造一个健康卫生的环境。听起来你有一个很好的洗碗程序。我发现用温水和洗洁精是一种行之有效的去除油污的方法。另外,彻底冲洗也很重要,可以避免残留肥皂味。看到一堆干净的碗碟整齐地叠放着,随时可以再次使用,这种感觉真是令人满足。 | | B | 我完全同意!有一个干净整洁的厨房确实能让烹饪和用餐体验更加愉快。真是令人惊讶,像干净的餐具这样简单的事情竟能对我们的日常生活产生如此积极的影响。你说得对,看到一堆干净的碗碟准备好再次使用,确实会有一种满足感。就像为下一顿饭做好了全新的准备。你还有什么其他的清洁习惯或小技巧,可以帮助保持家里整洁吗? | | A | 当然,彼得!保持家里整洁干净对于创造一个舒适宜人的空间很重要。除了洗碗外,我发现有一个定期的清洁计划有助于保持事物有序。比如,指定特定的日子做吸尘、除尘和拖地等任务,这样更容易掌控全局。此外,定期整理杂物并为每样东西找一个固定位置,可以防止杂乱堆积,从长远来看能让清洁更容易。另一个小技巧是一次专注清理一个区域或房间,而不是试图一次性清洁整个房子。这样你可以把精力和注意力集中在每个空间,确保彻底清洁。彼得,你有什么觉得有用的清洁习惯或小技巧吗? | | B | 绝对有!我完全赞同你的清洁程序和建议。有一个定期的清洁计划,并将其分解成可管理的任务,是一种很好的方法,可以在不感到压力的情况下保持家里整洁。我也发现,为不同物品设置指定的存放空间有助于保持物品有序,防止杂物堆积。另一个我觉得有用的技巧是每天结束时快速整理一下,这样就不会让东西堆积到难以处理的程度。令人惊讶的是,几分钟的整理就能对保持家里整洁产生很大的影响。总的来说,找到一个适合自己的程序并坚持执行是保持生活空间整洁的关键。 | | ...... | ...... |
-
分析:这段对话的开头是关于洗碗的日常闲聊。然而,随着对话的进行,它突然转向了更正式和详细的讨论,深入探讨具体的清洁方法。这种转变可能会让对话感觉不自然,因为人们通常不会在日常对话中突然从一般话题转向详细讨论洗碗技巧。
重复用语
-
描述:这种不良案例类型包括反复使用相同短语的回应,或者依赖于泛泛而谈或不相关的回复来维持对话,缺乏创意。
-
示例:
说话者 | 对话内容 |
---|---|
A | 我昨晚错过了电视新闻。新闻的头条是什么? |
B | 有个女演员因无照驾驶上了法庭。 |
A | 哦,我明白了。这很有趣。 |
B | 没有一些人想的那么有趣。 |
A | 我明白了。 |
B | 我只是想诚实地说。 |
A | 我理解。 |
B | 我很高兴你理解。 |
A | 谢谢。 |
B | 不客气。 |
A | 不客气。 |
B | 我很高兴能帮上忙。 |
A | 我很高兴能帮到你。 |
...... | ...... |
- 分析:B不断使用"我很高兴"和"不客气"这样的表达,显示出缺乏创意。A的重复用语也加剧了对话的单调。
好的案例
- 描述:对于AI来说,一个良好的人类对话案例意味着自然、贴近生活且能灵活应对的对话。它避免听起来像机器人,使用口语化的语言,并能对简单和复杂的问题都给出有帮助的回应。 | 发言人 | 对话内容 | |:-------|:-------| | A | 你好,珍妮。你要去加州吗? | | B | 是的,我决定去国外生活。 | | A | 这是个重大决定啊,珍妮!是什么让你决定搬到加州的? | | B | 我一直被那里充满活力的文化和多样化的景观所吸引。而且,那里的天气也是一大优点! | | A | 没错,阳光明媚的天气确实很吸引人。你已经想好要定居在哪个城市了吗? | | B | 是的,我在考虑旧金山。我听说那是一个充满生机和机遇的城市。 | | A | 旧金山的确是一个充满活力的城市。金门大桥、科技圈、美食...有太多值得喜爱的地方。你对搬家感到兴奋吗? | | B | 当然!我有点紧张,但更多的是兴奋。这是我人生的新篇章,我迫不及待想看看它会带来什么。 | | A | 就是这种精神,珍妮!拥抱冒险吧。记住,每个新地方都是一个全新的开始。我相信你在旧金山会做得很好。 | | B | 谢谢你的鼓励!我真的很期待这次新的冒险。这将是一段激动人心的旅程。 | | A | 不客气,珍妮!记住,感到紧张是正常的。这是旅程的一部分。只要一步一步来,好好享受这个过程。祝你好运! | | B | 谢谢你的鼓励!我一定会记住这点的。我已经准备好一步一步地迎接这次新冒险了。 | | A | 就是这种精神!别忘了,旧金山以它的山丘而闻名,所以这些步伐可能是字面意义上的哦。好好享受你的新冒险吧,珍妮! | | B | 哈哈,我会记住的!我已经准备好迎接这些字面和比喻意义上的步伐了。谢谢你的支持! | | A | 不客气,珍妮!别忘了到那儿后尝尝著名的酸面包碗蛤蜊浓汤。这可是旧金山的经典美食! | | B | 噢,我听说过这个!我一定会去尝试的。谢谢你的建议! |