2026년 8월 26일 수요일

에이전트 설계 ⑨ — 평가와 디버깅: 트랜스크립트를 직접 읽어라

에이전트 평가의 2026년 표준은 2층 구조다: 결과 평가(최종 상태를 코드로 검증 — "예약이 실제로 DB에 들어갔나") + 궤적 평가(어떻게 도달했나). 그리고 신뢰성은 pass@1이 아니라 pass^k(같은 태스크 k회 전부 성공)로 보고한다.

자기 에이전트의 평가 만들기 — 플레이북

Anthropic의 Demystifying evals(2026-01)가 가장 완결적인 지침이다: 수동 체크와 사용자 신고 실패에서 골든 태스크 20~50개를 캐내 시작, 채점기는 코드 기반(도구·최종 상태) 우선 + LLM 심판(궤적)에는 "Unknown" 탈출구와 주기적 인간 교정, capability 평가(0% 근처에서 시작)와 regression 평가(~100% 유지)를 구분. 그리고 이 시리즈에서 가장 중요한 실패담: Opus 4.5가 CORE-Bench에서 42%를 받았는데, 경직된 채점기(96.12 vs 96.124991)·모호한 명세·재현 불가 태스크를 고치자 95% — "에이전트 버그"의 절반은 평가 버그다. 궤적 단언은 openevals(도구 순서 strict/unordered/subset 매칭 + 시뮬레이션 사용자), CI는 DeepEval(pytest 스타일 — 코드 채점 서브셋은 PR마다, LLM 심판 서브셋은 야간).

관측과 디버깅

  • 트레이싱 표준 — OpenTelemetry gen_ai.* 컨벤션(invoke_agent→LLM call→execute_tool 스팬 트리)으로 한 번 계측하면 Langfuse/LangSmith/Braintrust 어디로든 이식. Langfuse는 셀프호스팅 가능이라 국내 개인정보 요건에서 선택 기준이 되고, 태스크당 비용·지연 추적이 "이 작업 하나에 얼마 드는가"를 즉답한다.
  • 재현 디버깅 — LangGraph 체크포인트 replay/fork: 장애 직전 상태에서 재현하고 수정본으로 분기. 단 LLM 비결정성 때문에 replay는 수색 범위를 좁힐 뿐 — 종결은 트랜스크립트 정독이다. "채점기가 작동하는지는 트랜스크립트를 많이 읽기 전엔 모른다."
  • 실패 분류 — MAST식 버킷(명세/도구/추론/검증)으로 프로덕션 실패를 라벨링하고 가장 큰 버킷부터 수리(⑥편: 실패의 대부분은 설계 결함).

하네스도 의심하라 — 인프라 노이즈

Anthropic의 2026-02 연구: 컨테이너 리소스 설정만으로 Terminal-Bench 점수가 6%p 움직였고(p<0.01), 메모리 kill 임계값을 완화하자 인프라 오류율 5.8%→0.5%. 실무 규칙: 매칭된 인프라 없이 ~3%p 미만의 평가 차이는 노이즈다. 골든 태스크는 Harbor식으로 — 시행마다 깨끗한 컨테이너, 4~8회 반복. 벤치마크 지형(τ²-bench, GAIA2의 노이즈 주입·비용 정규화 채점, Terminal-Bench 3)에서 훔칠 아이디어 둘: 해피패스만이 아니라 실패하는 도구·중간 환경 변화를 주입하고, 정확도 옆에 태스크당 비용을 파레토로 채점하라.

한 줄 요약: 골든 태스크 20~50개 × 깨끗한 컨테이너 × 4~8회 × pass^k — 그리고 어떤 지표도 트랜스크립트 정독을 대체하지 못한다.

— 에이전트 설계 시리즈 ⑨ / 다음 글: 에이전트를 위한 RL — 평가 하네스가 곧 훈련 환경이 된다

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

에이전트 설계 ⑪ (완결) — 프레임워크와 2026 스택: 제어 흐름의 소유권만은 넘기지 마라

마지막 편. 프레임워크 전쟁은 사실상 수렴했다 — 모든 메이저 벤더가 공식 SDK를 냈고 원시 개념(도구 루프·subagent/handoff·체크포인팅·MCP)도 동일해졌다. 차별화 전선은 루프가 아니라 하네스 품질과 내구성(durability) 으로...