
Debug-gym: an environment for AI coding tools to learn how to debug code like programmers
개발자 시간의 대부분은 디버깅에 사용된다... 코드 작성을 넘어선 AI의 진화
AI 코딩 도구가 개발자 효율성을 증가시키며 미래 소프트웨어 개발 환경을 빠르게 변화시키고 있다. 깃허브(GitHub) CEO 토마스 동케는 "머지 않아 80%의 코드가 코파일럿(Copilot)에 의해 작성될 것"이라고 예측했으며, Y 컴비네이터(Y Combinator)의 개리 탄에 따르면 최근 Y 컴비네이터 신생 기업 중 4분의 1은 코드의 95%가 대규모 언어 모델(LLM)에 의해 작성되었다고 한다.
하지만 대부분의 개발자는 코드 작성보다 디버깅에 더 많은 시간을 소비한다. 이에 마이크로소프트 리서치팀은 AI 코딩 도구가 인간처럼 코드를 디버깅할 수 있도록 가르치는 방법에 초점을 맞추게 되었다. 디버깅이란 코드 수정을 위한 대화형 반복 프로세스를 의미하며, 개발자들은 코드가 왜 충돌했는지 가설을 세우고, 프로그램을 단계별로 진행하며 변수 값을 검사하는 등의 증거를 수집한다. 이 과정에서 pdb(Python 디버거)와 같은 디버깅 도구를 사용해 정보를 수집하고, 코드가 수정될 때까지 이 과정을 반복한다.
현재의 AI 코딩 도구는 생산성을 향상시키고 가용한 코드와 오류 메시지를 기반으로 버그 해결책을 제안하는 데 탁월하다. 그러나 인간 개발자와 달리 솔루션이 실패할 때 추가 정보를 찾지 않아 일부 버그는 해결되지 않은 채 남게 된다. 이는 사용자들이 AI 코딩 도구가 해결하려는 문제의 전체 맥락을 이해하지 못한다고 느끼게 만든다.
디버그-짐: AI가 중단점 설정부터 변수값 검사까지, 인간 개발자처럼 코드를 이해하는 환경
이런 배경에서 마이크로소프트 리서치팀은 대규모 언어 모델(LLM)이 pdb와 같은 대화형 디버깅 도구를 어느 정도까지 사용할 수 있는지를 탐구하기 위해 디버그-짐(Debug-gym)을 출시했다. 해당 기술을 소개한 논문에 따르면, 디버그-짐은 코드 수정 에이전트가 능동적인 정보 탐색 행동을 위한 도구에 접근할 수 있게 해주는 환경이다. 이 환경은 에이전트의 행동 및 관찰 공간을 도구 사용에서 얻은 피드백으로 확장하여 중단점 설정, 코드 탐색, 변수 값 출력, 테스트 함수 생성 등을 가능하게 한다. 에이전트는 도구를 사용해 코드를 조사하거나 자신감이 있다면 코드를 다시 작성할 수 있다.
연구팀은 적절한 도구를 사용한 대화형 디버깅이 코딩 에이전트가 실제 소프트웨어 엔지니어링 작업을 처리할 수 있게 하고, LLM 기반 에이전트 연구의 중심이 될 것이라고 믿는다. 디버깅 기능을 갖춘 코딩 에이전트가 제안하고 인간 프로그래머가 승인한 수정 사항은 이전에 본 훈련 데이터에만 의존하는 추측이 아니라 관련 코드베이스, 프로그램 실행 및 문서의 맥락에 기반할 것이다.
도커 컨테이너부터 JSON 형식까지... 안전하고 확장 가능한 디버그-짐의 4가지 핵심 설계
디버그-짐은 여러 목표를 염두에 두고 설계 및 개발되었다.
첫째로, 저장소 수준의 정보 처리 능력을 갖추고 있어 에이전트에게 전체 저장소를 제공함으로써 파일을 자유롭게 탐색하고 편집할 수 있는 환경을 조성한다.
둘째로, 시스템과 개발 프로세스의 안전을 보장하기 위해 샌드박스 도커 컨테이너 내에서 코드를 실행하는 견고함과 안전성을 갖추었다. 이러한 격리된 런타임 환경은 유해한 작업을 방지하면서도 철저한 테스트와 디버깅을 가능하게 한다.
셋째로, 확장성을 핵심 설계 원칙으로 삼아 실무자들이 필요에 따라 새로운 도구를 쉽게 추가할 수 있는 유연한 구조를 제공한다.
마지막으로, 관찰 정보를 JSON 형식과 같은 구조화된 텍스트로 표현하고 텍스트 작업을 위한 간결한 구문을 정의하는 텍스트 기반 접근 방식을 채택했다. 이를 통해 최신 LLM 기반 에이전트들과 원활하게 호환되는 환경을 구축했다.
디버그-짐을 사용하면 연구자와 개발자는 폴더 경로를 지정하여 디버깅 에이전트의 성능을 평가하기 위해 모든 사용자 지정 저장소에서 작업할 수 있다. 또한 디버그-짐에는 대화형 디버깅에서 LLM 기반 에이전트의 성능을 측정하기 위한 세 가지 코딩 벤치마크가 포함되어 있다: 단순 함수 수준 코드 생성을 위한 Aider, 짧고 수작업으로 만든 버그가 있는 코드 예제를 위한 Mini-nightmare, 그리고 대규모 코드베이스의 포괄적인 이해와 GitHub 풀 리퀘스트 형식의 솔루션이 필요한 실제 코딩 문제를 위한 SWE-bench.
Claude 3.7은 30%, OpenAI o1은 182%... 디버깅 도구로 AI 성능 대폭 향상

