メインコンテンツまでスキップ

Agent Framework を使用してデプロイされたアプリの監視

備考

ベータ版

この機能は ベータ版です。

このページでは、Mosaic AI Agent Framework を使用してデプロイされた生成AIアプリのモニタリングの設定方法について説明します 。結果スキーマ、結果の閲覧、UIの使用、アラートの追加、モニターの管理など、モニタリングの一般的な情報については、生成AIのレイクハウスモニタリングとはを参照してください。

生成AI向けレイクハウスモニタリングは、 Mosaic AI Agent EvaluationのAIジャッジを使用して、ボリューム、レイテンシー、エラー、コストなどの運用メトリクスと、正確性やガイドラインの遵守などの品質メトリクスを追跡するのに役立ちます。

モニタリングの仕組み:

仕組みの概要

モニタリング UI は、次のとおりです。

生成AI UI Heroにおけるレイクハウスモニタリング

必要条件

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

制限

important
  • トレースがモニタリングUIで利用可能になるまでに最大2時間かかる場合があります。
  • 品質 メトリクスは、モニタリング UI にトレースが 表示されてから コンピュートまでさらに 15 分かかる場合があります。

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

より低いレイテンシーが必要な場合は、Databricks のアカウント担当者にお問い合わせください。

モニタリングの設定

ChatAgent または ChatModel で作成されたエージェントを agents.deployを使用してデプロイすると、基本的なモニタリングが自動的に設定されます。これには以下が含まれます。

  • ボリューム追跡の要求
  • レイテンシメトリクス
  • エラーロギング

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

ヒント

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

エージェントモニタリング メトリクスの設定

自動モニタリングに評価メトリクスを追加するには、 update_monitor 方法を使用します。

important

MLflowモニターは エクスペリメントに取り付ける 必要があります 。各エクスペリメントには、(1 つのエンドポイントに対して) 1 つのモニターのみをアタッチできます。 By デフォルト, update_monitorcreate_monitor はノートブックの MLflow エクスペリメントを使用します。 この動作をオーバーライドして別のエクスペリメントを選択するには、 experiment_id パラメーターを使用します。

Python
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 方法でモニタリングを設定できます。

Python
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 (コンピュート assessments for all traffic) に設定します。
    • [Optional] paused: bool - モニターが停止しているかどうか。
    • [Optional] assessments: list[BuiltinJudge | GuidelinesJudge] 組み込みジャッジまたはガイドラインジャッジのいずれかである評価のリスト。
  • [Optional] experiment_id: モニター結果が表示される MLflow エクスペリメント。 指定しない場合、モニターは、エージェントが最初にログに記録されたのと同じエクスペリメントを使用します。

BuiltinJudge 次の引数を取ります。

  • name: str - モニタリングでサポートされる組み込み審査員の1人:「安全性」、「接地性」、「relevance_to_query」、「chunk_relevance」。 組み込みジャッジの詳細については、「 組み込みジャッジ」を参照してください。
  • [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.評価された行を表示するには、次のコマンドを実行します。

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

実行とスケジューリングの監視

important
  • トレースがモニタリングUIで利用可能になるまでに最大2時間かかる場合があります。
  • 品質 メトリクスは、モニタリング UI にトレースが 表示されてから コンピュートまでさらに 30 分かかる場合があります。

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

エンドポイントにリクエストが行われると、次の処理が行われます。

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

これらの手順を合わせると、リクエストがモニタリング UI に表示されるまでに最大 2.5 時間かかることがあります。

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

より低いレイテンシーが必要な場合は、Databricks のアカウント担当者にお問い合わせください。

ノートブックの例

次の例では、単純なエージェントをログに記録してデプロイし、そのエージェントでモニタリングを有効にします。

エージェントモニタリングのサンプルノートブック

Open notebook in new tab