코드 수정이 요청을 통과하면서도 프롬프트가 언급하지 않은 무언가를 여전히 누락시키는 문제
요약
본 게시물은 코드 수정의 완성도를 측정하는 벤치마크 'resolve'와 확장 버전 'resolve-plus'를 소개합니다. 이 테스트는 모델이 요청된 변경 사항뿐만 아니라, 프롬프트에서 명시적으로 언급하지 않은 기존 동작까지 완벽하게 유지하는지 평가합니다. 특히 'resolve-plus'는 추가적인 엣지 케이스 스위트를 포함하여 더욱 엄격한 검증을 수행합니다.
핵심 포인트
- 모델이 요청된 수정 외의 누락된 기능을 테스트함 (Pass-to-pass).
- 새로운 동작(Fail-to-pass)과 기존 동작 모두를 확인하는 벤치마크 구조.
- resolve-plus는 추가적인 엣지 스위트를 통해 난이도를 높임.
- GPT-6.1 Sol과 GPT-5.6 Luna가 높은 점수를 기록함.
본 게시물은 Kaggle Benchmarking Challenge에 제출하는 내용입니다.
제가 벤치마킹한 내용
Resolve는 작은 코드 변경 사항을 측정합니다. 저는 계속해서 목격하는 실패, 즉 수정된 코드가 요청받은 것은 수행하지만 프롬프트가 다시 언급하지 않은 동작을 누락시키는 경우에 대한 점수를 원했습니다.
각 항목은 하나의 Python 함수와 하나 요청된 수정을 포함합니다. 모델은 새로운 함수만 반환합니다. 점수는 16개 항목 중 몇 개가 완전히 해결되었는지, 0부터 1까지의 부동 소수점으로 계산됩니다. 절반만 수정된 경우 해당 항목에서 0점을 받습니다.
두 가지 작업이 있습니다. resolve는 새로운 동작과 프롬프트가 다시 명시하지 않은 이전 동작을 확인합니다. resolve-plus는 프롬프트가 보여주지 않은 엣지(edge) 테스트 스위트를 추가합니다. 두 작업은 별도의 생성 과정이므로, 두 번째 점수가 첫 번째 점수보다 높게 나올 수 있습니다.
본 게시물의 결과에 대한 내용입니다: GPT-6.1 Sol과 GPT-5.6 Luna만이 두 작업 모두에서 0.9375를 기록한 모델입니다. 이 과제 페이지에서는 이를 0.94로 반올림합니다. 다른 여러 모델들은 resolve에서 0.9375에 도달하지만, resolve-plus에서는 더 낮은 점수를 받습니다.
작동 방식
프롬프트는 함수와 하나의 변경 사항, 그리고 두 개의 샘플 입력을 보여줍니다. 모델이 새로운 함수 외에 작성하는 모든 것은 무시됩니다. 그런 다음 숨겨진 테스트가 두 목록에서 실행됩니다.
- Fail-to-pass는 새로운 동작입니다.
- Pass-to-pass는 프롬프트가 반복하지 않은 동작입니다.
모든 테스트가 두 목록 모두에서 통과할 때만 항목이 카운트됩니다. 시간 초과, 충돌, 누락된 함수 또는 빈 스위트는 실패로 간주됩니다. 하나의 실패한 테스트라도 해당 항목 전체를 실패하게 만듭니다.
resolve-plus는 동일한 규칙을 사용하며 엣지 스위트를 추가합니다. 이는 첫 번째 샘플의 두 번째 등급이 아니라, 16개 항목에 대한 새로운 샘플입니다.
영감의 원천
이는 SWE-bench가 해결된 이슈에 대해 사용하는 규칙을 제가 작성한 함수 수준으로 축소한 것입니다. 관련 논문은 Jimenez 등(Jimenez et al.), SWE-bench: 언어 모델이 실제 GitHub 이슈를 해결할 수 있는가?(SWE-bench: Can Language Models Resolve Real-World GitHub Issues?) (ICLR 2024)입니다.
SWE-bench는 패치가 컴파일되거나 새로운 테스트를 통과한다고 해서 점수를 부여하지 않습니다. 이슈가 해결되었다고 간주되는 것은 fail-to-pass 테스트와 pass-to-pass 테스트 모두 통과할 때뿐입니다. Resolve는 이 기준을 유지하며 나머지 구조(scaffolding)는 제거합니다. 즉, 스크랩된 저장소도 없고, 프롬프트에 금본위제 패치(gold patch)가 없으며, 모델이 작성한 테스트도 없습니다. 읽어볼 만한 실패 사례는 요청된 변경 사항을 수행하면서 동시에 프롬프트에서 언급하지 않았던 불변성(invariant)을 깨뜨리는 수정입니다.
테스트된 모델들
저는 네 가지 계열에서 각각 하나의 모델로 시작하여, 대리점(proxy)이 제공할 Claude, GPT, Gemini 라인과 아래 나열된 오픈 소스 모델들을 실행했습니다. 프론티어 모델(Frontier)과 오픈 소스 모델은 별도로 차트화되어 있어 단일 평균 점수가 어느 그룹이 점수를 끌고 가는지 숨길 수 없습니다.
총 23개의 모델이 두 가지 점수 모두를 가지고 있습니다. 모델은 둘 다 완료되었을 때만 차트에 올라갑니다. 파란색은 resolve이고, 주황색은 resolve-plus입니다. 차트는 resolve-plus 순으로 정렬되어 있습니다.
프론티어: Claude Haiku 4.5, Haiku 5.5, Sonnet 5, Sonnet 5.5, Opus 5.5, GPT-5.4 mini, GPT-5.6 Luna, GPT-5.6 Sol, GPT-6.1 Sol, Gemini 3.5 Flash, Gemini 3.5 Flash-Lite, Gemini 3.6 Flash, Gemini 3.7 Flash, 그리고 Gemini 3.8 Flash.
오픈 소스: Gemma 4 31B, Gemma 4 26B, gpt-oss 20B, gpt-oss 120B, DeepSeek-R1, GLM-5, Qwen 3 235B, Qwen 3 Coder 480B, 그리고 Qwen 3 Next 80B Instruct.
Grok 4.5와 Grok 4.6은 Kaggle 모델 목록에 있습니다. 대리점은 두 모델 모두 '모델을 찾을 수 없음(model not found)'을 반환했기 때문에 차트에 없습니다. Qwen 3 Next 80B Thinking은 동일한 대리점에서 16개 항목 중 3개 이후 세 번 시간 초과가 발생하여 이 역시 차트에서 제외되었습니다.
발견 사항
모든 23개 모델

