서로 다른 12개의 LLM에 똑같은 질문을 던져보았다. “중립적이고 객관적이며 환각(hallucination)을 줄이려면 어떻게 프롬프트를 작성해야 하는가?” 12개 모델 모두 예외 없이 꼼꼼하고 잘 구조화된 답변을 내놓았다. 모두 필자의 전제에 동의했고, 본질적으로 완전히 동일한 답변을 돌려주었다.

아첨하는 태도(sycophancy)를 없애는 법을 가르쳐주어야 할 모델들이, 정작 그 질문에 답하면서 스스로 아첨꾼처럼 굴고 있었던 셈이다.

놀라운 수렴 현상

12개 모델이 독립적으로 내놓은 답변의 공통점은 다음과 같았다:

  • LLM은 RLHF(인간 피드백 기반 강화학습) 때문에 사용자의 비위를 맞춘다. (체크)
  • 질문자의 어조와 표현이 결과에 편향을 일으킨다. (체크)
  • 유도성 표현(leading language)을 제거하라. (체크)
  • 차가운 페르소나(감사관, 분석가, 팩트체커)를 부여하라. (체크)
  • 반론을 의무적으로 제시하도록 강제하라. (체크)
  • 신뢰도 점수를 요구하고 “모른다”는 답변을 허용하라. (체크)
  • 참고 텍스트를 제공하고 “오직 이것만 기반으로 답하라”고 명시하라. (체크)

모든 모델이 동일한 항목을 짚었다. 번호 매겨진 목록이나 표 형태로 구조화했고, 개선 전후의 프롬프트 예시를 포함했다. 그리고 마지막은 한결같이 “어떤 프롬프트도 환각을 완벽히 없앨 수는 없지만, 이러한 기법들이 환각을 획기적으로 줄여준다”는 식의 결론으로 마무리되었다.

12개의 서로 다른 모델, 12개의 독립된 답변, 그러나 실상은 단 하나의 답변이었다.

모델들이 맞게 짚어낸 점들

이 조언들은 탄탄하다. 비록 모델들이 논문을 직접 인용하지는 않더라도, 실제 연구에 잘 기반을 두고 있다.

전제 누출(Presupposition leak)은 실재한다. “왜 X가 실패하고 있는가?“라고 물으면, 모델은 X가 실제로 실패하고 있는지를 검증하기보다 그 실패 이유를 어떻게든 그럴듯하게 설명해 낸다. 질문자의 프레이밍이 모델의 기정사실(ground truth)이 되어버린다. 이는 자기회귀(autoregressive) 언어 모델의 문서화된 고유 특성이다. 모델은 컨텍스트 윈도우의 조건에 극도로 종속된다.

RLHF로 인한 아첨(sycophancy) 역시 실재한다. 스탠포드 대학교의 2025년 ELEPHANT 연구에 따르면, 개방형 질문에서 LLM은 인간보다 47%나 더 사용자의 체면을 살려주려 한다. 부적절한 행동에 대해서도 42%의 확률로 동조한다. PPO 훈련에 사용되는 보상 모델이 고분고분하고 동조적인 응답에 체계적으로 더 높은 점수를 주도록 편향되어 있기 때문이다.

보정 붕괴(Calibration collapse)도 실재한다. 프로덕션 데이터에 따르면, RL(강화학습)로 훈련된 모델은 SFT(지도미세조정) 모델에 비해 예상 보정 오차(Expected Calibration Error)가 약 4배나 나쁘다. 특히 자신이 틀린 답변을 내놓을 때 가장 과도한 확신을 보인다.

“모른다”고 답할 권한을 부여하는 것은 효과가 있다. 모델에게 불확실성을 인정해도 좋다고 명시하면, 환각 발생률이 눈에 띄게 줄어든다. 훈련 과정에서 빈 응답에 페널티를 받기 때문에, 모델의 기본 동작은 어떻게든 그럴듯한 텍스트로 공백을 채우려 드는 것이다. 명시적인 지시로 이 기본값을 덮어쓰는 것은 가장 효과적인 방법 중 하나다.

출처 기반 접지(Source grounding)는 효과가 있다. 모델에게 “제공된 텍스트만 사용하고, 답이 없으면 모른다고 하라”고 지시하는 것은 일종의 수동 RAG(검색 증강 생성)다. 생성 공간을 극적으로 제한한다.

구조화된 출력(Structured output)도 유용하다. 표, 주장-근거-신뢰도 행, 혹은 JSON 스키마 형태로 작성을 강제하면, 모델이 횡설수설하며 산문으로 빠질 여지가 줄어든다. 모델의 연산 자원이 이야기 지어내기 대신 스키마 준수에 집중되기 때문이다.

모델들이 놓친 진실

12개 모델이 서로에게 고개를 끄덕이며 완벽히 일치할 때, 바로 거기서 진짜 문제가 시작된다.

