Agent Evaluation Loop

Agent evaluation은 점수 하나를 뽑아내는 기능이 아니라, scenario 실행 → trace 수집 → rubric 평가 → regression 탐지 → 설계 수정으로 이어지는 feedback loop다. Agent Tool Use가 action trace를 만들고 Agent Safety Boundary가 금지 결과를 막는다면, evaluation은 그 허용 범위 안에서 품질과 변화 추세를 검증하는 역할을 맡는다.

Loop의 구조

flowchart LR
    S[고정 scenario] --> R[Agent run]
    R --> T[Response and tool trace]
    T --> J[Judge rubric]
    J --> D[Score and feedback]
    D --> C[Version comparison]
    C --> I[Prompt tool policy 개선]
    I --> R

LangSmith의 dataset 기반 evaluation

4개 차원 Judge와 파싱 실패 처리

Important

PPL 제약은 모든 LLM 평가의 일반 법칙이 아니다. 이 사례의 API 제약이며, PPL 자체도 factual grounding, tool 선택, actionability를 직접 평가하지 않는다.

왜 이것이 logging이 아니라 loop인가

이 세 가지는 두 source의 구체적 구현 사례로부터 이 페이지가 도출한 일반화이며, 특정 API나 프로젝트에 묶인 주장은 아니다.

흔히 겪는 실패

실패 원인 대응
Self-serving judge 같은 계열 model 선호 다른 model을 judge로 사용, rule check와 human sample review
Rubric drift judge 변경 rubric과 model version 저장
Parse default 은폐 실패를 중간 점수로 대체 parse failure rate 노출
Scenario overfit 고정 case만 최적화 hidden scenario 병행
Trace 부재 최종 문장만 저장 call, observation, retry 수집

이 표의 "Self-serving judge"와 "Parse default 은폐" 행의 출발점은 모니터링 에이전트 사례가 한계로 언급한 두 가지다. 사례 문서는 같은 Gemini가 Judge를 맡으면 관대하게 채점할 수 있으므로 다른 model을 Judge로 쓰는 편이 더 객관적이라고 적었고,[2:3] 형식이 어긋나 parsing이 실패하면 해당 차원을 5점으로 처리한다고 적었다.[2:4][3:2] 5점 처리를 "은폐"로 규정한 것, rule check와 human sample review, parse failure rate 노출이라는 대응, 그리고 나머지 행 전체는 이 페이지가 일반화한 해석이다.

테스트 질문

관련

출처


  1. langsmith-evaluation.md — "It is also important to configure the max_concurrency / maxConcurrency arg when running large jobs. This parallelizes evaluation by effectively splitting the dataset across threads." ↩︎

  2. 06-에이전트-성능-평가.md — "별도의 LLM이 미리 정의된 루브릭(rubric)으로 응답을 채점한다.", 4개 차원 표(Factuality/Tool Use/Actionability/Hallucination Risk), "파싱 실패 시 해당 차원은 기본값 5점으로 처리한다. Judge 평가 실패가 에이전트 분석 결과에 영향을 주지 않도록 예외를 별도로 처리한다.", "Gemini API는 logprob를 제공하지 않는다.", "PPL을 측정하려면 각 토큰의 log probability가 필요하다.", "Judge LLM도 Gemini를 사용한다. 동일 모델이 자신의 응답을 평가하는 구조여서 관대하게 채점할 수 있다(self-serving bias). 이상적으로는 다른 모델(예: GPT-4)을 Judge로 사용하는 것이 더 객관적이다." (L142) ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  3. 04-llm-출력-품질-측정.md — "Gemini API는 응답 토큰의 logprob를 제공하지 않는다. OpenAI API는 옵션으로 제공하지만, Gemini는 API 설계상 이 값이 없다.", "judgeEvaluator.evaluate(alert, result); // 실패해도 result 반환엔 영향 없음", "Judge 평가 실패가 운영에 영향을 주는 건 과도한 결합이라고 판단했다.", "형식이 조금이라도 달라지면 정규식 파싱이 실패하고, 그 경우 5점(중간값)으로 처리한다." (L77) ↩︎ ↩︎ ↩︎