GPT-6.1 Sol과 GPT-5.6 Luna가 각각의 두 작업에서 0.9375로 공동 최고점을 기록했습니다. 이는 16개 항목 중 15개를 해결했다는 의미이며, 두 번에 걸쳐 나타났습니다.
다음 그룹은 0.9375의 resolve 점수를 유지하며 resolve-plus에서는 0.875를 기록한 DeepSeek-R1, Claude Sonnet 5.5, 그리고 Claude Opus 5.5입니다. 이 모델들은 첫 번째 작업에서 각각 15개 항목을, 두 번째 작업에서 14개 항목을 해결했습니다.
gpt-oss 20B는 반대 방향의 기준점을 제시하며, 0.75에서 0.875로 상승했습니다. 두 번째 작업은 새로운 샘플이므로, resolve-plus 점수가 높다는 것은 edge suite의 도움이라기보다는 다른 세대의 성능을 의미합니다. 종합 차트의 최저점은 Qwen 3 235B와 Gemma 4 26B가 각각 resolve-plus에서 0.6875를 기록하며 형성했습니다.
Frontier models (최첨단 모델)

최첨단 모델 차트 역시 최고점에서 공동으로 높은 점수를 기록한 후, 명확하게 하락하는 양상을 보였습니다.
Opus 5.5와 Sonnet 5.5는 모두 0.9375로 시작하여 0.875로 마감했습니다. GPT-5.6 Sol은 동일하게 0.9375로 시작했으나, 두 항목 하락으로 0.8125를 기록했습니다. Sonnet 5는 resolve에서 0.875를 유지했지만, resolve-plus에서는 0.75로 떨어졌습니다.
Haiku 4.5와 Haiku 5.5는 동일한 쌍(pair)에 위치하며 각각 0.875를 기록했습니다. 이 16개 함수에 대해서는 더 새로운 소형 모델들이 점수를 올리지 못했습니다. Gemini 3.5 Flash와 Gemini 3.6 Flash가 그들 옆에 자리하고 있습니다. Gemini 3.5 Flash-Lite가 최첨단 하한선(floor)을 형성하며, 두 지표 모두에서 0.75를 기록했습니다.
Open models (오픈 모델)

