次の方法で共有


Agent Framework を使用してデプロイされたアプリを監視する (MLflow 2)

Von Bedeutung

この機能は ベータ版です

Von Bedeutung

このページでは、MLflow 2 でのエージェント評価バージョン 0.22 の使用方法について説明します。 Databricks では、エージェント評価 >1.0と統合された MLflow 3 を使用することをお勧めします。 MLflow 3 では、エージェント評価 API が mlflow パッケージの一部になりました。

このトピックの詳細については、「 運用品質の監視 (スコアラーを自動的に実行する)」を参照してください。

このページでは、 Mosaic AI Agent Framework を使用してデプロイされた生成 AI アプリの監視を設定する方法について説明します。 結果スキーマ、結果の表示、UI の使用、アラートの追加、モニターの管理など、監視の使用に関する一般的な情報については、「 生成 AI の Lakehouse Monitoring とは」を参照してください。(MLflow 2)

Gen AI の Lakehouse Monitoring を使用すると、 モザイク AI エージェント評価 AI のジャッジを使用して、ボリューム、待機時間、エラー、コストなどの運用メトリックだけでなく、正確性やガイドライン準拠などの品質メトリックを追跡できます。

監視のしくみ:

しくみの概要

監視 UI:

生成 AI UI ヒーロー用のレイクハウス監視

要求事項

%pip install databricks-agents>=0.22.0
dbutils.library.restartPython()
  • サーバーレス ジョブを有効にする必要があります。
  • LLM のジャッジ メトリックでは、パートナーが利用する AI 支援機能 を有効にする必要があります。 待機時間などのその他のメトリックは、この設定に関係なくサポートされます。
  • エンドポイント作成者 (エージェントをデプロイするユーザー) には、デプロイ時に推論テーブルを格納するために選択したスキーマに対する CREATE VOLUME アクセス許可が必要です。 これにより、スキーマに関連する評価テーブルとログ テーブルを作成できます。 推論 テーブルの有効化と無効化を参照してください。

制限事項

Von Bedeutung

  • トレースは、監視 UI で使用できるようになるまでに最大 2 時間かかる場合があります。
  • トレースが監視 UI に表示された 、品質メトリックの計算にはさらに 15 分かかる場合があります。

詳細については、「 実行とスケジュールの監視」を参照してください。

待機時間を短くする必要がある場合は、Databricks アカウントの担当者にお問い合わせください。

監視を設定する

を使用して agents.deployエージェントをデプロイすると、基本的な監視が自動的に設定されます。 これには次のものが含まれます。

  • ボリュームの追跡を要求する
  • 待機時間のメトリック
  • エラーのログ記録

この自動監視には、ガイドラインの準拠や安全性などの特定の評価メトリックは含まれませんが、エージェントの使用状況とパフォーマンスを追跡するための不可欠なテレメトリが提供されます。

ヒント

エンド ユーザーの 👍 / 👎 フィードバックをモニターに含めるには、推論テーブルにフィードバックを添付する方法の手順については、 デプロイされたエージェント (試験段階) に関するフィードバックを提供するを参照してください。

エージェント監視メトリックの構成

自動監視に評価メトリックを追加するには、 update_monitor メソッドを使用します。

Von Bedeutung

モニターを MLflow 実験にアタッチする 必要があります 。 各実験にアタッチできるモニターは 1 つだけです (1 つのエンドポイントの場合)。 既定では、 update_monitorcreate_monitor はノートブックの MLflow 実験を使用します。 この動作をオーバーライドして別の実験を選択するには、 experiment_id パラメーターを使用します。

from databricks.agents.monitoring import update_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge

monitor = update_monitor(
    endpoint_name = "model-serving-endpoint-name",
    assessments_config = AssessmentsSuiteConfig(
        sample=1.0,  # Sample 100% of requests
        assessments=[
            # Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
            BuiltinJudge(name='safety'),  # or {'name': 'safety'}
            BuiltinJudge(name='groundedness', sample_rate=0.4), # or {'name': 'groundedness', 'sample_rate': 0.4}
            BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
            BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
            # Create custom judges with the guidelines judge.
            GuidelinesJudge(guidelines={
              "english": ["The response must be in English"],
              "clarity": ["The response must be clear, coherent, and concise"],
            }),
        ],
    )
)

自動監視でデプロイされていないエージェントの場合は、 create_monitor 方法で監視を設定できます。

from databricks.agents.monitoring import create_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge

