요약: 상세요약: AI 에이전트 평가가 어려운 이유 에이전트 평가(Eval)의 구조
단순한 챗봇(Single-turn)과 달리 에이전트는 도구를 사용하고, 환경의 상태를 변경하며, 여러 단계(Multi-turn)에 걸쳐 작업을 수행합니다. 따라서 단순히 최종 답변만 확인하는 것으로는 부족하며, 에이전트가 올바른 도구를 사용했는지, 과정이 효율적이었는지 등을 종합적으로 평가해야 합니다.
효과적인 평가 시스템은 다음의 핵심 요소들로 구성됩니다.
Anthropic은 세 가지 유형의 채점자를 조합하여 사용할 것을 권장합니다.
유형
설명
장점
단점
코드 기반 (Code-based)
문자열 일치, 정규식, 정적 분석, 단위 테스트 실행 등
빠름, 저렴함, 객관적, 재현 가능
복잡한 뉘앙스를 놓칠 수 있음, 유연성 부족
모델 기반 (Model-based)
LLM을 심사위원(Judge)으로 활용하여 루브릭 기반 채점
유연함, 뉘앙스 파악 가능, 개방형 질문 처리에 적합
비결정론적일 수 있음, 비용이 듦, 사람에 의한 교정 필요
사람 (Human)
전문가 리뷰, 크라우드 소싱
품질의 '골드 스탠다드'
매우 느리고 비용이 많이 듦
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
코딩 에이전트를 평가할 때는 단순히 코드가 실행되는지(결정론적 테스트) 뿐만 아니라, 코딩 스타일이나 보안 위반 여부(정적 분석/LLM 채점)도 함께 봅니다. 다음은 '보안 취약점 수정' 태스크에 대한 가상의 평가 설정 예시입니다.
에이전트의 비결정론적 특성을 다루기 위해 단순 정확도 외에 다음과 같은 지표를 사용합니다.
평가 시스템 구축을 위해 Harbor (컨테이너 환경 실행), Promptfoo (YAML 기반 테스트 구성), Braintrust, LangSmith 등의 도구를 활용하거나, 팀의 워크플로우에 맞는 자체 프레임워크를 구축하는 것을 제안합니다. 중요한 것은 프레임워크 자체가 아니라 고품질의 테스트 케이스를 확보하는 것입니다.

1 month ago
12











English (US) ·