Page 121 - 《软件学报》2026年第6期
P. 121

2440                                                       软件学报  2026  年第  37  卷第  6  期


                 法, 分析  AKD  方法设计的合理性和必要性, 论证基于           AKD  方法在代码生成任务中的有效性、适用性和泛化性.
                  4.1   实验数据
                    CodeAlpaca 数据集旨在训练指令遵循的          LLM  模型以生成代码. 使用预训练的大语言模型             text-davinci-003,
                 生成一系列新颖的任务, 任务信息包括任务说明               (instruction)、输入  (input) 和预期输出  (output), 其中  40%  的数据
                 是有输入的. 该数据集被广泛应用于代码生成领域的研究. 本文从                    CodeAlpaca 数据集中选取    1 000  条数据作为测
                 试集, 剩下的数据作为训练集.
                    对学生模型进行蒸馏后, 引入两个主流的代码生成数据集                   HumanEval [49] 及  MBPP [50] 以评估学生模型.
                    HumanEval: 该评估数据集是一个由       OpenAI 创建并用于评估大型语言模型编程能力的专业数据集. 该数据集
                 包含  164  个  Python  编码问题, 均由人类编写, 确保了问题的质量和多样性, HumanEval 数据集被应用于多种大模
                 型, 如  Code Llama [19] 、CodeGen [20] 和  WizardCoder [36] , 以评估代码生成能力. 如图  2(a) 所示, 每个生成任务包含  5
                 部分: 1) task_id, 每个任务的唯一标识; 2) prompt, 一段文本语句, 指导大模型生成需求; 3) entry_point, 函数的名称,
                 是生成的代码函数的主要入口点; 4) canonical_solution, 规范解, 每个任务的标准解决方案; 5) test, 测试, 带有几个
                 测试用例的函数, 用于评估大模型生成的代码.
































                            (a) HumanEval 中第1个样本示意图                       (b) MBPP 数据集处理前后示意图
                                       图 2 HumanEval 样本与   MBPP  数据集处理前后示意图

                    MBPP: 该数据集旨在测试模型对          Python  代码的生成能力. 由   Google Research  团队精心设计, 包含  974  个由
                 入门级程序员解决的简短编程任务, 其中训练集                374  条, 验证集  500  条. MBPP  数据集提供编程问题的文本描述,
                 以及用于检验代码功能正确性的测试用例, 每个生成任务平均包含                      3  个测试用例. 如图    2(b) 所示, 每个生成任务
                 包含  6  部分: 1) task_id, 每个任务的唯一标识; 2) text, 一段文本语句, 指导大模型生成需求; 3) code, 规范解, 每个任
                 务的标准解决方案; 4) test_list, 带有几个测试用例的测试列表, 用于评估大模型生成的代码; 5) test_setup_code, 执
                 行测试所需的代码导入; 6) challenge_test_list, 用于进一步探究解决方案的更具挑战性的测试列表. 为使                 MBPP  数据
                 集更适合测试并保持格式与          HumanEval 数据集一致, 本文对其进行处理, 最终的生成任务包含两部分: 1) task_id,
                 每个任务的唯一标识; 2) prompt, 一段文本语句, 指导大模型生成需求, 并提供测试用例.
   116   117   118   119   120   121   122   123   124   125   126