Arize PhoenixでAIエージェントを徹底評価|パフォーマンス測定から最適化まで完全ガイド - 生成AIビジネス活用研究所

Arize PhoenixでAIエージェントを徹底評価|パフォーマンス測定から最適化まで完全ガイド

Arize PhoenixでAIエージェントを徹底評価|パフォーマンス測定から最適化まで完全ガイド

AIエージェントを構築することと、そのパフォーマンスを正確に把握することは別物です。

あなたが作ったエージェントは入力やツールを受け取り、処理を行い、応答を生成します。意思決定、情報検索、タスクの自動実行、またはその全てを行うかもしれません。しかし、ここで重要な疑問が生まれます。

「このエージェントは本当に効果的に動作しているのか?そして、それをどうやって確認すればよいのか?」

この記事はこんな方におすすめです

✅ AIエージェントを開発している、または開発を検討している方
✅ エージェントの動作を詳細に把握したい方
✅ 定量的な評価でエージェントを改善したい方
✅ Arize Phoenixの導入を検討している方


エージェント評価の基本概念

エージェント評価の基本概念

トレーシング(追跡)とは?

トレーシングは、エージェントが何をしているかを段階的に可視化する技術です。具体的には以下を追跡できます:

  • どのような入力を受け取ったか
  • 情報をどのように処理したか
  • 最終的な出力にどのように到達したか

評価とは?

評価は、エージェントのパフォーマンスを測定し、機能するだけでなく実際に効果的かどうかを確認するプロセスです。

評価で確認できること:

  • 正しい答えを生成しているか?
  • 各ステップでの発見の関連性はどの程度か?
  • エージェントの応答はどの程度適切か?
  • 目標に合致しているか?

Arize Phoenixの特徴

image

Arize Phoenixは、リアルタイムでエージェントの決定をトレース、評価、デバッグするための統合プラットフォームです。一箇所ですべての作業を完結できるため、効率的にエージェントを改善できます。

質問者

トレーシングや評価って聞くと、なんだかとても専門的で難しそうなんですが、実際にビジネスで使う価値ってあるんでしょうか?

回答者

実はビジネスにとって非常に実用的です。例えば、顧客サポートのAIチャットボットが「なぜその回答をしたのか」を追跡できれば、問題が起きた時にすぐに原因を特定できます。また、営業支援AIが「どの情報を参考にして提案したか」が分かれば、提案の精度を向上させることができます。エラーの特定、コスト削減、品質向上に直結するため、AIを本格的にビジネスで活用するなら必須の機能です。


ステップ1:AIエージェントの作成

ステップ1:AIエージェントの作成

まずは、評価対象となるエージェントを準備しましょう。独自のエージェントをお持ちの方は、そちらをご利用いただいても構いません。

1-1. 必要なライブラリのインストール

pip install smolagents

1-2. 基本的な構成要素のインポート

使用するクラスとツールを読み込みます。

from smolagents import (
   CodeAgent,
   DuckDuckGoSearchTool,
   VisitWebpageTool,
   HfApiModel,
)

1-3. ベースモデルのセットアップ

Hugging Face Inference(Serverless Inference API) を使用してモデルインスタンスを作成します。

# 基本的な使用方法
hf_model = HfApiModel()

# 推奨:特定のモデルを指定する場合
# hf_model = HfApiModel(model_id="meta-llama/Llama-3.3-70B-Instruct")

# Hugging Face APIトークンが必要な場合
# hf_model = HfApiModel(token="your_hf_token_here")

1-4. ツール呼び出しエージェントの作成

agent = CodeAgent(
    tools=[DuckDuckGoSearchTool(), VisitWebpageTool()],
    model=hf_model,
    add_base_tools=True
)

1-5. エージェントの実行

実際に以下のような質問をして、エージェントを動かしてみましょう。

agent.run("株価データの取得方法を調査し、利用可能なデータソースから情報を収集して線グラフとして可視化する方法を教えてください")

エージェントが実行する処理:

  1. DuckDuckGoSearchToolを使用して株価データの取得方法を検索
  2. VisitWebpageToolで関連するページを訪問
  3. 情報を収集し、データ可視化の方法を提案または実装
質問者

コードを見ると、いろいろなライブラリやツールが出てきますが、プログラミング初心者でも本当に作れるんでしょうか?

回答者

記事のコードは基本的なコピー&ペーストで動作するように設計されています。完全な初心者の場合は、まずPythonの基本を1-2週間学習してから取り組むことをお勧めします。ChatGPTなどに質問しながら作れば、初心者でも早期に習得できます!


ステップ2:エージェントのトレーシング

ステップ2:エージェントのトレーシング

エージェントが動作を開始したら、次の課題はその内部ワークフローを理解することです。

