← 최신 논문
💬 NLP

Library Hallucinations in LLM-Generated Code: A Risk Analysis Grounded in Developer Queries

본 논문은 오타나 가짜 이름과 같은 현실적인 개발자 프롬프트 변형이 LLM 생성 코드에서 라이브러리 환각을 유발하는 방식을 체계적으로 연구한 최초의 사례를 제시하며, 이를 통해 중대한 취약점을 드러내고 이러한 위험을 재현 가능한 방식으로 평가하고 완화하기 위한 LibHalluBench 벤치마크를 도입합니다.

원저자: Lukas Twist, Jie M. Zhang, Mark Harman, Helen Yannakoudakis

게시일 2026-05-20
📖 4 분 읽기☕ 가벼운 읽기

원저자: Lukas Twist, Jie M. Zhang, Mark Harman, Helen Yannakoudakis

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

매우 재능 있고 자신감 있지만 약간 건망증이 있는, 컴퓨터 코드 작성에 능숙한 조수를 상상해 보세요. 여러분이 그들에게 특정 도구를 만들어 달라고 요청하면, 그들은 기쁘게 타이핑을 시작합니다. 하지만 이 조수에게는 위험한 습관이 있습니다: 필요한 도구의 정확한 이름을 모를 때, 그들은 때때로 그것을 만들어냅니다. 존재하지 않는 라이브러리(미리 제작된 코드 모음)를 발명하지만, 그렇게 확신에 차서 적어내기 때문에 실제로 사용해 보려고 시도하고 오류가 발생할 때까지 그것이 가짜라는 사실을 깨닫지 못할 수도 있습니다.

이 논문은 여러분이 약간 다른 지시를 내리거나 작은 실수를 할 때, 왜 이 조수가 이러한 가짜 도구들을 만들어내는지 에 대해 깊이 탐구합니다.

다음은 그들의 발견을 간단한 비유로 정리한 내용입니다:

1. "시간 여행" 함정

연구자들은 여러분이 조수에게 "2025 년의" (아직 발생하지 않았거나 그들의 훈련 데이터를 벗어난 연도의) 도구를 요청하면, 조수가 매우 초조해지며 광적으로 환각을 일으킨다는 사실을 발견했습니다.

  • 비유: 미래에 출판된 책을 도서관 사서에게 요청한다고 상상해 보세요. 사서가 "그 책은 없습니다"라고 말하는 대신, 제목, 표지, 그리고 완벽해 보이지만 존재하지 않는 요약을 만들어낼 수 있습니다.
  • 결과: "2025 년의" 라이브러리를 요청했을 때, 최대 **85%**의 경우 조수가 가짜 라이브러리를 발명했습니다. 그들은 자신의 "지식 컷오프"(학습을 중단한 날짜) 를 아는 데 매우 서툴렀습니다.

2. "오타" 함정 (부주의한 철자)

실제 라이브러리 이름을 실수로 철자를 틀리게 쓰면, 조수는 종종 여러분을 정정하지 않습니다. 대신, 그들은 틀린 철자 버전이 진짜인 것처럼 강하게 주장합니다.

  • 비유: 여러분이 "Spagetti"(h 가 빠진) 를 요청한다고 상상해 보세요. 셰프가 "스파게티를 말씀하신 건가요?"라고 묻는 대신, 그들이 만들어낸 선반에서 "Spagetti"라고 라벨이 붙은 상자를 가져오거나, worse, 존재하지 않는 "Spagetti"라는 새로운 요리를 발명할 수 있습니다.
  • 결과:
    • 한 글자의 오타(예: numpy 대신 numpi) 는 **26%**의 경우 가짜 라이브러리를 사용하게 했습니다.
    • 가짜 라이브러리 이름(실제처럼 들리지만 존재하지 않는 것, 예: "GaussianTools") 은 최대 **99%**의 경우 받아들여지고 사용되었습니다. 조수는 여러분에게 그것이 존재하지 않는다고 말하기보다 가짜 도구를 사용하는 것보다 여러분을 기쁘게 하려는 욕구가 너무 강했습니다.

3. "형용사" 함정 (작동하지 않는 것)

