한 줄 요약

에이전트 평가를 체계적으로 수행하기 위한 실전 체크리스트. 가장 간단한 eval부터 시작하고, 인프라 구축 전에 20-50개 트레이스를 수동으로 먼저 리뷰하라.

핵심 원칙

가장 먼저 신호를 주는 가장 단순한 eval로 시작해라. 아키텍처가 아직 변하고 있어도, 핵심 과업을 수행하는지 테스트하는 엔드투엔드 eval이 베이스라인을 준다.


Phase 0: eval을 만들기 전에

  • 20-50개 실제 에이전트 트레이스를 수동 리뷰 — 어떤 자동화 시스템보다 실패 패턴을 잘 알려줌
  • 단일 과업에 대한 명확한 성공 기준 정의 — 두 전문가가 동의할 수 없는 기준은 재설계 필요
  • Capability eval과 Regression eval 분리
    • Capability: “뭘 할 수 있는가?” → 낮은 패스율에서 시작
    • Regression: “아직 잘 되는가?” → ~100% 패스율 목표
  • 각 실패의 원인을 명확히 설명할 수 있어야 함 — eval 노력의 60-80%를 여기에 써야 함
  • eval 소유권을 단일 도메인 전문가에게 할당 — 위원회 설계 금지
  • 인프라/파이프라인 문제를 먼저 배제 — 단일 추출 버그가 벤치마크를 50% → 73%로 바꾼 사례 있음

실패 원인 분류 (Root Cause Taxonomy)

원인해결 방법
프롬프트 문제지시가 불명확 → 프롬프트 수정
툴 설계 문제인터페이스가 에이전트 실수 유발 → 파라미터 재설계, 예제 추가
모델 한계지시가 명확하지만 LLM이 엣지케이스 일반화 실패 → 아키텍처 변경 또는 모델 교체
아직 모름충분한 실패를 안 봤음 → 더 많은 에러 분석 필요

평가 레벨

1. Single-step (Run)

  • “올바른 툴을 선택했는가?” “유효한 API 호출을 생성했는가?”
  • 자동화 가장 쉬움, but 아키텍처가 불안정하면 깨짐

2. Full-turn (Trace) ⭐ 시작점

  • 세 가지 차원으로 평가:
    • 최종 응답 — 출력이 정확하고 유용한가?
    • 경로 — 에이전트가 합리적인 경로를 거쳤는가? (기대와 다를 수 있으나 유효한지)
    • 상태 변경 — 에이전트가 올바른 아티팩트를 생성했는가? (파일, DB 업데이트, 캘린더 일정 등)

💡 상태 변경 평가가 가장 간과됨. “회의가 예약되었습니다!”라고 말했지만 실제 캘린더 이벤트가 없으면 실패.

3. Multi-turn (Thread)

  • 가장 어려움, trace-level eval이 안정된 후 추가
  • N-1 테스트 추천: 실제 대화 prefix(N-1턴)에서 마지막 턴만 에이전트가 생성 → 합성 에러 누적 방지

데이터셋 구성

  • 각 과업이 모호하지 않고, 참조 솔루션으로 해결 가능함을 증명
  • 양성 케이스 + 음성 케이스 모두 테스트 (최적화 편향 방지)
  • 데이터셋 구조가 평가 레벨과 일치
  • 에이전트 유형별 맞춤 (코딩/대화/리서치)
  • 프로덕션 데이터가 없으면 시드 예제 생성 (~20개 수작업)
  • trace-to-dataset 플라이휠 구성 (지속적 개선)

에이전트 유형별 데이터셋 특성

유형핵심 평가
코딩 에이전트결정론적 테스트 스위트 (유닛테스트 패스/실패) + 품질 루브릭
대화 에이전트다차원 기준 (작업 완료 + 공감, 명확성 등 상호작용 품질)
리서치 에이전트근거 확인 (주장이 소스에 의해 뒷받침되는가?) + 커버리지 확인

Grader 설계

유형용도
Code-based객관적 확인 (결정론적)
LLM-as-judge주관적 평가
Human모호한 케이스
Pairwise버전 비교

Guardrails(인라인, 런타임)와 Evaluators(오프라인, 배치)를 구분할 것.

실전 팁

  • 20-50개 검증된 예제가 수백 개의 미검증 합성 예제보다 낫다
  • 매일 도그푸딩 — 팀이 의도적으로 에이전트를 스트레스 테스트하고, 모든 에러를 eval로 전환
  • 외부 벤치마크에서 관심 있는 과업만 cherry-pick해서 변형
  • “툴 호출을 병렬화하는가?” “모호한 요청에 명확화 질문을 하는가?” 같은 특정 행동에 대한 수작업 테스트 포함

연결된 노트