기본적인 에이전트를 만드는 것은 비교적 쉽습니다. 프레임워크를 사용하고 일반적인 아키텍처를 따르면 됩니다. 그러나 그 기본 에이전트를 견고하고 프로덕션에서 사용할 수 있는 도구로 만드는 것은 어렵습니다. 에이전트의 진정한 가치는 바로 이 과정에서 나옵니다.
LLM은 비결정적(Non-deterministic)이기 때문에, 에이전트가 이상한 경로를 거치면서도 정답에 도달할 수 있고, 이것이 디버깅을 어렵게 만듭니다. 효과적인 에이전트 평가는 최종 출력만 보는 것이 아니라, 에이전트가 무엇을 알고 있는지, 어떤 행동을 취하는지, 어떻게 계획하는지를 함께 평가해야 합니다.
평가(Evaluation)는 에이전트를 단순한 데모 프로젝트에서 프로덕션 도구로 전환하는 데 핵심적인 수단입니다. 이 글에서는 Arize AI의 'AI Agents & Assistants Handbook' 시리즈 중 Agent Evaluation 편을 바탕으로, 에이전트를 체계적으로 평가하는 방법을 정리합니다.
☑️에이전트 개발은 선형이 아니라 순환이다
모든 LLM 애플리케이션 개발에는 어느 정도의 순환적 반복이 수반되며, 에이전트도 마찬가지입니다. 에이전트가 받을 수 있는 모든 쿼리나 모델의 모든 가능한 출력을 사전에 예측하는 것은 불가능합니다. 프로덕션 시스템을 제대로 모니터링하고, 그 시스템이 생성하는 데이터를 개발 프로세스에 통합해야만 진정으로 견고한 시스템을 만들 수 있습니다.
이 반복 사이클은 일반적으로 다음과 같이 진행됩니다. 먼저 대표적인 테스트 케이스의 초기 세트를 만들고, 에이전트를 개별 단계(라우터, 스킬 등)로 분해한 뒤, 각 단계에 대한 평가자(Evaluator)를 만듭니다. 그런 다음 에이전트의 다양한 버전을 실험하면서 평가 점수를 최대화합니다. 에이전트를 프로덕션에 배포한 후에는 모니터링을 통해 실제 사용 데이터를 수집하고, 이 데이터를 기반으로 테스트 케이스, 평가 단계, 평가자를 수정합니다. 그리고 다시 실험과 반복을 수행합니다.
이 글에서는 이 사이클의 각 구성요소를 하나씩 살펴봅니다.
☑️테스트 케이스 구축
표준적인 테스트 케이스 세트가 있으면, 에이전트의 변경 사항을 테스트하고, 예상치 못한 성능 회귀를 방지하며, 평가의 기준점을 확보할 수 있습니다.
테스트 케이스가 많을 필요는 없지만 포괄적이어야 합니다. 예를 들어 웹사이트용 챗봇 에이전트를 만든다면, 테스트 케이스에는 에이전트가 지원하는 모든 유형의 쿼리가 포함되어야 합니다. 각 함수나 스킬을 트리거하는 쿼리, 일반적인 정보 쿼리, 그리고 에이전트가 응답하지 않아야 하는 주제 이탈 쿼리 등입니다. 테스트 케이스는 에이전트가 취할 수 있는 모든 경로를 커버해야 합니다. 다른 케이스의 단순한 재표현(Rephrasing)이라면 수천 개를 만들 필요는 없습니다.
테스트 케이스는 새로운 유형의 입력이 발견되면서 시간이 지남에 따라 진화합니다. 추가하는 것을 두려워하지 않아야 하며, 이로 인해 일부 평가 결과가 과거 실행과 비교하기 어려워지더라도 괜찮습니다.
☑️평가할 단계를 나누는 방법
다음으로, 에이전트를 개별적으로 평가할 수 있는 관리 가능한 단계로 분리합니다. 이 단계는 개별 작업 단위로 상당히 세분화되어야 합니다.
에이전트의 각 함수, 스킬, 실행 분기(Execution Branch)에는 성능을 벤치마크할 수 있는 평가가 있어야 합니다. 원하는 만큼 세분화할 수 있습니다. 예를 들어 RAG 스킬의 검색 단계만 별도로 평가하거나, 내부 API 호출의 응답을 평가할 수도 있습니다. 스킬 외에도 라우터를 여러 축으로 평가하는 것이 중요합니다. 라우터를 사용하고 있다면, 이것이 가장 큰 성능 향상을 달성할 수 있는 지점인 경우가 많습니다.
평가해야 할 "조각"의 목록은 빠르게 늘어날 수 있지만, 이것이 반드시 나쁜 것은 아닙니다. 특히 에이전트 개발이 처음이라면, 많은 평가로 시작한 뒤 시간이 지나면서 줄여나가는 것을 권장합니다.
☑️평가자를 만드는 두 가지 방식
단계가 정의되면, 각 단계에 대한 평가자(Evaluator)를 만들 수 있습니다. 평가는 일반적으로 두 가지 방식 중 하나로 수행됩니다.
☑️스킬 평가
에이전트의 스킬 단계를 평가하는 것은, 에이전트 외부에서 해당 스킬을 독립적으로 평가하는 것과 유사합니다. 스킬 유형에 따라 평가 항목이 달라집니다.
RAG 스킬의 경우:
코드 생성 스킬의 경우:
API 스킬의 경우:
모든 스킬 공통:
☑️라우터 평가
스킬 외에, 에이전트 평가에서 가장 고유한 부분은 라우터 평가입니다. 라우터는 두 가지 축으로 평가해야 합니다.
올바른 스킬 선택
첫 번째 축은, 주어진 입력에 대해 올바른 스킬이나 함수를 선택하는 능력입니다. 이것은 아마도 가장 중요하면서도 가장 어려운 작업입니다. 이 단계에서 라우터 프롬프트(있는 경우)가 시험대에 오릅니다. 이 단계에서 낮은 점수가 나오는 원인은 대개 부실한 라우터 프롬프트이거나 불명확한 함수 설명이며, 두 가지 모두 개선하기가 까다롭습니다.
올바른 매개변수 추출
두 번째 축은, 입력에서 올바른 매개변수를 추출하여 함수 호출을 채우는 능력입니다. 이것도 까다로운데, 특히 매개변수 간에 겹치는 부분이 있을 때 더 그렇습니다. 테스트 케이스에 의도적인 변칙(Curveball)을 추가하는 것이 좋습니다. 예를 들어 사용자가 주문 상태를 문의하면서 배송 추적 번호를 제공하는 경우처럼, 에이전트를 스트레스 테스트할 수 있는 입력을 포함합니다.
☑️경로 평가
마지막으로, 에이전트가 실행 중에 취하는 경로를 평가합니다. 단계를 반복하는가? 루프에 빠지는가? 불필요하게 라우터로 돌아가는가? 이러한 "경로 오류"는 에이전트에서 가장 심각한 버그를 유발할 수 있습니다.
경로를 평가하기 위해, 반복 횟수 카운터를 평가 항목으로 추가하는 것을 권장합니다. 에이전트가 다양한 유형의 쿼리를 완료하는 데 걸리는 단계 수를 추적하면 유용한 통계를 얻을 수 있습니다. 그러나 에이전트 경로를 디버깅하는 가장 좋은 방법은 트레이스를 수동으로 검사하는 것입니다. 특히 개발 초기에는, 옵저버빌리티 플랫폼을 사용하여 에이전트 실행을 직접 검토하는 것이 개선을 위한 가장 가치 있는 인사이트를 제공합니다.
수렴도 (Convergence)
경로 평가를 확장하면 수렴도를 측정할 수 있습니다. 에이전트 맥락에서 수렴도란, 에이전트가 주어진 쿼리에 대해 얼마나 자주 최적 경로를 택하는지를 의미합니다. 에이전트가 특정 쿼리 유형에 대해 최적 경로로 "수렴"하고 있는지를 측정할 수 있습니다.
수렴도 점수를 계산하는 방법은 다음과 같습니다.
이 점수는 0에서 1 사이의 값으로, 에이전트가 해당 유형의 쿼리에 대해 최적 경로를 얼마나 자주 따르는지, 그리고 차선 경로를 택할 때 얼마나 벗어나는지를 보여줍니다. 다만, 최적 경로는 에이전트의 가장 짧은 실행을 기준으로 계산되므로, 모든 실행이 차선 경로를 택하는 경우는 이 방법으로 감지되지 않는다는 한계가 있습니다.
☑️LLM-as-a-Judge 에이전트 평가 템플릿
Arize AI는 벤치마크 데이터셋에서 스트레스 테스트를 거쳐, 70~90% 정밀도(Precision)와 70~85% F1 점수로 튜닝된 사전 테스트 평가 템플릿을 제공합니다. 각 템플릿이 답하는 핵심 질문은 다음과 같습니다.
☑️실험, 반복, 프로덕션 순환
평가자와 테스트 케이스가 정의되면, 에이전트를 수정할 준비가 된 것입니다. 주요 수정 이후에는, 테스트 케이스를 에이전트에 실행한 다음 각 평가자를 출력 또는 트레이스에 대해 실행합니다. 이 과정을 수동으로 추적하거나, 옵저버빌리티 플랫폼을 활용하여 실험과 평가 결과를 추적할 수 있습니다.
에이전트를 개선하는 데 모든 상황에 맞는 만능 접근법은 없지만, 이 평가 프레임워크는 에이전트의 동작과 성능에 대한 훨씬 더 높은 가시성을 제공합니다. 또한 변경 사항이 애플리케이션의 다른 부분을 의도치 않게 깨뜨리지 않았다는 확신을 줍니다.
에이전트가 프로덕션에 배포되면, 모니터링을 통해 실제 사용 데이터를 수집합니다. 이 데이터에서 발견된 새로운 유형의 입력이나 실패 케이스를 테스트 케이스에 추가하고, 평가 단계와 평가자를 수정한 뒤, 다시 실험과 반복을 수행합니다. 에이전트가 받을 수 있는 모든 쿼리를 사전에 예측할 수 없기 때문에, 프로덕션 데이터를 개발 프로세스에 통합하는 이 순환 구조가 견고한 에이전트를 만드는 핵심입니다.
☑️마치며
에이전트 평가는 최종 출력의 정확성만 확인하는 것이 아닙니다. 라우터가 올바른 스킬을 선택하는지, 각 스킬이 의도한 작업을 정확히 수행하는지, 에이전트가 효율적인 경로를 따르는지, 그리고 매개변수가 정확하게 추출되는지까지 구성요소별로 체계적으로 평가해야 합니다.
이 시리즈를 통해 AI 에이전트가 무엇인지, 어떻게 구성되어 있는지, 다양한 아키텍처와 프레임워크는 어떤 것이 있는지, 그리고 에이전트를 어떻게 관찰하고 평가하는지를 살펴보았습니다.
클라우드네트웍스는 Arize AI의 한국 공식 파트너로서, AI 에이전트 옵저버빌리티 및 평가 플랫폼인 Arize AX의 도입과 구축을 지원합니다. AI 에이전트의 품질 관리에 관심이 있으시다면, 클라우드네트웍스로 연락 부탁드립니다.