시간 경과에 따른 품질 추적
시간 경과에 따른 품질 추적 (Track quality over time)
품질은 고정된 채로 있지 않아요. 오늘 통과한 릴리스가 내일은 실패할 수 있죠. 새로운 프롬프트, 변하는 데이터, 모델 업데이트가 모두 시스템이 동작하는 방식을 바꿔요. 시간 경과에 따른 동작을 추적하지 않으면 언제 고장 났는지 알 수 없어요.
출처: 문서
본문
점수가 아니라 동작을 추적하세요 (Track behavior, not just scores)
점수는 무엇인가가 바뀌었다는 것을 알려줘요. 무엇이 바뀌었는지는 알려주지 않죠.
출력이 여전히 다음을 하는지 추적하세요:
- 지원되지 않는 세부사항을 피하는지
- 누락된 정보를 올바르게 처리하는지
- 유사한 프롬프트에서 일관성을 유지하는지
핵심 신호는 점수 이동이 아니라 동작 변화예요.
드리프트 신호를 주의 깊게 보세요 (Watch for drift signals)
| 신호 | 어떤 모습인가 | 왜 중요한가 |
|---|---|---|
| 새로운 실패 패턴 | 전에 본 적 없는 실패 유형이 나타남 | 무작위 노이즈가 아니라 동작 변화를 나타냄 |
| 빈도 증가 | 같은 실패가 실행마다 더 자주 나타남 | 신뢰성이 약해지고 있음 |
| 시나리오별 하락 | 실패가 한 프롬프트 유형이나 컨텍스트에 몰림 | 커버리지나 요구사항의 공백을 암시 |
| 예상 밖의 점수 점프 | 알려진 제품 변경 없이 점수가 향상됨 | eval이 잘못된 것을 측정하고 있을 수 있음 |
동작이 달라지면 무언가가 바뀌었다고 가정하고 조사하세요.
같은 프롬프트를 다시 실행하세요 (Re-run the same prompts)
결과를 직접 비교할 수 있도록 실행 간에 안정적인 프롬프트 세트를 사용하세요.
확인해야 할 것:
- 동일한 입력이 이제 다른 출력을 만드는지
- 알려진 실패가 실제로 고쳐졌는지
- 새로운 실패가 나타나는지
매 실행마다 프롬프트가 바뀌면 추세 추적은 깨져요.
신호와 노이즈를 구분하세요 (Separate signal from noise)
다음의 경우 결과를 의미 있는 것으로 취급하세요:
- 같은 실패가 여러 프롬프트에서 반복됨
- 실패가 영향력이 큰 시나리오에 나타남
- 동작이 일관된 방향으로 변함
다음의 경우 결과를 노이즈로 취급하세요:
- 실패가 한 번 나타나고 다시 반복되지 않음
- 프롬프트가 불명확하거나 품질이 낮음
- 리뷰어가 체크를 일관되게 적용할 수 없음
행동할 수 있는 패턴에 우선순위를 두세요.
eval이 낡으면 갱신하세요 (Refresh the eval when it goes stale)
항상 통과하는 eval은 더 이상 의미 있는 위험을 테스트하지 않아요.
다음의 경우 eval을 갱신하세요:
- 같은 프롬프트가 스트레스 없이 반복적으로 통과함
- 오래된 실패 패턴이 사라짐
- 새로운 실제 시나리오가 나타남
- 프로덕션 문제가 프롬프트 세트에 반영되지 않음
시스템에 압력을 유지하기 위해 더 어렵고 현실적인 사례를 추가하세요.
변화를 행동으로 바꾸세요 (Turn changes into actions)
| 무엇이 바뀌었나 | 다음에 무엇을 할까 |
|---|---|
| 신뢰성 실패가 증가 | 요구사항이나 제약을 강화 |
| 실패가 새 시나리오로 이동 | 그 시나리오의 프롬프트 커버리지를 확장 |
| 리뷰어 불일치가 증가 | 체크를 더 관찰 가능하게 재작성 |
| 시간이 지나도 실패 없음 | 더 어렵고 가장자리 프롬프트를 추가 |
추적은 당신이 보는 변화가 당신이 만드는 변화가 될 때만 가치가 있어요.
핵심 메시지 (Key takeaway)
Eval은 시스템이 어디에 서 있는지 알려주고, 추적(tracking)은 그것이 어떻게 바뀌었는지 알려줘요.
더 알아보기 (Learn more)
- eval 결과 이해하기 — 실패 읽는 법
- eval 결과를 올바른 수정으로 — 루트 원인 수정