Anthropic 엔지니어링: AI 에이전트 평가(Evals)의 실용적 가이드와 방법론
(anthropic.com)요약:
- 기존 LLM 벤치마크만으로는 도구 사용과 다단계 추론을 수행하는 'AI 에이전트'의 성능을 정확히 측정하기 어려움.
- 에이전트 평가는 소프트웨어 테스트와 유사하게 단위 테스트(Unit Tests)와 통합 테스트(Integration Tests)를 결합해야 함.
- 결정론적 코드 채점(Code-based)과 LLM을 이용한 모델 기반 채점(Model-based)을 혼합하여 사용하는 것이 효과적.
- 에이전트 개발 수명 주기에 맞춰 '능력 평가(Capability Evals)'에서 '회귀 테스트(Regression Evals)'로 전환 필요.
상세요약:
-
AI 에이전트 평가가 어려운 이유
단순한 챗봇(Single-turn)과 달리 에이전트는 도구를 사용하고, 환경의 상태를 변경하며, 여러 단계(Multi-turn)에 걸쳐 작업을 수행합니다. 따라서 단순히 최종 답변만 확인하는 것으로는 부족하며, 에이전트가 올바른 도구를 사용했는지, 과정이 효율적이었는지 등을 종합적으로 평가해야 합니다. -
에이전트 평가(Eval)의 구조
효과적인 평가 시스템은 다음의 핵심 요소들로 구성됩니다.
- 태스크(Task): 정의된 입력과 성공 기준이 있는 단일 테스트 케이스.
- 채점자(Grader): 에이전트의 수행 결과를 점수화하는 로직.
- 트랜스크립트(Transcript): 에이전트의 사고 과정, 도구 호출, 중간 결과 등을 포함한 전체 실행 기록.
- 결과(Outcome): 에이전트 실행 후 변경된 환경의 최종 상태 (예: 실제 DB에 예약이 생성되었는가).
- 채점자(Grader) 유형 비교
Anthropic은 세 가지 유형의 채점자를 조합하여 사용할 것을 권장합니다.
| 유형 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 코드 기반 (Code-based) | 문자열 일치, 정규식, 정적 분석, 단위 테스트 실행 등 | 빠름, 저렴함, 객관적, 재현 가능 | 복잡한 뉘앙스를 놓칠 수 있음, 유연성 부족 |
| 모델 기반 (Model-based) | LLM을 심사위원(Judge)으로 활용하여 루브릭 기반 채점 | 유연함, 뉘앙스 파악 가능, 개방형 질문 처리에 적합 | 비결정론적일 수 있음, 비용이 듦, 사람에 의한 교정 필요 |
| 사람 (Human) | 전문가 리뷰, 크라우드 소싱 | 품질의 '골드 스탠다드' | 매우 느리고 비용이 많이 듦 |
- 코딩 에이전트 평가 예시 (YAML 구성)
코딩 에이전트를 평가할 때는 단순히 코드가 실행되는지(결정론적 테스트) 뿐만 아니라, 코딩 스타일이나 보안 위반 여부(정적 분석/LLM 채점)도 함께 봅니다. 다음은 '보안 취약점 수정' 태스크에 대한 가상의 평가 설정 예시입니다.
task:
id: "fix-auth-bypass_1"
desc: "비밀번호 필드가 비어있을 때 발생하는 인증 우회 취약점 수정"
graders:
# 1. 결정론적 테스트: 실제 테스트 코드가 통과하는지 확인
- type: deterministic_tests
required: [test_empty_pw_rejected.py, test_null_pw_rejected.py]
# 2. LLM 루브릭 채점: 코드 품질 및 스타일 평가
- type: llm_rubric
rubric: prompts/code_quality.md
# 3. 정적 분석: 린터(Linter) 및 보안 도구 실행
- type: static_analysis
commands: [ruff, mypy, bandit]
# 4. 상태 확인: 보안 로그가 제대로 남았는지 확인
- type: state_check
expect:
security_logs: {event_type: "auth_blocked"}
# 5. 도구 사용 확인: 필요한 파일을 읽고 수정했는지
- type: tool_calls
required:
- {tool: read_file, params: {path: "src/auth/*"}}
- {tool: edit_file}
- {tool: run_tests}
# 추적할 메트릭
tracked_metrics:
- type: transcript
metrics:
- n_turns # 턴 수
- n_toolcalls # 도구 호출 횟수
- n_total_tokens # 토큰 사용량
- type: latency
metrics:
- time_to_first_token
- 평가 지표 (Metrics)
에이전트의 비결정론적 특성을 다루기 위해 단순 정확도 외에 다음과 같은 지표를 사용합니다.
- pass@k: k번 시도했을 때 최소 1번 이상 성공할 확률 (탐색 능력 측정).
- pass^k: k번 시도했을 때 모든 시도가 성공할 확률 (일관성/신뢰성 측정).
- 도구 및 프레임워크
평가 시스템 구축을 위해 Harbor (컨테이너 환경 실행), Promptfoo (YAML 기반 테스트 구성), Braintrust, LangSmith 등의 도구를 활용하거나, 팀의 워크플로우에 맞는 자체 프레임워크를 구축하는 것을 제안합니다. 중요한 것은 프레임워크 자체가 아니라 고품질의 테스트 케이스를 확보하는 것입니다.
내용이 좋아서 한글 번역본 추가합니다.
https://rosettalens.com/s/ko/demystifying-evals-for-ai-agents