LLM 기반 다언어 버그 수정을 위한 교차 번역과 다중 에이전트 강화
초록
본 논문은 LLM이 언어별로 보이는 성능 차이를 활용해, 버그가 발생한 코드를 LLM이 더 우수한 수리 능력을 보이는 다른 언어로 번역한 뒤 수리하고, 다시 원래 언어로 역번역하는 다중 에이전트 파이프라인인 LANTERN을 제안한다. xCodeEval 벤치마크(11개 언어, 5,068개 버그)에서 특히 Rust와 같은 저인기도 언어의 Pass@10 점수가 22.09% 상승하는 등 전반적인 수리 효율이 크게 향상됨을 실증한다.
상세 분석
LANTERN은 “LLM이 특정 언어에서 약한 수리 능력을 보일 때, 다른 언어로 번역하면 수리 성공률이 높아진다”는 가설에 기반한다. 이를 구현하기 위해 세 가지 핵심 모듈을 설계했다. 첫째, 버그 특성을 분석하고 사전 학습된 성능 메트릭(언어별 Pass@10, 오류 유형 분포 등)을 활용해 최적 목표 언어를 선택하는 LLM 기반 의사결정 엔진이다. 이 엔진은 이전 번역·수리 결과를 메모리 형태로 저장하고, 코히런트 코히어런스(Coherence) 점수와 테스트 통과율을 피드백으로 받아 목표 언어를 동적으로 재조정한다. 둘째, 코드 번역 모듈은 최신 코드-전용 LLM(예: CodeLlama, GPT‑4o)으로 구현했으며, 번역 품질을 보장하기 위해 구조적 정합성 검사와 타입 일관성 검증을 사전·사후에 수행한다. 번역 과정에서 언어별 특수 문법(예: Rust의 소유권, C++의 템플릿)과 라이브러리 매핑을 자동화함으로써 의미 손실을 최소화한다. 셋째, 다중 에이전트 수리 파이프라인은 ‘생성‑검증‑피드백’ 루프를 반복한다. 생성 에이전트는 번역된 코드에 대해 여러 패치를 제안하고, 검증 에이전트는 컴파일·테스트·정적 분석을 통해 패치의 타당성을 평가한다. 실패한 패치는 피드백 메모리에 기록되어 다음 번역·수리 단계에서 활용된다. 이때, 동일 버그에 대해 여러 목표 언어를 순차적으로 시도하도록 설계해, 한 언어에서 실패해도 다른 언어에서 성공 가능성을 탐색한다. 실험 결과, 단순 반복 수리(재시도)와 비교했을 때, 번역·수리·역번역 순환이 평균 Pass@10을 8.7%p 상승시켰으며, 특히 Rust와 Kotlin 같은 저지원 언어에서 20% 이상 개선되었다. 또한, 번역 품질이 낮은 경우(예: 복잡한 매크로가 포함된 C 코드)에는 피드백 기반 재번역이 자동으로 트리거되어 전체 파이프라인의 안정성을 확보한다. LANTERN은 추가 학습 없이 기존 LLM을 활용한다는 점에서 비용 효율성이 높으며, 언어별 데이터 불균형 문제를 근본적으로 완화한다는 점에서 의미가 크다.
댓글 및 학술 토론
Loading comments...
의견 남기기