AI Python 버그 수정 정확도 비교 2026: ChatGPT·Gemini·Claude·Perplexity 50개 비공개 테스트

AI Python 버그 수정 정확도 비교 2026 ChatGPT Gemini Claude Perplexity 50개 비공개 테스트

KRBench 28호부터는 새로운 AI 코딩 정확도 시리즈를 시작합니다. 이번에는 자연어 답을 사람이 읽어 채점하는 대신, AI가 수정한 Python 코드를 실제로 실행하고 사전에 고정한 비공개 테스트 결과로 점수를 계산했습니다.

테스트 대상은 interval merge, 최신 레코드 dedupe, JSON 스타일 merge patch, topological sort, rolling window, FIFO 재고 할당, 날짜 그룹, UTF-8 byte chunking, TTL+LRU cache, 사용자 sessionization까지 총 10개 실무형 유틸리티입니다.

각 기능마다 숨은 테스트 5개를 만들었고, 1개 통과당 2점으로 총 100점입니다. 결과는 Claude 100점, Gemini 98점, ChatGPT 90점, Perplexity 0점이었습니다.

결과 요약

  • Claude Sonnet 5.5 · 중간: 100/100 · 50/50 통과 · 26초
  • Gemini Flash: 98/100 · 49/50 통과 · 15초
  • ChatGPT: 90/100 · 45/50 통과 · 26초
  • Perplexity: 0/100 · 모듈 import 실패 · 16초
KRBench 28 Python 버그 수정 정확도 최종 점수

테스트 방법: 10개 기능 × 숨은 테스트 5개

AI에게 제공한 것은 버그가 있는 Python 모듈과 각 함수·클래스의 docstring입니다. docstring에는 요구사항과 경계조건을 모두 적었고, 함수명·클래스명·공개 메서드명·매개변수 시그니처를 바꾸지 말도록 했습니다.

외부 패키지 설치와 네트워크 사용은 금지했고 Python 3.12 표준 라이브러리만 허용했습니다. 각 서비스는 수정된 전체 모듈을 코드블록 하나로 제출해야 했습니다.

KRBench 28 Python 코드 버그 수정 숨은 테스트 채점 구조

비공개 테스트는 서비스 결과를 보기 전에 50개로 고정했습니다. 테스트 1개 통과당 2점이고, 모듈 자체가 import되지 않으면 실행 가능한 테스트가 없으므로 0점이라는 규칙도 사전에 정했습니다.

사전 검증에서는 버그 원본 그대로가 42/100, reference 구현이 100/100이었습니다. 즉 기본 코드가 일부 평범한 입력은 처리하지만, 경계·상태·순서·비변형성·Unicode 조건에서는 충분히 차이가 나도록 구성했습니다.

긴 프롬프트는 TXT 파일로 통일

이번 테스트에는 입력 방식과 관련된 기록이 하나 있습니다. ChatGPT에 긴 공통 프롬프트를 텍스트로 붙여넣자, ChatGPT 웹 UI가 해당 내용을 자동으로 TXT 첨부파일로 전환했습니다.

ChatGPT 긴 프롬프트 자동 TXT 첨부 변환 화면

KRBench는 이 상태에서 ChatGPT를 재실행하지 않고 첫 응답을 그대로 공식 결과로 사용했습니다. 이후 입력 경로 차이를 줄이기 위해 Gemini, Claude, Perplexity에는 같은 KRBench28_COMMON_PROMPT.txt 파일을 직접 첨부했습니다.

KRBench 28 ChatGPT 자동 TXT 변환과 나머지 서비스 TXT 첨부 입력 경로

기능별 결과

기능 Claude Gemini ChatGPT Perplexity
Q01 merge_intervals10/1010/1010/10미실행
Q02 dedupe_latest10/108/1010/10미실행
Q03 apply_merge_patch10/1010/1010/10미실행
Q04 stable_topological_order10/1010/1010/10미실행
Q05 rolling_window_counts10/1010/100/10미실행
Q06 allocate_fifo10/1010/1010/10미실행
Q07 group_contiguous_days10/1010/1010/10미실행
Q08 chunk_utf810/1010/1010/10미실행
Q09 TTLCache10/1010/1010/10미실행
Q10 session_ids10/1010/1010/10미실행
KRBench 28 Python 10개 기능별 숨은 테스트 결과

Claude 100점: 50개 테스트 전부 통과

Claude Sonnet 5.5 · 중간은 10개 기능에서 비공개 테스트 50개를 모두 통과했습니다.

직접 인접 interval 병합, 동일 timestamp에서 뒤 레코드 우선, duplicate edge 제거, key별 rolling window, 여러 요청이 공유하는 FIFO lot 잔량, Unicode byte 경계, TTL과 LRU의 상호작용, 원래 입력 순서를 복원하는 sessionization까지 사전 테스트와 모두 일치했습니다.

Claude KRBench 28 Python 버그 수정 첫 응답

Gemini 98점: shallow copy 한 건

Gemini Flash는 50개 중 49개를 통과했습니다. 유일한 실패는 Q02 dedupe_latest의 입력 비변형성 테스트였습니다.

Gemini는 최신 timestamp 선택, 동일 timestamp 시 나중 occurrence 우선, ID의 first-seen 출력 순서를 모두 맞혔습니다. 하지만 반환 레코드를 dict(...)로 얕게 복사했습니다.

따라서 value 안에 중첩 dict나 list가 있을 때 반환값의 중첩 객체를 수정하면 입력 레코드 내부 객체까지 함께 바뀔 수 있습니다. 숨은 Q02-5는 이 조건을 검사했고 한 건이 실패했습니다.

