22. 일관성과 재현성 높이기

🎯 이 장의 목표
  • 출력이 들쭉날쭉한 이유(확률성)와 그 대응을 안다
  • 일관성을 높이는 프롬프트·설정 기법을 익힌다
  • "완전한 재현"이 어려운 이유와 현실적 목표를 이해한다

같은 입력, 다른 출력

2장에서 모델 출력이 확률적이라 같은 프롬프트도 답이 달라질 수 있다고 했습니다. 이는 창작에는 장점이지만, 일관된 처리가 필요한 작업(분류, 추출, 정형 응답)에는 골칫거리입니다. 같은 후기를 어제는 "긍정", 오늘은 "중립"으로 분류하면 신뢰하기 어렵습니다.

이 장은 그 들쭉날쭉함을 다스리는 법입니다.

일관성을 높이는 기법

기법 1: 모호함을 없앤다 (가장 효과적)

들쭉날쭉함의 큰 원인은 모델의 무작위성만이 아니라, 프롬프트의 모호함입니다(19장). 해석의 여지가 넓으면, 모델이 매번 다른 갈래를 고릅니다. 5장의 명확화·8장의 형식 고정·7장의 예시가 모두 일관성을 높입니다.

CODE
일관성 낮음 ❌            일관성 높음 ✅
"이 후기 평가해줘"      →   "이 후기를 정확히 [긍정/부정/중립] 중
                            하나로만 분류해. 다른 말 없이 라벨만."
출력의 가능한 형태를 좁힐수록 일관성이 오릅니다. "라벨만"처럼 답의 모양을 못박으면 변동이 줄어듭니다.

기법 2: 기준을 명시한다

분류·평가 작업에서 판단 기준을 명시하면, 경계선상의 입력에서 흔들림이 줍니다.

CODE
✅
"별점 기준:
 5=강한 만족 표현, 4=대체로 만족, 3=중립/혼재,
 2=대체로 불만, 1=강한 불만.
이 기준에 따라 분류해."
기준이 없으면 "괜찮아요"가 3이 됐다 4가 됐다 합니다. 기준이 있으면 경계가 안정됩니다.

기법 3: 예시로 경계를 고정한다

7장 few-shot의 핵심 용도 중 하나가 일관성입니다. 까다로운 경계 사례를 예시로 보여주면, 모델이 그 경계를 일관되게 적용합니다. 단, 예시의 형식과 라벨 분포를 일관되게 유지해야 합니다(7장).

기법 4: 출력 형태를 좁힌다

8장의 구조화 출력은 일관성에도 기여합니다. 자유 서술은 변동이 크지만, "라벨 하나" 또는 "정해진 스키마의 JSON"은 변동 여지가 작습니다.

설정으로 다스리기 — temperature

2장에서 본 temperature(무작위성 손잡이)도 일관성에 직접 관여합니다. 낮추면 가장 확률 높은 토큰에 집중해 더 일관적·결정적이 됩니다.

⚠️ 흔한 실수·미신: "일관성이 필요하면 무조건 temperature를 0으로"는 단순화입니다. 두 가지 주의가 있습니다. 첫째, 2장에서 봤듯 일부 최신 추론 모델은 temperature를 기본값에서 바꾸지 말라고 권하며, 낮추면 복잡한 추론에서 오히려 문제가 생길 수 있습니다. 둘째, temperature 0이라도 완전한 재현을 보장하지 않는 경우가 있습니다. 일관성은 프롬프트(기법 1~4)로 먼저 잡고, 설정은 모델 가이드를 확인해 보조적으로 쓰세요.

🔧 개발자 노트: 재현성에 영향을 주는 요소는 temperature 외에도 여럿입니다 — 모델 버전, 시스템 상태, 일부 구현의 비결정성 등. 그래서 프로덕션에서는 ① 특정 모델 스냅샷에 고정(같은 모델군이라도 버전이 바뀌면 동작이 달라질 수 있음), ② 프롬프트를 버전 관리, ③ seed 파라미터 제공 시 활용, ④ 그래도 남는 변동은 후처리·검증으로 흡수, 같은 방어를 겹칩니다. "완벽한 재현"보다 "허용 범위 내 일관성"을 현실적 목표로 삼으세요.

재현성의 현실적 목표

완전히 똑같은 출력을 매번 얻는 것은, 확률적 시스템에서 항상 보장되지는 않습니다. 그러니 목표를 현실적으로 잡으세요.

비현실적 목표현실적 목표
"매번 글자 하나까지 동일""핵심 판단(라벨·결론)이 일관"
"100% 결정적""허용 오차 내에서 안정적"

📌 핵심: 일관성의 목표는 "동일한 출력"이 아니라 "신뢰할 수 있는 일관된 판단"입니다. 분류가 매번 같은 라벨을 주면, 표현이 조금 달라도 충분합니다.

🧪 직접 검증법: 일관성을 측정하려면, 같은 입력을 10번 돌려 결과가 갈리는 비율을 보세요. 분류 작업이라면 "10번 중 같은 라벨이 몇 번"인지. 이 변동률이 높으면 기법 1~4로 프롬프트를 조이고, 다시 측정합니다. 측정 없이 "일관적인 것 같다"는 느낌은 믿기 어렵습니다. 이 측정이 곧 다음 장(평가)의 출발입니다.

일관성과 다양성은 트레이드오프

마지막 균형. 일관성을 극단으로 높이면 다양성·창의성을 잃습니다. 브레인스토밍·창작에서는 오히려 변동이 자산입니다. 작업 성격에 맞게 조절하세요.

CODE
일관성 우선 작업          다양성 우선 작업
─────────────          ─────────────
분류·추출·정형 응답       브레인스토밍·창작·아이디어
→ 모호함 제거, 형식 고정   → 여지를 열어두고 여러 번 생성

이 장에서 배운 것

  • 출력이 들쭉날쭉한 원인은 모델의 확률성과 프롬프트의 모호함 둘 다이며, 후자를 줄이는 것이 가장 효과적이다.
  • 일관성 기법: 모호함 제거, 판단 기준 명시, 예시로 경계 고정, 출력 형태 좁히기.
  • temperature를 낮추면 일관성이 오르지만, 최신 추론 모델은 기본값 유지를 권하기도 하고 0이라도 완전 재현은 보장되지 않는다. 프롬프트로 먼저 잡는다.
  • 프로덕션 재현성은 모델 스냅샷 고정·프롬프트 버전 관리·검증을 겹쳐 다룬다. 목표는 "동일 출력"이 아니라 "허용 범위 내 일관성"이다.
  • 일관성과 다양성은 트레이드오프다. 분류·추출엔 일관성을, 창작엔 다양성을 우선한다.

✍️ 확인 문제

  1. 같은 후기에 대한 분류가 매번 달라집니다. temperature를 건드리기 전에 프롬프트에서 시도할 수 있는 기법 두 가지를 적어보세요.
  1. "temperature를 0으로 하면 항상 똑같은 답이 나온다"는 주장의 어디가 단순화인지, 2장과 이 장의 내용으로 설명해보세요.
  1. (실습) 고객 문의를 4개 범주로 분류하는 작업의 일관성을 높이려 합니다. 기준 명시·형식 고정·예시 세 기법을 모두 적용한 프롬프트를 작성하고, 일관성을 어떻게 측정할지도 적어보세요.
다음 → 23. 평가(eval)의 기초
이전 ← 21. 거절과 실패 다루기 · 목차