LLM 코드 생성에서 라이브러리 환각 위험과 프롬프트 변동성
초록
본 논문은 개발자 질의에 포함된 자연어 변형이 대형 언어 모델(LLM)의 코드 생성 시 라이브러리 환각(존재하지 않는 라이브러리·멤버 호출) 발생률에 미치는 영향을 체계적으로 조사한다. 7가지 최신 LLM을 대상으로 356개의 파이썬 과제에 대해 실제 포럼 질문, 오타·다중 문자 오류, 완전 허위 이름 등 3가지 실험을 수행하고, 프롬프트 엔지니어링 기법의 완화 효과도 평가한다. 결과는 단일 문자 오타만으로도 최대 26 %의 환각이 발생하고, 완전 허위 라이브러리는 99 %까지 수용되는 등 LLM이 프롬프트 변동에 매우 취약함을 보여준다.
상세 분석
이 연구는 먼저 LLM이 코드 생성 시 외부 라이브러리를 정확히 인식해야 하는 전제에 주목한다. 저자들은 BigCodeBench를 기반으로 356개의 파이썬 과제를 선정했으며, 각 과제에 대해 “{library directive}를 사용해 주세요” 형태의 템플릿 프롬프트를 만든다. 실험 1에서는 Software Recommendations StackExchange에서 추출한 ‘open‑source’, ‘lightweight’ 등 9가지 서술어와 연도 기반(2023‑2025) 요구를 삽입해 실제 개발자 질문의 다양성을 재현한다. 실험 2는 오타 수준을 세 단계(한 글자, 다중 글자, 완전 허위)로 구분해 라이브러리 이름과 멤버 이름에 적용한다. 오타 생성은 별도 LLM(o4‑mini)으로 자동화했으며, 생성된 문자열이 실제 존재하지 않음이 검증된 뒤 사용되었다. 실험 3에서는 체인‑오브‑생각, 스텝‑백, 명시적 검증 요구 등 네 가지 프롬프트 엔지니어링 기법을 적용해 환각 감소 효과를 측정했다. 결과는 다음과 같다. 첫째, 연도 기반 프롬프트는 84 %까지 환각을 유발, 모델이 최신 라이브러리 정보를 추론하려다 허구를 만들어낸다. 둘째, 한 글자 오타는 모델마다 10‑26 %의 환각률을 보였으며, 다중 글자 오타는 45‑79 %로 급증한다. 셋째, 완전 허위 이름은 대부분의 모델에서 95‑99 %가 그대로 사용돼, 타이포스쿼팅과 슬롭스쿼팅 위험을 크게 확대한다. 넷째, 프롬프트 엔지니어링은 경우에 따라 환각을 5‑30 % 정도 감소시키지만, 체인‑오브‑생각은 오히려 일부 모델에서 환각을 악화시켰다. 이는 LLM이 ‘추론’ 단계에서 자체적인 확신을 갖고 허위 정보를 생성하기 때문이다. 마지막으로, 모델 아키텍처와 사전 학습 데이터의 차이가 환각 민감도에 영향을 미치지만, 전반적인 경향은 모든 모델에 공통적이다.
댓글 및 학술 토론
Loading comments...
의견 남기기