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종 세트
- 효과 모니터링 대시보드: 실효율·포맷 붕괴율·환각 비율을 상시 집계 (관측 가능성이 먼저다)
- Bad Case 자동 귀속: 프로덕션 실패 사례를 정기적으로 템플릿에 되먹임
- 모델 버전 교체 시 배치 회귀 테스트: 새 버전 호환성 퇴화를 방지 — 표본 추출이 아니라 배치 전체로 해야 분포 수준의 퇴화가 드러난다
핵심 통찰
- "셋 다 안 바꿨는데 나빠졌다" 자체가 답의 절반이다 — 변수가 시스템 내부가 아니라 입력 분포·컨텍스트 길이라는 외부 조건에 있다는 뜻이다. 이 지점을 먼저 짚어야 나머지 진단이 성립한다.
- 정적 템플릿의 안정성은 "입력 분포가 불변"이라는 암묵적 가정 위에 서 있다 — Demo가 안정적인 이유는 입력이 깨끗하고 시나리오가 단일하고 샘플이 정형이기 때문이다. 이 가정은 온라인에서 즉시 깨진다.
- 제약 실효는 제약 소실이 아니라 상대 가중치 하락이다 — 긴 대화일수록 지시의 유효 가중치가 희석되고 모델은 이력의 관성을 따른다. 따라서 "규칙을 더 쓰는 것"은 무효 동작이고, 규칙의 컨텍스트 내 위치를 바꾸는 것(후치 가중)이 유효 동작이다.
- 확률성은 없애는 게 아니라 표현 공간을 압축하는 것이다 — 배치 요동과 샘플링 확률성은 모델의 고유 속성이라 더 강한 모델로도 가져갈 수 없다. 손잡이는 두 가지뿐이다: 온도 하향/확정적 추론(발산 제한), 고정 출력 구조와 파싱 포맷(잔여 요동이 하류로 전달되지 않게).
- 신뢰성은 더 완벽한 Prompt가 아니라 강등 계층에서 나온다 — 계층 검증의 설계 전제는 모델이 규칙을 어길 수 있음을 인정하는 것이다. "포맷/키워드/로직 검증 + 자동 재작성/재시도/강등"을 모델 뒤에 두면 시스템 가용성이 단발 생성의 운에 더 이상 매이지 않는다.
- 퇴화가 "지속적"인 이유는 클로즈드 루프의 부재이지 기교의 부재가 아니다 — 앞의 세 근원은 "고장 나는 이유"를 결정하고, 네 번째 근원(모니터링·이터레이션·클로즈드 루프 없음)이 "고장이 발견되지 않고 고쳐지지 않는 이유"를 결정한다. Bad Case가 계속 쌓이는 것이 정확도가 단조 하락하는 진짜 메커니즘이다.
- Prompt는 자산이며 버전·모니터링·회귀 테스트를 갖춰야 한다 — Prompt를 이터레이션 가능한 제어 시스템으로 다룬다는 것은 코드와 동급의 엔지니어링 장비(관측 가능한 모니터링, 되먹임 가능한 Bad Case, 회귀 방지 가능한 배치 테스트)가 필요하다는 뜻이다.
- 분수령은 운영 경험이지 작문 실력이 아니다 — 이 질문에 답할 수 있다는 것은 장주기 온라인 시스템을 운영해 본 적이 있다는 증명이지, Prompt를 잘 쓴다는 증명이 아니다.
엔지니어링 실전 Tips
- 입력 이탈 샘플로 압박 테스트할 것: 모델이 샘플에서 조금만 벗어나면 흔들리므로, 깨끗한 샘플 대신 초장문/초단문/의미 모호/시나리오 혼합 같은 이탈 샘플을 일부러 만들어 템플릿을 두들길 것.
- 긴 대화는 반드시 따로 테스트할 것: 짧은 대화에서의 준수율은 참고 가치가 없다. 온라인 실제 길이까지 대화 턴을 늘려야 지시 가중치 압박 문제가 드러난다.
- 포맷 안정이 내용 완벽보다 우선이다: 고정 출력 구조와 파싱 포맷의 수익은 배치 요동이 하류 파싱을 흔드는 것을 막는 데 있다. 하류가 안정적으로 파싱할 수 있어야 내용 품질을 논할 자격이 생긴다.
- 강등 출력은 사전에 정의해 둘 것: 재시도가 실패했을 때의 강등 출력이 사전에 설계된, 업무가 받아들일 수 있는 결과 형태가 아니면 그 자체가 온라인 장애다.
- 모니터링 지표는 실패 유형별로 분리할 것: "실효/포맷 붕괴/환각"을 나눠 집계해야 한다. 셋의 수리 동작이 완전히 다르기 때문이다 — 포맷 붕괴는 파싱·검증 계층, 환각은 제약·경계 규칙, 실효는 라우팅·템플릿 매칭을 가리킨다.
- Bad Case 귀속은 자동화할 것: 사람이 수집하면 트래픽이 큰 온라인 환경에서 반드시 누락되고, 클로즈드 루프는 첫 고리에서 끊긴다.
- 모델 버전 교체 회귀는 배치로, 표본 추출로 하지 말 것: 버전 교체는 출력 분포 전체에 영향을 주므로, 몇 건 통과했다고 호환성이 보장되지 않는다.