Prompt는 써놓고 끝나지 않는다 — 템플릿도 모델도 그대로인데 왜 퇴화하는가

← 전체 목차 · 이전: 프롬프트가 너무 길면 무슨 함정이 있나 · 다음: Temperature는 창의력 스위치가 아니라 확률분포의 평활 계수다

템플릿도 안 바꾸고 모델도 안 바꾸고 파라미터도 안 바꿨는데, 며칠 지나면 답이 흐트러지고 포맷이 깨진다. 이 역설이 질문의 전부다. 원인이 시스템 내부가 아니라 입력 분포와 컨텍스트 길이라는 외부 조건에 있다는 것을 첫 줄에서 짚을 수 있어야 한다.

틀린 답 세 가지: 화술을 더 자세히 쓴다 / 제약 조건을 더 추가한다 / 더 강한 모델로 바꾼다. 셋 다 정적 템플릿을 손보는 동작일 뿐, 왜 퇴화하는지에는 답하지 않는다.

프롬프트는 문서가 아니라 제어 시스템이다

Demo 단계프로덕션
입력 품질깨끗함뒤섞임
시나리오단일중첩
샘플정형길이 제각각, 의미 편차
컨텍스트안정계속 요동

초급 개발자는 Prompt의 문장력을 겨루고, 고급 개발자는 Prompt의 안정성·통제성·이터레이션 가능성을 겨룬다.

네 가지 퇴화 근본 원인

근원 1: 정적 템플릿의 적응력 부재
   입력이 샘플 분포를 조금만 벗어나도 모델이 곧바로 흔들린다

근원 2: 긴 컨텍스트가 제약 조건을 밀어낸다
   대화가 길어질수록 → 유효 제약이 희석 → 지시 가중치 압박
   → 모델이 이력의 관성을 우선 따름 → 현재 규칙 무시

근원 3: 모델 배치 확률성은 통제 불가
   동일 입력도 출력이 갈린다 — 우연한 버그가 아니라 통계적 필연

근원 4: 모니터링·이터레이션·클로즈드 루프의 부재
   Prompt를 쓰고 다시 보지 않으면 Bad Case가 계속 쌓인다

근원 1~3은 "고장 나는 이유"이고 근원 4는 "고장이 방치되는 이유"다. 지속적 퇴화의 진짜 근인은 네 번째다.

네 가지 방어선

#방어선대응하는 근원핵심 동작
1동적 Prompt 라우팅근원 1의도·길이·시나리오로 전용 템플릿 자동 매칭
2지시 가중치 격리근원 2하드 규칙·출력 포맷·금지 사항을 후치 배치
3추론 안정화근원 3온도 하향, 확정적 추론, 고정 출력 구조
4계층 검증 + 강등근원 3의 잔여 리스크포맷/키워드/로직 검증 → 재작성/재시도/강등
모델 출력
  → 포맷 검증
  → 키워드 검증
  → 로직 검증
  → 위반 시: 자동 재작성 → 재시도 → 강등 출력
  → 목표는 "모델이 절대 틀리지 않는 것"이 아니라 "틀려도 결과가 쓸 수 있는 것"

방어선 2의 핵심은 규칙을 더 쓰는 것이 아니라 규칙의 컨텍스트 내 위치를 바꾸는 것이다. 규칙은 사라진 게 아니라 상대적 가중치가 눌린 것이므로, 모델이 마지막에 읽도록 뒤로 보낸다.

방어선 3의 핵심은 확률성을 없애는 게 아니라 표현 공간을 압축하는 것이다. 온도를 낮추고 확정적 추론을 켜는 것은 발산을 제한하는 것이고, 고정 출력 구조는 남은 요동이 하류 파싱까지 전달되지 않게 막는 것이다.

장기 이터레이션 — 근원 4를 막는 3종 세트

  1. 효과 모니터링 대시보드: 실효율·포맷 붕괴율·환각 비율을 상시 집계 (관측 가능성이 먼저다)
  2. Bad Case 자동 귀속: 프로덕션 실패 사례를 정기적으로 템플릿에 되먹임
  3. 모델 버전 교체 시 배치 회귀 테스트: 새 버전 호환성 퇴화를 방지 — 표본 추출이 아니라 배치 전체로 해야 분포 수준의 퇴화가 드러난다

