한 줄 정의

HumanEval은 모델이 작은 파이썬(Python) 함수 구현 과제를 얼마나 잘 풀어내는지 재는 코드 생성 벤치마크야. 문제는 보통 함수 시그니처와 설명 주석(docstring)으로 주어지고, 모델이 만든 함수가 준비된 테스트를 통과하는지로 점수를 내.

그래서 HumanEval 점수는 “이 모델이 코드를 잘 쓴다”는 넓은 말보다 훨씬 좁게 읽어야 해. 한 번 생성한 답이 바로 통과하면 pass@1, 10개나 100개 샘플 중 하나라도 통과하면 pass@10, pass@100처럼 표시하는 식이야.

어떻게 작동하나

OpenAICodex 논문은 HumanEval을 164개 손작성 프로그래밍 문제(programming problem)로 설명해. 각 문제에는 함수 시그니처(function signature), 설명 주석(docstring), 함수 본문(body), 여러 단위 테스트(unit test)가 있고, 논문 기준 평균 테스트 수는 7.7개야. 실제 평가에서는 모델이 프롬프트(prompt)를 보고 완성 코드(completion)를 만들고, 평가 장치(harness)가 그 완성 코드를 실행해 통과 여부를 계산해.

OpenAI의 human-eval 저장소 예시도 이 흐름을 그대로 보여 줘. 샘플은 task_idcompletion을 JSONL 한 줄로 저장하고, evaluate_functional_correctness가 결과 파일을 만들면서 pass@1, pass@10, pass@100을 출력해. 예시 코드에는 과제당 200개 샘플을 만드는 설정도 나와서, pass@k가 단일 답변 점수와 다르다는 걸 바로 볼 수 있어.

중요한 건 HumanEval이 텍스트가 정답 코드와 얼마나 비슷한지보다, 실행했을 때 테스트를 통과하느냐를 본다는 점이야. 그래서 코드 생성 모델 평가에서는 BLEU 같은 문자열 유사도보다 훨씬 직접적인 신호로 쓰였어.

왜 중요한가

HumanEval은 모델 카드와 논문에서 코딩 성능을 빠르게 보여 주는 공통 숫자로 자주 나와. 예를 들어 어떤 모델 카드가 “HumanEval 96.91% pass@1” 같은 값을 내세우면, 그 말은 함수 단위 과제에서 한 번 생성한 답이 테스트를 통과한 비율을 말하는 쪽에 가까워.

이 숫자는 모델의 기본 코딩 감각을 보는 첫 필터로는 쓸 만해. 함수 단위 로직, 경계 조건(edge case) 처리, 간단한 알고리즘 구현을 모델이 얼마나 잘 맞히는지 한 줄로 비교할 수 있으니까. 특히 여러 27B급이나 30B급 모델을 로컬에서 시험할 때는 긴 에이전트 실행(agent run)을 돌리기 전에 빠르게 후보를 줄이는 데 도움이 돼.

하지만 HumanEval 점수 하나로 코딩 에이전트 도입을 결정하면 위험해. 실제 저장소 작업은 파일을 찾고, 기존 테스트를 이해하고, 실패 로그를 좁히고, 리뷰 가능한 변경 묶음(diff)을 만드는 일이 같이 붙어. 이런 작업은 HumanEval보다 SWE-bench Verified나 팀 내부 Eval에 더 가까워.

주의해서 볼 점

첫째, pass@k의 k를 꼭 봐야 해. pass@1은 한 번에 맞힌 비율이고, pass@100은 여러 번 뽑아 하나라도 맞는지를 보는 값이야. 둘을 같은 “정답률”처럼 나란히 놓으면 모델의 실제 사용감이 크게 부풀어 보여.

둘째, 실행 조건을 같이 봐야 해. 모델 카드에 나온 HumanEval 결과는 샘플 정리 방식, 실행 환경, 추론 설정, 검증 절차에 영향을 받을 수 있어. 해당 v2 모델 카드도 HumanEval 수치와 함께 사고 흐름(chain-of-thought) 길이 감소, 토큰당 정답 수(correct solutions per token) 증가를 말하지만, 이건 그 카드가 설명한 Unsloth와 vLLMBF16 환경 안에서 읽는 게 안전해.

셋째, HumanEval은 작은 Python 함수 구현에 강한지 보는 평가야. 장기 프로젝트 수정, 멀티파일 리팩터, 패키지 설치 문제, flaky test 대응, 보안 리뷰까지 한 번에 보여 주지는 않아. 그래서 모델 발표에서 HumanEval 점수가 높아도, 실제 도입 전에는 내 코드베이스에서 작은 회귀 eval을 따로 돌려야 해.

관련 용어

  • Benchmark: HumanEval은 벤치마크 중에서도 코드 생성의 함수 정답성(functional correctness)을 보는 쪽에 가까워. 같은 점수표라도 MMLU나 SWE-bench와는 재는 능력이 달라.
  • Eval: HumanEval은 공개 eval의 한 예시야. 제품에 붙일 때는 공개 점수와 별도로 내 서비스 입력, 테스트, 실패 조건을 다시 묶어야 해.
  • SWE-bench Verified: 실제 GitHub 이슈 해결을 보는 평가라서, 짧은 함수 구현 중심인 HumanEval과 비교하면 에이전틱 코딩에 더 가까운 신호를 줘.
  • Agentic Coding: HumanEval은 모델의 코드 생성 감각을 보지만, 에이전틱 코딩은 계획, 파일 수정, 명령 실행, 검증까지 이어지는 작업 흐름을 같이 봐.
  • Codex: HumanEval은 OpenAI Codex 논문과 함께 공개된 평가셋이라, 초기 코드 생성 모델 성능을 설명할 때 자주 같이 나와.
  • LLM: HumanEval 점수는 LLM의 전체 지능보다 코드 생성이라는 하위 능력을 보는 값이야. 채팅 품질, 검색, 장기 추론과는 분리해서 읽어야 해.