연구팀은 디버깅 도구에 접근할 때 LLM이 코딩 테스트에서 더 나은 성능을 보인다는 것을 검증하기 위한 초기 시도로, 간단한 프롬프트 기반 에이전트를 구축하고 eval, view, pdb, rewrite, listdir와 같은 디버그 도구에 대한 접근 권한을 제공했다. 이 에이전트의 백본으로 9개의 다른 LLM을 사용했다.
디버깅 도구를 사용하더라도 이 간단한 프롬프트 기반 에이전트는 SWE-bench Lite 이슈의 절반 이상을 해결하는 경우가 드물었다. 연구팀은 이것이 현재 LLM 훈련 코퍼스에서 순차적 의사 결정 행동(예: 디버깅 추적)을 나타내는 데이터의 부족 때문이라고 생각한다. 그러나 성능 향상이 상당하여(Claude 3.7은 30%, OpenAI o1은 182%, OpenAI o3-mini는 160%의 상대적 성능 향상을 보임) 이것이 유망한 연구 방향임을 입증한다.
FAQ
Q: 디버그-짐(Debug-gym)은 정확히 무엇인가요?
A: 디버그-짐은 AI 코딩 도구가 인간 프로그래머처럼 코드를 디버깅하는 방법을 배울 수 있는 환경입니다. 이 환경은 코드 수정 에이전트에게 중단점 설정, 코드 탐색, 변수 값 출력 등과 같은 능동적인 정보 탐색 행동을 위한 도구에 접근할 수 있게 합니다.
Q: 왜 AI 코딩 도구에 디버깅 능력이 필요한가요?
A: 대부분의 개발자는 코드 작성보다 디버깅에 더 많은 시간을 소비합니다. 현재의 AI 코딩 도구는 코드와 오류 메시지를 기반으로 버그 해결책을 제안할 수 있지만, 솔루션이 실패할 때 추가 정보를 찾지 않아 일부 버그는 해결되지 않습니다. 디버깅 능력을 갖춘 AI는 실제 소프트웨어 엔지니ering 작업을 더 효과적으로 처리할 수 있습니다.
Q: 디버그-짐은 어떻게 AI 코딩 도구의 성능을 향상시키나요?
A: 디버그-짐은 AI 에이전트에게 pdb와 같은 디버깅 도구에 접근할 수 있게 해주어, 코드 실행 중에 추가 정보를 수집하고 더 정확한 수정을 제안할 수 있게 합니다. 초기 실험에서 디버깅 도구에 접근할 수 있는 AI 에이전트는 도구 없이 작동하는 동일한 AI 모델보다 최대 182%의 성능 향상을 보였습니다.
해당 기사에 인용된 논문 원문은 링크에서 확인할 수 있다.
이미지 출처: 마이크로소프트
기사는 클로드와 챗gpt를 활용해 작성되었습니다.
AI Matters 뉴스레터 구독하기