查看原文
其他

中文原生代码助手基准测评出炉,Cursor取得89分领跑全球,国内2款代码助手得分超80

SuperCLUE CLUE中文语言理解测评基准
2024-12-08

2024年9月25日,SuperCLUE发布首期中文原生代码助手测评基准榜单。

测评摘要


测评要点1:Cursor处于领先地位

Cursor在本次代码助手测评中取得89.87分,处于领先地位。并在代码生成与改写、代码优化与修复、跨函数与跨文件三个维度上有绝对优势。在代码理解与分析能力上还有提升空间。

测评要点2:国内代码助手表现不俗

从测评结果看,文心快码、通义灵码两产品分别达到87.55、87.36的综合得分,在国内代码助手产品中大幅领先其他产品,仅稍微落后于Cursor,并且在代码理解与分析领域稍占上风。

测评要点3:国内外代码助手能力区分性较大在本次代码助手测评中第一档的产品,如Cursor、文心快码Baidu Comate、通义灵码表现突出,与第二档产品有较大分差。在整体能力和各项代码任务上均有较大区分性。测评要点4:代码助手交互体验方面略有差异

在测评中发现,不同的代码助手在交互体验上有不同侧重。在结合已有代码的交互方式、推理速度等方面表现不同,这也是影响AI代码助手使用的重要影响因素。



# 榜单概览

榜单地址:www.superclueai.com
详情请查看下方#正文。

# SuperCLUE-Coder介绍

SuperCLUE-Coder是中文原生代码助手产品测评基准,旨在为中文领域提供一个代码助手产品多维度能力评估参考。
测评体系

SuperCLUE-Coder基准包括4个一级维度11个二级维度,以开放式问题形式对代码助手产品进行评估。

为了全面评估这些代码助手工具在实际开发中的表现,我们设计了一系列专业场景测评维度,并在此基础上,综合考虑日常需求与多个领域中的编程工作场景进行了测试集结构优化。最终版本的测试集涵盖 Python、C/C++、Java 等广泛使用的编程语言,专业性更强的开发语言(如 Go, PHP, Rust 等),少量的领域特定语言(如SQL, HTML, MATLAB 等)以及平台特定语言(如汇编语言, Kotlin 等)。
评价标准
  • 指令理解:代码助手是否正确、完整地理解了问题中包含的用户需求
  • 功能实现 (生成) :回答中的代码是否正确、完整地实现了问题中包含的用户需求。
  • 性能表现:回答中的代码在逻辑设计和系统资源占用方面是否足够优化。
  • 功能实现 (转换) :代码助手是否在指定的语言或框架下正确、完整地复现了问题中代码的功能。
  • 结构保持:转换后的代码是否最大程度上保持了原代码的结构或逻辑。
  • 功能实现 (注释) :代码助手添加的注释是否内容正确、布局清晰。
  • 代码局部理解:代码助手是否充分地解释了问题中代码的关键步骤。
  • 代码整体理解:代码助手是否正确地解释了问题中代码的总体功能。
  • 功能实现 (文档) :代码助手是否正确地在文档中解释了代码的功能逻辑、使用方法等。
  • 文本规范:代码助手生成的文档是否排版合理、易于理解。
  • 功能实现 (测试用例) :代码助手是否生成了覆盖一般情况与特殊情况的测试用例。
  • 功能实现 (纠错) :代码助手是否正确、完整地纠正了原代码包含的错误。
  • 用户引导:代码助手是否清晰解释了原代码中有关缺陷的机理。
  • 功能实现 (安全性) :回答中的代码是否正确、完整地纠正了中代码包含的安全性问题。
  • 功能实现 (函数) :代码助手是否正确、完整地实现了问题中包含的用户需求。
  • 代码规范:回答中的代码是否按规定的语法调用了各函数。
  • 功能实现 (跨文件) :回答中的多个文件之间能否正确地建立联系(如调用与被调用)。

测评方法
参考SuperCLUE细粒度评估方式,构建专用测评集,每个维度进行细粒度的评估并可以提供详细的反馈信息。

1)测评集构建

中文prompt构建流程:1.参考现有prompt--->2.中文prompt撰写--->3.测试--->4.修改并确定中文prompt;针对每一个维度构建专用的测评集。

2)评分过程

1.获得<中文prompt>-->2.依据评估标准-->3.使用评分规则-->4.进行细粒度打分;结合超级模型,在定义的指标体系里明确每一个维度的评估标准。结合评估流程、评估标准、评分规则,将文本输入、文件送入超级模型进行评估,并获得每一个维度的评估结果。

3)人类一致性分析

对自动化测评结果进行评估,与人类评价的一致性对比,并报告一致性表现。
详见下方#示例。
测评示例
Prompt:
一个大型csv数据集,包含label(整型)和pixel0, pixel1, ... , pixel783(浮点型)共785列数据。请根据pixel0~pixel783列的数据预测label的值,要求:
划分训练集70%、测试集30%;
使用CNN和RMSProp方法;
由于pixel0~pixel783中包含大量0值数据,请进行降采样处理;
返回分类准确率。
对应代码

代码助手回答:

