本技术涉及人工智能,特别是涉及一种针对代码生成模型的测试方法及装置。
背景技术:
1、代码生成模型是近年来随着人工智能和机器学习技术的快速发展而兴起的一种技术,它能够利用深度学习模型自动生成代码,核心思想是将编程任务自动化,通过输入自然语言描述、编程需求或者部分代码,模型能够自动产生符合要求的代码,从而提高开发效率,减少人工编写代码的工作量。
2、然而,在训练得到代码生成模型后,对于代码生成模型的性能很难评估,通常需要通过人力观察采纳率的方式来评估模型的性能,人力成本高且效率低下。
技术实现思路
1、有鉴于此,本技术提供了一种针对代码生成模型的测试方法及装置,用以高效地实现针对代码生成模型的性能评估,节约人力成本。
2、本技术提供了如下方案:
3、第一方面,提供了一种针对代码生成模型的测试方法,所述方法包括一轮以上的测试;
4、其中,每一轮测试包括:
5、从数据集中获取代码作为第一代码,所述数据集包括一个以上的代码;
6、将所述第一代码剪裁掉其中的部分内容,得到第二代码;
7、利用所述第二代码生成提示指令,将所述提示指令提供给所述代码生成模型,得到所述代码生成模型针对所述第二代码生成的第三代码;
8、利用所述第二代码和所述第三代码得到第四代码;
9、比对所述第一代码和所述第四代码,得到比对结果;
10、利用所述一轮以上测试得到的所述比对结果,获取所述代码生成模型的性能测试结果。
11、根据本技术实施例中一可实现的方式,将所述第一代码剪裁掉其中的部分内容,得到第二代码包括:
12、对所述第一代码进行解析以构建所述第一代码对应的代码树,所述代码树包括代码块之间的层级关系;
13、从所述代码树中至少一个分支的非起始位置开始剪裁掉该至少一个分支的后续部分或全部内容。
14、根据本技术实施例中一可实现的方式,从所述代码树中至少一个分支的非起始位置开始剪裁掉该至少一个分支的后续部分或全部内容包括:从所述代码树中选取至少一个代码块,依据预设的剪裁策略对所述代码块进行剪裁;
15、其中,所述剪裁策略包括:
16、从所述至少一个代码块的非起始位置开始,剪裁掉所述至少一个代码块的后续部分;或者,
17、剪裁掉所述代码块中括号结构内的内容;或者,
18、从所述至少一个代码块的起始位置到该代码块的子节点的起始位置之间确定开始剪裁位置,从所述至少一个代码块的结束位置到该代码块的子节点的结束位置之间确定结束剪裁位置,剪裁掉所述开始剪裁位置和所述结束剪裁位置之间的部分。
19、根据本技术实施例中一可实现的方式,利用所述第二代码生成提示指令包括:
20、利用所述第二代码、所述裁剪的位置以及提示在所述裁剪的位置进行代码补全的信息,生成提示指令。
21、根据本技术实施例中一可实现的方式,利用所述第二代码和所述第三代码得到第四代码包括:
22、将所述第三代码拼接到所述第二代码中所述剪裁的位置,得到第四代码。
23、根据本技术实施例中一可实现的方式,在比对所述第一代码和所述第四代码之前,还包括:
24、对所述第四代码进行语法校验;
25、若校验通过,则确定本轮测试语法正确,继续执行比对所述第一代码和所述第四代码的步骤;否则,将本轮测试语法错误的结果记录于错误日志。
26、根据本技术实施例中一可实现的方式,比对所述第一代码和所述第四代码,得到比对结果包括:
27、对所述第一代码进行解析构建所述第一代码对应的代码树,以及对所述第四代码进行解析构建所述第四代码对应的代码树;
28、比对所述第一代码对应的代码树以及所述第四代码对应的代码树;
29、若所述第四代码对应的代码树相比较所述第一代码对应的代码树,在所述裁剪的位置对应的层级上未增加代码块,则确定所述代码生成模型本轮测试补全正确;
30、所述性能测试结果包括所述一轮以上测试的补全正确率。
31、根据本技术实施例中一可实现的方式,所述方法还包括:
32、利用所述错误日志确定所述一轮以上测试的语法正确率,所述性能测试结果包括所述语法正确率。
33、根据本技术实施例中一可实现的方式,所述方法还包括:
34、利用所述代码生成模型从被输入提示指令到生成所述第三代码的时长,确定所述代码生成模型的推理速度;
35、利用所述一轮以上测试中所述代码生成模型的推理速度,得到所述代码生成模型的评估推理速度,所述性能测试结果包括所述评估推理速度。
36、根据本技术实施例中一可实现的方式,所述数据集中代码所包含代码块的数量呈正态分布。
37、根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
38、根据第四方面,提供了一种电子设备,包括:
39、一个或多个处理器;以及
40、与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述第一方面中任一项所述的方法的步骤。
41、根据第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
42、根据本技术提供的具体实施例,本技术公开了以下技术效果:
43、1)本技术在每一轮测试中,将数据集中的第一代码进行剪裁得到第二代码后,将第二代码提供给代码生成模型生成第三代码,将第二代码和第三代码得到第四代码后,通过多轮测试中第一代码和第四代码之间的比对结果,来获取代码生成模型的性能测试结果。这种方式本质上是将原始代码剪裁后提交给代码生成模型进行“补全”后,比较“补全”后代码与原始代码来评估代码生成模型的性能,整个过程无需依赖人力观察,大大节约了人力成本,并且测试结果更加客观和准确。
44、2)本技术在对第一代码进行剪裁时,基于第一代码对应的代码树中至少一个分支的非起始位置开始剪裁,从而在剪裁时对其他同层级代码块不造成影响,保证上下文的逻辑完成,更贴合代码生成模型的实际“补全”场景。
45、3)本技术中,从代码树中选择代码块,可以基于多种剪裁策略对代码块进行剪裁。这种代码块以及剪裁位置的灵活选择,理论上一个代码就能够剪裁出多个不同的第二代码,从而提高了测试数据(即数据库中的代码)的利用率,降低了需要获取更多测试数据的人力成本。
46、4)本技术利用第二代码、裁剪的位置以及提示在剪裁的位置进行代码补全的信息生成提示指令,从而清楚、准确地指示代码生成模型能够基于第二代码在上述剪裁的位置进行代码补全,以保证测试的准确性。
47、5)本技术可以对第四代码进行语法校验,并基于此生成语法正确率作为性能测试结果中的量化指标之一,该指标能够反映代码生成模型所使用的语法规则是否合理。
48、6)本技术中通过比对第一代码和第四代码分别对应的代码树,判断剪裁的位置对应的层级上是否增加代码块来确定代码生成模型补全是否正确,并将补全正确率作为性能测试结果中的量化指标之一,该指标能够反映代码生成模型使用的代码生成逻辑是否合理。
49、7)本技术中还可以进一步获取每轮测试中代码生成模型的推理速度,从而得到代码生成模型的评估推理速度,并将评估推理速度作为性能测试结果中的量化指标之一,该指标能够反映代码生成模型的响应性能。
50、当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。
1.一种针对代码生成模型的测试方法,其特征在于,所述方法包括一轮以上的测试;
2.根据权利要求1所述的方法,其特征在于,将所述第一代码剪裁掉其中的部分内容,得到第二代码包括:
3.根据权利要求2所述的方法,其特征在于,从所述代码树中至少一个分支的非起始位置开始剪裁掉该至少一个分支的后续部分或全部内容包括:从所述代码树中选取至少一个代码块,依据预设的剪裁策略对所述代码块进行剪裁;
4.根据权利要求1所述的方法,其特征在于,利用所述第二代码生成提示指令包括:
5.根据权利要求1所述的方法,其特征在于,利用所述第二代码和所述第三代码得到第四代码包括:
6.根据权利要求1所述的方法,其特征在于,在比对所述第一代码和所述第四代码之前,还包括:
7.根据权利要求1至6中任一项所述的方法,其特征在于,比对所述第一代码和所述第四代码,得到比对结果包括:
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
9.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
10.根据权利要求1至6中任一项所述的方法,其特征在于,所述数据集中代码所包含代码块的数量呈正态分布。
11.一种针对代码生成模型的测试装置,用以执行一轮以上的测试,其特征在于,所述装置包括:
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
13.一种电子设备,其特征在于,包括:
14.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至10中任一项所述方法的步骤。