Arize Phoenix - LLM 監視と評価 チートシート
Arize Phoenix は、LLM アプリケーションとエージェント向けのオープン ソース監視および評価プラットフォームです。これは OpenTelemetry ネイティブ です。インストルメンテーションは標準 OTLP トレースを発行し、Phoenix はそれらを収集するため、すべてのプロンプト、モデル呼び出し、ツール呼び出し、および検索ステップを確認できます。その後、それに対して評価を実行できます。ローカル (ノートブック、コンテナー、または自己ホスト型サーバー) で実行され、OpenInference インストルメンター経由で一般的なフレームワークと統合します。
インストール
| メソッド | コマンド |
|---|
| pip | pip install arize-phoenix |
| ローカル サーバーを実行 | phoenix serve (UI は http://localhost:6006) |
| Docker | docker run -p 6006:6006 arizephoenix/phoenix:latest |
| ノートブック内 | import phoenix as px; px.launch_app() |
| インストルメンテーション エクストラ | pip install openinference-instrumentation-openai (その他) |
トレーシング クイックスタート
from phoenix.otel import register
# トレーサー プロバイダーを構成し、Phoenix コレクターを指す
tracer_provider = register(
project_name="my-llm-app",
endpoint="http://localhost:6006/v1/traces",
)
# ライブラリを自動インストルメント (例: OpenAI)
from openinference.instrumentation.openai import OpenAIInstrumentor
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
# ...これで LLM 呼び出しが Phoenix のトレースとして表示されます
| 概念 | 意味 |
|---|
| スパン | 1 つの操作 (LLM 呼び出し、ツール呼び出し、リトリーバー ステップ) |
| トレース | 1 つのリクエストに対するスパンのツリー |
| プロジェクト | トレースの名前付きコレクション |
| OpenInference | Phoenix が OTLP を超えて使用するセマンティック規約 |
フレームワーク インストルメンテーション
| ライブラリ | インストルメンター パッケージ |
|---|
| OpenAI | openinference-instrumentation-openai |
| LangChain | openinference-instrumentation-langchain |
| LlamaIndex | openinference-instrumentation-llama-index |
| Anthropic | openinference-instrumentation-anthropic |
| DSPy | openinference-instrumentation-dspy |
| 自動 (多数) | register(auto_instrument=True) で有効化 |
手動スパン
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("retrieve") as span:
span.set_attribute("input.value", query)
docs = retriever(query)
span.set_attribute("retrieval.documents", len(docs))
評価
Phoenix は、トレースをスコアリング (特に LLM as judge evals) し、結果をアタッチできます。
from phoenix.evals import llm_classify, OpenAIModel, HALLUCINATION_PROMPT_TEMPLATE
results = llm_classify(
dataframe=spans_df,
model=OpenAIModel(model="gpt-4o"),
template=HALLUCINATION_PROMPT_TEMPLATE,
rails=["factual", "hallucinated"],
)
| 評価 | 測定対象 |
|---|
| ハルシネーション | 回答がコンテキストに基づいているか? |
| QA 正確性 | 参照に対して回答が正しいか? |
| 関連性 | 取得ドキュメントがクエリに関連しているか? |
| 毒性 | 安全でない/有毒なコンテンツ |
| カスタム | あなた自身の LLM as judge またはコード テンプレート |
データセットおよび 実験
| 機能 | 用途 |
|---|
| データセット | トレースから入力/出力例をキュレート |
| 実験 | データセット上のタスクを実行し、スコア付け |
px.Client().upload_dataset(...) | プログラムでデータセットを作成 |
| 実行を比較 | プロンプト/モデル変更全体の品質を追跡 |
検索デバッグ
| 機能 | 役立つもの |
|---|
| 取得ドキュメント用スパン属性 | RAG が何をフェッチしたかを正確に確認 |
| 埋め込み/UMAP ビュー | 埋め込みのクラスターとドリフトを識別 |
| 検索関連性の評価 | クエリごとに検索品質を定量化 |
Phoenix と その他の LLM 監視
| 側面 | Arize Phoenix | Langfuse | MLflow |
|---|
| 標準 | OpenTelemetry/OTLP | OTel + SDK | MLflow トレーシング |
| フォーカス | トレーシング + 評価 + 検索デバッグ | トレーシング + プロンプト + 評価 | 完全な ML プラットフォーム + LLM |
| 自己ホスト | はい | はい | はい |
| 最適な用途 | OTel ネイティブ評価と RAG デバッグ | プロダクト分析 + プロンプト | MLflow に既に標準化されているチーム |
リソース