Digest: HumanEval/MBPP는 단일 함수, 알고리즘 위주의 문제로 실제 개발에서 요구되는 다양한 라이브러리/API 조합 능력을 측정하지 못한다. BigCode 팀은 139개 Python 라이브러리(numpy, pandas, matplotlib, sklearn 등)를 활용해야 하는 1,140개 실용적 프로그래밍 과제로 구성된 BigCodeBench를 제안했다. 핵심 통찰은 실제 개발자의 코딩 작업 대부분이 알고리즘이 아닌 라이브러리 API 조합과 데이터 처리라는 것이다. GPT-4o가 61.1% (BigCodeBench-Complete, Table 2), 지시 기반에서는 51.1% (BigCodeBench-Instruct)를 기록하여, 기존 벤치마크 대비 훨씬 도전적인 평가를 제공한다.
메타데이터
항목
내용
제목
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, et al.
BigCodeBench, API usage, library calls, practical coding, diverse functions
데이터셋 구성
규모 및 분할
항목
내용
전체 크기
1,140개 프로그래밍 과제
BigCodeBench-Complete
함수 시그니처 + docstring 제공
BigCodeBench-Instruct
자연어 지시만 제공 (더 어려움)
사용 라이브러리
139개 Python 라이브러리
평균 테스트 케이스
문제당 5.6개
라이브러리 분포 (상위 10개)
라이브러리
등장 횟수
도메인
numpy
234
수치 계산
pandas
198
데이터 처리
os/sys
156
시스템
matplotlib
143
시각화
re
112
정규표현식
json
98
데이터 형식
sklearn
87
머신러닝
datetime
76
시간 처리
collections
65
자료구조
itertools
54
반복자
Feature/Column 구조
필드
설명
예시
task_id
고유 식별자
BigCodeBench/42
complete_prompt
함수 시그니처 + docstring
def task_func(df: pd.DataFrame): …
instruct_prompt
자연어 지시만
"Write a function that..."
canonical_solution
정답 코드
참조 구현
test
테스트 코드
unit test 함수
libs
사용해야 하는 라이브러리 목록
["pandas", "numpy", "matplotlib"]
난이도 체계
난이도
라이브러리 수
비율
단순 (1-2 라이브러리)
1-2개
~30%
중간 (3-4 라이브러리)
3-4개
~45%
복잡 (5+ 라이브러리)
5+개
~25%
실제 데이터 예시
예시 1: 데이터 분석 + 시각화
# Prompt (Complete):def task_func(df: pd.DataFrame) -> (pd.DataFrame, plt.Axes): """ Given a DataFrame with columns 'Date' and 'Value', resample to monthly frequency, compute rolling mean with window=3, and plot the result. Returns: Tuple of (processed DataFrame, matplotlib Axes) """# Solution:import pandas as pdimport matplotlib.pyplot as pltdef task_func(df): df['Date'] = pd.to_datetime(df['Date']) df = df.set_index('Date').resample('M').mean() df['Rolling'] = df['Value'].rolling(window=3).mean() ax = df[['Value', 'Rolling']].plot() return df, ax
예시 2: 파일 처리 + 정규표현식
# Prompt (Instruct):# "Write a function that reads all .log files in a directory,# extracts lines matching an IP address pattern, counts# occurrences of each IP, and returns a sorted dictionary."# Solution involves: os, re, collections.Counter
예시 3: ML 파이프라인
# Prompt (Complete):def task_func(X: np.ndarray, y: np.ndarray) -> dict: """ Split data, train RandomForest and SVM classifiers, perform 5-fold cross-validation, and return a dict with model names as keys and mean accuracy as values. """# Solution involves: sklearn, numpy
왜 이 연구를 하는가?
핵심 질문
LLM이 다양한 라이브러리 API를 조합하여 실용적인 프로그래밍 작업을 수행할 수 있는가?
기존 접근법의 한계
한계
설명
알고리즘 편향
HumanEval/MBPP/LeetCode는 알고리즘 위주, 실무에서는 라이브러리 활용이 핵심
단일 라이브러리
DS-1000 등은 특정 라이브러리(pandas, numpy)에만 집중
비현실적 복잡도
기존 벤치마크는 1-5줄로 풀리는 문제, 실무는 다중 라이브러리 조합 필요
핵심 통찰
실제 개발자의 코딩은 “알고리즘 구현”보다 “올바른 API를 올바른 순서로 조합”하는 것이다. 이를 평가하려면 다양한 라이브러리 조합을 요구하는 실용적 과제가 필요하다.
방법 (Method)
프레임워크 개요
graph TB
A["ODEX 시드 과제<br/>(StackOverflow 기반)"] --> B["LLM으로 확장/변형<br/>(GPT-4 활용)"]
B --> C["사람 검증 & 정제<br/>(3라운드)"]
C --> D["BigCodeBench<br/>1,140 과제"]
D --> E["Complete 모드<br/>(시그니처+docstring)"]
D --> F["Instruct 모드<br/>(자연어 지시만)"]
E --> G["Sandbox 실행<br/>(Docker 환경)"]
F --> G
G --> H["pass@1 / pass@5"]
발견 (Findings)
주요 결과 (pass@1)
모델
Complete
Instruct
GPT-4o
61.1%
51.1%
Claude 3.5 Sonnet
59.4%
48.2%
DeepSeek-Coder-V2
54.2%
42.8%
Llama 3 70B
42.7%
31.5%
CodeLlama 34B
28.3%
18.7%
(Table 2)
핵심 발견
Complete vs Instruct 격차: 모든 모델에서 Instruct 성능이 ~10%p 낮음, 명세 이해 능력의 한계 (Table 2)
라이브러리 수와 난이도: 요구 라이브러리가 5개 이상이면 pass@1이 ~15%p 하락 (Figure 4)
오픈소스 vs 폐쇄: 오픈소스 최고(DeepSeek) 대비 GPT-4o가 ~7%p 리드 (Table 2)
HumanEval과의 낮은 상관성: HumanEval 점수가 높아도 BigCodeBench에서 낮을 수 있음 — 다른 능력 측정
이론적 의의
실용적 코딩 능력의 새로운 차원
BigCodeBench는 “알고리즘 풀이 능력 ≠ 실용적 코딩 능력”이라는 중요한 관점을 제시했다. 이는 코드 LLM 개발이 알고리즘 문제 풀이를 넘어 API 이해와 라이브러리 조합 능력으로 확장되어야 함을 시사한다.