BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Complex Instructions

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, A. Zebaze, Xiao-ke Hong, Wen-Ding Li, Jean Kaddour, Minglian 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, Xiao-Nan Du, H. D. Vries, L. V. Werra

arXiv:2406.15877 · 2026-07-27 공개 · arXiv · PDF

llm-evaluation code-generation tool-use instruction-following software-engineering python compositional-reasoning function-calls

Abstract

Task automation has been greatly empowered by the recent advances in Large Language Models (LLMs) via Python code, where the tasks ranging from software engineering development to general-purpose reasoning. While current benchmarks have shown that LLMs can solve tasks using programs like human developers, the majority of their evaluations are limited to short and self-contained algorithmic tasks or standalone function calls. Solving challenging and practical 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 tasks via programs, we introduce BigCodeBench, a benchmark that challenges LLMs to invoke multiple function calls as tools from 139 libraries and 7 domains for 1,140 fine-grained tasks. To evaluate LLMs rigorously, each task encompasses 5.6 test cases with an average branch coverage of 99%. In addition, we propose a natural-language-oriented variant of BigCodeBench, BigCodeBench-Instruct, 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.

한국어 요약

한 줄 요약

BigCodeBench는 1,140개의 실용적 프로그래밍 태스크로 LLM의 다중 함수 호출 및 복잡한 지시사항 처리 능력을 평가하는 새로운 벤치마크이다.

핵심 기여도

핵심 아이디어

기존 벤치마크는 대부분 단순하고 자립적인 알고리즘 문제에 집중되어 있어, 실용적이고 복잡한 프로그래밍 문제를 해결하는 능력을 평가하기 어렵다. BigCodeBench는 이 격차를 메우기 위해, **다양한 라이브러리의 함수 호출**과 **복잡한 지시사항 처리**라는 두 가지 핵심 요소를 반영한 프로그래밍 태스크를 구성했다. 특히, **Gorilla OpenFunctions**에서 정의한 도메인별 라이브러리 API를 활용하여, 실제 개발 환경과 유사한 상황을 시뮬레이션한다. 또한, **자연어 지시사항**(Instruct)을 통해 LLM이 인간의 언어를 정확히 해석하고 코드를 생성하는 능력을 평가한다.

기술적 접근법

주요 결과

의의 및 한계

BigCodeBench는 기존 벤치마크가 다루지 못한 **실용적이고 복잡한 프로그래밍 태스크**를 평가하는 데 기여하며, LLM이 인간 수준의 코드 생성 능력을 갖추기 위해 필요한 핵심 능력을 명확히 보여준다. 그러나, 일부 모델이 **복잡한 지시사항을 정확히 해석하지 못하거나**, **다중 도메인 함수 호출을 적절히 수행하지 못하는 한계**가 존재한다. 또한, 평가 샘플 수가 제한되어 있어 더 많은 데이터가 필요하다는 점도 언급된다.

실용적 활용

BigCodeBench는 코드 생성 모델의 **실용성과 정확도**를 평가하는 데 활용될 수 있으며, 특히 **데이터 분석, 웹 개발, 네트워크 프로그래밍** 등 다양한 도메인에서의 성능 검증에 유용하다. 또한, **LLM의 지시사항 이해 능력**을 향상시키기 위한 연구 및 개선 노력에 기초 자료로 활용될 수 있다.