Phoenix 트레이싱 실전 — 로컬 기동부터 에이전트 인스트루먼트
Phoenix 트레이싱 실전
Phoenix의 목표는 앱을 "그냥 실행하는" 게 아니라, 어떻게 동작하는지 이해하고 출력이 올바른지 판단하며 검증 가능한 변경을 만드는 거예요. 이 흐름을 따라 로컬 Phoenix 인스턴스를 띄우고 CrewAI 에이전트를 만들어 한 개 트레이스를 보내 봐요.
출처: https://docs.arize.com/phoenix/get-started/get-started-tracing
Phoenix 시작하기
로컬에서는 uv로 한 줄이면 돼요.
uvx arize-phoenix serve
uv가 없다면 pip install arize-phoenix && phoenix serve가 같은 일을 해요. 컨테이너로는 docker run -p 6006:6006 -p 4317:4317 arizephoenix/phoenix:latest. Phoenix는 UI와 OTLP HTTP를 포트 6006, OTLP gRPC를 포트 4317에서 서빙해요.
환경 설정
필요 패키지를 설치하고 환경 변수를 잡아요.
%pip install -qqqqq arize-phoenix crewai crewai-tools openinference-instrumentation-crewai openinference-instrumentation-openai openai
import os
os.environ["PHOENIX_COLLECTOR_ENDPOINT"] = "http://localhost:6006"
os.environ["SERPER_API_KEY"] = "<ENTER YOUR SERPER API KEY>"
os.environ["OPENAI_API_KEY"] = "<ENTER YOUR OPENAI API KEY>"
프로젝트 등록
phoenix.otel의 register로 프로젝트를 잡고 트레이서 프로바이더를 등록해요. 이 시점부터 앱이 Phoenix로 트레이스를 보낼 준비가 돼요.
from phoenix.otel import register
tracer_provider = register(project_name="crewai-tracing-quickstart", auto_instrument=True)
에이전트 만들기
OpenInference의 CrewAI 자동 인스트루먼트 패키지가 수동 인스트루먼트 없이 트레이싱을 처리해요. 금융 리서치 챗봇을 간단히 만들고 실행하면, 실행이 자동으로 Phoenix UI의 프로젝트에 기록돼요.
from crewai import Agent, Crew, Process, Task
from crewai_tools import SerperDevTool
search_tool = SerperDevTool()
researcher = Agent(
role="Financial Research Analyst",
...
)
트레이스를 더 깊이 읽으려면 Tracing Tutorial에서 스팬을 읽고 타이밍을 이해하며 디버깅하는 법을 볼 수 있어요.