AI가 쓴 초안을 두 달 검증하면서 잡은 할루시네이션 8가지 — 코드에서 보는 것과 똑같았습니다
개인 기술 블로그를 AI로 초안 쓰고 사람이 검증해서 운영하고 있습니다. 두 달쯤 지나서 발행 전 팩트체크에서 걸러낸 것들을 모아 봤더니, 코딩할 때 보는 할루시네이션과 모양이 거의 같아서 공유해 봅니다.
AI 초안에 있던 내용 | 실제 진실 | 코드로 비유하자면 |
원본에 없는 거대한 금액이 구체적 숫자로 표기됨 | 어디에도 존재하지 않는 가짜 수치 | 시그니처만 그럴듯하고 존재하지 않는 함수호출 |
장기 계획에 원본에 없는 목표 연도 작성 | 연도 및 타임라인 자체를 임의로 지어냄 | 특정 버전 전용 기능을 버전 조건문(If) 없이 설명 |
ETF 지수 산출 방식을 매우 상세히 설명 | 운용사 공식 페이지에도 없는 순수 창작 | 라이브러리 내부 동작 방식 및 기본값을 임의 창작 |
두 행사의 일자와 발표 내용을 교차 믹스 | 서로 다른 날, 전혀 다른 행사 내용 | 서로 다른 버전의 문법을 한 코드 블록에 교차 작성 |
법안 흐름을 "확대/추진 중"으로 설명 | 실제로는 금지 조항이 통과되어 규제된 상태 | 이미 Deprecated(폐기)된 API를 최신 표준법으로 안내 |
출처/각주 링크를 상세히 첨부 | 해당 URL 페이지에 관련 내용이 아예 없음 | 공식 문서 링크를 주었으나 정작 문서엔 해당 함수 없음 |
마무리 글에 "앞서 설명했듯이" 남발 | 본문 어디에도 해당 내용 설명이 없음 | 실제 작동하는 코드와 완전히 딴소리하는 주석 |
번역 에이전트: "완료 후 위에 전달함" | 번역본 미반환 (재요청해도 동일 증상) | 단위 테스트 실행도 안 해놓고 "테스트 통과" 보고 |
정리하면서 느낀 건 세 가지였습니다.
1. 구체적일수록 더 의심해야 했습니다. 위쪽 세 개는 전부 숫자·연도·산출 방식처럼 구체적인 내용이었습니다. 구체적이면 믿음이 가는데, 원본에 없는 구체성은 거의 다 지어낸 거였습니다. fetchUserWithRetry 같은 함수명이 그럴듯해 보이는 것과 같은 이유 같습니다.
2. 링크는 열어 봐야 합니다. 출처가 달려 있으면 검증된 것처럼 보이는데, 실제로 열어 보니 내용이 없었습니다. "AI한테 문서 링크 달라고 하면 되지"가 안 통하는 이유였습니다.
3. "완료했다"는 결과물로 확인해야 합니다. 마지막 건 내용이 틀린 게 아니라 작업 자체가 없었던 경우입니다. 에이전트형 도구를 쓸수록 이런 게 늘어서, 요약 말고 실제 테스트 로그와 diff를 보는 습관이 필요하다고 봅니다.
결국 잡아낸 방법도 코딩 때랑 같았습니다. 원본 대조, 공식 문서 확인, 다시 검색, 링크 직접 열기, 결과물 존재 확인. 코드 쪽 검증 절차(타입체커 → 공식 문서 대조 → 테스트)와 같이 블로그에 정리해 뒀습니다.
https://stock-engineer.com/ai-coding-hallucination-verification/
다들 AI 코드에서 제일 자주 걸리는 유형은 뭐였는지 궁금합니다.