Gemini dedupe_latest shallow copy 입력 비변형 실패
Gemini KRBench 28 Python 버그 수정 첫 응답

ChatGPT 90점: deque import 누락

ChatGPT는 10개 기능 가운데 9개를 전부 통과했지만 Q05 rolling_window_counts에서 5개 테스트가 모두 실패했습니다.

원인은 알고리즘보다 단순했습니다. 함수 내부에서는 defaultdict(deque)를 사용했지만 상단 import에는 deque가 없었습니다. 그 결과 Q05가 호출될 때마다 NameError가 발생했습니다.

ChatGPT deque import 누락 rolling window NameError

이 사례는 코드 생성에서 작은 import 한 줄이 전체 기능의 실행 가능성을 바꿀 수 있다는 점을 보여줍니다. Q05 5개가 모두 실패해 10점이 빠졌지만 다른 45개 테스트는 통과했습니다.

ChatGPT KRBench 28 Python 버그 수정 첫 응답

Perplexity 0점: 알고리즘 오답이 아니라 첫 제출물이 실행되지 않았다

Perplexity 결과는 점수만 보면 오해하기 쉽습니다. 50개 알고리즘 테스트를 하나씩 실행해서 모두 틀린 것이 아닙니다.

KRBench가 보관한 첫 응답 전체 텍스트의 후반부에서 session_ids 정렬 코드 안에 첨부파일 URL이 포함되어 있었습니다. 이 저장본을 수정하지 않고 Python 모듈로 import했을 때 SyntaxError: invalid decimal literal이 발생했습니다.

Perplexity 첫 응답 Python 코드 SyntaxError import 실패

사전에 정한 규칙은 “코드가 import되지 않으면 실행 가능한 테스트가 없으므로 0점”이었습니다. 따라서 URL을 수동으로 지우거나 다시 생성하지 않고 첫 응답 저장본을 그대로 0점 처리했습니다.

즉 이번 0점은 Python 로직 10개를 모두 틀렸다는 의미가 아니라, 제출한 전체 모듈이 실행 가능한 코드가 아니었다는 의미입니다.

Perplexity KRBench 28 Python 버그 수정 첫 응답

응답시간: 15초부터 26초

KRBench 28 서비스별 Python 코드 생성 단일 실행 응답시간

사용자가 직접 측정한 최종 코드 출력 시간은 Gemini 15초, Perplexity 16초, Claude 26초, ChatGPT 26초였습니다. 각 서비스에서 한 번만 측정한 값이므로 일반적인 속도 순위로 확대하지 않습니다.

이번 테스트에서 확인된 점

첫째, 코딩 정확도는 자연어 설명보다 실행 결과로 평가했을 때 오류가 더 명확해졌습니다. Gemini의 shallow copy나 ChatGPT의 import 누락은 코드만 훑어보면 지나칠 수 있지만 숨은 테스트에서는 즉시 드러났습니다.

둘째, 경계조건뿐 아니라 입력 비변형성과 상태 유지도 중요했습니다. TTL cache, FIFO lot 소진, 사용자별 session 정렬처럼 한 번의 상태 변경이 뒤 결과에 영향을 주는 기능은 자연어 업무 벤치마크의 HARD 구간과 비슷한 난점을 가졌습니다.

셋째, 실제 코딩 업무에서는 알고리즘 정답뿐 아니라 모듈 전체가 실행 가능한지도 정확도의 일부입니다. 이번에는 Perplexity에서 그 차이가 가장 극단적으로 나타났습니다.

이번 테스트의 한계

  • 실제 오픈소스 프로젝트가 아니라 KRBench가 만든 단일 Python 모듈입니다.
  • 10개 기능은 모두 표준 라이브러리 수준의 유틸리티이며 웹 프레임워크, DB, 비동기 I/O, 패키지 의존성은 포함하지 않았습니다.
  • 50개 숨은 테스트는 경계조건을 다양하게 넣었지만 모든 가능한 입력을 검증하지는 않습니다.
  • ChatGPT의 긴 프롬프트는 플랫폼 UI가 자동으로 TXT 첨부로 변환했고, 나머지 서비스는 동일 파일을 직접 첨부했습니다.
  • Perplexity 0점은 보관한 첫 응답 전체 텍스트를 그대로 실행한 결과이며, URL을 제거했을 때의 잠재적 알고리즘 성능은 공식 점수에 포함하지 않았습니다.
  • 응답시간은 서비스별 단일 실행 측정값입니다.

이전 KRBench 시리즈

AI 업무 정확도 15개 테스트 최종결산

복수 문서 근거 추적부터 급여·데이터 Lineage까지 11~25호 업무 테스트 전체 결과와 반복 오류를 정리했습니다.

→ 업무 정확도 시리즈 최종결산 보기

Python 다음은 SQLite 실무 쿼리 10개를 실제 데이터로 실행했습니다.

JOIN, NULL, window function, recursive CTE, 세션·cohort·최신 이벤트를 비공개 데이터셋 50개로 채점했고 네 서비스가 모두 100점을 기록했습니다.

→ AI SQLite 쿼리 버그 수정 정확도 비교 보기

KRBench는 결과를 본 뒤 정답이나 숨은 테스트를 바꾸지 않습니다. 같은 입력, 첫 응답, 사전 고정 테스트를 기준으로 실제 실행 결과를 기록합니다.

댓글 남기기