이벌(elval)을 위한 프롬프트 세트와 어서션 만들기
이벌(elval)을 위한 프롬프트 세트와 어서션 만들기 (Build a prompt set and assertions for an eval)
이벌(elval)은 당신이 넣어준 프롬프트와 채점 기준(assertion)만큼 정직해요. 실제 사용과 전혀 닮지 않은 깔끔한 프롬프트는 실패를 숨기고, 모호한 어서션은 두 명의 검토자가 같은 출력에 다른 점수를 매기게 만들죠. 이 페이지에서는 실제 사용과 닮은 프롬프트 세트를 만들고, 검토자 누가 적용해도 같은 결과가 나오는 어서션을 작성하는 방법을 정리해 볼게요.
출처: 문서
본문
당신의 이벌은 당신이 넣어준 프롬프트와 당신이 채점 기준으로 삼는 어서션만큼 정직해요. 실제 사용과 전혀 닮지 않은 깔끔한 프롬프트는 실패를 숨겨요. 모호한 어서션은 두 명의 검토자가 같은 출력에 다른 점수를 매기게 만들어요.
실제 사용과 닮은 프롬프트 세트 만들기
사람들이 실제로 입력하는 프롬프트에서 시작하세요. 당신이 이상적으로 보고 싶은 프롬프트가 아니라요.
끌어올 출처:
- 연구 세션과 맥락 인터뷰
- 제품 피드백과 지원 티켓
- 사용 로그와 의도 데이터
- 출력이 잘못된 조치를 일으킨 것으로 알려진 시나리오
피해야 할 것:
- 내부에서 작성된, 깔끔하게 들리는 프롬프트
- 행복 경로(happy path)만 설명하는 프롬프트
- 실제 입력의 지저분함을 제거하기 위해 다듬어진 프롬프트
당신의 프롬프트 세트가 시스템을 절대 깨뜨리지 않는다면, 그것은 시스템을 테스트하고 있지 않은 것이에요.
안정(stable) 동작과 도전(stretch) 동작 모두 다루기
| 프롬프트 유형 | 무엇을 테스트하나 | 주는 신호 |
|---|---|---|
| 회귀 (Regression) | 시스템이 항상 반드시 맞춰야 하는 동작 | 하락은 무언가가 깨졌다는 뜻 |
| 능력 (Capability) | 시스템이 아직 안정적으로 다룰 수 없는 더 어려운 작업 | 시간에 따른 진전은 시스템이 개선되고 있다는 뜻 |
회귀 프롬프트 없이는 무엇이 미끄러졌는지 잡아낼 수 없어요. 능력 프롬프트 없이는 실패만 감지할 수 있고 진전은 감지할 수 없어요.
문구가 아니라 맥락에 따라 달라지게 하기
같은 요청을 세 번 다르게 바꿔 쓴 것은 세 개의 프롬프트가 아니라 하나예요.
| 무엇이 바뀌었나 | 무엇으로 치나 |
|---|---|
| 같은 맥락, 다른 문구 | 하나의 프롬프트 유형 |
| 다른 맥락 (예: 청중, 이해관계, 누락된 입력, 충돌하는 출처) | 새로운 시나리오 |
각 시나리오마다 문구를 달리한 프롬프트를 서너 개 쓰세요. 각각의 새로운 맥락마다 새 시나리오를 시작하세요.
세트 안의 모든 프롬프트가 같은 맥락을 테스트한다면, 당신의 이벌 커버리지는 보이는 것보다 좁아요.
두 번째 검토자가 같은 방식으로 적용할 어서션 쓰기
어서션(assertion)은 품질 요구사항을 출력에서 직접 검증할 수 있는 검사로 바꿔줘요.
각 어서션은 다음이어야 해요:
- 시스템이나 그 추론이 아니라 출력에서 관찰 가능할 것
- 같은 시나리오의 프롬프트 간에 반복 가능할 것
- 검토자 간에 일관될 것
해야 할 것: "출처가 이름을 명시하지 않으면 소유자(owner)를 배정하지 않는다."
하지 말 것: "전문적이고 정확하게 들린다."
두 검토자가 같은 출력에 다르게 점수를 매길 것 같다면, 그 어서션은 너무 모호한 것이에요.
각 어서션을 올바른 종류의 심사자(judge)에 맞추기
| 심사자 유형 | 무엇에 사용하나 | 어서션은 반드시 |
|---|---|---|
| 자동화 (예: LLM 또는 규칙) | 필수 통과 동작, 안전, 거절, 사실 근거 | 출력 텍스트만으로 답할 수 있어야 함 |
| 인간 | 느껴지는 품질, 어조 적합성, 맥락에서의 유용성 | 좋은 응답과 약한 응답의 명확한 예시에 묶여야 함 |
대부분의 이벌 세트는 둘 다 필요해요. 어서션이 쓰여진 신호를 읽을 수 없는 심사자는 그것을 안정적으로 채점하지 못해요.
어서션을 확장하기 전에 세 가지 검사 실행하기
| 검사 | 통과하면 | 실패하면 |
|---|---|---|
| 일관성 (Consistent) | 두 검토자가 같은 결과에 도달 | 검토자들이 같은 출력에 의견이 갈림 |
| 변별력 (Discriminating) | 어서션이 좋은 출력과 약한 출력을 구분 | 강한 응답과 약한 응답 둘 다 통과 |
| 이전 가능성 (Transferable) | 어서션이 작성되지 않은 출력에서도 성립 | 그것을 초안 작성할 때 쓴 예시에서만 작동 |
어느 하나라도 실패하면 확장 전에 어서션을 고치세요. 이 검사 중 하나에 실패한 어서션은 더 많은 출력에 적용한다고 더 신뢰할 만해지지 않아요.
어서션이 아직 잡지 못하는 것을 이름 붙이기
어조 변화, 실패한 턴 이후의 회복, 후속 질문의 유용성 같은 어떤 동작은 사람에게 중요하지만 현재 어서션에 맞지 않아요.
- 그것들을 구체적으로 기록하세요.
- 현재 어서션이 왜 그것들을 놓치는지 적으세요.
- 엔지니어링과 응용 과학 파트너와 공유하세요.
정확히 이름 붙여진 공백(gap)은 누군가가 해결할 수 있는 공백이에요.
핵심 요점 (Key takeaway)
프롬프트는 당신의 이벌이 무엇을 볼 수 있는지를 결정하고, 어서션은 당신의 이벌이 무엇을 채점할 수 있는지를 결정해요. 둘 중 하나라도 어긋나면 나머지 이벌은 회복할 수 없어요.