코드 프롬프팅으로 LLM 할루시네이션 해결! 답변 정확도 22% 높이는 법
별도 실행기 없이, 프롬프트 구조만 코드로 바꿔도 GPT-3.5 기준 22%p 이상 정확도가 오릅니다. arXiv 최신 연구 기반의 ‘Code Prompting’ 기법을 지금 바로 적용해보세요.
LLM에게 복잡한 업무 가이드를 던져줬는데, 자꾸 엉뚱한 소리(Hallucination)를 해서 속 터진 적 있으시죠? “A이면 B이고, C가 아닐 때만 D를 해” 같은 복잡한 조건문은 똑똑하다는 모델들도 곧잘 헷갈려 합니다.
오늘은 별도의 프로그램 실행기 없이, 오직 프롬프트 구조를 ‘코드’ 형태로 바꾸는 것만으로 답변의 정확도를 비약적으로 높이는 ‘Code Prompting(코드 프롬프팅)’ 기법을 소개해 드립니다. arXiv의 최신 연구를 바탕으로, 왜 코드가 텍스트보다 강력한지 핵심만 짚어보겠습니다.
1. 텍스트는 ‘줄글’이고, 코드는 ‘설계도’다
우리가 흔히 쓰는 자연어 프롬프트는 정보가 여기저기 흩어져 있는 ‘장문의 편지’와 같습니다. 모델이 읽다가 앞 내용을 까먹기 쉽죠. 반면, 이를 파이썬 스타일의 코드로 바꾸면 이야기가 달라집니다.
비유하자면, 횡설수설 적힌 인수인계 서류를 깔끔한 ‘순서도’로 요약해 주는 것과 같습니다.
- 변수의 명확성: 대상을 변수명으로 딱 박아두니 헷갈릴 일이 없습니다.
- 논리의 강제성:
if-else문을 쓰면 조건의 순서와 관계가 명확해집니다. - 상태 추적(State Tracking): 현재 이 값이
True인지False인지 추적하는 능력이 극대화됩니다.
2. 수치로 증명된 “코딩하는 척”의 위력
놀라운 점은 이 코드를 실제로 실행할 필요가 없다는 것입니다. 그냥 코드 형태로 보여주기만 해도 모델의 내부 추론 로직이 더 정교하게 돌아갑니다.
| 모델 | 성능 향상폭 (조건부 추론) | 평가 |
|---|---|---|
| GPT-3.5 | +22.52%p | 압도적 개선 |
| Llama 2 | +16%p 이상 | 대폭 개선 |
| Mixtral | +7.75%p 이상 | 유의미한 개선 |
단순히 말투를 상냥하게 하거나 “단계별로 생각해 봐”라고 하는 것보다, 구조를 코드로 짜주는 게 훨씬 효과적이라는 방증입니다.
3. [Before & After] 실전 적용 가이드
잘못된 사례와 올바른 사례를 비교해 보면 감이 바로 오실 겁니다.
“우리 회사는 오디오북 장비가 아니고 약품 판매인 경우에만 영세율이 적용돼. 지금 상황은 장비는 아니고 약품 판매야. 적용될까?”
→ 조건이 복잡할수록 Hallucination 위험 급증
변수와 if-else 구조로 논리를 먼저 설계한 뒤 질문합니다.
→ 명확한 추론, 정확한 결과 도출
단순히 질문을 던지는 게 아니라, 아래처럼 ‘논리 구조’를 먼저 잡아주세요.
Python# 1. 상태 정의 (Variables)
is_audiobook_equipment = False
is_medicine_sales = True
# 2. 로직 구조화 (Logic)
if is_audiobook_equipment:
apply_zero_vat = False
elif is_medicine_sales:
apply_zero_vat = True
else:
apply_zero_vat = False
# 3. 질문
# 위 로직을 바탕으로 현재 'apply_zero_vat'의 최종 값을 도출하고 이유를 설명해.
4. 요점 정리: 프롬프트도 이제 ‘설계’가 필요합니다
이제 프롬프트 엔지니어링은 “말을 예쁘게 하는 기술”이 아니라 “데이터를 구조화하는 기술”로 진화하고 있습니다.
📌 핵심 요약
- 복잡한 조건은 변수와
if문으로 치환할 것. - 실행하지 않아도 좋다. 구조만 코드를 흉내 내라.
- GPT-3.5 기준 22% 이상의 성능 향상을 기대할 수 있다.
비즈니스 로직이 복잡해질수록 LLM에게 설명을 요구하지 마세요. 대신 논리 설계도(Code)를 그려주세요. 그게 가장 빠르고 정확하게 정답을 받아내는 길입니다.
