Arize Phoenix 를 사용하여 에이전트 추적 및 평가하기
요약
본 기술 기사는 Arize Phoenix를 활용하여 AI 에이전트의 행동을 추적(tracing)하고 성능을 평가(evaluation)하는 방법을 안내합니다. 에이전트가 어떤 단계를 거쳐 의사결정을 하는지 실시간으로 관찰할 수 있게 해주는 중앙 집중식 플랫폼인 Phoenix는 OpenTelemetry와 OpenInference를 통해 구현됩니다. 또한, LLM-as-a-judge 기법을 사용하여 검색 도구의 응답 관련성 등 에이전트의 성능을 정량적으로 평가하는 방법까지 다룹니다.
핵심 포인트
- Arize Phoenix는 AI 에이전트의 의사결정 과정을 추적하고 디버깅할 수 있는 중앙 집중식 플랫폼입니다.
- 추적(Tracing)은 에이전트가 단계별로 무엇을 하는지 관찰하여 문제 해결 및 최적화에 도움을 줍니다.
- OpenTelemetry와 OpenInference를 사용하여 Phoenix 인스턴스로 트레이스를 전송하고 모니터링할 수 있습니다.
- 평가(Evaluation)는 LLM-as-a-judge 기법 등을 활용하여 에이전트의 응답 관련성, 정확도 등 성능을 정량적으로 측정합니다.
에이전트를 구축하는 것은 일일; 그 행동 이해는 또 다른 일입니다. 이것이 추적 (tracing) 과 평가 (evaluation) 가 필요한 이유입니다. 추적을 통해 에이전트가 단계별로 정확히 무엇을 하는지—입력을 어떻게 받는지, 정보를 어떻게 처리하는지, 최종 출력에 도달하는지—를 볼 수 있습니다. 이는 에이전트의 의사결정 과정에 X 선을 갖는 것과 같습니다. 반면 평가는 성능을 측정하여 에이전트가 단순히 기능적이지만 실제로 효과적인지 확인합니다. 올바른 답변을 생성하고 있나요? 각 단계에서 발견이 얼마나 관련성이 있는가요? 에이전트의 응답은 잘 만들어진가요? 목표와 일치하나요?
Arize Phoenix 는 실시간으로 에이전트의 의사결정을 추적, 평가 및 디버깅하는 중앙 집중식 플랫폼을 제공합니다—all in one place. 이를 구현하여 에이전트를 개선하고 최적화하는 방법을 살펴보겠습니다. 구축이 시작일 뿐—진정한 지혜는 하부 구조에서 정확히 무엇을 일어나고 있는지 아는 데서 옵니다.
이를 위해 에이전트 설정을 완료하도록 하겠습니다! 다음 단계를 따라가거나 자체 에이전트를 사용할 수 있습니다.
pip install -q smolagents
이제 우리가 사용할 클래스와 도구를 가져옵니다:
from smolagents import (
CodeAgent,
DuckDuckGoSearchTool,
...
Hugging Face Hub Serverless API 로 구동되는 모델 인스턴스를 생성합니다:
hf_model = HfApiModel()
agent = CodeAgent(
tools=[DuckDuckGoSearchTool(), VisitWebpageTool()],
model=hf_model,
...
이제 마법의 순간—에이전트를 실행해 보겠습니다. 우리가 에이전트에게 묻는 질문은: "2020 년부터 2024 년까지 구글의 주가를 가져오고, 이를 선 그래프로 만드세요?"
agent.run("fetch the share price of google from 2020 to 2024, and create a line graph from it?")
에이전트는 이제 다음을 수행합니다:
- DuckDuckGoSearchTool 을 사용하여 구글의 역사적 주가를 검색합니다.
- VisitWebpageTool 을 사용하여 해당 데이터를 찾기 위해 페이지를 방문할 수 있습니다.
- 정보를 수집하고 선 그래프를 생성하거나 설명하는 방법을 생성합니다.
에이전트가 실행되면 내부 워크플로우를 이해하는 것이 다음 과제입니다. 추적을 통해 에이전트가 취하는 각 단계를—from invoking tools to processing inputs and generating responses—감시할 수 있습니다. 이를 통해 디버깅 문제를 해결하고 성능을 최적화하며 예상대로 작동하도록 보장합니다.
추적을 활성화하려면 Arize Phoenix 를 시각화를 위해, OpenTelemetry + OpenInference 를 인스트루멘테이션 (instrumentation) 을 위해 사용합니다.
smolagents 의 telemetry 모듈을 설치합니다:
pip install -q 'smolagents[telemetry]'
Phoenix 는 다양한 방법으로 실행할 수 있습니다. 이 명령어는 Phoenix 의 로컬 인스턴스를 실행합니다:
python -m phoenix.server.main serve
Phoenix 의 다른 호스팅 옵션은 Phoenix 의 무료 온라인 인스턴스를 생성하거나, 애플리케이션을 로컬로 자체 호스팅하거나, Hugging Face Spaces 에서 애플리케이션을 호스팅하는 것입니다.
실행 후 tracer provider 를 등록하여 Phoenix 인스턴스로 지시합니다.
from phoenix.otel import register
from openinference.instrumentation.smolagents import SmolagentsInstrumentor
tracer_provider = register(project_name="my-smolagents-app") # creates a tracer provider to capture OTEL traces
...
이제 smolagents 에 대한 모든 호출은 Phoenix 인스턴스를 통해 전송됩니다.
이제 추적이 활성화되었으므로 간단한 쿼리로 테스트해 보겠습니다:
agent.run("What time is it in Tokyo right now?")
SmolAgents 와 OpenInference 가 설정되면, 모든 에이전트 호출은 Phoenix 에서 자동으로 추적됩니다.
에이전트가 작동하고 실행이 모니터링된 후 다음 단계는 성능 평가입니다. 평가 (evals) 는 에이전트가 정보를 검색, 처리, 제시하는 정도를 결정하는 데 도움이 됩니다.
실행할 수 있는 평가 유형은 다양합니다. 응답 관련성, 사실적 정확도, 지연 시간 등. 다양한 평가 기법에 대한 심층 분석을 위해 Phoenix 문서를 확인하세요.
이 예제에서는 에이전트가 사용하는 DuckDuckGo 검색 도구의 성능을 평가하는 데 집중할 것입니다. 우리는 OpenAI 의 GPT-4o 를 판사 (judge) 로 사용하여 검색 결과의 관련성을 측정할 것입니다.
먼저 필요한 패키지를 설치합니다:
pip install -q openai
우리는 GPT-4o 를 사용하여 검색 도구의 응답이 관련성 있는지를 평가할 것입니다.
이 방법은 LLM-as-a-judge 로 알려져 있으며, 언어 모델을 사용하여 응답을 분류하고 점수를 매깁니다.
DuckDuckGo 가 정보를 검색하는 능력을 평가하려면 먼저 도구가 호출된 실행 트레이스를 추출해야 합니다.
from phoenix.trace.dsl import SpanQuery
import phoenix as px
import json
...
다음으로, LLM 이 검색 결과가 관련성 있는지 아닌지를 분류하는 데 도움이 될 RAG Relevancy Prompt Template 을 로드합니다.
from phoenix.evals import (
RAG_RELEVANCY_PROMPT_RAILS_MAP,
RAG_RELEVANCY_PROMPT_TEMPLATE,
...
이제 판사 (judge) 로 GPT-4o 를 사용하여 평가를 실행합니다:
from phoenix.evals import (
llm_classify,
OpenAIModel,
...
여기서 무슨 일이 일어나고 있나요?
- 우리는 GPT-4o 를 사용하여 검색 쿼리 (입력) 와 검색 결과 (출력) 를 분석합니다.
- LLM 은 프롬프트에 따라 결과가 관련성 있는지 아닌지를 분류합니다.
- 추가 분석을 위해 이진 점수 (1 = 관련성 있음, 0 = 관련성 없음) 를 할당합니다.
결과를 확인하려면:
eval_results.head()
from phoenix.trace import SpanEvaluations
px.Client().log_evaluations(SpanEvaluations(eval_name="DuckDuckGoSearchTool Relevancy", dataframe=eval_results))
이 설정을 사용하면 이제 에이전트 내 DuckDuckGo 검색 도구의 효과를 체계적으로 평가할 수 있습니다. LLM-as-a-judge 를 사용하여 에이전트가 정확한 관련성 있는 정보를 검색할 수 있도록 보장하고, 더 나은 성능을 달성할 수 있습니다.
이 튜토리얼을 사용하면 이 평가는 쉽게 설정할 수 있습니다—필요에 맞는 다른 프롬프트 템플릿으로 RAG_RELEVANCY_PROMPT_TEMPLATE 을 교체하면 됩니다. Phoenix 는 충실성, 응답 일관성, 사실적 정확도 등 다양한 분야를 다루는 다양한 사전 작성된 및 사전 테스트된 평가 템플릿을 제공합니다. 에이전트에 가장 적합한 것을 찾기 위해 Phoenix 문서를 확인하세요.
| 평가 템플릿 | 적용 가능한 에이전트 유형 |
|---|---|
| 환각 감지 (Hallucination Detection) | RAG 에이전트 일반 채팅봇 지식 기반 어시스턴트 |
| ... |
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기