次の方法で共有


運用トラフィックでエージェントの品質を監視する方法

重要

この機能はパブリック プレビュー段階にあります。

この記事では、 Mosaic AI エージェント評価を使用して、運用トラフィックにデプロイされたエージェントの品質を監視する方法について説明します。

オンライン監視は、エージェントが実際の要求で意図したとおりに動作していることを確認する上で重要な側面です。 以下のノートブックを使用すると、エージェントサービスエンドポイントを介して提供される要求に対してエージェント評価を継続的に実行できます。 ノートブックによって、 等値メトリック 、運用要求に対するエージェントの出力に対するユーザー フィードバック ( 👍 またはサムダウン 👎) が表示されるダッシュボードが生成されます。 このフィードバックは、 review アプリ 関係者、またはエンド ユーザーの反応をキャプチャできる運用エンドポイントの feedback API を通じて得ることができます。 ダッシュボードを使用すると、時間、ユーザー フィードバック、合格/失敗の状態、入力要求のトピックなど、さまざまなディメンションでメトリックをスライスできます (たとえば、特定のトピックが低品質の出力と関連付けられるかどうかを理解するため)。 さらに、個々の要求をより深く掘り下げ、低品質の応答でさらにデバッグすることができます。 ダッシュボードなどのすべての成果物は、完全にカスタマイズ可能です。

オンライン監視ダッシュボード

要件

  • Azure AI 搭載の AI 支援機能をワークスペースで有効にする必要があります。
  • 推論テーブル が、エージェントにサービスを提供しているエンドポイントで有効になっている必要があります。

エージェント評価を通じて生産トラフィックを継続的に処理する

次のノートブック例は、エージェントサービスエンドポイントからの要求ログに対してエージェント評価を実行する方法を示しています。 ノートブックを実行するには、次の手順に従います。

  • ワークスペースにノートブックをインポートします (instructions)。 下の [インポート用のリンクをコピー] ボタンをクリックすると、インポートの URL を取得できます。
  • インポートしたノートブックの上部にある必要なパラメーターを入力します。
    • デプロイされたエージェントのサービス エンドポイントの名前。
    • 要求のサンプルに対する 0.0 から 1.0 までのサンプル レート。 トラフィック量が多いエンドポイントには、より低いレートを使用します。
    • (省略可能)生成された成果物 (ダッシュボードなど) を格納するワークスペース フォルダー。 既定値はホーム フォルダーです。
    • (省略可能)入力要求を分類するトピックの一覧。 既定値は、1 つのキャッチオール トピックで構成されるリストです。
  • インポート ノートブックで [すべて実行 ] をクリックします。 これにより、30 日間の期間内に運用ログの初期処理が行われ、品質メトリックを要約したダッシュボードが初期化されます。
  • スケジュールをクリックして、ノートブックを定期的に実行するジョブを作成します。 ジョブは、運用ログを段階的に処理し、ダッシュボードを最新の状態に保ちます。

ノートブックには、サーバーレス コンピューティングまたは Databricks Runtime 15.2 以降を実行しているクラスターが必要です。 要求の数が多いエンドポイントで運用トラフィックを継続的に監視する場合は、より頻繁なスケジュールを設定することをお勧めします。 たとえば、1 時間あたりの要求数が 10,000 を超え、サンプル レートが 10% のエンドポイントでは、1 時間ごとのスケジュールが適切に機能します。

運用トラフィック ノートブックでエージェント評価を実行する

ノートブックを入手

評価メトリックに関するアラートを作成する

ノートブックを定期的に実行するようにスケジュールした後、品質メトリックが予想よりも低く低下したときに通知されるアラートを追加できます。 これらのアラートは、他の Databricks SQL アラートと同じ方法で作成および使用されます。 最初に、サンプル ノートブックによって生成された評価要求ログ テーブルにDatabricks SQL クエリを作成します。 次のコードは、過去 1 時間の要求をフィルター処理する、評価要求テーブルに対するクエリの例を示しています。

SELECT
  `date`,
  AVG(pass_indicator) as avg_pass_rate
FROM (
  SELECT
    *,
    CASE
      WHEN `response/overall_assessment/rating` = 'yes' THEN 1
      WHEN `response/overall_assessment/rating` = 'no' THEN 0
      ELSE NULL
    END AS pass_indicator
  -- The eval requests log table is generated by the example notebook
  FROM {eval_requests_log_table_name}
  WHERE `date` >= CURRENT_TIMESTAMP() - INTERVAL 1 DAY
)
GROUP BY ALL

次に、 Databricks SQL アラートを作成し 必要な頻度でクエリを評価し、アラートがトリガーされた場合に通知を送信します。 次の図は、全体的なパス レートが 80% を下回ったときにアラートを送信する構成例を示しています。

オンライン監視アラート構成

既定では、電子メール通知が送信されます。 Webhook を設定したり、Slack や PagerDuty などの他のアプリケーションに通知を送信したりすることもできます。

選択した運用ログをレビュー アプリに追加して人間のレビューを行う

ユーザーが要求に関するフィードバックを提供する場合は、サブジェクトの専門家に否定的なフィードバック (応答または取得に関するサムダウン要求) を使用して要求をレビューするように要求できます。 これを行うには、特定のログを review アプリに追加 エキスパート レビューを要求します。

次のコードは、評価ログ テーブルに対するクエリの例を示し、要求 ID とソース ID ごとの最新の人間の評価を取得します。

with ranked_logs as (
  select
      `timestamp`,
      request_id,
      source.id as source_id,
      text_assessment.ratings["answer_correct"]["value"] as text_rating,
      retrieval_assessment.ratings["answer_correct"]["value"] as retrieval_rating,
      retrieval_assessment.position as retrieval_position,
      row_number() over (
        partition by request_id, source.id, retrieval_assessment.position order by `timestamp` desc
      ) as rank
  from {assessment_log_table_name}
)
select
    request_id,
    source_id,
    text_rating,
    retrieval_rating
from ranked_logs
where rank = 1
order by `timestamp` desc

次のコードでは、human_ratings_query = "..."行の...を上記のようなクエリに置き換えます。 次のコードは、否定的なフィードバックを含む要求を抽出し、レビュー アプリに追加します。

from databricks import agents

human_ratings_query = "..."
human_ratings_df = spark.sql(human_ratings_query).toPandas()

# Filter out the positive ratings, leaving only negative and "IDK" ratings
negative_ratings_df = human_ratings_df[
  (human_ratings_df["text_rating"] != "positive") | (human_ratings_df["retrieval_rating"] != "positive")
]
negative_ratings_request_ids = negative_ratings_df["request_id"].drop_duplicates().to_list()

agents.enable_trace_reviews(
  model_name=YOUR_MODEL_NAME,
  request_ids=negative_ratings_request_ids,
)

レビュー アプリの詳細については、「 エージェント アプリケーションの品質に関するフィードバックを取得するを参照してください。