CodeChain: 대표적 하위 모듈을 통한 자기 수정 체인을 통한 모듈식 코드 생성으로 향하여

대규모 언어 모델(Large Language Models, LLMs)은 이미 HumanEval이나 MBPP와 같은 보편적 벤치마크에서 비교적 간단한 프로그래밍 과제를 수행하는 데 있어 상당한 능력을 갖추고 있다. 그러나 더 복잡하고 경쟁적인 프로그래밍 과제를 해결하는 데 있어서는 여전히 큰 도전 과제로 남아 있다. 이는 모델들이 종종 단일한 코드 블록으로 해결책을 생성함으로써 논리적 하위 과제와 하위 모듈로 분해하는 경향이 부족하기 때문일 수 있다. 반면, 경험이 풍부한 프로그래머들은 복잡한 문제를 해결할 때 자연스럽게 추상화된 모듈화된 코드를 작성하며, 과거에 개발한 모듈을 재사용하는 경향이 있다. 이러한 격차를 해소하기 위해, 본 연구에서는 체인형 자기 수정(Chain of Self-Revisions)을 통해 모듈화된 코드 생성을 유도하는 새로운 추론 프레임워크인 CodeChain을 제안한다. 이 프레임워크는 이전 반복 과정에서 생성된 대표적인 하위 모듈들을 기반으로 각 단계를 안내한다.구체적으로, CodeChain은 먼저 사고의 흐름(Chain-of-Thought) 프롬프팅을 통해 LLM이 모듈화된 코드를 생성하도록 지시한다. 이후 두 단계를 반복하는 자기 수정 체인을 적용한다. 첫 번째 단계는 생성된 하위 모듈을 추출하고 군집화한 후, 더 일반적이고 재사용 가능한 구현체로 간주되는 군집 대표 모듈을 선정하는 것이다. 두 번째 단계는 선정된 모듈 구현체를 원래의 사고의 흐름 프롬프트에 보강하여 LLM이 새로운 모듈화된 해결책을 재생성하도록 지시하는 것이다. 실험 결과, 이전에 개발되고 검증된 하위 모듈을 자연스럽게 재사용하도록 유도함으로써 CodeChain은 생성된 코드의 모듈화 수준과 정확도 모두를 크게 향상시켰으며, APPS 벤치마크에서 pass@1 기준으로 35%의 상대적 개선을, CodeContests에서는 76%의 상대적 개선을 달성하였다. 이는 OpenAI의 LLM뿐만 아니라 WizardCoder와 같은 오픈소스 LLM에서도 효과를 입증하였다. 또한, 프롬프팅 방식, 군집 수, 모델 크기, 프로그램 품질 등 다양한 요소에 대한 포괄적인 제거 실험(Ablation Study)을 수행하여 CodeChain의 성공을 뒷받침하는 유용한 통찰을 제공하였다.