monitor = create_monitor(
    endpoint_name = "model-serving-endpoint-name",
    assessments_config = AssessmentsSuiteConfig(
        sample=1.0,  # Sample 100% of requests
        assessments=[
            # Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
            BuiltinJudge(name='safety'),  # or {'name': 'safety'}
            BuiltinJudge(name='groundedness', sample_rate=0.4), # or {'name': 'groundedness', 'sample_rate': 0.4}
            BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
            BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
            # Create custom judges with the guidelines judge.
            GuidelinesJudge(guidelines={
              "english": ["The response must be in English"],
              "clarity": ["The response must be clear, coherent, and concise"],
            }),
        ],
    )
)

どちらの方法も、次の入力を受け取ります。

  • endpoint_name: str - 監視するエンドポイントを提供するモデルの名前。
  • assessments_config: AssessmentsSuiteConfig | dict - モニターによって計算された評価の構成。 次のパラメーターがサポートされています。
    • [Optional] sample: float - グローバルサンプルレート、つまり、評価を計算する要求の割合 (0 から 1 の間)。 既定値は 1.0 です (すべてのトラフィックのコンピューティング評価)。
    • [Optional] paused: bool - モニターが一時停止されているかどうか。
    • [Optional] assessments: list[BuiltinJudge | GuidelinesJudge] 組み込みジャッジまたはガイドライン ジャッジのいずれかである評価のリストです。
  • [Optional] experiment_id:モニターの結果が表示される MLflow 実験。 指定しない場合、モニターはエージェントが最初にログに記録されたのと同じ実験を使用します。

BuiltinJudge は、次の引数を受け取ります。

  • name: str - 監視でサポートされている組み込まれている評価基準の 1 つ: "安全性"、"根拠の確認"、"クエリへの関連性"、"チャンクの関連性"。 組み込みのジャッジの詳細については、「 組み込みのジャッジ」を参照してください。
  • [Optional] sample_rate: float - この評価を計算する要求の割合 (0 ~ 1)。 既定ではグローバル サンプル レートが使用されます。

GuidelinesJudge は、次の引数を受け取ります。

  • guidelines: dict[str, list[str]] - 要求/応答を主張するために使用されるガイドライン名とプレーンテキスト形式のガイドラインを含む辞書。 ガイドラインの詳細については、「 ガイドラインの準拠」を参照してください。
  • [Optional] sample_rate: float - (0 から 1 の間の) ガイドラインを計算する要求の割合。 既定ではグローバル サンプル レートが使用されます。

詳細については、 Python SDK のドキュメントを参照してください。

モニターを作成すると、セル出力に監視 UI へのリンクが表示されます。 評価結果はこの UI で表示でき、 monitor.evaluated_traces_tableに格納されます。 評価された行を表示するには、次のコマンドを実行します。

display(spark.table(monitor.evaluated_traces_table).filter("evaluation_status != 'skipped'"))

実行とスケジュールの監視

Von Bedeutung

  • トレースは、監視 UI で使用できるようになるまでに最大 2 時間かかる場合があります。
  • トレースが監視 UI に表示された 、品質メトリックの計算にはさらに 30 分かかる場合があります。

モニターを作成すると、過去 30 日間のエンドポイントへの要求のサンプルを評価するジョブが開始されます。 この初期評価は、要求の量とサンプリング レートに応じて、完了までに数時間かかることがあります。

エンドポイントに対して要求が行われると、次の処理が行われます。

  1. 要求とその MLflow トレースが推論テーブルに書き込まれます (15 ~ 30 分)。
  2. スケジュールされたジョブは、推論テーブルを 2 つの別個のテーブルにアンパックします。 request_log (要求とトレースを含む) と、ユーザー フィードバック (ジョブは 1 時間ごとに実行) を含む assessment_logs
  3. 監視ジョブは、指定した要求のサンプルを評価します (ジョブは 15 分ごとに実行されます)。

これらの手順を組み合わせると、要求が監視 UI に表示されるまでに最大 2.5 時間かかることがあります。

モニターは Databricks ワークフローによってサポートされます。 モニターの更新を手動でトリガーするには (手順 3)、名前が [<endpoint_name>] Agent Monitoring Job ワークフローを見つけて、[ 今すぐ実行] をクリックします。

待機時間を短くする必要がある場合は、Databricks アカウントの担当者にお問い合わせください。

ノートブックの例

次の例では、単純なエージェントをログに記録してデプロイし、そのエージェントを監視できるようにします。

エージェント監視のサンプル ノートブック

ノートブックを入手