코드에서 발생하는 환각은 LLM 오류 중 가장 덜 위험한 형태임

1 week ago 3

  • 많은 개발자들이 LLM을 코드 작성에 사용하려다 환각(Hallucination)을 경험하고 신뢰를 잃음
    • LLM이 존재하지 않는 메서드나 라이브러리를 창작하는 것은 흔한 일
    • 하지만 코드에서의 환각은 가장 덜 위험한 유형의 환각
  • 가장 위험한 것은 LLM이 오류를 만들어내지만 컴파일러나 인터프리터에서 즉시 감지되지 않는 경우
    • 환각된 메서드는 실행 즉시 오류를 발생시키므로 쉽게 발견할 수 있음
    • 오류 메시지를 LLM에 다시 입력하면 자동으로 수정할 수도 있음
  • 일반적인 텍스트 환각과 달리, 코드는 실행을 통해 사실 확인이 가능
  • 자동 오류 수정 기능이 있는 LLM
    • ChatGPT Code Interpreter, Claude Code 등의 도구는 LLM이 작성한 코드를 실행하고 오류를 감지하여 스스로 수정함
    • LLM이 작성한 코드를 실행도 안 하고 평가하는 것은 비효율적임
  • 일부 개발자들은 LLM이 환각된 메서드를 생성했다는 이유로 기술 자체를 배척하려 함
    • 하지만 효과적으로 사용하려면 학습과 실험이 필수적임
    • 필자는 2년 넘게 AI 기반 코드 작성에 대해 연구하고 있으며, 여전히 새로운 기술을 배우고 있음
  • 코드의 수동 테스트는 필수임
    • 코드가 정상적으로 실행된다고 해서 기대한 대로 동작한다는 보장은 없음
    • 코드 리뷰나 자동화된 테스트만으로 코드의 정확성을 완전히 검증할 수 없음
    • 직접 실행하고 검증하는 과정이 필수적임
    • LLM이 생성한 코드는 가독성이 뛰어나기 때문에 방심할 가능성이 있음
    • 사람의 코드도 마찬가지로, 직접 실행해보기 전까지는 신뢰해서는 안 됨
  • 환각을 줄이는 방법
    • 다른 모델 사용: 특정 플랫폼에 대한 학습 데이터가 더 풍부한 모델을 선택
      • 예: Claude 3.7 Sonnet (thinking mode 활성화), OpenAI o3-mini-high, GPT-4o (Python Code Interpreter 포함)
    • 맥락(context) 활용: 특정 라이브러리를 LLM이 모르더라도 예제 코드를 제공하면 패턴을 학습 가능
    • 안정적인 기술 선택: 오래된 라이브러리를 선택하면 LLM이 더 잘 다룰 가능성이 높음
  • 코드 리뷰의 중요성
    • "LLM이 작성한 코드를 전부 리뷰해야 한다면 직접 작성하는 게 빠르다"는 주장에 반박함
    • 이는 코드 리뷰 능력 부족을 드러내는 발언일 수도 있음
    • LLM이 생성한 코드 리뷰는 실력을 향상시킬 좋은 기회가 될 수 있음
  • 보너스: Claude 3.7 Sonnet의 피드백
    • 필자는 블로그 초안을 Claude 3.7 Sonnet의 "extended thinking mode"에 검토 요청함
    • "이 글의 논리가 설득력 있는지, 개선할 점이 있는지, 빠진 내용이 있는지 검토해 달라"고 요청함
    • Claude는 초안의 어조를 부드럽게 만드는 데 도움을 줌
    • Claude 피드백 대화 링크

Read Entire Article