LLM 코드 환각을 잡아내는 정적 AST 분석기

LLM 코드 환각을 잡아내는 정적 AST 분석기
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 대형 언어 모델(LLM)이 생성한 파이썬 코드에서 API 이름 오타·존재하지 않는 파라미터·잘못된 변수 사용 등 지식 충돌 환각(KCH)을 정적 추상 구문 트리(AST)와 라이브러리 인트로스펙션을 통해 자동으로 구축한 동적 지식베이스(KB)와 교차 검증한다. 200개의 수작업 구축 데이터셋(161개 환각, 39개 정상)에서 100 % 정밀도, 87.6 % 재현율(F1 = 0.934)을 달성했으며, 탐지된 환각 중 77 %를 자동으로 올바른 코드로 수정하였다.

상세 분석

이 연구는 LLM이 생성한 코드에 내재된 “지식 충돌 환각(KCH)”을 정적 분석만으로 탐지·수정할 수 있음을 실증한다. 핵심 아이디어는 코드 문자열을 파이썬 표준 ast 모듈로 파싱해 AST를 얻은 뒤, 노드 수준에서 (1) import 구문과 별칭, (2) 완전한 모듈·함수 호출, (3) 모듈 없이 사용된 함수, (4) 호출 인자(특히 파일 확장자 등 의미를 내포한 문자열)를 추출하는 것이다. 추출된 메타데이터는 런타임 없이 라이브러리를 직접 임포트하고 inspect·dir 등을 활용해 동적으로 지식베이스(KB)를 구축한다. KB는 각 라이브러리의 버전 정보와 함께 (i) 유효한 함수·메서드 이름, (ii) 공개 별칭, (iii) 간단한 의미적 힌트(예: requests.get은 URL을 기대)를 저장한다.

정확도 검증 단계에서는 각 호출을 KB와 매칭한다. 매칭 실패 시 세 가지 유형으로 분류한다. 첫째, Unknown API – KB에 존재하지 않는 함수·메서드(예: pd.read_exel)는 편집 거리 기반 가장 유사한 후보를 제시한다. 둘째, Bare Critical Call – 모듈 별칭 없이 호출된 경우(read_csv)는 해당 모듈을 자동 삽입한다. 셋째, Semantic Inconsistency – 인자 형태와 함수 의도가 불일치할 때(예: .csv 파일을 read_excel에 전달) 문자열 패턴과 사전 정의된 의도 동의어를 활용해 교정한다. 이 과정은 호출 수 n과 KB 크기 m에 대해 O(n·m) 복잡도를 가지며, 실제 실험에서는 200개 샘플을 0.2 초 이내에 처리한다.

수정 단계는 AST 수준에서 로컬 편집을 수행한다. 오타는 가장 가까운 유효 심볼로 교체하고, 잘못된 인자는 의미적 힌트에 따라 적절한 함수·인자로 변환한다. 삽입이 필요한 import 구문은 파일 최상단에 자동으로 추가한다. 수정된 AST는 ast.unparse를 통해 소스 코드 문자열로 되돌린다.

평가에서는 200개 샘플(161개 환각, 39개 정상)로 구성된 데이터셋을 사용했다. 탐지 정확도는 100 % 정밀도와 87.6 % 재현율을 기록했으며, 특히 Missing Importsnumpy 호출에서는 거의 완벽에 가까운 검출률을 보였다. 반면 Contextual Mismatchesmatplotlib.pyplot에서는 오탐이 아닌 누락이 발생해 재현율이 낮았다. 자동 수정 성공률은 전체 환각 중 77 %였으며, Missing Imports에서는 97.9 %까지 도달했지만 pandas와 같은 복잡한 라이브러리에서는 56 %에 머물렀다. 실패 사례 분석에 따르면, 표면적인 문자열 교정은 성공했지만 함수가 기대하는 실제 의미(예: 평균을 구해야 하는데 np.mean 대신 np.array로 교정)까지 파악하지 못한 것이 원인이다.

논문은 또한 기존 방어적 접근(Constrained Decoding, PICARD 등)과 비결정적 LLM‑in‑the‑loop 수리 방식의 한계를 지적한다. 정적 AST‑KB 결합은 실행 없이도 높은 신뢰성을 제공하며, IDE 플러그인 형태로 실시간 피드백을 제공할 수 있다. 향후 연구 방향으로는 (1) 자동화된 문서·소스 코드 스크래핑을 통한 KB 자동 확장, (2) 다중 모듈·프로젝트 수준의 흐름 분석, (3) 의미론적 의도 추론을 위한 머신러닝 기반 보조 모듈 도입을 제시한다.

전반적으로 이 논문은 “정적·결정론적” 방법이 LLM‑생성 코드의 심층적인 의미 오류를 탐지·수정하는 데 충분히 실용적이며, 향후 신뢰할 수 있는 코드 생성 파이프라인 구축에 핵심적인 역할을 할 수 있음을 보여준다.


댓글 및 학술 토론

Loading comments...

의견 남기기