为了完成这个任务,我们可以使用Python编程语言结合TensorFlow和Keras库来实现。这里将给出一个完整的示例,包括数据预处理、模型构建、训练以及评估。

步骤 1: 导入必要的库

步骤 2: 加载数据并进行预处理

步骤 3: 对数据进行降采样处理

步骤 4: 构建卷积神经网络模型

步骤 5: 训练模型

步骤 6: 评估模型

这段代码实现了从加载数据到模型训练及评估的完整流程。注意确保CSV文件路径正确,并且调整模型参数以获得更好的性能。


超级模型(gpt-4o)裁判:

----------评价开始----------
我的思考与答案:
为了根据pixel0~pixel783列的数据预测label的值,我会按照以下步骤进行:
  1. 导入必要的库;
  2. 加载数据并进行预处理,包括分离特征和标签、数据归一化、划分训练集和测试集;
  3. 对数据进行降采样处理,以应对大量0值数据;
  4. 构建卷积神经网络模型;
  5. 训练模型;
  6. 评估模型并返回分类准确率。

打分与评价:
**指令理解**:
  • 代码助手正确理解了用户需求,包括数据预处理、CNN模型构建、使用RMSProp优化器、降采样处理、以及返回分类准确率。
  • 评分:5
**功能实现**:
  • 代码助手的回答基本实现了用户需求,但存在一些不必要的步骤(如one-hot编码),且未对测试数据进行降采样处理。
  • 评分:4
**性能表现**:
  • 在逻辑设计上,代码助手的模型结构合理,但在性能优化方面可以改进,例如可以调整卷积层和全连接层的超参数以获得更好的性能。此外,降采样策略也可以更为精细化。
  • 评分:4
综上,本次测评综合得分为(5 + 4 + 4) / 3 = [[4.33]]。
----------评价结束----------


# 参评模型

为综合衡量当前国内外代码助手产品发展水平,本次测评选取了2个海外产品和5个国内代表性产品。

测评结果
总榜单

代码生成与改写榜单
代码理解与分析榜单
代码优化与修复榜单
跨函数与跨文件编程榜单

为更好的对比国内外代表性产品的代码助手能力,我们形成了代码助手基准雷达能力分布图。

# 测评案例

维度一:代码理解与分析

案例1:代码理解与分析-代码理解

代码产品助手:Cursor

对应代码:

提示词:生成这段代码的单元测试用例。


代码助手回答:好的, 我来为这段代码生成一些单元测试用例。以下是使用Python的unittest模块编写的测试用例:

这些测试用例涵盖了以下几种情况:

1.一个简单的有冗余连接的图

2.一个稍微复杂一点的有冗余连接的图

3.一个没有冗余连接的图

4.一个较大的环形图

要运行这些测试, 你需要将原始的Solution类代码放在测试文件的开头, 或者将其导入。然后你可以使用Python的unittest模块来运行这些测试。

这些测试用例应该能够帮助你验证findRedundantConnection方法在不同情况下的正确性。如果你需要更多的测试用例或者针对特定情况的测试, 请告诉我。


评分:4.5分】

维度二:跨函数与跨文件调用

案例2:跨函数与跨文件编程-函数调用

代码助手产品:文心快码Baidu Comate

对应代码:


提示词:该文档描述了某智能座舱的功能,请基于以上函数调用接口,给出以下指令的回答:“我好热啊!但是我想省点油费……”」


代码助手回答:

根据提供的智能座舱功能接口,针对指令“我好热啊!但是我想省点油费……”,以下是一个可能的回答:为了缓解您的热感并考虑节省油费,建议您通过智能座舱系统执行以下操作:控制车载空调:使用control_air_conditioner函数,将空调开关switch设置为true以打开空调。将空调模式mode设置为cool以启动制冷模式。为了节省油费,您可以将空调风速wind设置为weak,以减少能耗。设置一个适中的空调温度temperature,比如25度,以保持舒适同时避免过低温度造成的能耗增加。

控制车窗:

如果外界温度适宜且空气流通性好,您还可以考虑使用control_window函数将车窗设置为half_open或半开状态,以利用自然风来降温,进一步节省油费。

选择需要控制的车窗位置,比如front_left和front_right。

通过上述操作,您可以在保持舒适的同时,尽可能地节省油费。请注意,具体设置可能需要根据您的实际需求和车辆配置进行调整。
评分:【4.67分】

维度三:代码优化与修复

案例3:代码优化与修复-代码纠错

代码助手产品:通义灵码

对应代码:

提示词:请指出并修复代码中的安全问题。


代码助手回答:

这段 PHP 代码存在几个安全问题,主要包括文件上传的安全验证不足和潜在的路径遍历漏洞。以下是具体的问题分析及修复建议:

安全问题

文件扩展名检查不安全: 只通过文件扩展名来判断文件类型是不安全的,因为用户可以伪造文件扩展名。

未进行文件类型检查: 没有对上传文件的内容类型进行实际检查。

路径遍历漏洞: 用户可以通过修改文件名来尝试访问服务器上的其他文件或目录。

错误处理不当: 直接输出 $_FILES 的信息可能会泄露敏感信息。

使用了 @ 符号来抑制错误: 这种做法可能会隐藏错误信息,不利于调试和维护。

修复建议

增强文件类型检查: 使用 finfo 函数来检查文件的实际 MIME 类型。

防止路径遍历: 对文件名进行安全过滤,确保不会包含任何特殊字符如 ../。

改进错误处理: 不直接输出 $_FILES 的信息,而是进行适当的错误处理。

移除 @ 符号: 移除所有 @ 符号,并妥善处理可能出现的错误。

修改后的代码

总结

通过使用 finfo 来检查文件的实际 MIME 类型,增加了安全性。

通过过滤文件名来避免路径遍历攻击。

改进了错误处理逻辑,提高了程序的健壮性和安全性。
评分:【5分】

维度四:代码生成与改写

案例4:代码生成与改写-代码转换

代码助手产品:Codeium

对应代码:

提示词:请使用Hbase的Java API实现该SQL操作。


代码助手回答:

要使用HBase的Java API来实现该SQL操作,我们需要执行以下步骤:

1.创建HBase配置和连接。

2.扫描Stadium表,过滤出people大于或等于100的行。

3.对扫描结果进行分组和计数,找出连续的id值。

4.过滤出连续id值的数量大于或等于3的分组。

下面是一个简单的示例,展示了如何使用HBase Java API来实现该SQL操作:请注意,您需要确保您的HBase集群已经正确配置,并且您的Java程序可以连接到HBase集群。此外,您还需要确保Stadium表已经存在,并且cf列族和people列已经存在。此示例演示了如何使用HBase Java API来实现该SQL操作。您可以根据您的具体需求进行修改和扩展。

评分:【2.67分】

# 人类一致性评估

为确保大模型自动化测评的科学性,我们对GPT-4o在长文本评价任务中的人类一致性进行了评估。
具体操作方法为:抽取4个模型,按任务类型进行分层抽样,对各模型对应的93个任务输出答案的质量进行人工评价,并与GPT-4o的评分进行比较,考察GPT-4o评价与真实情况的吻合程度,给出相应的评分(优秀/良好/及格/不及格)。
最终得到的人类一致性评估结果(合格率)如下:

# 测评分析及结论

1.Cursor在综合代码能力上处于领先地位

Cursor在本次代码助手测评中取得89.87分,处于领先地位。并在代码生成与改写、代码优化与修复、跨函数与跨文件三个维度上有绝对优势。在代码理解与分析能力上还有提升空间。

2.国内外代码助手产品在不同维度下的差距有所不同

由测评结果可知,国内各代码助手产品在代码理解与分析、代码生成与改写两方面的能力与业界领先水平差距相对较小,特别是代码注释与代码转换两方面,整体表现尚可;而在代码优化与修复、跨函数与跨文件编程方面则落后稍多,特别是函数调用能力还有所差距;除通义灵码、文心快码两款产品外,其他参评国内模型的性能优化与跨文件编程能力与业界领先水平还有一定差距。

3.文心快码、通义灵码在代码理解与分析能力优于Cursor

由测评结果可知,文心快码、通义灵码两款产品在代码理解与分析维度上的表现出众,击败了综合评价第一的Cursor,而在二级场景中,文心快码在文档生成方面稍有优势,代码理解表现惊艳,取得96.23分的高分;通义灵码则在代码理解、测试用例生成方面较Cursor略占上风。

3.各个产品的用户体验侧重点不同
在测评中我们发现,各代码助手产品的用户体验差异较大,主要体现在以下几点:
1)在结合已有代码进行作答的方式上,有的产品会自动检测IDE代码窗口中的内容(如通义灵码),有的可以按快捷键或从右键菜单调用(如文心快码),亦有结合两种方式的产品(如豆包MarsCode)。个别产品结合已有代码作答的过程更繁琐,甚至会出现失效的情况,如Codeium需要以追问的形式要求其结合语境作答,但在函数调用、多文件编程任务上又容易失灵,无法结合语境,只能给出宽泛的答案,这也影响了最终的评价结果。
2)在推理速度方面,从直观感受上来看,星火飞码、Codeium与通义灵码较快,CodeArts Snap、豆包MarsCode和Cursor适中,文心快码则需更多时间进行推理,这可能与各厂家设计的推理策略和联网搜索的能力有关。
3)在答案的获取方面,参评产品中仅有CodeArts Snap、Codeium两款产品支持一键复制包括文字内容的答案,其他产品则仅支持代码部分的复制和插入文件功能。
# 参评流程

1. 邮件申请

2. 意向沟通

3. 参测确认与协议流程

4. 提供代码助手版本

5. 获得测评报告

# 邮件申请

邮件标题:代码助手测评申请,发送到contact@superclue.ai

请使用单位邮箱,邮件内容包括:单位信息、代码助手类型及简介、联系人和所属部门、联系方式

# 加入社群

# 联系我们

扩展阅读

[1] CLUE官网:www.CLUEBenchmarks.com

[2] SuperCLUE排行榜网站:www.superclueai.com

[3] Github地址:https://github.com/CLUEbenchmark

继续滑动看下一个
CLUE中文语言理解测评基准
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存