トレーシングのメリット

  • エージェントが取る各ステップを追跡
  • ツールの呼び出しから応答の生成まで全過程を可視化
  • 問題のデバッグとパフォーマンス最適化が可能
  • 期待通りの動作をしているかの確認

2-1. 必要なライブラリのインストール

pip install smolagents openinference-instrumentation-smolagents arize-phoenix arize-phoenix-otel

2-2. Phoenixのセットアップ

ローカルマシンでPhoenixのインスタンスを起動します。

phoenix serve


その他のホスティングオプション:

Phoenix 5.0以降で推奨されている起動方法:
phoenix serve
以下でも使用可能です:
python -m phoenix.server.main serve

2-3. トレーサープロバイダーの登録

Phoenixインスタンスを指定してトレーサープロバイダーを登録します。

from phoenix.otel import register
from openinference.instrumentation.smolagents import SmolagentsInstrumentor

tracer_provider = register(project_name="my-smolagents-app") # OTELトレースを取得するトレーサープロバイダーを作成
SmolagentsInstrumentor().instrument(tracer_provider=tracer_provider) # smolagentsの呼び出しを自動的にトレースとして取得

これで、smolagentsへのすべての呼び出しがPhoenixインスタンスに送信されます。

2-4. トレーシングのテスト

シンプルなクエリでテストしてみましょう。

agent.run("What time is it in Tokyo right now?")

OpenInferenceとSmolAgentsがセットアップされると、すべてのエージェント呼び出しが自動的にPhoenixでトレースされます。


ステップ3:エージェントの評価

ステップ3:エージェントの評価

エージェントが稼働し、その実行が監視できるようになったら、次はパフォーマンス評価です。

評価の種類

評価により、エージェントがどの程度効果的に情報を取得、処理、提示しているかを判断できます。

主な評価タイプ:

  • 応答の関連性
  • 事実の正確性
  • レスポンス速度(レイテンシ)
  • その他多数

さまざまな評価技術について詳しく知りたい方は、Phoenix公式ドキュメントをご確認ください。

今回の評価内容

この例では、エージェントが使用するDuckDuckGo検索ツールの評価に焦点を当てます。Large Language Model(LLM)を判定者として使用し、検索結果の関連性を測定します。今回はOpenAIのGPT-4oを使用します。

3-1. 評価ライブラリのインストール

評価機能を使用するために、必要なライブラリをインストールします。

pip install arize-phoenix-evals openai

LLM-as-a-judge手法とは:言語モデルを活用して応答を分類・スコア化する評価手法

3-2. ツール実行スパンの取得

DuckDuckGoがどの程度効果的に情報を取得しているかを評価するため、まずツールが呼び出された実行トレースを抽出します。

from phoenix.trace.dsl import SpanQuery
import phoenix as px
import json

query = SpanQuery().where(
    "name == 'DuckDuckGoSearchTool'",
).select(
    input="input.value", # RAG_RELEVANCY_PROMPT_TEMPLATEで動作するためにinputという名前にする必要があります
    reference="output.value", # RAG_RELEVANCY_PROMPT_TEMPLATEで動作するためにreferenceという名前にする必要があります
)

# Phoenix Clientがこのクエリを受け取り、データフレームを返します
tool_spans = px.Client().query_spans(query, project_name="my-smolagents-app")

tool_spans["input"] = tool_spans["input"].apply(lambda x: json.loads(x).get("kwargs", {}).get("query", ""))
tool_spans.head()

3-3. プロンプトテンプレートのインポート

RAG関連性プロンプトテンプレートを読み込み、LLMが検索結果の関連性を分類できるようにします。

from phoenix.evals import (
    RAG_RELEVANCY_PROMPT_RAILS_MAP,
    RAG_RELEVANCY_PROMPT_TEMPLATE,
    OpenAIModel,
    llm_classify
)
import nest_asyncio
nest_asyncio.apply()

print(RAG_RELEVANCY_PROMPT_TEMPLATE)

3-4. 評価の実行

GPT-4oを判定者として使用して評価を実行します。

from phoenix.evals import (
    llm_classify,
    OpenAIModel,
    RAG_RELEVANCY_PROMPT_TEMPLATE,
)

eval_model = OpenAIModel(model="gpt-4o")

eval_results = llm_classify(
    dataframe=tool_spans,
    model=eval_model,
    template=RAG_RELEVANCY_PROMPT_TEMPLATE,
    rails=["relevant", "unrelated"],
    concurrency=10,
    provide_explanation=True,
)
eval_results["score"] = eval_results["explanation"].apply(lambda x: 1 if "relevant" in x else 0)