그 기법들이 확장 가능한지 아무도 의문을 제기하지 않았다. 모든 모델은 실제 질문을 던지기 전에 복사해 넣으라며 500단어짜리 장문의 시스템 프롬프트를 제시했다. 현실에서 그런 짓을 하는 사람은 없다. 완벽한 중립 프롬프트를 짜느라 드는 인지적 비용이, 그냥 결과를 직접 검증하는 비용보다 더 크다. 이 조언은 실제 작업 워크플로의 사용성이 아니라, 템플릿 자체의 이론적 정합성에만 최적화되어 있다.

토큰 예산(token budget) 문제를 아무도 인정하지 않았다. 그런 정교한 프롬프트 템플릿은 컨텍스트 윈도우를 갉아먹는다. 복잡한 주제로 여러 턴의 대화를 나눌 때, “중립적인 분석가로서 행동하고, 비위를 맞추려 동조하지 말며, 추론과 사실을 분리하고…” 따위에 500토큰을 낭비하는 것은 실제 본문 콘텐츠에 쓸 토큰 500개를 날리는 셈이다. 모델들은 질문에 답하느라 바쁠 뿐, 이 방식이 효율적인지 반문하지 않는다.

페르소나가 눈속임에 불과하다는 점을 아무도 말하지 않았다. “회의적인 수석 엔지니어처럼 행동하라”는 프롬프트 꼼수일 뿐, 근본적인 해결책이 아니다. 훈련 데이터 중에서 엔지니어링 비판 관련 텍스트 방향으로 토큰 분포를 이동시키는 방식으로 작동하지만, 매우 취약하다. 특히 긴 컨텍스트에서는 대화 도중에 페르소나를 잊어버리기 일쑤다. 더구나 ’비판적인 어조를 흉내 내는 것’과 ’실제로 정확한 것’은 엄연히 다르다. 회의적인 척 연기하는 모델과 엄밀하게 보정(calibrated)된 모델은 같지 않다.

자기참조적 역설(self-referential paradox)을 아무도 지적하지 않았다. 아첨하도록 길들여진 모델에게 어떻게 하면 아첨하지 않게 만들 수 있는지 묻고 있는 꼴이다. 당연히 모델은 질문자의 프레이밍에 맞장구를 친다. 당연히 일목요연하고 방대한 답변을 내놓는다. 그리고 프롬프트 엔지니어링이 그 해답이라는 전제에 힘을 실어준다. “중립성을 위해 어떻게 프롬프트를 짜야 합니까?“라는 질문에 대한 진정으로 비아첨적인 대답은 다음과 같아야 했다: “질문 자체가 잘못되었습니다. 프롬프트 기법은 문제를 줄일 뿐 없애지 못합니다. 진짜 해결책은 외부 검증, 도구 활용, 그리고 중요한 일에 모델의 출력을 함부로 믿지 않는 것입니다.”

12개 모델 중 그 누구도 그렇게 말하지 않았다. 대신 모두가 템플릿을 건넸다.

’중립을 연기하는 것’과 ’실제로 중립적인 것’을 구분하지 못했다. “신뢰도: 73%“라는 텍스트를 출력하는 모델은, 그저 신뢰도 점수처럼 생긴 숫자를 생성하고 있을 뿐이다. 실제로 73% 확률로 보정된 것이 아니다. 그 숫자는 문체상의 선택이지 과학적 측정이 아니다. 모델이 명시적인 보정 목표로 훈련되지 않은 이상(대부분은 그렇지 않다), 그런 신뢰도 숫자는 일종의 연극에 지나지 않는다.

모델들이 마땅히 인용했어야 할 연구들

실제로 환각을 줄이고 싶다면, 학술 문헌들은 프롬프트 템플릿보다 훨씬 더 효과적인 몇 가지 방법을 가리키고 있다.

자기일관성 샘플링(Self-consistency sampling) (Wang et al., 2023): 동일한 질문에 대해 독립적으로 여러 개의 답변을 생성한 후 다수결을 취하는 방식이다. 환각은 샘플 간에 불일치하는 경향이 있는 반면, 사실적 주장은 일관성을 유지한다. 12개 모델 중 단 하나만이 이를 언급했다. 단일 기법으로는 가장 효과적인 방법이라 할 수 있다.

검증을 동반한 생각의 사슬(Chain-of-thought with verification) (Lightman et al., 2023): 각 단계를 다음 단계로 넘어가기 전에 검증하는 프로세스 검증형 추론은 최종 결과만 검증하는 방식보다 훨씬 뛰어나다. 단순히 모델에게 “풀이 과정을 보여줘”라고 지시하는 것과는 다르다. 실제 단계별 검증이 수반되어야 한다.

**RAG(검색 증강 생성)**는 사실 관계 질문에서 환각을 잡는 진짜 해답이다. “주어진 텍스트만 쓰라”고 지시하는 것이 아니라, 실제로 관련된 문서를 검색하여 컨텍스트에 직접 주입하는 것이다. 프롬프트 엔지니어링 방식은 RAG가 자동으로 수행하는 것을 수동으로 어설프게 흉내 낸 버전에 불과하다.

외부 도구 사용과 검증 루프는 그 어떤 프롬프팅 기술보다 강력하다. Kamoi 등의 조사 논문(TACL 2024)에 따르면, 자기 교정에 극히 적합한 특수 과제를 제외하고는, 프롬프트만 받은 LLM이 스스로 피드백을 주어 성공적으로 오류를 바로잡았음을 입증한 연구는 존재하지 않는다. 번역하자면: 프롬프팅만으로는 이 문제를 풀 수 없다. 도구, API, 인간의 검토, 혹은 다른 훈련 분포를 가진 보조 모델 등 외부 피드백이 반드시 필요하다.

메타 교훈 (The Meta-Lesson)

12개의 동일한 답변을 받아보고 얻은 가장 흥미로운 통찰은 답변의 내용 자체가 아니다. 이러한 ’수렴’이 LLM의 작동 방식에 대해 무엇을 폭로하는가이다.

12개 모델 모두 “중립적 프롬프팅 종합 가이드”라는 패턴에 맞춰 매칭을 수행했다. 그들은 훈련 데이터에서 이런 장르의 글을 수도 없이 보았다. 원칙, 예시, 템플릿, 주의사항으로 이어지는 구조는 너무나 잘 정립된 패턴이다. 중립적 프롬프팅에 대해 묻는 순간 그 패턴이 활성화되고, 모델은 그에 어울리는 유려한 텍스트를 뽑아낸다.

이는 애초에 아첨(sycophancy)을 유발하는 메커니즘과 정확히 동일하다. 모델은 질문을 보고 가장 확률이 높은 응답 장르를 파악한 뒤, 그 장르에 들어맞는 텍스트를 생성한다. 그 장르가 “사용자에게 동조하기”라면 맞장구를 친다. 그 장르가 “종합 프롬프팅 가이드”라면 종합 가이드를 써 내려간다. 둘 중 어느 것도 모델이 실제로 그 주장의 타당성을 평가하는 과정을 거치지 않는다.

12개의 일치된 응답은 그 조언이 옳다는 증거가 아니다. 그저 그 조언이 훈련 데이터 속에 풍부하게 존재한다는 증거일 뿐이다. 두 가지는 완전히 다른 이야기다.

실제로 작동하는 것과 그렇지 않은 것

12개의 답변을 모두 검토한 후, 솔직하게 내린 평가는 다음과 같다.

실제로 작동하는 것:

  • 출처 기반 접지 (“오직 이 텍스트만 사용할 것”) — 참고 자료가 있을 때 가장 강력한 기법
  • 자기일관성 샘플링 — N개의 답변을 생성하여 다수결 채택
  • 작업을 검증 가능한 작은 단계로 분할하기 — 환각 발생 가능성이 낮은 작은 생성 윈도우로 강제
  • “모르면 모른다고 말할 것” — 단 한 줄의 지시치고는 놀라울 정도로 효과적임
  • 외부 검증 — 모델의 출력을 실제 출처와 대조하는 습관 (언제나 필수적)

때때로 작동하는 것:

  • 페르소나 부여 (“감사관처럼 행동하라”) — 처음 몇 턴 동안은 효과가 있으나 긴 대화에서는 희석됨
  • 신뢰도 점수 요구 — 어림짐작 신호로는 유용하지만, 숫자가 수학적으로 보정되어 있지는 않음
  • 반론 강제 — 반론을 생성하기는 하지만, 모델이 실제로 그 반론의 무게를 저울질하지는 않음

선전만큼 작동하지 않는 것:

  • 장황한 시스템 프롬프트 — 50단어짜리 지시문에 비해 500단어짜리 블록이 주는 한계 이익은 극히 미미함
  • “다음 주장을 평가하라: X” 식의 프레이밍 — 유도성 표현은 줄이지만 모델은 여전히 주장의 뉘앙스에 패턴 매칭됨
  • 모델에게 자신의 답변을 스스로 비판하도록 하기 — 표면적인 오류는 잘 잡아내지만 추론 오류는 잡지 못하며, 외부 피드백 없는 자기 교정은 대부분 실패한다는 것이 연구 결과로 확인됨

결론

12개의 모델은 나에게 좋은 조언을 건넸다. 그들이 독립적인 사고를 통해 문제를 분석해서가 아니라, 좋은 프롬프팅 조언이 이미 훈련 데이터에 충분히 많았고 모델들이 이를 검색하고 재구성하는 데 탁월하기 때문이다.

역설적이게도 프롬프팅 기법이 실제로 효과가 있는지 검증하는 가장 좋은 방법은, 그것을 추천하는 모델들을 무작정 신뢰하지 않는 것이다. 기법들을 직접 테스트하라. 결과를 수치로 측정하라. 12개의 LLM이 입을 모았다고 해서 그것을 진리의 증거로 삼지 마라. 그것은 단지 당신만의 실험을 시작하기 위한 출발점일 뿐이다.

그리고 12개 모델 중 그 누구도 직설적으로 말해주지 않았던 진실을 단 한 줄로 요약하자면 이렇다:

프롬프트를 더 잘 쓰려 애쓰지 말고, 더 가혹하게 검증하라.

참고 문헌: