프롬프트를 고칠 때마다 “좋아진 것 같은데?”라는 감상평만 오가는 상태를 벗어나고 싶었다.

골든 데이터셋부터

실제 사용자 입력에서 대표 케이스 200개를 뽑아 기대 출력을 사람이 직접 작성했다. 지루한 작업이지만 이게 없으면 아무것도 시작되지 않는다.

케이스 유형 개수 통과 기준
일반 요약 120 핵심 사실 포함 여부
엣지 케이스 50 오류 없이 처리
거부해야 할 입력 30 정중한 거부

LLM-as-judge의 함정

평가를 LLM에 맡기면 편하지만, 그대로 믿으면 안 된다.

심판 모델은 길고 자신감 있는 답변에 후한 점수를 주는 경향이 있다.

우리는 심판 프롬프트에 채점 기준을 항목별로 명시하고, 사람 평가 50건과의 일치율(85% 이상)을 먼저 검증한 뒤에야 자동 평가를 신뢰하기로 했다.

CI에 넣기

- name: Run LLM evals
  run: python -m evals run --dataset golden-v3 --threshold 0.9

프롬프트 변경 PR마다 평가가 돌고, 점수가 기준 밑으로 떨어지면 머지가 막힌다. 이제 “좋아진 것 같은데?”가 아니라 “92점에서 95점이 됐다”라고 말한다.

평가 파이프라인

남은 고민

골든 데이터셋도 낡는다. 분기마다 실제 트래픽에서 새 케이스를 샘플링해 갱신하는 프로세스를 이제 막 시작했다.