コンテンツにスキップ

Arize AX によるエージェントの可観測性

Arize AX は、大規模な LLM アプリケーションと AI エージェントを監視、デバッグ、改善するための本番運用レベルの可観測性プラットフォームです。Google ADK アプリケーション向けに包括的なトレース、評価、モニタリング機能を提供します。始めるには、無料アカウントに登録してください。

オープンソースでセルフホスト可能な代替手段については、Phoenixを確認してください。

概要

Arize AX は OpenInference インストルメンテーションを使用して Google ADK からトレースを自動収集できます。これにより、次のことが可能になります。

  • エージェントのやり取りをトレース - すべてのエージェント実行、ツール呼び出し、モデルリクエスト、レスポンスをコンテキストとメタデータ付きで自動的にキャプチャ
  • パフォーマンスを評価 - カスタムまたは事前構築済みの評価器を使用してエージェントの動作を評価し、エージェント構成をテストする実験を実行
  • 本番環境でモニタリング - リアルタイム ダッシュボードとアラートを設定してパフォーマンスを追跡
  • 問題をデバッグ - 詳細なトレースを分析して、ボトルネック、失敗したツール呼び出し、予期しないエージェント動作をすばやく特定

エージェント トレース

インストール

必要なパッケージをインストールします。

pip install openinference-instrumentation-google-adk google-adk arize-otel

セットアップ

1. 環境変数を設定する

Google API キーを設定します。

export GOOGLE_API_KEY=[your_key_here]

2. アプリケーションを Arize AX に接続する

from arize.otel import register

# Arize AX に登録
tracer_provider = register(
    space_id="your-space-id",      # アプリのスペース設定ページで確認できます
    api_key="your-api-key",        # アプリのスペース設定ページで確認できます
    project_name="your-project-name"  # 任意の名前を指定します
)

# OpenInference の自動インストルメンターをインポートして構成します
from openinference.instrumentation.google_adk import GoogleADKInstrumentor

# 自動インストルメンテーションを完了
GoogleADKInstrumentor().instrument(tracer_provider=tracer_provider)

観測する

トレース設定が完了すると、すべての Google ADK SDK リクエストが可観測性と評価のために Arize AX にストリーミングされます。

import nest_asyncio
nest_asyncio.apply()

from google.adk.agents import Agent
from google.adk.runners import InMemoryRunner
from google.genai import types

# ツール関数を定義
def get_weather(city: str) -> dict:
    """指定した都市の現在の天気レポートを取得します。

    引数:
        city (str): 天気レポートを取得する都市名。

    戻り値:
        dict: ステータスと結果、またはエラーメッセージ。
    """
    if city.lower() == "new york":
        return {
            "status": "success",
            "report": (
                "ニューヨークの天気は晴れで、気温は摂氏 25 度"
                "(華氏 77 度)です。"
            ),
        }
    else:
        return {
            "status": "error",
            "error_message": f"'{city}' の天気情報は提供されていません。",
        }

# ツールを使ってエージェントを作成
agent = Agent(
    name="weather_agent",
    model="gemini-2.0-flash-exp",
    description="天気ツールを使用して質問に回答するエージェント。",
    instruction="回答を見つけるには、利用可能なツールを使用する必要があります。",
    tools=[get_weather]
)

app_name = "weather_app"
user_id = "test_user"
session_id = "test_session"
runner = InMemoryRunner(agent=agent, app_name=app_name)
session_service = runner.session_service

await session_service.create_session(
    app_name=app_name,
    user_id=user_id,
    session_id=session_id
)

# エージェントを実行(すべてのやり取りがトレースされます)
async for event in runner.run_async(
    user_id=user_id,
    session_id=session_id,
    new_message=types.Content(role="user", parts=[
        types.Part(text="ニューヨークの天気はどうですか?")]
    )
):
    if event.is_final_response():
        print(event.content.parts[0].text.strip())

Arize AX で結果を確認する

Arize AX のトレース エージェントの可視化 エージェント実験

サポートとリソース