핵심 통찰

  1. "셋 다 안 바꿨는데 나빠졌다" 자체가 답의 절반이다 — 변수가 시스템 내부가 아니라 입력 분포·컨텍스트 길이라는 외부 조건에 있다는 뜻이다. 이 지점을 먼저 짚어야 나머지 진단이 성립한다.
  2. 정적 템플릿의 안정성은 "입력 분포가 불변"이라는 암묵적 가정 위에 서 있다 — Demo가 안정적인 이유는 입력이 깨끗하고 시나리오가 단일하고 샘플이 정형이기 때문이다. 이 가정은 온라인에서 즉시 깨진다.
  3. 제약 실효는 제약 소실이 아니라 상대 가중치 하락이다 — 긴 대화일수록 지시의 유효 가중치가 희석되고 모델은 이력의 관성을 따른다. 따라서 "규칙을 더 쓰는 것"은 무효 동작이고, 규칙의 컨텍스트 내 위치를 바꾸는 것(후치 가중)이 유효 동작이다.
  4. 확률성은 없애는 게 아니라 표현 공간을 압축하는 것이다 — 배치 요동과 샘플링 확률성은 모델의 고유 속성이라 더 강한 모델로도 가져갈 수 없다. 손잡이는 두 가지뿐이다: 온도 하향/확정적 추론(발산 제한), 고정 출력 구조와 파싱 포맷(잔여 요동이 하류로 전달되지 않게).
  5. 신뢰성은 더 완벽한 Prompt가 아니라 강등 계층에서 나온다 — 계층 검증의 설계 전제는 모델이 규칙을 어길 수 있음을 인정하는 것이다. "포맷/키워드/로직 검증 + 자동 재작성/재시도/강등"을 모델 뒤에 두면 시스템 가용성이 단발 생성의 운에 더 이상 매이지 않는다.
  6. 퇴화가 "지속적"인 이유는 클로즈드 루프의 부재이지 기교의 부재가 아니다 — 앞의 세 근원은 "고장 나는 이유"를 결정하고, 네 번째 근원(모니터링·이터레이션·클로즈드 루프 없음)이 "고장이 발견되지 않고 고쳐지지 않는 이유"를 결정한다. Bad Case가 계속 쌓이는 것이 정확도가 단조 하락하는 진짜 메커니즘이다.
  7. Prompt는 자산이며 버전·모니터링·회귀 테스트를 갖춰야 한다 — Prompt를 이터레이션 가능한 제어 시스템으로 다룬다는 것은 코드와 동급의 엔지니어링 장비(관측 가능한 모니터링, 되먹임 가능한 Bad Case, 회귀 방지 가능한 배치 테스트)가 필요하다는 뜻이다.
  8. 분수령은 운영 경험이지 작문 실력이 아니다 — 이 질문에 답할 수 있다는 것은 장주기 온라인 시스템을 운영해 본 적이 있다는 증명이지, Prompt를 잘 쓴다는 증명이 아니다.

엔지니어링 실전 Tips

  • 입력 이탈 샘플로 압박 테스트할 것: 모델이 샘플에서 조금만 벗어나면 흔들리므로, 깨끗한 샘플 대신 초장문/초단문/의미 모호/시나리오 혼합 같은 이탈 샘플을 일부러 만들어 템플릿을 두들길 것.
  • 긴 대화는 반드시 따로 테스트할 것: 짧은 대화에서의 준수율은 참고 가치가 없다. 온라인 실제 길이까지 대화 턴을 늘려야 지시 가중치 압박 문제가 드러난다.
  • 포맷 안정이 내용 완벽보다 우선이다: 고정 출력 구조와 파싱 포맷의 수익은 배치 요동이 하류 파싱을 흔드는 것을 막는 데 있다. 하류가 안정적으로 파싱할 수 있어야 내용 품질을 논할 자격이 생긴다.
  • 강등 출력은 사전에 정의해 둘 것: 재시도가 실패했을 때의 강등 출력이 사전에 설계된, 업무가 받아들일 수 있는 결과 형태가 아니면 그 자체가 온라인 장애다.
  • 모니터링 지표는 실패 유형별로 분리할 것: "실효/포맷 붕괴/환각"을 나눠 집계해야 한다. 셋의 수리 동작이 완전히 다르기 때문이다 — 포맷 붕괴는 파싱·검증 계층, 환각은 제약·경계 규칙, 실효는 라우팅·템플릿 매칭을 가리킨다.
  • Bad Case 귀속은 자동화할 것: 사람이 수집하면 트래픽이 큰 온라인 환경에서 반드시 누락되고, 클로즈드 루프는 첫 고리에서 끊긴다.
  • 모델 버전 교체 회귀는 배치로, 표본 추출로 하지 말 것: 버전 교체는 출력 분포 전체에 영향을 주므로, 몇 건 통과했다고 호환성이 보장되지 않는다.