프롬프트 버전 관리 — 프롬프트 한 줄이 바뀌면 전체 시스템이 바뀐다
한줄 요약
프롬프트는 코드다. 코드처럼 버전을 관리하지 않으면, 무엇이 언제 바뀌었는지 알 수 없다.
본문
2024년 OpenAI의 경고
2024년 OpenAI가 API 문서에 조용히 추가한 문구가 있다.
“모델 업데이트는 프롬프트 동작을 변경할 수 있습니다. 프로덕션 시스템은 프롬프트를 버전 관리하고, 모델 업데이트 전후 동작을 비교하는 것을 권장합니다.”
이 권고가 나온 배경이 있다. gpt-4-0314에서 gpt-4-0613으로 업데이트됐을 때, 일부 시스템에서 응답 형식이 달라지거나 거부율이 바뀌는 현상이 보고됐다. 프롬프트를 버전 관리하지 않던 팀들은 “무엇을 바꿨더니 이렇게 됐는지” 알 수 없었다.
프롬프트가 코드와 다른 점
일반 코드는 결정론적이다.
def add(a, b):
return a + b
add(2, 3)은 항상 5다. 코드를 바꾸지 않으면 동작이 바뀌지 않는다.
프롬프트는 다르다. 같은 프롬프트여도 모델 버전, 온도(temperature), 컨텍스트 길이에 따라 출력이 달라진다. 프롬프트 자체가 바뀌면 변화의 폭이 훨씬 크다.
그런데 많은 팀이 프롬프트를 코드베이스 어딘가에 하드코딩하거나, 심지어 데이터베이스에 넣어두고 수시로 수정한다. 누가 언제 왜 바꿨는지 기록이 없다.
프롬프트 버전 관리가 없으면 생기는 일
케이스 1 — 성능이 갑자기 떨어졌는데 원인을 모름
의료 AI 팀이 약물 금기 검토 시스템을 운영하고 있었다. 어느 날부터 의사들이 “AI가 예전보다 틀린 것 같다”는 피드백을 보내기 시작했다. 엔지니어가 조사했지만 코드는 바뀐 게 없었다. 프롬프트가 언제 마지막으로 수정됐는지도 알 수 없었다. 결국 슬랙 메시지를 뒤져서 “지난달에 프롬프트 조금 다듬었다”는 대화를 발견했다.
케이스 2 — 롤백을 할 수 없음
배포 후 문제가 발견됐을 때, 코드는 git으로 이전 버전으로 되돌릴 수 있다. 프롬프트가 데이터베이스에 있고 이력이 없다면, 이전 상태를 복원할 방법이 없다.
케이스 3 — A/B 비교가 불가능
“프롬프트 A와 B 중 어느 쪽이 더 좋은가?”를 테스트하려면, 정확히 어떤 프롬프트가 어떤 결과를 냈는지 추적할 수 있어야 한다. 버전 관리가 없으면 비교 자체가 안 된다.
프롬프트 버전 관리의 3가지 방법
방법 1 — Git에 파일로 관리 (가장 단순)
프롬프트를 .txt 또는 .md 파일로 코드베이스에 포함시킨다.
prompts/
system/
base_v1.md
base_v2.md
medication-review_v1.md
medication-review_v2.md
user/
...
장점: 별도 인프라 없음, PR 리뷰로 프롬프트 변경 승인 가능. 단점: 런타임에 프롬프트를 동적으로 교체하기 어려움.
방법 2 — 전용 프롬프트 관리 도구
LangSmith, PromptLayer, Braintrust 같은 도구는 프롬프트를 DB에 저장하면서 버전 이력, 성능 비교, A/B 테스트 기능을 제공한다.
의료 AI에서 주의할 점: 프롬프트에 내부 지침이나 민감한 내용이 있다면, 외부 SaaS에 저장하는 것이 적절한지 보안 검토가 필요하다.
방법 3 — 인하우스 버전 테이블
DB에 프롬프트를 저장하되, 버전 컬럼과 변경 이유, 작성자, 타임스탬프를 함께 저장한다. 단순하지만 이력 추적에는 충분하다.
prompt_id | version | content | changed_by | reason | created_at
----------|---------|---------|------------|------------|------------
med-review| v1 | ... | 김민준 | 초기 배포 | 2026-03-01
med-review| v2 | ... | 이서연 | 금기 강화 | 2026-03-15
med-review| v3 | ... | 김민준 | 형식 수정 | 2026-04-01
프롬프트 변경 시 체크리스트
프롬프트를 수정할 때 반드시 확인해야 할 것들:
- 변경 전 현재 버전 저장 — 롤백을 위한 스냅샷
- 변경 이유 기록 — “조금 다듬었음”이 아니라 “거부율이 높아서 톤을 완화”처럼 구체적으로
- Eval 실행 — 변경 전후 성능 비교 (오케스트레이션 테스팅 참고)
- 단계적 배포 — 전체에 적용하기 전에 트래픽 일부에만 먼저
의료 AI에서 특히 중요한 것은 4번이다. 약물 금기 검토 프롬프트를 바꿨는데 전체 병원 시스템에 한 번에 적용했다가 문제가 생기면 롤백 전까지 모든 환자에 영향을 미친다.
프롬프트 변경이 얼마나 민감한가
실험 결과들이 보여주는 수치:
- 시스템 프롬프트에서 단어 하나를 바꾼 것만으로 거부율이 30% 이상 변화한 사례
- “의사에게 확인하세요”를 “의사와 상담하세요”로 바꿨더니 사용자 만족도가 달라진 경우
- 문장 순서만 바꿨는데 응답 길이가 40% 달라진 케이스
프롬프트는 코드보다 작지만, 그 영향은 작지 않다.
더 알고 싶다면
🔗 관련 글
- 시스템 프롬프트 설계 — 버전 관리 전에 좋은 프롬프트를 만드는 법
- Eval 설계 — 프롬프트 변경 전후 성능 비교 방법
- 오케스트레이션 테스팅 — 비결정론적 AI 시스템 테스트 방법
- 오케스트레이션 모니터링 — 배포 후 프롬프트 드리프트 감지