2 个月前
BigCodeBench:使用多样化的函数调用和复杂指令对代码生成进行基准测试
Terry Yue Zhuo, Minh Chien Vu, Jenny Chim, Han Hu, Wenhao Yu, Ratnadira Widyasari, Imam Nur Bani Yusuf, Haolan Zhan, Junda He, Indraneil Paul, Simon Brunner, Chen Gong, Thong Hoang, Armel Randy Zebaze, Xiaoheng Hong, Wen-Ding Li, Jean Kaddour, Ming Xu, Zhihan Zhang, Prateek Yadav, Naman Jain, Alex Gu, Zhoujun Cheng, Jiawei Liu, Qian Liu, Zijian Wang, David Lo, Binyuan Hui, Niklas Muennighoff, Daniel Fried, Xiaoning Du, Harm de Vries, Leandro Von Werra

摘要
自动化软件工程在大型语言模型(LLMs)编程方面的最新进展中得到了极大的推动。尽管当前的基准测试显示,LLMs 可以像人类开发人员一样执行各种软件工程任务,但大多数评估仍局限于简短且自包含的算法任务。解决具有挑战性和实际性的编程任务需要具备利用多种函数调用作为工具的能力,以高效实现数据处理和网页开发等功能。此外,使用多个工具解决问题需要通过准确理解复杂指令来进行组合推理。同时满足这两个特性对 LLMs 来说是一个巨大的挑战。为了评估 LLMs 在解决具有挑战性和实际性的编程任务方面的能力,我们引入了 Bench 基准测试,该基准测试要求 LLMs 从 139 个库和 7 个领域中调用多个函数来完成 1,140 个细粒度的编程任务。为了严格评估 LLMs,每个编程任务平均包含 5.6 个测试用例,分支覆盖率高达 99%。此外,我们提出了一种面向自然语言的 Bench 变体——Benchi,它自动将原始文档字符串转换为仅包含必要信息的简短指令。我们对 60 种 LLMs 进行了广泛的评估,结果显示这些模型尚不能完全遵循复杂指令精确使用函数调用,得分最高仅为 60%,远低于人类开发者 97% 的表现。结果强调了在这一领域进一步发展的必要性。