흥미롭게도, 여러분이 "빠른", "쉬운", 또는 "현대적인" 라이브러리를 요청하면, 조수는 보통 이러한 단어들을 무시하고 알고 있는 표준적인 실제 라이브러리를 선택합니다.

  • 비유: "빠른 차"를 요청하면, 조수는 표준 토요타 차를 줄 뿐입니다. 그들은 이러한 형용사들이 모호하다는 것을 알기 때문에 "초고속 비행 자동차"를 발명하지 않습니다.
  • 결과: "빠른"이나 "가벼운"과 같은 형용사는 거의 환각을 유발하지 않았습니다. 위험은 날짜와 같은 구체적인 제약 조건이나 오타와 같은 오류에서 비롯됩니다.

4. "추론" 함정 (너무 많이 생각하기)

연구자들은 조수에게 답변하기 전에 "단계별로 생각하라"거나 "사실을 확인하라"고 말함으로써 이를 해결하려고 시도했습니다.

  • 비유: 긴장한 학생에게 "깊은 숨을 들이마시고 이 수학 문제를 열심히 생각해보라"고 말하는 것과 같습니다. 때로는 이것이 도움이 되지만, 종종 학생은 자신의 틀린 답변을 정당화하는 데 더 많은 시간을 보냈기 때문에 오히려 더 확신하게 됩니다.
  • 결과: 이러한 "추론" 트릭은 일관되게 작동하지 않았습니다. 사실, 때로는 환각을 더 악화시켰습니다. 조수는 가짜 라이브러리가 왜 진짜인지 확신에 차서 설명하여 여러분이 실수를 발견하기 어렵게 만들었습니다.

5. "도구" 솔루션 (전화부 확인)

연구자들은 조수에게 공식 데이터베이스(PyPI) 에 라이브러리가 실제로 존재하는지 확인하는 버튼과 같은 간단한 도구를 제공하는 것을 테스트했습니다.

  • 비유: 조수가 추측하는 대신, 여러분이 그들에게 전화부를 건네는 것입니다. 그들이 "Spagetti 를 사용하겠습니다"라고 말하면, 그들은 책을 확인하고 그것이 없음을 보며 "아, 그것은 존재하지 않네요"라고 말합니다.
  • 결과: 이는 많은 도움이 되었지만 마법의 해결책은 아니었습니다. 조수는 여전히 때때로 책을 확인하는 것을 잊거나, 확인했지만 결과를 무시하고 가짜 이름을 그대로 사용하기도 했습니다.

핵심 교훈: LIBHALLUBENCH

이 문제가 매우 크기 때문에, 저자들은 LIBHALLUBENCH라는 새로운 테스트를 만들었습니다.

  • 비유: 이는 자율 주행 자동차가 가짜 정지 표지판을 환각할지 여부를 확인하기 위해 특별히 설계된 "운전 면허 시험"이라고 생각하세요. 여기에는 "2025 년의 라이브러리를 주세요"나 "이 철자가 틀린 이름을 사용하세요"와 같은 수천 개의 까다로운 질문이 포함되어 있어 다양한 AI 모델이 가짜 도구를 만들어낼 가능성을 체계적으로 테스트합니다.

왜 이것이 중요한가요?

코드를 작성하는 데 AI 를 사용하는 개발자라면, AI 가 가짜 라이브러리를 발명할 경우 코드를 실행하려고 할 때 충돌이 발생합니다. 더 나쁜 것은, 해커가 AI 가 발명한 것과 일치하는 가짜 라이브러리를 만드는 경우(이러한 수법은 "슬롭스쿼팅"이라고 함) 시스템이 악성 소프트웨어에 감염될 수 있다는 점입니다.

간단히 말해: AI 코드 생성기는 훌륭하지만, 정답을 모를 때 위험할 정도로 확신에 차 있습니다. 그들은 여러분의 요청을 충족시키기 위해 가짜 도구를 발명하며, 특히 미래의 것을 요청하거나 작은 오타를 낼 때 그렇습니다. 그들이 무언가를 만들어내지 못하게 막는 더 나은 방법들이 필요합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →