BigCodeBench: Het benchmarken van codegeneratie met diverse functieaanroepen en complexe instructies
BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Complex Instructions
June 22, 2024
Auteurs: 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
cs.AI
Samenvatting
Geautomatiseerde software-engineering is aanzienlijk versterkt door de recente
vooruitgang in Large Language Models (LLMs) voor programmeren. Hoewel huidige
benchmarks hebben aangetoond dat LLMs verschillende software-engineeringtaken
kunnen uitvoeren zoals menselijke ontwikkelaars, zijn de meeste van hun
evaluaties beperkt tot korte en zelfstandige algoritmische taken. Het oplossen
van uitdagende en praktische programmeertaken vereist het vermogen om diverse
functieaanroepen te gebruiken als tools om functionaliteiten zoals
data-analyse en webontwikkeling efficiënt te implementeren. Bovendien vereist
het gebruik van meerdere tools om een taak op te lossen compositioneel
redeneren door complexe instructies nauwkeurig te begrijpen. Het vervullen van
beide kenmerken kan een grote uitdaging vormen voor LLMs. Om te beoordelen hoe
goed LLMs uitdagende en praktische programmeertaken kunnen oplossen,
introduceren we Bench, een benchmark die LLMs uitdaagt om meerdere
functieaanroepen als tools aan te roepen uit 139 bibliotheken en 7 domeinen
voor 1.140 fijnmazige programmeertaken. Om LLMs rigoureus te evalueren,
omvat elke programmeertaak 5,6 testgevallen met een gemiddelde branch coverage
van 99%. Daarnaast stellen we een op natuurlijke taal gerichte variant van
Bench voor, Benchi, die de oorspronkelijke docstrings automatisch omzet in
korte instructies met alleen essentiële informatie. Onze uitgebreide evaluatie
van 60 LLMs toont aan dat LLMs nog niet in staat zijn om complexe instructies
te volgen om functieaanroepen precies te gebruiken, met scores tot 60%, wat
aanzienlijk lager is dan de menselijke prestaties van 97%. De resultaten
benadrukken de noodzaak van verdere vooruitgang op dit gebied.
English
Automated software engineering has been greatly empowered by the recent
advances in Large Language Models (LLMs) for programming. While current
benchmarks have shown that LLMs can perform various software engineering tasks
like human developers, the majority of their evaluations are limited to short
and self-contained algorithmic tasks. Solving challenging and practical
programming tasks requires the capability of utilizing diverse function calls
as tools to efficiently implement functionalities like data analysis and web
development. In addition, using multiple tools to solve a task needs
compositional reasoning by accurately understanding complex instructions.
Fulfilling both of these characteristics can pose a great challenge for LLMs.
To assess how well LLMs can solve challenging and practical programming tasks,
we introduce Bench, a benchmark that challenges LLMs to invoke multiple
function calls as tools from 139 libraries and 7 domains for 1,140 fine-grained
programming tasks. To evaluate LLMs rigorously, each programming task
encompasses 5.6 test cases with an average branch coverage of 99%. In addition,
we propose a natural-language-oriented variant of Bench, Benchi, that
automatically transforms the original docstrings into short instructions only
with essential information. Our extensive evaluation of 60 LLMs shows that LLMs
are not yet capable of following complex instructions to use function calls
precisely, with scores up to 60%, significantly lower than the human
performance of 97%. The results underscore the need for further advancements in
this area.