DeepSeek-R1은 오픈 차트에서 0.9375와 0.875를 기록하며, 프론티어 차트에서는 Opus 5.5 및 Sonnet 5.5와 동등한 수준을 보입니다. Gemma 4 31B는 두 작업 모두에서 0.875를 유지하는 유일한 오픈 모델입니다. Gemma 4 26B는 가장 낮은 점수인 0.75, 그리고 0.6875를 기록했습니다.
Qwen 3 Coder 480B는 0.875와 0.8125로, 더 큰 범용 모델인 Qwen 3 235B(0.8125 및 0.6875)를 능가합니다. gpt-oss 120B와 Qwen 3 Next 80B Instruct는 0.8125로 평평한 점수를 보입니다. gpt-oss 20B는 오픈 차트의 예외적인 경우인데, 첫 번째 샘플에서 0.75를 기록했음에도 두 번째 샘플에서는 0.875를 기록했습니다.
목록 가격 대비 점수 (Score against list price)
이 테스트에서는 토큰이나 달러 지폐가 저장되지 않았으므로, 이는 항목당 측정 비용이 아닙니다. 가로축은 2026년 10월 8일 업데이트된 요율표에서 가져온 백만 토큰당 게시 출력 가격입니다. 이 요율표는 Anthropic, OpenAI, 그리고 Gemini의 가격 페이지에 대한 요율을 보고합니다. 비싼 것은 왼쪽에, 저렴한 것은 오른쪽에 있습니다. 같은 제공업체의 모델은 선으로 연결되어 있습니다. 오픈 모델과 Gemini 3.6 Flash 및 Gemini 3.7 Flash는 이 요율표에 나열되지 않았기 때문에 차트에서 제외되었습니다. Haiku 5.5는 10만 달러 미만의 가격대입니다. 이 프롬프트들은 하나의 기능이 부족합니다.
GPT-5.6 Luna는 효율적인 지점입니다: 백만 출력 토큰당 $1.20로 0.9375를 기록했습니다. GPT-6.1 Sol은 $10에 같은 점수를 기록했습니다. Claude Haiku 5.5는 $0.50에 0.875를 유지하며, 이는 Haiku 4.5의 $5 및 Opus 5.5의 $20과 동일한 점수입니다. Sonnet 5와 Sonnet 5.5는 $10의 출력 가격을 공유합니다. Sonnet 5.5가 0.875를 기록한 모델입니다.
평평한 리더보드가 숨기는 것 (What a flat leaderboard hides)
첫 번째 패스에서는 네 가지 계열에서 각각 하나의 모델을 사용했습니다: Claude Haiku 4.5, Gemma 4 31B, GPT-5.4 mini, 그리고 Gemini 3.7 Flash. 각 모델은 16개 항목 중 14개를 해결했습니다. 리더보드는 두 번째 행까지는 평평해 보입니다. Haiku와 Gemma는 resolve-plus에서 0.875를 유지합니다. GPT-5.4 mini와 Gemini 3.7 Flash는 0.8125로 떨어집니다.
이 두 번의 하락은 서로 다른 사건입니다.
ring_push에서 네 모델 모두, 두 가지 작업 모두에서 요청된 변경 사항을 수행했지만 프롬프트가 다시 언급하지 않은 동작에 실패했습니다. Fail-to-pass는 통과했습니다. Pass-to-pass는 그렇지 않았습니다. 더 느슨한 점수라면 해당 수정 사항들을 포함했을 것입니다. 하지만 이 점수는 그렇지 않습니다. 그 누락은 여덟 번의 실행 전체에서 안정적이었습니다.
GPT-5.4 mini의 낮은 resolve-plus 점수는 추가 테스트 스위트(extra suite) 때문입니다. truncate에서는 요청된 변경 사항과 이전 동작 모두 통과했지만, 엣지 스위트(edge suite)가 실패했습니다. Haiku와 Gemma는 그런 식으로 항목을 잃지 않았습니다.
Gemini 3.7 Flash의 낮은 resolve-plus 점수는 동일한 항목의 다른 세대 때문입니다. collapse_name은 처음에는 통과했지만 두 번째에는 실패했습니다. 추가 스위트가 그것을 움직인 것은 아닙니다.
하나의 숫자는 세 가지를 숨기고 있습니다: 명시되지 않은 불변성(invariant)을 깨뜨리는 수정 사항, 프롬프트가 보여주지 않은 엣지를 놓치는 수정 사항, 그리고 다르게 나오는 동일 항목의 두 번째 샘플입니다.
한 번의 생성이 collapse_name을 통과에서 실패로 움직이기에 충분했습니다. 원샷 점수(one-shot score)는 라인에 가까운 모델의 노이즈가 많은 그림입니다. 제가 다음으로 할 실행은 항목당 한 개 이상의 샘플일 것입니다.
나의 벤치마크
공개 벤치마크는 Resolve on Kaggle입니다. 버전은 1이며, Apache 2.0 라이선스를 따르고 공개로 표시되어 있습니다. 해당 페이지의 리더보드에는 상위 네 개 모델이 표시됩니다. 태스크 페이지에는 완료하지 못한 실행을 포함하여 모든 실행이 나열됩니다. 모델은 점수와 실행 모두가 완료된 경우에만 여기 차트에 포함됩니다.
두 가지 태스크:
제안 인용: Aditya Kumar Puri. Resolve. https://www.kaggle.com/benchmarks/puriadityakumar/resolve/versions/1, 2026.
참고문헌
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

