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, 一段文本语句, 指导大模型生成需求, 并提供测试用例.