ここで実行されている処理:

  1. GPT-4oが検索クエリ(入力)と検索結果(出力)を分析
  2. LLMがプロンプトに基づいて結果を「関連性あり」または「無関係」に分類
  3. さらなる分析のために二進スコア(1 = 関連性あり、0 = 無関係)を割り当て

結果を確認するには:

eval_results.head()

3-5. 評価結果をPhoenixに送信

from phoenix.trace import SpanEvaluations

px.Client().log_evaluations(SpanEvaluations(eval_name="DuckDuckGoSearchTool Relevancy", dataframe=eval_results))
質問者

LLM-as-a-judge手法って、要するにAIがAIを評価するってことですよね?それって本当に信頼できるんでしょうか?

回答者

確かにAIがAIを評価する手法ですが、適切に設計すれば非常に有効です。重要なのは評価基準を明確に定義することです。例えば「関連性」を評価する場合、具体的な判断基準をプロンプトで詳細に指示します。また、複数の評価者(異なるLLM)を使って結果を比較したり、人間の評価と定期的に照らし合わせることで信頼性を確保できます。コスト効率と スケーラビリティの観点では、人間による評価よりもはるかに優れています。


応用:さまざまな評価テンプレートの活用

応用:さまざまな評価テンプレートの活用

カスタマイズのポイント:
この設定により、エージェント内のDuckDuckGo検索ツールの効果を体系的に評価できます。LLM-as-a-judge手法を使用することで、エージェントが正確で関連性の高い情報を取得し、より良いパフォーマンスを実現できることを確認できます。

任意の評価は、この手順に従って簡単にセットアップできます。RAG_RELEVANCY_PROMPT_TEMPLATEを、あなたのニーズに合った別のプロンプトテンプレートに置き換えるだけです。

Phoenixで利用可能な評価テンプレート

Phoenix では、以下のような事前作成・検証済みの評価テンプレートを豊富に提供しています。

  • 信頼性(Faithfulness)
  • 応答の一貫性(Response Coherence)
  • 事実の正確性(Factual Accuracy)
  • その他多数

完全なリストとあなたのエージェントに最適なテンプレートについては、Phoenix公式ドキュメントをご確認ください。


まとめ:継続的改善でエージェントを進化させよう

まとめ:継続的改善でエージェントを進化させよう

AIエージェントの構築は、始まりに過ぎません。真の知能は、内部で何が起こっているかを正確に把握することから生まれます。

今回学んだこと

トレーシングによりエージェントの動作を詳細に可視化
評価によりパフォーマンスを定量的に測定
Arize Phoenixで統合的な分析・最適化環境を構築

次のステップ

  1. 基本操作をマスターする:この記事の手順を実際に試してみてください
  2. 評価項目を拡張する:関連性以外にも、応答速度や正確性など様々な観点で評価を実施
  3. 継続的改善:評価結果に基づいてエージェントのパラメータやプロンプトを調整

🚀 あなたのエージェントも、適切な評価と継続的な改善により、より高い精度と効率性を実現できるはずです。まずは一歩目から始めてみましょう!

この記事の著者

Md Amanatullahのプロフィール写真

Md Amanatullah

生成AI、LLM、NLPを専門とするAI/ML開発者兼MLOpsエンジニア。

生成AI、大規模言語モデル(LLM)、自然言語処理(NLP)を専門とするAI/ML開発者兼MLOpsエンジニアで、5年以上の実務経験を有している。クラウドプラットフォームや最先端のフレームワークを活用し、実運用レベルのAIアプリケーションの構築とデプロイに精通している。AI技術の発展と、グローバルなコミュニティへの知識共有に情熱を注いでいる。

この記事は著者の許可を得て公開しています。

元記事:Evaluating AI Agents with Arize Phoenix

この記事の監修・コメント

池田朋弘のプロフィール写真

池田朋弘(監修)

Workstyle Evolution代表。18万人超YouTuber&著書『ChatGPT最強の仕事術』は4万部突破。

株式会社Workstyle Evolution代表取締役。YouTubeチャンネル「いけともch(チャンネル)」では、 AIエージェント時代の必須ノウハウ・スキルや、最新AIツールの活用法を独自のビジネス視点から解説し、 チャンネル登録数は18万人超(2025年7月時点)。

主な著書:ChatGPT最強の仕事術』、 『Perplexity 最強のAI検索術』、 『Mapify 最強のAI理解術

合わせて読みたい
関連記事

公式LINEで最新ニュースをゲット

LINE登録の無料特典
LINE登録の無料特典
icon

最新のAIニュース
毎週お届け

icon

生成AIの業務別の
ビジネス活用シーン

がわかるAIチャット

icon

過去のAIニュースから
事実を確認できる
何でもAI相談チャット

icon

ニュース動画
アーカイブ

ページトップへ