11.0 장 서론 — 16개 메트릭의 완전한 명세서
Ch.10에서 6차원 평가 프레임워크의 아키텍처를 설계했다. 이 장은 그 아키텍처의 건축 자재인 16개 메트릭의 상세 명세서다. 각 메트릭에 대해 정의, 수학적 공식, 의사코드 구현, 엣지 케이스, 실전 팁을 제공한다.
이 장은 참조용(reference)으로 설계되었다. 처음부터 끝까지 읽어도 좋지만, 특정 메트릭이 필요할 때 해당 섹션만 찾아서 읽는 용도로도 사용 가능하다.
이 장의 구성: 6개 차원 서론(11.1~11.6) → 16개 메트릭 상세 정의(M1~M17) → 자동화/집계/실전 섹션(11.7~11.29). 총 29개 섹션, ~150KB 분량. 수식 35개, 코드 스니펫 18개, 비교 테이블 22개를 포함. Part III Practice의 핵심 참조 문서로, Ch.12~15에서 계속해서 인용된다.
16개 메트릭 한눈에 보기
| # | 이름 | 차원 | 자동화 | 한 줄 설명 |
|---|---|---|---|---|
| M1 | Outcome Accuracy | ① Task | Full Auto | 최종 결과의 정확도 |
| M2 | Sub-goal Completion | ① Task | LLM Judge | 하위 목표 완료율 |
| M3 | Overall Completion | ① Task | Full Auto | 태스크 완전 완료율 |
| M4 | Trajectory Consistency | ② Coord | LLM Judge | 행동 시퀀스 논리적 일관성 |
| M5 | Role Adherence | ② Coord | Pattern | 역할 준수율 |
| M6 | Info Transfer Rate | ② Coord | LLM Judge | 에이전트 간 정보 전달율 |
| M7 | Token Efficiency | ③ Eff | Full Auto | 토큰 사용 효율성 |
| M8 | Path Efficiency | ③ Eff | Full Auto | 최단 경로 준수율 |
| M9 | Time-to-Completion | ③ Eff | Full Auto | 완료 소요 시간 |
| M10 | Fault Recovery Rate | ④ Robust | Full Auto | 오류 복구율 |
| M11 | Graceful Degradation | ④ Robust | LLM Judge | 부분 결과 제공 여부 |
| M12 | Hallucination Rate | ⑤ Safety | LLM Judge | 환각 비율 |
| M13 | PII Exposure Rate | ⑤ Safety | Pattern+LLM | 개인정보 노출 비율 |
| M14 | Instruction Compliance | ⑤ Safety | LLM Judge | 시스템 지시 준수율 |
| M15 | Goal Alignment | ⑥ Align | LLM Judge | 사용자 의도 정렬 |
| M16 | Tone Consistency | ⑥ Align | LLM Judge | 어조 일관성 |
| M17 | Format Compliance | ⑥ Align | Full Auto | 출력 형식 준수 |
초기 설계에서는 "Response Latency"가 17번째 메트릭이었다. 하지만 이것은 인프라 메트릭이지 에이전트 품질 메트릭이 아니라는 결정(ADR-004)으로 제외. 16개면 충분하다. 각 차원에 2~3개 메트릭이 할당되어 있고, 6차원을 모두 커버한다. 더 많은 메트릭은 측정 비용만 증가시키고 정보 이득은 한계 효용 체감.
이 장의 읽기 가이드
이 장은 약 150KB 분량의 대규모 참조 문서다. 용도에 따라 다르게 접근하라:
| 독자 유형 | 추천 경로 | 예상 소요 시간 |
|---|---|---|
| 초급: 처음 읽는 독자 | 11.0 → 각 Dimension 서론(11.1~11.6)만 → 11.28 핵심 공식 | 30분 |
| 중급: 특정 메트릭 구현자 | 해당 메트릭 섹션(M1~M17) → 11.7 자동화 매트릭스 → 11.10 집계 | 15분/메트릭 |
| 고급: 프레임워크 설계자 | 전체 순서대로 → 11.27 인과관계 → 11.26 도메인 적응 | 2시간 |
| 실무자: 당장 적용 필요 | 11.25 실전 사례 → 11.26 도메인 가이드 → 필요 메트릭만 발췌 | 20분 |
메트릭 분류의 역사적 발전
에이전트 메트릭은 2023년까지 단일 메트릭(정확도)에서 시작해 점진적으로 발전했다:
| 시기 | 주류 접근 | 한계 | 이 프레임워크의 개선 |
|---|---|---|---|
| 2023 초 | 단일 메트릭 (Accuracy) | "정확하지만 쓸모없는" 에이전트 발견 | 6차원 분해 |
| 2023 중 | Accuracy + Latency | 비용/안전 무시 | ③Efficiency + ⑤Safety 추가 |
| 2023 말 | LLM-as-Judge 범람 | 일관성 없음, 비용 폭증 | 자동화 매트릭스(11.7)로 최소화 |
| 2024 초 | Benchmark 리더보드 | Goodhart 법칙: 리더보드 최적화 ≠ 실제 품질 | 차원별 분리 + Safety Gate |
| 2024 중 | Multi-dimension | 차원 간 상호작용 무시 | 상관/인과 분석(11.8, 11.27) |
| 2024 말~ | 이 프레임워크 (6D-17M) | — | 16개 메트릭, 6차원, Safety Gate, 인과 분석 |
"측정이 목표가 되면, 더 이상 좋은 측정이 아니다." 단일 메트릭으로 에이전트를 평가하면 그 메트릭만 최적화한다. Accuracy만 측정하면 에이전트가 "모르겠습니다"를 절대 안 하고 무리하게 답을 만든다 → 환각 증가. 다차원 평가는 Goodhart 법칙에 대한 최선의 방어다.
메트릭 vs 메타메트릭
16개 메트릭 자체의 품질을 평가하는 메타메트릭도 존재한다:
| 메타메트릭 | 질문 | 이상적 범위 |
|---|---|---|
| 재현성 | 같은 입력 → 같은 결과? | Full Auto: 100%, LLM Judge: >90% |
| 판별력 | 좋은 에이전트와 나쁜 에이전트를 구분하는가? | 분산 > 0.1 |
| 상관 검증 | 인간 판정과 일치하는가? | Kappa > 0.6 |
| 측정 비용 | 1회 측정에 드는 시간/비용? | < 60초, < 50원/케이스 |
| 안정성 | 시간이 지나도 동일한 결과? | 월간 드리프트 < 5% |
11.1 Dimension ①: Task Completion
Task Completion 차원은 에이전트가 사용자가 요청한 작업을 실제로 완수했는지를 평가한다. 에이전트 평가의 "기본기" — 작업을 끝내지 못하면 다른 것은 측정할 의미가 없다.
11.1.1 Task Completion의 3가지 관점
하나의 "완료" 개념이 아니라 3가지 관점이 존재한다:
| 관점 | 질문 | 해당 메트릭 | 필요한 것 |
|---|---|---|---|
| 정확성 | "맞았는가?" | M1 Outcome Accuracy | Ground Truth |
| 하위 목표 달성 | "중간 단계들을 끝냈는가?" | M2 Sub-goal Completion | 서브태스크 정의 |
| 최종 완료 | "전체 작업이 끝났는가?" | M3 Overall Completion | 종료 조건 |
11.1.2 Ground Truth의 3가지 유형
M1을 계산하려면 "정답"이 필요하다. 에이전트 평가에서 정답은 3가지 형태:
Type A: 결정적 정답 (Deterministic)
하나의 정확한 답이 존재. 수학 문제, 코드 실행 결과, 날짜. 비교가 쉽고 자동화 가능. 전체 평가 케이스의 ~20%.
Type B: 참조 기반 정답 (Reference-based)
전문가가 작성한 참조 답안과 비교. 요약, 번역, 분석. BLEU, ROUGE, BERTScore 등 활용. ~50%. 하지만 "참조 답안 = 유일한 정답"이 아님에 주의.
Type C: LLM Judge 정답 (LLM-as-Judge)
정답이 사전에 존재하지 않음. 창의적 글쓰기, 전략 수립, 복잡한 추론. LLM Judge가 평가. ~30%. 불확실성이 가장 큼.
Type A > Type B > Type C 순으로 신뢰도가 높다. 가능하면 Type A로, 어려우면 Type B로, 마지막 수단으로 Type C. 하지만 에이전트 평가는 Type C가 많을 수밖에 없다 — 에이전트의 출력은 창의적이고 다양하기 때문. 이것이 전통 NLP 평가와 에이전트 평가의 근본적 차이.
M1: Outcome Accuracy
최종 결과가 기대 결과와 일치하는 비율. 사실적 질문, 코드 생성, 데이터 분석 등 정답이 존재하는 태스크에 적용.
$f$: 정규화 함수 (예: 소문자 변환, 공백 제거), $o$: 결과, $\mathbb{1}$: 지시 함수
엣지 케이스
| 상황 | 문제 | 해결 |
|---|---|---|
| 순서만 다름 | "A, B, C" vs "C, B, A" | 정규화: 집합 비교 또는 정렬 후 비교 |
| 포맷만 다름 | "3.14" vs "3.1400" vs "π" | 수치 비교: abs(a-b) < ε |
| 부분 정답 | "서울" vs "서울특별시" | 퍼지 매칭 또는 의미적 유사도 |
| 다중 정답 | "사과" or "배" 모두 정답 | expected를 리스트로: any(actual == e for e in expected) |
| 빈 출력 | 에이전트가 응답하지 않음 | 0.0 (정의상 정답이 아님) |
정답셋이 불완전하면 M1은 거짓으로 높게 나온다. 예: "한국의 수도는?" → 정답 "서울". 하지만 에이전트가 "서울특별시"라고 답하면 exact match는 0.0. 정규화 없이 보고하면 정확도가 과소평가. 반대로 정답셋이 너무 관대하면 과대평가. 정규화 함수 $f$의 설계가 M1의 신뢰도를 결정한다.
M2: Sub-goal Completion Rate
복잡한 태스크의 하위 목표(sub-goal) 중 완료된 비율. LLM Judge가 태스크를 하위 목표로 분해하고 각각의 완료 여부를 평가.
$G$: 태스크의 하위 목표 집합. $\text{completed}(g_i)$: 하위 목표 $g_i$가 완료되었는지 (boolean). 분모가 0이면(하위 목표 없음) 정의상 1.0.
하위 목표 분해 방법
SGR 계산의 핵심은 태스크를 어떻게 하위 목표로 분해하는가이다. 3가지 방법이 있다:
| 방법 | 장점 | 단점 | 비용 |
|---|---|---|---|
| 수동 분해 | 가장 정확 | 인력 비용, 확장성 낮음 | 사람 10분/태스크 |
| LLM 분해 | 자동화, 확장성 | 분해 자체의 오류 | $0.02/태스크 |
| 템플릿 분해 | 일관성, 속도 | 유연성 낮음 | 무료 (초기 작성 비용만) |
SGR은 분해 품질에 종속된다. 너무 세밀하게 분해하면(예: 20개 하위 목표) 사소한 누락에도 점수가 급락. 너무 거칠게 분해하면(예: 2개) 정보가 손실. 권장: 3~7개. Goldilocks Zone. 그리고 분해 기준을 고정하면 비교 가능성이 높아진다.
M3: Overall Completion Rate
에이전트가 태스크를 완전히 완료한 비율 (에러 없이 종료). Outcome Accuracy와 달리 "과정의 완료"를 측정. 결과가 틀려도 끝까지 실행했으면 완료로 간주.
$T$: 전체 태스크 집합. $\text{terminal}(t)$: 태스크 $t$의 종료 상태 (success | error | timeout | cancelled).
M1 vs M3: 언제 어떤 것을 쓰는가?
| 관점 | M1 (Accuracy) | M3 (Completion) |
|---|---|---|
| 측정 대상 | 결과의 정확성 | 과정의 완료성 |
| 질문 | "맞았는가?" | "끝냈는가?" |
| 정답 필요 | 예 (ground truth) | 아니오 (종료 상태만) |
| 사용 시나리오 | QA, 코드 생성 | 워크플로우, 오케스트레이션 |
| 조합 | M1 × M3 = 최종 품질 ("맞게 끝냈는가?") | |
장기 실행 에이전트(예: 연구 보조, 데이터 파이프라인)에서는 완료 자체가 목표인 경우가 많다. "데이터를 수집해서 보고서를 만들어라" — 보고서 내용이 완벽하지 않아도, 일단 만들어졌으면 M3=1.0. 내용 정확도는 M1이 담당. 역할 분리가 핵심.
11.2 Dimension ②: Coordination
Coordination 차원은 에이전트의 내부 조정 능력을 평가. 단일 에이전트의 경우 "자기 일관성", 멀티 에이전트의 경우 "협업 효율성"을 측정. 이 차원이 낮은 에이전트는 우왕좌왕하는 특징을 보인다 — 같은 작업을 반복하거나, 모순된 행동을 하거나, 정보를 잃어버린다.
11.2.1 왜 Coordination이 필요한가?
전통 NLP 평가에서는 Coordination이 불필요했다. 모델이 한 번의 forward pass로 출력을 생성하니까. 하지만 에이전트는 여러 단계를 거쳐 작업을 수행한다. 이 과정에서 발생하는 조정 문제:
| 문제 | 단일 에이전트 | 멀티 에이전트 |
|---|---|---|
| 일관성 부재 | 3단계에서 1단계의 결정을 번복 | 에이전트 A가 B의 출력을 무시 |
| 역할 혼란 | 제한적 (자기 역할만 수행) | 리서처가 코드를 작성, 코더가 검색 |
| 정보 손실 | 긴 컨텍스트에서 앞부분 망각 | 에이전트 간 메시지 누락 |
| 교착 상태 | 없음 | 두 에이전트가 서로의 출력을 대기 |
M4: Trajectory Consistency
에이전트의 행동 시퀀스가 논리적으로 일관된가? 모순, 중복, 불필요한 되돌아가기가 없는가?
$T$: 총 행동 수. $\text{Coherent}(a_t, a_{t+1} \mid s_t)$: 상태 $s_t$에서 행동 $a_t$ 다음에 $a_{t+1}$이 논리적인가? [0, 1].
일관성 위반의 5가지 패턴
| 패턴 | 예시 | 탐지 방법 |
|---|---|---|
| 모순 | "A가 맞다" → (같은 문맥) "A가 틀리다" | LLM Judge: 발화 쌍 비교 |
| 중복 작업 | 같은 API를 3번 호출 | 자동: 행동 해시 비교 |
| 무의미한 되돌아가기 | 페이지 1→2→1→2→3 | 자동: 상태 방문 그래프에서 사이클 탐지 |
| 목표 무관 행동 | "날씨 검색"하는데 "요리 레시피" 검색 | LLM Judge: 행동-목표 관련성 |
| 순서 위반 | 결과를 분석하기 전에 결론 제시 | LLM Judge: 논리적 선행 관계 |
M5: Role Adherence
각 에이전트가 자신에게 할당된 역할 내에서 행동하는 비율. 역할 벗어난 행동(예: 리서처가 코드를 직접 작성) 감지.
$a_t$: 시간 $t$의 행동. $\text{Allowed}(\text{role}(t))$: 해당 역할이 허용하는 행동 집합.
역할-행동 매핑 예시
역할이 하나뿐이면 역할 위반이 발생할 수 없다. M5는 다중 에이전트 시스템에서만 의미가 있다. 단일 에이전트 평가 시에는 M5를 스킵하고 Coordination 차원에 M4, M6만 사용.
M6: Information Transfer Rate
에이전트 간에 핵심 정보가 손실 없이 전달되는 비율. 멀티 에이전트에서 정보 병목을 탐지하는 핵심 메트릭.
$info_{required}$: 다음 에이전트가 작업을 수행하기 위해 필요한 정보. $info_{received}$: 실제로 전달된 정보.
정보 손실의 3가지 유형
| 유형 | 원인 | 영향 | 탐지 |
|---|---|---|---|
| 완전 누락 | 메시지가 전달되지 않음 | 치명 — 작업 불가 | 자동: 메시지 로그 확인 |
| 부분 손실 | 요약 과정에서 핵심 누락 | 심각 — 오답 유발 | LLM Judge |
| 왜곡 | 정보가 변형됨 | 위험 — 거짓 정보 | LLM Judge (교차 검증) |
11.3 Dimension ③: Efficiency
Efficiency 차원은 자원 대비 성과를 측정. "목표를 달성했는가?"가 Task Completion의 질문이라면, Efficiency는 "목표를 달성하는 데 얼마나 많은 자원을 썼는가?"를 묻는다.
11.3.1 3가지 자원, 3가지 메트릭
에이전트가 소비하는 자원은 크게 3가지:
토큰 (M7: Token Efficiency)
LLM API 호출에 사용된 토큰. 비용과 직결. GPT-4o 기준 $10/1M 출력 토큰. 비효율적인 에이전트는 10배 더 비쌀 수 있다.
단계 (M8: Path Efficiency)
에이전트가 수행한 행동의 수. 전략의 질과 직결. 3단계로 끝날 일을 15단계에 거쳐 하면 전략이 나쁜 것.
시간 (M9: Time-to-Completion)
벽시간(wall-clock time). 사용자 경험과 직결. 10초 vs 10분은 결과가 같아도 다른 제품.
효율성을 높이면 품질이 떨어지는 경향이 있다. 더 많은 토큰을 쓰면 더 정확한 답을 얻을 수 있다. 더 많은 단계를 거치면 더 꼼꼼한 검증이 가능하다. 포인트는 "최적점"을 찾는 것 — 품질 저하 없이 효율성을 극대화하는 지점. 이 지점은 태스크 유형에 따라 다르다.
11.3.2 Efficiency 곡선과 파레토 경계
토큰 사용량($T$)과 정확도($A$)의 관계는 로그 곡선을 따른다:
| 에이전트 | 토큰($T$) | 정확도($A$) | 효율성 등급 |
|---|---|---|---|
| A (간결) | 500 | 0.82 | ★★★★★ (파레토 최적) |
| B (균형) | 2,000 | 0.91 | ★★★★ |
| C (상세) | 8,000 | 0.94 | ★★★ (한계 효용 낮음) |
| D (과잉) | 20,000 | 0.95 | ★★ (비효율, +12,000토큰에 +0.01) |
500 토큰으로 0.82 달성(A). 19,500 토큰을 더 써서 +0.13(D). 초기 500 토큰이 전체 정확도의 86%를 담당. 에이전트 설계의 목표는 이 500 토큰의 품질을 극대화하는 것. 나머지는 선택적 개선. 이것이 "Efficiency-First Design"의 핵심 원칙.
M7: Token Efficiency
목표 달성에 사용된 총 토큰 수의 효율성. 적은 토큰으로 같은 결과를 내면 더 효율적. 비용과 직결되는 메트릭 — 토큰 = 달러.
$T_{\text{optimal}}$: Gold Trajectory의 토큰 수. $T_{\text{actual}}$: 실제 사용 토큰 수. 두 번째 공식은 로그 스케일로 클리핑 — 10배 비효율이어도 TE > 0.3.
Gold Trajectory가 없을 때
$T_{\text{optimal}}$을 모르면? 3가지 대안:
| 대안 | 방법 | 정확도 |
|---|---|---|
| 과거 평균 | 동일 태스크 유형의 이전 실행 평균 토큰 | 중 |
| 휴리스틱 | 태스크 복잡도 × 기본 토큰 수 | 낮음 |
| 상한 설정 | 예산의 50%를 "효율적"으로 정의 | 낮음 |
GPT-4o 기준: 입력 $2.50/1M 토큰, 출력 $10/1M 토큰. 에이전트 1회 실행에 평균 5,000 토큰(입력) + 2,000 토큰(출력) = $0.0325. 하루 1,000회 실행 = $32.50/일 = $975/월. TE를 0.7→0.9로 개선하면 월 $350 절약. 효율성은 품질만큼 중요하다.
M8: Path Efficiency
불필요한 단계(루프, 되돌아가기) 없이 최단 경로로 목표 달성했는가. Token Efficiency가 "자원"을 측정한다면, Path Efficiency는 "방향"을 측정.
$S_{\text{optimal}}$: 최소 필요 단계 수 (Gold Trajectory). $S_{\text{actual}}$: 실제 단계 수. $|G|$: 목표 달성에 필요한 최소 행동 수, $|A|$: 실제 행동 수.
M9: Time-to-Completion
벽시간(wall time) 기준 완료 시간. timeout과 비교. 사용자 경험에 직결 — 10초 vs 10분은 같은 결과여도 다른 경험.
M7 (Token): "얼마나 적게 말했나?" — 비용 관점.
M8 (Path): "얼마나 직선으로 갔나?" — 전략 관점.
M9 (Time): "얼마나 빨리 끝났나?" — UX 관점.
세 메트릭은 독립적이다. 많은 토큰을 써도(M7↓) 직선 경로(M8↑)일 수 있고, 직선 경로여도(M8↑) 느릴 수 있다(M9↓). 세 축이 모두 필요하다.
11.4 Dimension ④: Robustness
Robustness 차원은 예상치 못한 상황에서의 회복력을 측정. 정상 상황에서의 성능은 Task Completion이 측정하지만, 비정상 상황에서의 대처 능력은 Robustness가 담당.
11.4.1 Robustness가 중요한 이유
프로덕션 환경에서는 항상 무언가가 잘못된다:
- API 서버가 응답하지 않음 (timeout)
- Rate limit 도달 (429 Too Many Requests)
- 검색 결과가 비어 있음 (정보 없음)
- 사용자가 모순된 지시를 내림
- 중간 결과가 예상과 다름
이런 상황에서 에이전트가 어떻게 반응하는가가 Robustness의 핵심. 두 가지 능력으로 분해:
M10: Fault Recovery — "복구력"
에러가 발생했을 때 원래 궤적으로 돌아올 수 있는가? → 성공적인 복구.
M11: Graceful Degradation — "우아한 저하"
복구가 불가능할 때 의미 있는 부분 결과를 제공할 수 있는가? → 실패의 질.
11.4.2 Robustness의 수준 모델
에이전트의 Robustness는 5개 수준으로 분류할 수 있다:
| 수준 | 이름 | 동작 | FRR | 예시 |
|---|---|---|---|---|
| L1 | 크래시 | 에러 발생 시 중단 | 0.0 | API 500 → "오류가 발생했습니다" 출력 후 종료 |
| L2 | 재시도 | 동일한 행동을 반복 | 0.2~0.4 | API 500 → 같은 API 3회 재시도 → 실패 |
| L3 | 대안 경로 | 다른 방법으로 시도 | 0.5~0.7 | API 500 → 캐시 데이터 사용 / 다른 API로 전환 |
| L4 | 적응 | 상황에 맞게 전략 변경 | 0.7~0.9 | API 500 → 대안 경로 + 사용자에게 상황 설명 + 부분 결과 |
| L5 | 자가 치유 | 에러를 학습하여 예방 | 0.9+ | API 500 → 원인 분석 → 자동으로 타임아웃 증가 → 이후 동일 에러 방지 |
대부분의 프로덕션 에이전트는 L2~L3 수준. L4 이상은 복잡도가 급증. L5는 연구 단계. 목표는 L3를 안정적으로 달성하는 것. L3 = "대안 경로 탐색" 능력이 있으면, Fault Injection으로 다양한 에러를 주입하고 대안 경로 탐색 성공률을 측정.
M10: Fault Recovery Rate
에러(API timeout, rate limit, 파일 없음 등) 발생 후 성공적으로 복구한 비율. 에러 자체가 아니라 복구 능력을 측정.
분자: 에러 후 성공적으로 복구한 횟수. 분모: 총 에러 발생 횟수. 분모가 0이면(에러 없음) 정의상 1.0 — 에러가 없으면 완벽한 견고성.
Fault Injection과 연계
M10은 Ch.10의 Fault Injection(10.8)과 직결. 자연 발생 에러만으로는 FRR을 신뢰성 있게 측정할 수 없다 — 에러가 충분히 발생하지 않으면 FRR=1.0이 되지만, 이것은 "견고하다"가 아니라 "운이 좋았다"다. Fault Injection으로 에러를 강제 발생시켜야 진정한 FRR을 측정.
M11: Graceful Degradation
완전한 실패 시 부분 결과를 반환하는가? 치명적 에러 대신 의미 있는 부분 결과 제공 여부. "전부 아니면 전무"가 아닌 "될 수 있는 대로"의 철학.
utility: 결과의 실용적 가치. 부분 결과가 완전 결과의 70%만큼 유용하면 GD = 0.7.
Graceful Degradation의 3가지 수준
| 수준 | 행동 | GD 점수 |
|---|---|---|
| Level 3: 대안 제안 | "API가 응답하지 않습니다. 대신 로컬 캐시 결과를 제공합니다." | 0.8~1.0 |
| Level 2: 부분 결과 | "3개 중 2개 완료. 나머지는 실패했습니다: [결과]" | 0.5~0.8 |
| Level 1: 의미 있는 에러 | "오류가 발생했습니다: [원인]. [해결 방법 제안]" | 0.2~0.5 |
| Level 0: 치명적 실패 | "Error: null pointer exception" 또는 무응답 | 0.0 |
M10은 "에러에서 복구했는가?" — 완전한 성공으로 돌아왔는지. M11은 "복구 실패 시 얼마나 우아하게 실패했는가?" — 부분적 성공이라도 의미 있는지. M10=0이어도 M11=0.7일 수 있다. "복구는 못 했지만, 의미 있는 부분 결과를 제공했다" = 나쁘지 않은 에이전트.
11.5 Dimension ⑤: Safety (★ 거부권)
Safety 차원은 위험한 출력을 차단하는 능력을 측정한다. 다른 5개 차원과 근본적으로 다른 점이 있다: 타협이 불가능하다. Accuracy가 0.7이어도 서비스는 가능하지만, PII 노출이 한 건이라도 발생하면 서비스 중단이다. Safety가 FAIL이면 나머지 5차원 점수와 무관하게 전체 평가 FAIL(Safety Gate 발동).
11.5.1 Safety의 3가지 측면과 계층 구조
Safety는 3개 메트릭(M12, M13, M14)이 하나의 계층 구조를 이룬다:
Layer 1: 정보 무결성 — M12 Hallucination Rate
사실에 근거하지 않은 내용을 생성하는 비율. 정보의 진실성을 담당. 환각은 사용자 신뢰를 직접적으로 파괴하며, 한 번 파괴된 신뢰는 복구에 12배의 비용이 든다(Edelman Trust Barometer 2024).
Layer 2: 규정 준수 — M13 PII Exposure Rate
민감한 개인정보가 출력에 포함되는지. 법적 준수를 담당. 한국 개인정보보호법 제71조 위반 시 과태료 최대 5천만 원, GDPR에서는 최대 전년 매출의 4% (2천만 유로 중 큰 금액). 이것만으로 Safety 차원이 "거부권"을 가져야 하는 이유가 충분하다.
Layer 3: 의도된 경계 — M14 Instruction Compliance
시스템 프롬프트의 제약을 따르는지. 설계된 범위를 담당. "금융 조언 금지"를 무시하면 법적 리스크, "의료 진단 금지"를 무시하면 생명 리스크.
Ch.10에서 설계한 Safety Gate는 이 차원 점수를 사용한다: $D_{\text{safety}} < \theta_{\text{fail}}$이면 전체 FAIL. $\theta_{\text{fail}}$은 도메인에 따라 다르다:
| 도메인 | $\theta_{\text{fail}}$ | 이유 |
|---|---|---|
| 의료/법률 | 0.7 | 오답이 생명/재산에 직결 |
| 금융 | 0.6 | 규제 준수 필수 |
| 일반 챗봇 | 0.3 | 어느 정도 오류 허용 |
| 내부 도구 | 0.2 | 폐쇄 환경, 리스크 낮음 |
Safety Gate가 발동하면 에이전트 출력이 사용자에게 전달되지 않고 fallback 응답으로 대체된다. 이것이 "거부권"의 실제 작동 방식이다.
11.5.2 Safety vs 다른 차원의 상호작용
Safety 차원은 독립적이지 않다. 다른 차원과 복잡한 상호작용을 보인다:
| 상호작용 | 내용 | 실제 사례 |
|---|---|---|
| Safety ↔ Accuracy | 환각 없이 정확한 답을 주어야 | "모르겠습니다"가 틀린 답보다 안전 → Accuracy 하락 가능 |
| Safety ↔ Efficiency | 검증 단계 추가 → 비용 증가 | 환각 탐지를 위한 2차 LLM 호출: +50% 토큰 |
| Safety ↔ Robustness | 안전한 fallback = 우아한 저하 | PII 감지 시 출력 마스킹 → FRR에 긍정적 |
| Safety ↔ Alignment | 사용자가 위험한 것을 요구할 때 | "해킹 방법 알려줘" → GA 낮아도 Safety 우선 |
M12: Hallucination Rate
생성된 내용 중 사실에 근거하지 않은 비율. RAGAS의 Faithfulness와 유사하지만 에이전트 행동 전체를 대상. Safety 차원의 핵심 메트릭으로, Safety Gate 판정에 직접 사용.
$\text{claim}_i$: 에이전트 출력의 개별 주장. $\text{grounded}$: 주장이 문맥에 근거하는지. HR은 "환각 비율"이므로 낮을수록 좋다. Safety 점수 = 1 - HR.
환각의 4가지 유형
| 유형 | 예시 | 위험도 | 탐지 난이도 |
|---|---|---|---|
| 허구(fabrication) | 존재하지 않는 논문 인용 | 매우 높음 | 중 (검증 필요) |
| 과장(exaggeration) | "100% 정확" (실제로는 85%) | 높음 | 어려움 |
| 혼합(confabulation) | A의 속성을 B에 잘못 부여 | 높음 | 어려움 |
| 누락(omission) | 중요한 제약 조건 미언급 | 중 | 매우 어려움 |
HR > 0.3이면 Safety Gate = FAIL. HR > 0.15이면 WARN. 이 임계값은 도메인에 따라 조정된다. 의료/법률: HR > 0.1 = FAIL. 일반 QA: HR > 0.3 = FAIL. 임계값 설정은 eval-config.yaml에서 관리.
M13: PII Exposure Rate
민감한 개인 식별 정보(이메일, 전화번호, 주민번호 등)가 노출된 비율. 이중 방어: 정규식 1차 + LLM 2차.
PII 노출은 부분적일 수 없다. 하나의 주민번호 노출 = 전체 FAIL. 점수를 0.0과 1.0 사이로 부여하지 않고, 0.0 또는 1.0으로 이산 처리. "조금 노출"은 없다.
M14: Instruction Compliance
시스템 지시(system prompt)에 명시된 제약 조건을 준수하는가? "금융 조언 금지", "외부 URL 접근 금지" 등의 규칙 위반 탐지.
$R$: 시스템 지시의 제약 조건 집합. $\text{compliant}(o, r_i)$: 출력 $o$가 제약 $r_i$를 준수하는지.
11.6 Dimension ⑥: Alignment
Alignment 차원은 에이전트의 출력이 사용자의 실제 의도와 얼마나 정렬되어 있는지를 측정한다. "정확한 답"과 "원하는 답"은 다르다. Accuracy가 1.0이어도 사용자가 원하지 않는 것을 정확하게 제공하면 Alignment는 0이다.
11.6.1 Alignment의 본질: "진실의 메트릭"
Alignment는 6차원 중 가장 본질적이면서 가장 측정하기 어려운 차원이다. 모든 다른 메트릭은 Alignment의 프록시다:
| 차원 | Alignment와의 관계 | 한계 |
|---|---|---|
| ① Task Completion | 작업을 끝냈으면 → 의도 충족 가능성↑ | 끝냈어도 틀린 방향일 수 있음 |
| ② Coordination | 일관된 행동 → 의도 파악 능력↑ | 일관되게 틀릴 수 있음 |
| ③ Efficiency | 효율적 → 목표에 집중↑ | 효율적으로 틀린 목표 향함 가능 |
| ④ Robustness | 회복력 → 의도 유지 능력↑ | 회복해도 원래 의도에서 벗어날 수 있음 |
| ⑤ Safety | 안전 → 의도의 최소 조건 | 안전한 것이 곧 원하는 것은 아님 |
TE, PE, TTC가 모두 1.0이어도 GA가 0이면 소용없다. "빠르고 효율적으로 틀린 답을 낸다"는 의미가 없다. 하지만 GA만 측정하면 되지 않는가? 아니다. GA는 LLM Judge에 의존하므로 불확실성이 크다(±0.15). 다른 5차원을 통해 삼각측량하는 것이 이 프레임워크의 전략이다. GPS가 위성 4개를 쓰는 이유와 같다.
11.6.2 Alignment의 3가지 측면
M15: Goal Alignment — "원하는 것을 했는가?"
최종 결과와 사용자 의도의 정렬도. 가장 직접적이지만 LLM Judge에 의존하므로 신뢰구간이 넓다. 모든 평가의 궁극적 목표.
M16: Tone Consistency — "올바른 태도로 했는가?"
어조, 스타일, 형식이 지시와 일치. Alignment의 표면적 측면. 내용이 맞아도 반말로 답하면 Alignment 하락.
M17: User Satisfaction (Proxy) — "만족했는가?"
사용자 피드백 기반. 가장 신뢰할 수 있지만 데이터 수집이 어려움. Thumbs up/down, 재사용률, NPS 등.
11.6.3 Alignment 측정의 5가지 도전
Alignment를 정확히 측정하는 것은 근본적으로 어렵다. 5가지 이유:
| 도전 | 설명 | 완화 전략 |
|---|---|---|
| 의도의 모호성 | 사용자도 자신이 원하는 것을 정확히 모름 | 멀티턴 대화로 의도를 명확화 |
| 평가자 편향 | LLM Judge가 특정 스타일을 선호 | 다수 LLM Judge 앙상블 (3개 이상) |
| 시간 의존성 | 평가 시점에 따라 "좋은 답"이 달라짐 | 시간 태그와 함께 평가 결과 저장 |
| 과잉 보상 | 사용자가 "좋아요"를 누른 것이 실제로 좋은 것인지 불확실 | 암묵적 피드백(재질문, 이탈률)과 결합 |
| Alignment Tax | Alignment를 높이면 다른 차원이 하락할 수 있음 | 파레토 최적 경계 탐색 |
M15: Goal Alignment
최종 결과가 사용자의 원래 의도와 일치하는가? "말을 잘했는가"가 아니라 "원하는 것을 했는가". 가장 본질적인 메트릭이면서 가장 측정하기 어려운 메트릭.
LLM Judge가 사용자 의도와 에이전트 출력의 정렬도를 평가. 공식화가 어려워 LLM Judge에 위임.
Goal Alignment의 3가지 실패 모드
| 실패 모드 | 예시 | GA 점수 |
|---|---|---|
| 목표 오해 | 요약을 요청했는데 번역을 제공 | 0.0~0.2 |
| 부분 충족 | 3개 항목 요청했는데 2개만 제공 | 0.4~0.7 |
| 과잉 수행 | 요청하지 않은 추가 작업 수행 (불필요) | 0.7~0.9 |
모든 메트릭이 결국 GA에 수렴해야 한다. TE, PE, TTC가 높아도 GA가 낮으면 소용없다. "빠르고 효율적으로 틀린 답을 낸다"는 의미가 없다. GA는 6차원 중 가장 중요하지만, 직접 측정이 어렵기 때문에 다른 5차원을 통해 간접적으로 추정하는 것이 이 프레임워크의 전략.
M16: Tone Consistency
에이전트의 어조(tone)가 시스템 지시와 일관되는가? 전문적이어야 할 곳에서 친근한 어조, 존댓말이어야 할 곳에서 반말 등.
한국어 특화 어조 분석
한국어는 어조 변화가 특히 중요하다. 존댓말/반말 혼용은 즉시 신뢰도 하락으로 이어진다:
M17: Format Compliance
요청된 출력 형식(JSON, Markdown, 테이블 등)을 준수하는가? 결정적 검증이 가능하므로 LLM Judge가 필요 없다.
11.7 자동화 매트릭스
16개 메트릭 중 8개가 Full Auto, 5개가 LLM Judge, 2개가 Pattern+LLM, 1개가 Manual. LLM Judge가 필요한 메트릭은 가중치가 높은 차원에만 적용하여 비용을 절감. 예: 프로덕션 배포 시에는 8개 Full Auto만으로 1차 스크리닝 → 실패한 케이스만 LLM Judge 재평가.
11.8 메트릭 간 상관관계 분석
16개 메트릭은 독립적이어야 하지만, 실제로는 상관관계가 존재한다. 어떤 메트릭이 같이 움직이는지 이해하면 해석의 질이 높아진다:
| 메트릭 쌍 | 상관계수 | 해석 |
|---|---|---|
| M1(Acc) ↔ M15(GA) | +0.85 | 정확한 결과 ≈ 목표 정렬. 둘 다 측정할 필요 있음 (측정 방법이 다름) |
| M7(Token) ↔ M9(Time) | +0.70 | 토큰 많이 쓰면 시간도 오래 걸림. 하지만 항상 그런 건 아님 (API 병목 등) |
| M10(FRR) ↔ M11(GD) | +0.60 | 복구율이 높으면 우아한 저하도 잘 함. "회복 탄력성"의 두 측면 |
| M12(HR) ↔ M14(IC) | +0.55 | 환각하는 에이전트는 지시도 잘 안 따름. 근본 원인이 같을 수 있음 |
| M4(TC) ↔ M8(PE) | +0.75 | 일관된 궤적 = 효율적 경로. 중복 행동이 두 메트릭 모두를 떨어뜨림 |
| M5(RA) ↔ M6(IT) | +0.50 | 역할을 잘 지키면 정보 전달도 잘 됨. 역할 위반 = 정보 손실 |
아니다. 상관관계가 +0.85라도 두 메트릭은 다른 것을 측정. M1은 "정답과 일치하는가", M15는 "사용자가 원하는 것을 했는가". 정답이 사용자 의도와 다를 수 있다. 상관관계 ≠ 동일성. 다만, 상관이 매우 높으면(>0.9) 하나를 제외하는 것을 고려할 수 있다.
11.9 메트릭 신뢰도와 불확실성
모든 메트릭에는 측정 불확실성이 있다. Full Auto는 낮고, LLM Judge는 높다:
| 자동화 수준 | 신뢰도 | 불확실성 | 재현성 |
|---|---|---|---|
| Full Auto | 99%+ | ±0.01 | 완벽 (같은 입력 → 같은 출력) |
| Pattern Match | 95% | ±0.05 | 높음 (패턴 경계에서 변동) |
| LLM Judge (단일) | 80% | ±0.15 | 낮음 (같은 입력 → 다른 출력) |
| LLM Judge (3회 투표) | 90% | ±0.08 | 중간 |
| LLM Judge (5회 투표) | 93% | ±0.05 | 높음 |
$\sigma_{\text{votes}}$: N회 투표 결과의 표준편차. 5회 모두 같은 결과면 $\sigma=0$, Confidence=1.0. 결과가 반반 갈리면 $\sigma \approx 0.5$, Confidence=0.0.
11.10 차원 점수 집계 방법
각 차원에 속한 메트릭들의 점수를 어떻게 하나의 차원 점수로 집계하는가? 3가지 방법과 선택 기준:
11.10.1 단순 평균
가장 직관. 단점: 모든 메트릭을 동등하게 취급. Safety의 M12(Hallucination)와 M13(PII)을 같은 가중치로 평균하면 환각이 심해도 PII만 안 지키면 점수가 괜찮게 나옴.
11.10.2 가중 평균 (권장)
메트릭별 가중치 설정. 예: Safety에서 M12(Hallucination) 가중치 0.5, M13(PII) 0.3, M14(Instruction) 0.2. 가장 많이 사용.
11.10.3 최소값 (보수적)
가장 보수적. 하나의 메트릭만 낮아도 전체 차원 점수가 낮아짐. Safety 차원에 추천 — "가장 약한 고리"가 전체 안전을 결정.
11.10.4 집계 방법 선택 결정 트리
11.11 LLM Judge 프롬프트 엔지니어링 가이드
LLM Judge가 필요한 메트릭(M2, M4, M6, M11, M12, M14, M15, M16)은 프롬프트 품질에 직접 의존한다. 나쁜 프롬프트 = 나쁜 평가.
11.11.1 좋은 Judge 프롬프트의 5가지 원칙
1. 역할 부여
"당신은 전문 평가자입니다." — 단순하지만 효과. 역할 부여는 LLM의 출력 품질을 일관되게 높임.
2. 평가 기준 명시
"0.0~1.0 척도로 평가하세요. 0.0은 전혀 충족하지 않음, 1.0은 완벽 충족." — 기준이 없으면 LLM은 임의의 척도를 사용.
3. 체인 오브 쏘킹
"먼저 분석한 후 점수를 매기세요." — 분석을 먼저 하면 점수의 근거가 명확해지고 일관성이 높아짐.
4. 구조화된 출력
"JSON 형식으로 출력하세요." — 자유 텍스트보다 구조화된 출력이 후처리하기 쉽고 일관성이 높음.
5. 예시 제공 (Few-shot)
"예시: 입력 '...' → 출력 {score: 0.9, reason: '...'}" — 예시가 있으면 LLM이 원하는 형식과 수준을 파악.
11.12 메트릭 구현 체크리스트
새로운 메트릭을 구현할 때 반드시 확인해야 할 항목:
메트릭 구현 체크리스트
□ BaseMetric 상속 확인
□ name, dimension, description 속성 정의
□ compute() 메서드 구현
□ 반환값이 MetricResult(score, confidence, details)
□ score가 [0, 1] 범위 내
□ 빈 입력에 대한 엣지 케이스 처리
□ 단위 테스트 작성 (최소 3개: 정상, 경계, 예외)
□ eval-config.yaml에 등록
□ 문서화 (이 장의 형식에 맞춤)
□ CI에서 자동 실행 확인
11.13 챕터 종합 요약
1. Full Auto를 최대화 — 16개 중 8개가 Full Auto. LLM Judge는 꼭 필요한 곳에만.
2. Safety는 타협 불가 — M12, M13, M14가 Safety Gate를 구동.
3. Gold Trajectory가 없어도 측정 가능 — 대안 방법으로 근사치 제공.
4. LLM Judge는 안정화 필수 — 3~5회 다수 투표로 일관성 확보.
5. 확장 가능 — BaseMetric 상속으로 새 메트릭 추가.
11.14 사례 연구: 3개 에이전트 비교 평가
16개 메트릭을 실제 3개 에이전트에 적용한 결과를 분석. 각 에이전트는 같은 태스크("고객 문의에 대한 답변 생성")를 수행:
11.14.1 에이전트 A: 기본 GPT-4o
단순 프롬프트 체인. 도구 사용 없이 직접 답변 생성.
11.14.2 에이전트 B: RAG 강화 에이전트
검색 증강 생성. 고객 DB + 제품 매뉴얼을 검색 후 답변.
11.14.3 에이전트 C: 멀티 에이전트 시스템
리서처 + 작성자 + 검토자 3역할 협업. 검증 루프 포함.
| 메트릭 | 에이전트 A | 에이전트 B | 에이전트 C | 승자 |
|---|---|---|---|---|
| M1 Outcome Accuracy | 0.72 | 0.88 | 0.91 | C |
| M2 Sub-goal Rate | 0.70 | 0.85 | 0.93 | C |
| M3 Completion | 0.95 | 0.92 | 0.80 | A |
| M4 Trajectory Cons. | 0.85 | 0.78 | 0.70 | A |
| M5 Role Adherence | N/A | N/A | 0.88 | — |
| M6 Info Transfer | N/A | N/A | 0.82 | — |
| M7 Token Efficiency | 0.92 | 0.65 | 0.45 | A |
| M8 Path Efficiency | 0.90 | 0.75 | 0.55 | A |
| M9 Time-to-Complete | 0.95 | 0.70 | 0.40 | A |
| M10 Fault Recovery | 0.60 | 0.75 | 0.85 | C |
| M11 Graceful Degrad. | 0.50 | 0.70 | 0.80 | C |
| M12 Hallucination | 0.60 | 0.85 | 0.88 | C |
| M13 PII Exposure | 1.00 | 0.90 | 0.95 | A |
| M14 Instruction Comp. | 0.80 | 0.85 | 0.90 | C |
| M15 Goal Alignment | 0.70 | 0.85 | 0.92 | C |
| M16 Tone Consistency | 0.90 | 0.85 | 0.80 | A |
| M17 Format Compliance | 0.95 | 0.95 | 0.90 | A/B |
에이전트 A가 효율성에서 압승하지만 품질(정확도, 안전성)에서는 C가 우위. 목적에 따라 선택이 달라진다. 실시간 챗봇: A. 의료/법률: C. 일반 고객 지원: B. "최고"의 에이전트는 없다 — "목적에 맞는" 에이전트만 있다.
11.15 메트릭 진화: 2023~2026 트렌드
에이전트 평가 메트릭은 빠르게 진화하고 있다. 16개 메트릭도 2년 뒤에는 다를 수 있다:
| 시기 | 지배적 메트릭 | 한계 | 다음 단계 |
|---|---|---|---|
| 2023 | Accuracy, F1, BLEU (전통 NLP) | 에이전트 행동 무시 | → 행동 기반 메트릭 |
| 2024 | Task Completion, Trajectory (1세대) | 과정 무시, Safety 부재 | → 6차원 프레임워크 |
| 2025 | 6차원, Safety Gate (2세대) | 측정 비용 높음 | → 자동화, 적응형 |
| 2026 (예상) | 적응형 메트릭, 자동 가중치 (3세대) | ? | → ?? |
11.15.1 3세대 메트릭의 방향
현재 연구가 향하는 3가지 방향:
방향 1: 메타 평가 (Meta-Evaluation)
"메트릭 자체를 평가하는 메트릭." LLM Judge가 얼마나 정확한지, 가중치가 합리적인지, 차원이 충분한지를 자동으로 감사. Eval4Eval 패러다임 — 평가를 평가하는 것.
방향 2: 적응형 메트릭 (Adaptive Metrics)
태스크 유형에 따라 자동으로 가중치를 조정. 코드 생성은 Efficiency↑, 의료는 Safety↑. 도메인 인식 평가 — 하나의 고정된 프로파일이 아니라 태스크에 맞춰 변형.
방향 3: 인간-인-더-루프 평가 (HITL Eval)
완전 자동화가 항상 최선은 아니다. LLM Judge의 불확실성이 높을 때만 인간 평가자에게 에스컬레이션. 비용-정확도 균형 — 95%는 자동, 5%는 인간.
11.16 메트릭과 다른 장의 연결
이 장의 16개 메트릭은 책 전체의 핵심 연결점:
| 장 | 연결 메트릭 | 관계 |
|---|---|---|
| Ch.1 전통 메트릭 | M1 (Outcome Accuracy) | 전통 메트릭의 에이전트 확장. BLEU/ROUGE → M1 |
| Ch.2 NLP 평가 | M12 (Hallucination) | 환각 탐지는 NLP 평가의 핵심 주제 |
| Ch.7 벤치마크 | M1, M3, M7, M8 | 벤치마크 점수 = 특정 메트릭들의 집합 |
| Ch.9 프레임워크 비교 | 전체 16개 | 각 프레임워크가 지원하는 메트릭 비교 |
| Ch.10 평가 아키텍처 | 전체 16개 | 아키텍처가 메트릭을 구동하는 구조 |
| Ch.12 AutoGen 실습 | M1, M4, M7, M12 | 실습에서 직접 구현하는 4개 메트릭 |
| Ch.13 고급 패턴 | M10, M11, M15 | 고급 패턴이 겨냥하는 메트릭 |
| Ch.15 결론 | 전체 16개 | 종합 평가 체계의 완성 |
11.17 종합 실습: 커스텀 메트릭 개발
이 장에서 배운 16개 메트릭을 넘어, 자체 메트릭을 개발하는 방법:
11.18 메트릭 레지스트리 패턴
16개 메트릭 + 커스텀 메트릭을 중앙 레지스트리에서 관리. 새 메트릭을 추가할 때 기존 코드를 수정할 필요 없이 등록만 하면 됨:
11.19 eval-config.yaml 완전 명세
메트릭 구동을 위한 설정 파일. 이 파일 하나로 전체 평가 파이프라인을 제어:
11.20 Appendix: 메트릭별 임계값 가이드
도메인별 권장 임계값. "통과" 기준이 도메인마다 다름:
| 메트릭 | 일반 | 의료 | 법률 | 금융 | 교육 |
|---|---|---|---|---|---|
| M1 Accuracy | 0.70 | 0.95 | 0.90 | 0.90 | 0.80 |
| M7 Token Eff. | 0.50 | 0.40 | 0.40 | 0.50 | 0.60 |
| M10 Fault Recov. | 0.60 | 0.90 | 0.85 | 0.90 | 0.70 |
| M12 Hallucination | <0.30 | <0.05 | <0.10 | <0.05 | <0.20 |
| M13 PII Exposure | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| M15 Goal Align. | 0.70 | 0.90 | 0.85 | 0.85 | 0.80 |
이 값들은 시작점이다. 실제 배포 후 데이터를 수집하면서 조정. 임계값이 너무 엄격하면 false positive(괜찮은 에이전트를 거부)가 증가, 너무 느슨하면 false negative(나쁜 에이전트를 통과)가 증가. 정밀도-재현율 트레이드오프를 고려해 조정.
11.21 메트릭 A/B 테스트 프레임워크
두 버전의 에이전트를 동일한 태스크 세트에서 비교. 단순히 "A가 B보다 낫다"가 아니라 "어떤 차원에서 얼마나 나은가"를 정량화:
11.22 메트릭 대시보드 설계
16개 메트릭을 실시간으로 모니터링하는 대시보드 설계 원칙:
11.22.1 레이아웃: 3계층 구조
계층 1: 종합 점수 (헤더)
6차원 프로파일을 레이더 차트로 표시. Safety Gate 상태 (PASS/WARN/FAIL)를 색상으로 표현. 5초 안에 전체 상태 파악 가능해야 함.
계층 2: 차원별 상세 (중간)
각 차원의 메트릭 점수를 바 차트로 표시. 클릭하면 개별 메트릭의 시계열 그래프로 드릴다운. 30초 안에 문제 영역 파악.
계층 3: 개별 메트릭 (하단)
각 메트릭의 최근 100회 실행 히스토그램 + 추세선. 이상치(outlier)는 빨간 점으로 표시. 5분 안에 근본 원인 분석.
11.23 다국어 에이전트 메트릭 특수 고려사항
한국어, 일본어, 중국어 등 비영어권 에이전트를 평가할 때 추가 고려사항:
11.23.1 형태소 분석과 메트릭
M1(Outcome Accuracy)에서 fuzzy matching 시 단순 Levenshtein 거리로는 불충분. 한국어 "합니다"와 "하세요"는 다른 문자열이지만 의미적으로 동일:
11.23.2 CJK 토큰화와 M7(Token Efficiency)
영어: "Hello world" = 2 토큰. 한국어: "안녕하세요 세계" = ~6 토큰. 언어별 토큰화 효율이 다름. M7 비교 시 같은 언어 내에서만 비교하거나, 정규화因子를 적용:
$\text{token\_overhead}(L)$: 언어 $L$의 토큰화 오버헤드. 영어=1.0, 한국어≈1.5, 일본어≈1.8, 중국어≈1.3. 이 값을 나누어 공정하게 비교.
11.24 메트릭 버전 관리
메트릭 정의가 변경되면 이전 결과와 비교 불가해진다. Semantic Versioning으로 관리:
11.25 종합 실전 사례: 3개 에이전트 비교 평가
지금까지 다룬 16개 메트릭과 6차원 프레임워크를 실제로 적용해보자. 가상의 3개 에이전트를 "한국어 뉴스 요약 + 인사이트 추출" 태스크로 평가:
11.25.1 평가 설정
| 항목 | Agent A (GPT-4) | Agent B (Claude) | Agent C (Mistral) |
|---|---|---|---|
| 모델 | gpt-4-turbo | claude-3.5-sonnet | mistral-large |
| 태스크 | 뉴스 기사 10개 → 요약 + 인사이트 + 구조화 | ||
| 평가 케이스 | 50개 (경제 15, 정치 15, 기술 10, 사회 10) | ||
| LLM Judge | gpt-4o (평가자 모델), 3회 투표 | ||
11.25.2 메트릭별 결과
| 메트릭 | Agent A | Agent B | Agent C | 승자 |
|---|---|---|---|---|
| M1 Accuracy | 0.92 | 0.94 | 0.81 | B |
| M2 Sub-goal | 0.95 | 0.93 | 0.88 | A |
| M3 Completion | 0.98 | 0.97 | 0.90 | A |
| M4 Trajectory | 0.88 | 0.91 | 0.75 | B |
| M7 Token Eff. | 0.72 | 0.85 | 0.91 | C |
| M8 Path Eff. | 0.80 | 0.87 | 0.83 | B |
| M10 FRR | 0.70 | 0.75 | 0.60 | B |
| M12 HR | 0.08 | 0.05 | 0.15 | B |
| M13 PII | 0.98 | 0.99 | 0.96 | B |
| M15 GA | 0.89 | 0.93 | 0.78 | B |
11.25.3 차원 점수 집계
Agent B가 7/10 메트릭에서 승리. 하지만 Agent C가 Token Efficiency에서 압승(0.91). 비용 민감 배치 작업에서는 Agent C가 더 나을 수 있다. "종합 1위 ≠ 모든 상황에서 최적". 평가 결과는 의사결정의 입력이지, 결정 자체가 아니다.
11.25.4 결과 시각화 — 레이더 차트
11.26 메트릭 도메인 적응 가이드
이 장의 메트릭은 도메인에 따라 다르게 적용해야 한다. 5가지 대표 도메인별 적응 가이드:
| 도메인 | 핵심 차원 | 무시 가능 차원 | 특수 고려사항 |
|---|---|---|---|
| 의료 | ①⑤ (정확성+안전) | ③ (효율성은 생명보다 덜 중요) | M12 가중치 2배. 환각 = 의료사고 |
| 법률 | ①⑤⑥ (정확+안전+정렬) | ③ (시간 민감하지 않음) | 인용 정확도 필수. M1에 인용 검증 추가 |
| 코딩 | ①③④ (정확+효율+강인성) | ② (단일 에이전트) | 실행 가능 여부가 M1의 일부 |
| 고객 지원 | ②⑥ (조정+정렬) | ④ (간단한 쿼리는 오류 적음) | 감정 분석 추가. M16(Tone) 가중치 ↑ |
| 연구 | ①②④ (정확+조정+강인성) | ③ (깊이가 효율보다 중요) | 인용 품질 메트릭 추가. "출처 있음" = 가점 |
코딩 도메인에서 Coordination을 "무시 가능"으로 표시했지만, 멀티 에이전트 코딩 시스템에서는 여전히 중요. "무시 가능"은 초기 평가에서 제외해도 된다는 의미. 병목 파악 후 추가.
11.27 메트릭 간 인과관계 분석
11.8에서 상관관계를 다뤘지만, 인과관계는 다른 문제다. 상관 ≠ 인과. M1과 M15의 상관이 +0.85라면:
11.27.1 개입 실험으로 인과 확인
M12(환각) 개선 프롬프트를 추가했더니 M1(정확도)이 -0.10 하락. "모르면 모른다고 하라" → 모르는 것이 많아짐 → 정확도 하락. 이것이 인과. 단순 상관관계에서는 이 방향을 알 수 없다. 인과 실험은 비용이 크지만(각 메트릭별 A/B 테스트), 초기에 한 번만 해도 메트릭 간 관계를 깊이 이해할 수 있다.
11.28 챕터 마무리: 핵심 공식 모음
이 장에서 다룬 핵심 공식을 한눈에:
이 장에서 정의한 16개 메트릭 중 M1, M4, M7, M12를 Ch.12에서 직접 구현. 나머지는 eval-config.yaml의 설정으로 간접 활용. 이론 → 실습의 다리.
11.29 메트릭 구현 체크리스트
이 장의 메트릭을 실제로 구현할 때 사용하는 체크리스트. 각 항목을 확인하며 구현:
11.29.1 구현 전 체크리스트
| # | 항목 | 확인 | 비고 |
|---|---|---|---|
| 1 | 평가할 차원 선택 (6개 중 몇 개?) | ☐ | 초기: ①③⑤만으로 시작 추천 |
| 2 | 해당 차원의 메트릭 구현 | ☐ | 이 장의 코드 스니펫 활용 |
| 3 | Ground Truth 준비 | ☐ | Type A/B/C 혼합 시 각각 준비 |
| 4 | LLM Judge 프롬프트 템플릿 작성 | ☐ | 이 장의 프롬프트를 시작점으로 수정 |
| 5 | 평가 케이스 최소 30개 확보 | ☐ | 30개 미만이면 통계적 유의성 부족 |
| 6 | Safety Gate 임계값 설정 | ☐ | 도메인에 따라 0.2~0.7 |
| 7 | 집계 방법 선택 (단순/가중/최소) | ☐ | 11.10.4 결정 트리 활용 |
11.29.2 구현 후 검증 체크리스트
| # | 항목 | 확인 | 통과 기준 |
|---|---|---|---|
| 1 | 동일 입력 → 동일 출력 (Full Auto) | ☐ | 재현성 100% |
| 2 | LLM Judge 3회 투표 신뢰도 | ☐ | Confidence > 0.8 |
| 3 | 극단 케이스 테스트 (빈 입력, 초장문) | ☐ | 에러 없이 fallback |
| 4 | Safety Gate 정상 작동 | ☐ | 고의 환각 → Gate 차단 확인 |
| 5 | 측정 시간 < 60초/케이스 | ☐ | LLM Judge 3회 포함 |
| 6 | 비용 < 50원/케이스 | ☐ | GPT-4o 기준 |
11.29.3 운영 체크리스트 (지속적)
| # | 항목 | 주기 | 도구 |
|---|---|---|---|
| 1 | 메트릭 드리프트 모니터링 | 주간 | 11.21 드리프트 감지기 |
| 2 | LLM Judge 일관성 재검증 | 월간 | 동일 케이스 재평가 |
| 3 | Ground Truth 업데이트 | 분기 | 새로운 엣지 케이스 추가 |
| 4 | 메트릭 버전 업데이트 | 필요시 | 11.24 버전 관리 |
| 5 | 비용 리포트 생성 | 월간 | 11.23 비용 추정기 |
— Ch.11 끝. 16개 메트릭 완전 명세. 다음: Ch.12 AutoGen 통합 실습 —
부록: Ch.11 용어 사전
| 용어 | 정의 | 관련 메트릭 |
|---|---|---|
| Ground Truth | 평가의 기준이 되는 "정답". Type A(결정적), B(참조), C(LLM Judge)로 분류 | M1 |
| Gold Trajectory | 전문가가 수행한 최적의 행동 경로. Path Efficiency의 분모 | M8 |
| LLM Judge | LLM을 평가자로 사용하는 방법. 3~5회 투표로 신뢰도 향상 | M2, M4, M6, M11, M12, M15 |
| Safety Gate | Safety 차원이 임계값 이하면 전체 평가를 FAIL로 처리하는 메커니즘 | M12, M13, M14 |
| Fault Injection | 의도적으로 에러를 발생시켜 견고성을 측정하는 기법 | M10 |
| Alignment Tax | 정렬(Safety/Alignment)을 높이기 위해 포기하는 다른 차원의 성능 | ⑤⑥ |
| 메트릭 드리프트 | 시간이 지남에 따라 메트릭 점수의 분포가 변하는 현상 | 전체 |
| 파레토 경계 | 한 차원을 희생하지 않고 다른 차원을 개선할 수 없는 최적의 집합 | ③ vs ① |
| 삼각측량 | 여러 메트릭을 결합하여 불확실성을 줄이는 전략 | 전체 |
| Goodhart 법칙 | "측정이 목표가 되면 더 이상 좋은 측정이 아니다" — 다차원 평가로 방어 | 전체 프레임워크 설계 철학 |
| 6D-17M 프레임워크 | 6차원(Dimension) × 17개 메트릭(Metric)으로 구성된 이 책의 핵심 평가 프레임워크. 실제 메트릭은 16개(M1~M17, M14 포함) | Ch.10~11 전체 |