越南FPT 软件 AI 中心和富布赖特大学的研究人员推出新型基准测试工具REPOEXEC,它用于评估代码生成模型(CodeLLMs)在处理整个代码库级别的任务时的能力。REPOEXEC的核心目标是测试这些模型生成的代码是否可执行、功能正确,并且能够准确利用跨文件的上下文信息。实验结果表明,尽管预训练的大型语言模型(LLMs)在功能正确性方面表现优异,但在有效利用提供的依赖性方面还有待提高。而经过指令调整的模型在管理依赖性方面表现更好,尽管有时可能会生成过于复杂的代码。此外,多轮调试测试显著提高了模型在依赖性管理方面的表现。REPOEXEC为开发更可靠、更适用于现实世界场景的代码生成模型铺平了道路。
- GitHub:https://github.com/FSoft-AI4Code/RepoExec
例如,你是一个软件开发者,正在使用一个代码生成模型来帮助编写一个Python函数,该函数需要将骆驼命名法(CamelCase)的字符串转换为蛇形命名法(snake_case)。REPOEXEC可以评估模型生成的代码是否能够正确执行这个任务,并且是否能够利用代码库中已有的相关函数和变量。例如,如果模型生成的代码没有正确调用一个名为is_camel_case
的依赖函数来检查输入字符串是否有效,REPOEXEC将能够识别这个问题,并评估模型在依赖性使用方面的表现。
主要功能和特点:
- 可执行性:REPOEXEC确保生成的代码不仅语法正确,而且在现实环境中可以完全执行。
- 功能正确性:通过自动生成高覆盖率的测试用例,REPOEXEC验证代码是否能够准确执行其预期任务。
- 依赖性使用:REPOEXEC提供了一个流程来评估CodeLLMs如何利用代码依赖性,并通过实验引入了一个新的指令调整数据集,以增强模型有效利用这些依赖性的能力。
工作原理:
- 函数和依赖性提取:REPOEXEC使用静态分析来识别目标函数及其依赖项,包括同一文件内和跨文件的依赖性。
- 测试用例生成:为了评估代码功能,REPOEXEC利用大型语言模型自动生成测试用例,并通过执行这些测试用例来验证代码的正确性。
- 依赖性调用率(DIR):REPOEXEC引入了一个新的度量标准,即依赖性调用率,用于衡量提供的依赖项被成功整合到生成代码中的比例。
具体应用场景:
- 代码生成和验证:在实际开发场景中,REPOEXEC可以用来测试和验证代码生成模型生成的代码是否符合项目架构和预期功能。
- 教育和研究:在教育环境中,REPOEXEC可以作为教学工具,帮助学生理解代码依赖性和测试用例的重要性。
- 模型调优和改进:研究人员可以使用REPOEXEC来评估和改进代码生成模型,使其更好地理解和利用代码库中的上下文信息。
0条评论