판단자(Judge)에 발견 사항을 방치하지 마세요: 의견을 게이트로 전환하는 래칫(Ratchet) 전략
요약
모델 기반 판단자(model-as-judge)가 발견한 오류를 비용이 드는 비결정론적 의견으로 남겨두지 말고, 결정론적인 체크 항목으로 승격시키는 '래칫(Ratchet)' 전략을 제안합니다. 이를 통해 평가 비용을 절감하고 실행 차단이 가능한 실시간 게이트를 구축할 수 있습니다.
핵심 포인트
- Tier 3(모델 판단)의 비결정론적 비용을 Tier 1/2(결정론적 사실)로 승격시켜야 함
- Tier 1은 컴파일 성공, JSON 유효성 등 에이전트가 위조할 수 없는 증거임
- Tier 3는 모델 간 순환 논리 위험이 있어 오프라인 검증용으로만 사용 권장
- 반복되는 모델의 지적을 문자열 확인 등 결정론적 게이트로 전환하는 것이 핵심
모델 기반 판단자(model-as-judge)가 실제 문제를 지적했을 때, 대부분의 팀은 최악의 선택을 합니다. 바로 그 발견 사항을 판단자 안에 그대로 남겨두는 것입니다. 그 발견 사항은 느리고, 비용이 발생하며, 비결정론적인(non-deterministic) Tier 3 의견으로서 영원히 살아남게 됩니다. 매 실행 시마다 비용을 들여 다시 논쟁해야 하며, 그때마다 판결이 달라집니다. 이것은 평가(eval) 전략이 아닙니다. 이미 발견한 버그에 대해 계속 임대료를 지불하는 것과 같습니다.
시니어다운 방식은 **래칫(ratchet)**을 사용하는 것입니다. 반복되는 모든 Tier 3 발견 사항은 Tier 1 또는 Tier 2 체크 항목으로 승격될 후보가 됩니다. 승격된 항목은 비용이 들지 않고, 빠르며, 결정론적(deterministic)이 되어 실행을 차단할 수 있게 됩니다. 이 포스트는 그 래칫이 어떻게 작동하는지, 그리고 왜 그것이 판단자를 두는 근본적인 이유인지에 대해 다룹니다.
독립성 축(independence axis)에 대하여
승격이 의미를 갖기 전에, 증거의 순위를 올바르게 매겨야 합니다. agent-eval은 비용 축이 아닌 독립성 축(independence axis) — 독립적인 것부터 오염 가능한 것까지 — 을 기준으로 순위를 매깁니다.
- Tier 1 — 에이전트가 위조할 수 없는 증거. 유효한 JSON, 파일 존재 여부, 컴파일 성공 여부, 테스트 통과 여부, 타임아웃 내 완료 여부, 출력이 비어 있지 않은지 여부 등.
- Tier 2 — 에이전트가 작성하지 않은 베이스라인(baseline) 대비 통계적 신호. 작업 명세(task spec)와의 임베딩 유사도, 길이 및 반복 프로필, diff가 실제로 무언가를 변경했는지 여부 등.
- Tier 3 — 모델 기반 판단자(model-as-judge). 공유된 기질(shared-substrate)을 가진 의견. 이는 신호(signal)일 뿐, 판결(verdict)이 아닙니다.
여기서 두 가지 속성이 도출되며, 이는 아래의 모든 것을 주도합니다. Tier 1+2는 **실시간 게이트(real-time gate)**입니다. 결정론적이고, 비용이 거의 들지 않으며($~0), 빠르기 때문에 핫 패스(hot path)에 위치하여 실행을 차단할 수 있습니다. Tier 3는 **오프라인 전용(offline-only)**입니다. 비용이 발생하고, 느리며, 비결정론적이기 때문에 차단 역할을 할 수 없습니다. 또한 Tier 1+2는 에이전트의 궤적(trajectories)에 대해 정당하게 실행될 수 있지만, Tier 3는 그럴 수 없습니다. 모델이 다른 모델의 추론을 판단하는 것은 순환 논리입니다. 판단자와 피판단자가 동일한 기질을 공유하며 독립적인 정답(ground truth)이 없기 때문입니다. 따라서 Tier 3는 피판단 에이전트가 작성하지 않은 결과물(artifacts)만을 검사할 수 있습니다.
래칫: 발견 사항을 하위 티어로 승격시키기
패턴은 다음과 같습니다. 판단자(Judge)가 동일한 유형의 실패를 계속해서 지적한다고 가정해 봅시다. 예를 들어, "요약문이 원문에 존재하지 않는 섹션을 참조하고 있습니다"와 같은 경우입니다. 이는 명백한 결함입니다. 하지만 이런 방식으로 이를 잡아내는 것은 비용이 많이 들며, 판정 결과가 불안정할 수 있습니다.
질문해 보세요: 이 오류를 잡아낼 수 있는 위조 불가능한 사실(unforgeable fact)은 무엇인가? 이 사례의 경우, "인용된 모든 섹션 헤더가 원문에 그대로 나타난다"는 것은 문자열 포함 여부 확인(string-membership check)입니다. 이것이 바로 Tier 1입니다. 당신은 방금 주관적인 의견을 결정론적인 게이트(deterministic gate)로 승격시킨 것입니다.
type Finding = {
claim: string; // 판단자의 반복되는 불만 사항
sourceText: string; // 에이전트가 작성하지 않은 결과물(artifact)
...
citationsExist는 Tier 1입니다. 이는 에이전트가 위조할 수 없는 텍스트에 관한 사실입니다. 만약 정확한 포함 여부를 확인하는 것이 너무 경직되어 있다면(예: 의역된 인용, 번역된 출처 등), 다시 판단자에게 돌아가는 것이 아니라 Tier 2로 내려갑니다. citationGroundedness는 에이전트가 작성하지 않은 기준점(원문)에 대해 유사도를 측정합니다. 이 역시 결정론적이며, 비용이 거의 들지 않고($0), 핫 패스(hot path) 내에서 실행이 가능합니다. 두 티어 모두 해당 속성을 표현할 수 없는 경우에만 판단자에게 남겨둡니다.
80%는 배포하고, 20%는 측정하십시오
이 지점에서 래칫(Ratchet) 전략의 효과가 나타납니다. 프로덕션 환경에서의 대부분의 실패는 미묘하지 않습니다. 오래된 출력물, 충돌(crash), 잘못된 형식의 JSON, 환각된 파일 경로, 빈 응답 등이 그것입니다. 이 모든 것들은 Tier 1+2만으로도 충분히 잡아낼 수 있습니다. 비용 없이 핫 패스 내에서 처리하며, 사용자가 확인하기 전에 실행을 차단할 수 있습니다.
판단자는 약 20%의 주관적인 영역을 위한 것입니다. 어조(tone), 설명이 실제로 도움이 되는지 여부, 리팩토링이 '세련되었는지(tasteful)' 여부 등이 이에 해당합니다. 이러한 작업은 실제로 필요하지만, 오프라인에서 측정하며 실행해야 하고, 그 출력물에 대해 정직하게 라벨을 붙여야 합니다: 증거가 아닌 의견(opinion, not evidence). 래칫 전략은 시간이 지남에 따라 이 20%를 꾸준히 줄여나갑니다. 왜냐하면 사실로 표현될 수 있는 판단자의 모든 반복되는 불만 사항은 결국 승격되어 제외되기 때문입니다.
이것이 진정한 평가(eval) 레이어와 "LLM-as-judge가 10점 만점에 7점을 줍니다"라고 말하는 도구를 구분하는 경계선입니다. 7점은 게이트가 아니며 재현 가능하지도 않습니다. 승격된 Tier 1 체크는 이 두 가지 모두를 충족합니다.
볼 수 없는 것은 승격시킬 수 없습니다
래칫(Ratchet) 전략에는 강력한 의존성이 있습니다. 발견 사항을 승격시키려면 원재료, 즉 정확한 소스 텍스트(source text), 해결된 도구 입력값(resolved tool inputs), 에이전트가 생성한 실제 출력값(actual output)이 필요합니다. 이것이 워크플로우의 두 부분이 맞물리는 지점입니다.
agent-eval은 에이전트의 출력(output) — 앞서 언급한 티어(tiers), 드리프트 체크(drift checks), 환각 체크(hallucination checks) — 을 점수화하고 게이트(gate) 역할을 수행합니다. 하지만 데이터가 충실하게 캡처되었을 때만 위조 불가능한 데이터에 기반하여 점수를 매길 수 있습니다. 그것이 바로 AgentLens입니다. AgentLens는 에이전트가 그 결과에 도달한 과정인 트레이스(trace) — 모든 모델 및 도구 단계, 해결된 입력값, 원시 출력값 — 를 캡처합니다. 여기서 두 가지 결과가 도출됩니다. 첫째, Tier 3 의견이 반복될 때, 트레이스를 열어 에이전트가 작성하지 않은(agent-didn't-author) 정확한 아티팩트(artifact, 예: 소스 문서, 도구 응답)를 찾아내면, 그것이 새로운 Tier 1/2 체크가 점수를 매길 기준점(baseline)이 됩니다. 둘째, 트레이스 자체가 에이전트가 작성하지 않은 데이터이며, 이는 Tier 1+2가 순환 논리에 빠지지 않고 실행되는 데 정확히 필요한 데이터입니다.
트레이스가 없다면 판단자(judge)는 추측을 하게 되고, 게이트는 채점할 신뢰할 수 있는 대상이 없게 됩니다. 트레이스가 있다면, 반복되는 모든 의견은 리팩터링 한 번만으로 비용이 들지 않는 결정론적(deterministic) 체크로 전환될 수 있습니다.
핵심 요약 (The takeaway)
모델 기반 판단자(model-as-judge)는 평가 스택의 정점이 아니라, 평가 스택을 위한 **인테이크 큐(intake queue, 수집 대기열)**입니다. 판단자의 역할은 반복되는 실제 결함을 표면화하여, 이를 독립성 축(independence axis)을 따라 더 저렴하고 빠르며 에이전트가 위조할 수 없는 체크 항목으로 승격시키는 것입니다. agent-eval은 티어와 게이트를 실행하고, AgentLens는 다음 게이트를 구축할 수 있는 위조 불가능한 트레이스를 제공합니다. 발견 사항을 영원히 Tier 3에 방치한다면, 그것은 평가를 하는 것이 아닙니다. 그저 첫날부터 게이트로 막을 수 있었던 버그를 천천히 상기받기 위해 비용을 지불하고 있는 것뿐입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기