4.8.4 선택지(Option) 기반의 분류 문제로 변환하여 주관식 배제하기

4.8.4 선택지(Option) 기반의 분류 문제로 변환하여 주관식 배제하기

거대 언어 모델(LLM)을 엔터프라이즈 파이프라인의 구성 요소로 사용할 때, 가장 통제하기 어려운 출력 형태는 생성형 AI의 본질이기도 한 ’주관식 서술형(Open-ended Generation)’이다. “이 사용자의 불만 사항은 무엇인가?“라는 프롬프트는 모델에게 무한한 텍스트 공간을 열어주며, 이는 매번 다른 어휘와 문장 구조로 귀결되어 오라클(Oracle)의 결정론적 검증을 불가능하게 만든다.

이를 제어하기 위한 프롬프트 엔지니어링의 핵심 기법은, 자연어 생성(NLG) 문제를 제한된 범위 내에서 정답을 고르는 ’객관식 분류(Classification) 문제’로 강제 변환하는 것이다.

1. 프롬프트 내 선택지(Option) 명시 기법

파이썬의 열거형(Enum)이나 데이터베이스의 제약 조건(Constraint)과 마찬가지로, 프롬프트 내부에도 모델이 선택할 수 있는 ’허용된 상태(Allowed States)’의 집합을 명시적으로 선언해야 한다.

  • 안티 패턴 (주관식 허용):

“다음 고객 리뷰의 감정을 분석해서 반환해.”

  • 예상 한계치: "이 리뷰는 매우 긍정적입니다", "기쁨", "만족스러워 보임" 등 무한히 파편화된 출력이 발생하여 CI/CD 파이프라인의 assert 문 검증을 붕괴시킨다.

  • 결정론적 패턴 (객관식 분류):

“다음 고객 리뷰의 감정을 분석하라. 너의 응답은 반드시 아래에 제시된 3개의 선택지 중 하나와 정확히 일치해야 하며, 어떠한 부가 설명도 덧붙이지 마라.
[선택지]: POSITIVE, NEGATIVE, NEUTRAL”

이러한 객관식 프롬프트팅(Multiple-choice Prompting)은 LLM의 다음 토큰 예측(Next Token Prediction) 확률 분포를 극단적으로 좁히는 효과를 낸다. 모델은 P, N과 같은 첫 글자를 샘플링하는 순간, 자연스럽게 설계자가 의도한 나머지 토큰들을 확정적으로 따라가게 된다.

2. 오답(Out-of-bound) 처리와 Fallback 선택지

완벽해 보이는 선택지 기반 프롬프트에도 맹점은 존재한다. 만약 사용자의 입력(리뷰)이 너무 모호하거나 긍정/부정이 뒤섞여 있어 모델이 제시된 3개의 카테고리 중 어느 것도 확신하지 못할 때 억지로 잘못된 분류를 수행하는 강제 할당 현상이 발생할 수 있다.

이를 방지하고 오라클의 평가 무결성을 높이기 위해, 선택지에는 반드시 예외 처리를 위한 **‘안전망(Fallback) 옵션’**이 포함되어야 한다.

  • Fallback 옵션을 포함한 설계:

“[선택지]: POSITIVE, NEGATIVE, NEUTRAL, UNKNOWN”
“만약 텍스트에 감정을 유추할 수 있는 정보가 전혀 없거나 판단이 애매하다면, 반드시 ’UNKNOWN’을 선택하라.”

이렇게 UNKNOWN이나 N/A 옵션을 명시적으로 열어두면, 모델이 ’할루시네이션(환각)을 통해 주관식을 지어내려는 본능’을 합법적인 선택지로 우회시킬 수 있다.

3. 오라클 시스템과의 결합

프롬프트를 객관식으로 제어하면 오라클의 구조는 혁신적으로 단순해진다. 의미론적 텍스트 유사도 조사나 값비싼 LLM-as-a-Judge를 동원할 필요 없이, 오라클 스크립트는 단순히 정답지(Ground Truth)의 배열(Array)과 AI의 출력이 O(1) 멤버십 테스트(output in ["POSITIVE", "NEGATIVE", "NEUTRAL", "UNKNOWN"])를 통과하는지만 검사하면 된다.

결과적으로 주관식의 배제는 AI의 문학적 창의성을 거세하는 공학적 ’억압’이지만, 동시에 AI를 전통적인 소프트웨어 API처럼 예측 가능하고 견고한 함수의 일부분으로 편입시키는 가장 경제적이고 확실한 방법론이다.