【发布】SuperCLUE-Code3:中文原生等级化代码能力测评基准
项目地址:https://github.com/CLUEbenchmark/SuperCLUE-Code3
文章地址:www.CLUEbenchmarks.com/superclue_code3.html
# SuperCLUE-Code3
1. 理念
2. SC-Code3与HumanEval的区别与联系
3. 示例
示例1
示例2
示例3
示例4
示例5
4. 测评及计分方式
整体测评流程包括:1.获取模型答案;2.提取功能函数;3.测试功能函数;4.计算模型得分。
1.获取模型答案:
使用特定的prompt要求模型按照特定格式回答,以方便后续提取。对于一个代码补全问题,每个模型获取一次答案。
2.提取功能函数:
获取到模型回复之后,结合prompt要求和模型回答设定规则提取函数代码,并且统计模型回复遵循指令要求的情况。
3.测试功能函数:
对于一个代码补全问题,将提取得到的代码和该问题对应的所有测试用例组装成一个可运行的单元测试程序(示例如下),在沙箱环境运行(沙箱环境python版本设置为3.9)。注意,针对一个题目需要通过所有单元测试,才算通过。否则为未通过。
4.计算模型得分:
对于一个代码补全问题,构成一个单元测试,通过测试得1分。首先分别计算模型在初级,中级,高级题目的平均得分score_level1,score_level2, score_level3,然后计算加权得分。
按照问题难度的等级设定权重,初级,中级,高级权重分别设置1,2,3。模型最终得分为:
测试示例:
from typing import List
def inclusion_list(list1:list[float], list2:list[float]) -> bool:
"""给定两个数字列表,判断list1是否包含list2中的所有元素?
>>> inclusion_list([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], [3.0, 4.0, 5.0])
True
>>> inclusion_list([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0], [3.0, 4.0, 5.0, 8.0])
False
"""
return all(elem in list1 for elem in list2)
def check(candidate):
assert candidate([1.1, 1.2, 2.0, 3.0, 3.5], [0, 1.1, 2.1]) == False
assert candidate([1.1, 1.2, 2.0, 3.0, 3.5], [1.1, 1.2, 2.0]) == True
assert candidate([1.0, 2.0, 3.0, 4.5, 5.1], [1.0]) == True
check(inclusion_list)
5. 难度的划分
# 测评结果
1. 总体成绩
说明:使用模型时,生成代码时解码方式统一为:greedy;指令遵循率,为模型是否遵循了规定的格式来输出最终答案。deepseek-coder-6.7b指的是deepseek-coder-6.7b-instruct。
2. 分难度等级的成绩
# 结论及分析
国际代表性大模型在SC-Code3功能性单元测试中整体表现优于国内中小型模型,特别在高级难度的任务上展现出较强的编码能力;此外,指令遵循率普遍较高,表明各模型较好地理解并执行了给定任务。
分析结论:
1. 国际大模型表现突出:GPT-4-0125-preview作为国际大模型,在加权得分上达到68.00,非加权得分为78.97,明显高于其他模型,尤其是在高级难度得分上达到52.63,表明其对复杂问题的处理能力强。
2. 初级难度得分普遍较高:所有模型在初级难度得分上的表现普遍不错,例如GPT-4-0125-preview在初级难度得分为88.89,这表明大部分模型能够较好地处理基础编程任务。
3. 国内小模型在中等难度上有潜力:deepseek_coder6.7B_greedy作为国内小模型,在中级难度得分上达到46.27,接近一些国际大模型如Gemini 1.0 Pro的53.73,显示出国内模型在特定级别的任务上具有竞争力。
4. 高级难度是分水岭:高级难度的得分在各模型间表现出较大差异,国际大模型如GPT-4的得分为44.74,而国内小模型如XVERSE-13B-2-Chat仅为21.05,说明在处理更复杂的编码问题时,大模型的优势更加明显。
5. 部分国际模型中文代码能力表现不足:以Code-Llama-13b-instruct为例,它的加权得分仅为21.11,远低于国际大模型GPT-4系列的平均得分超过60,deepseek-coder-6.7b-instruct的48分。尤其在高级难度得分上,Code Llama 13B只有7.89分,这与它在初级难度得分(52.22分)的良好表现形成鲜明对比,表明其在处理更复杂中文代码任务时效果有限。
这可能是因为这些模型在训练时没有针对中文编程语境进行充分的优化,或者是因为国内模型在理解中文编程语境方面有天然的优势。因此,我们不能仅仅根据模型的国际声誉来评估其在特定任务上的有效性。
6. 指令遵循率高,但仍有改进空间:尽管指令遵循率普遍高于85%,如GPT-4系列模型均达到了100%,但仍有部分国际模型如Gemini 1.0 Pro和Code-Llama-13b-instruct的在中文使用场景的指令遵循率小于10%,表明在中文理解和遵循指令方面,上仍有提升的空间。
需要注意的是,我们本次测试了一批国际上代表性的模型,包含了较大参数的模型,而国内模型测试中本次主要是针对参数量较小的模型,后续将添加更多模型。
# 如何申请应用及联系方式?
加入交流群或添加微信交流。现征集代码大模型测评,有意愿参与代码测评的厂商可发送邮件至contact@superclue.ai,标题:SuperCLUE-Code3测评集