前言
本文基于编程调用的方式,对智谱、阿里、百度、讯飞的 6 款大模型进行了评测,文末附有 git 源码链接。评测结果为个人意见,仅供参考。
评测对象
- 智谱清言
- GLM-4
- 阿里
- 通义千问 Max
- 通义千问 Plus
- 百度
- ERNIE-BOT
- ERNIE-BOT 4.0
- 讯飞
- 星火大模型 3.5
为什么选择这几家的大模型呢?
- 他们算是目前比较主流的大模型,都提供了编程调用的接口。
- 对开发者友好,基本都提供了一定的免费使用额度。
这些模型里的 GLM-4,星火 3.5,ERNIE-Bot 4.0 是各自厂家最强的大模型;阿里的通义千问 Max 和 Plus 哪个更强,没有找到资料,它们之所以入选,是因为 Max 限时免费,Plus 和百度的 ERNIE-Bot 价格一样,正好做个对比。
作为一个开发者,以后的开发可能会用到大模型,现在国内大模型百花齐放,百家争鸣,我都有选择困难症了。所以这个评测也是希望能为项目选型提供一些依据。
费用和接入难度
请看下表
模型 | 费用 | 接入方式 | 难易 |
---|---|---|---|
GLM-4 | 限时免费 | https | 易 |
通义千问 Max | 限时免费 | https | 难 |
通义千问 Plus | 0.012元/千tokens | https | 难 |
ERNIE-Bot | 0.012元/千tokens | https | 略难 |
ERNIE-Bot 4.0 | 0.12元/千tokens | https | 略难 |
星火 3.5 | 限时免费 | wss | 略难 |
这里面,GLM-4 的接入最简单,文档质量高,其接口风格和 openAI 比较一致。这一点我觉得是个优势,毕竟 openAI 可以说是业界标杆,有条件的话 openAI 是首选,熟悉它的 api 还是很有必要的。
通义千问大模型,要通过阿里百炼平台接入,接入难度大,主要原因还是文档,组织比较乱,到处跳转,文档质量也不高。
卡壳的点是鉴权,我是想自己搞定这个鉴权的,理论上阿里云的所有服务,鉴权逻辑是一致的。我有使用 kotlin 接入阿里云 OSS 服务的鉴权经验,不过百炼平台的鉴权我没搞定,文档太 tm 难懂了,最后我放弃了,导入阿里云的 SDK 库实现了鉴权。
最初我是用主账号进行鉴权的,一直失败,提示没有权限。这就让人迷惑,主账号难道不是天然就拥有所有权限吗?后来我专门创建了一个 RAM 子账号并授权才算是搞定了。
百炼平台里调用大模型,你要先创建应用,让这个应用去绑定大模型。一个应用只能绑定一个大模型,如果你想使用不同的大模型,那你要给每个模型创建一个应用。这是个什么样的天才设计?
百度千帆平台,和百炼半斤八两,也不好用。鉴权不难,接口和 openAI 风格有点不一致,因为思维惯性,我一开始还以为他们不支持 system 角色,后来发现他们接口参数和 openAI 还是有不少的差异。另外,接口还支持输出 json 格式,这个应该是他们的模型进行了针对性的训练,实际表现不错。千帆上的大模型,也要通过创建应用来调用,优点是一个应用即可以调用所有大模型。
千帆平台上的 ERNIE 系列模型没有免费的,我注册千帆账号比较早,刚注册时赠送的代金券已经过期了,为了这次评测只能充值了。
最后就是讯飞了,和百度一样,先创建应用,这个应用可以调用所有的模型。鉴权也不难,我搞不懂的是,为啥只支持 wss 协议。而且还是短链接,一次调用完成,服务端会主动断开的。在 http 协议普遍支持 keep-Alive 的今天,wss 协议反而明确使用短链接,这是不是有点走回头路?
总之,在接入难度这一点,GLM-4 表现最优。
能力评测
大模型的能力评测,我打算从以下几个方面来进行
- 通用能力,我只评测【翻译】能力
- 指令的理解能力
- 指令的遵循能力
- 响应时间
在之前有关大模型的文章里,我实现了一个智能翻译机器人:小英。本次评测,依然使用小英来进行,我给每个大模型输入相同的 system prompt 和 user prompt,根据大模型的输出,来评价其能力,评价将依据以下几点
- 能否正确识别输入的语言
- 识别出语言后,是否按我指定的名称返回,比如我指定名称是“英文”,它可能返回 “English”,这就有点不合格,不过尚可接受
- 能否识别出输入的是不适合翻译的内容,比如是一段代码
- 翻译本身有没有问题?
- 对于英文输入的特殊处理
- 是否提取了关键词,并标注了美式音标,进行了详细的讲解
- 是否识别出拼写错误,并返回了正确的拼写
- 是否能按要求返回 json 格式
- 返回的 json 格式是否标准?比如换行是否进行了转义
- 接口响应时间
大模型的输出是自然语言,我要求它输出 json,实际上这个要求对大模型来说,很难。所以我的程序有一定的容错能力,我使用了一个比较简单的方法来提取输出内容里的 json,就是查询 {
和 }
之间的内容,作为要解析的 json 字符串。但是如果 json 里的换行没有被转义,那我也无能为力,将视为测试失败。
我准备了一些语料,对每个模型使用相同的语料来做测试。大模型的输出可参考附录,你也可以从 gitee 下载源码自行测试。下表是评测结果
模型 | 成功率 | 失败明细 | 平均响应时间 |
---|---|---|---|
GLM-4 | 80% | json 解析失败,换行未转义 json 格式不标准,未正确结束 |
3,313 ms |
通义千问 Max | 80% | 输入为程序代码,解释内容填入到翻译字段 英文提取关键词过多 |
8,883 ms |
通义千问 Plus | 80% | json 解析失败 输入为中文,从译文里提取了关键词 |
3,933 ms |
ERNIE-Bot | 20% | 将正常语句识别为程序代码,5次 将中文识别成英文 英文关键词提取过多,2次 |
4,893 ms |
ERNIE-Bot 4.0 | 100% | 无 | 13,392 ms |
星火 3.5 | 40% | 输出自然语言而不是 json 中文识别成英文 英文未提取关键词讲解 提取过多关键词 json 解析失败,换行未转义 未识别拼写错误 |
5,649 ms |
根据评测结果得出结论
声明:每个模型就跑了一轮测试。这个结论具有相当的偶然性。
- GLM-4 的问题是,如果输入里有换行,很容易输出无法解析的 json。优点是,响应速度还不错。
- 通义千问 Max 和 Plus 很难评价谁更强,不过 Max 是相当的慢,大概因为它免费,所以用的人多,导致算力不足?
- 百度 ERNIE-Bot 可以说是不够智能,它区分不出来一句话是不是程序代码,也无法遵循英文输入最多提取 3 个关键词的指令,这个表现,跟同价位的 通义千问-Plus 比差距颇大。就一个字:免费也不要用它。
- 百度 ERNIE-Bot 4.0,相当的强悍,是唯一个通关所有测试的模型。关键词提取质量也相当高。缺点嘛,速度相当的慢,另外它的价格,是 ERNIE-Bot 的 10 倍。
- 星火 3.5,作为讯飞最强的大模型,加油吧。。。
- 关于输出 json 格式,百度的 2 款模型都没有在这方面丢分,表现是独一档的。
个人推荐
综合性价比,GLM-4、千问-Max,并列第一,感兴趣的同学,赶紧去领免费礼包。
- GLM-4 各方面能力比较平均,响应“比较快”,当然这是和其他模型比较的结果。缺点是 json 里的多行文本处理不行。
- 千问-Max 的问题是接入困难,响应慢,优点是英文关键词的提取质量不错。
不差钱直接上 ERNIE-Bot 4.0,全方位、高质量领先其他大模型。但是它实在是太慢了,我不明白这是模型本身的问题,还是算力的问题。按道理来说,这么贵的价格,算力应该是配足的,那这个慢就可能是模型本身的问题了?
另外,小英的 prompt 最初是基于 GLM-4 进行开发的,是在 GLM-4 上经过验证,表现基本达到要求以后,直接应用到其他大模型,这也使得 GLM-4 赢在了起跑线上。
附录
gitee 源码
https://gitee.com/refusea/xiaoying
小英在线体验
https://read.refusea.com/xiaoying.html
测试日志
https://gitee.com/refusea/xiaoying/tree/master/test
阿里云的灵积模型服务是提供OpenAI接口的
https://help.aliyun.com/zh/dashscope/developer-reference/compatibility-of-openai-with-dashscope/?spm=a2c4g.11186623.0.0.287df400Rt5b5s