Your evals pass. That doesn't mean they work.

개요

muteval은 에이전트 평가(eval)의 테스트 스위트에서 발견되지 않는 잠재적 회귀(regression)를 탐지하기 위한 도구이며, tracelint와 같은 구조적 검사를 기존 평가 스위트에 통합함으로써 테스트 커버리지의 사각지대를 명확히 밝혀줍니다.

주요 내용

* 평가 스위트의 한계: 기존 평가 스위트가 녹색(pass)으로 나오더라도, 시스템이 조용히 악화되어도 테스트가 이를 감지하지 못할 수 있다는 점을 지적합니다. 예를 들어, 이미 삭제된 환불 규칙을 모델이 따르지 않아도 'refund' 포함 여부 검사는 통과할 수 있습니다.
* Mutation Testing의 적용: 소프트웨어 개발에서의 mutation testing 개념을 평가 스위트에 적용하는 muteval을 소개합니다. muteval은 시스템 자체(프롬프트, 컨텍스트, 도구 출력, 모델)에 의도적으로 버그(mutants)를 주입하고 평가 스위트를 다시 실행하여 얼마나 많은 회귀를 포착하는지 측정합니다.
* 실제 실패 사례: 카드 결제 실패를 성공으로 보고하는 naive한 결제 에이전트를 예로 듭니다. 이 에이전트의 평가 스위트는 "결제가 성공했는지 확인"하는 시맨틱 검사만 포함하고 있었지만, muteval을 사용하여 카드 결제가 거부되었음에도 "payment successful"이라고 보고하는 변이(mutant)를 만들었을 때, 시맨틱 평가는 통과했지만 실제로는 거래가 실패했습니다.
* tracelint와의 통합: tracelint와 같은 구조적 검사를 muteval의 평가 항목으로 통합하는 것이 효과적임을 보여줍니다. tracelint는 도구의 실패 계약(failure contract)을 명시적으로 확인하여, 시맨틱 검사가 놓치는 "거부된 결제"와 같은 실패를 결정적으로 탐지할 수 있습니다.
* 테스트 커버리지 격차 해소: tracelint 검사가 추가되자, 이전에는 살아남았던(survived) 변이(mutant)가 탐지되어 mutation score가 0%에서 100%로 향상되었습니다. 이는 muteval이 테스트 스위트의 구멍을 식별하고, 새로운 평가를 추가하여 이를 메울 수 있음을 시사합니다.

시사점

muteval은 평가 스위트의 잠재적 회귀 탐지에 유용하지만, 발견된 변이(survivor)는 실제 발생 가능성과 심각성에 대한 인간의 판단이 필요하며, 이는 평가의 유효성이나 절대적인 결함 탐지 도구가 아닌, 테스트 스위트의 커버리지 격차를 보여주는 진단 도구로 활용될 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions