本技术涉及人工智能,特别是涉及一种代码生成方法、装置、计算机设备、存储介质和产品。
背景技术:
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、上述代码生成方法、装置、计算机设备、存储介质和产品,目标测试集包括所述公共测试集和所述候选代码组对应的附加测试集,而目标代码组是根据候选代码组在对应的目标测试集上的运行结果确定的,因此,目标代码组综合考虑了候选代码组在公共测试集上的运行结果和候选代码组在候选代码组对应的附加测试集上的运行结果,相比仅考虑候选代码组在公共测试集上的运行结果,显然,目标代码组的准确性较高,因而,提高了生成的代码的准确性。