Von Bedeutung
Databricks では、GenAI アプリの評価と監視に MLflow 3 を使用することをお勧めします。 このページでは、MLflow 2 エージェントの評価について説明します。
- MLflow 3 での評価と監視の概要については、 AI エージェントの評価と監視に関するページを参照してください。
- MLflow 3 への移行の詳細については、「 エージェント評価から MLflow 3 への移行」を参照してください。
- このトピックの MLflow 3 の情報については、「 AI エージェントの評価と監視」を参照してください。
この記事では、MLflow 2 に基づいて、Mosaic AI Agent Evaluation を使用する方法の概要について説明します。
エージェント評価の操作方法
次のコードは、以前に生成された出力に対してエージェント評価を呼び出してテストする方法を示しています。 エージェント評価の一環として、LLMジャッジによって計算された評価スコアを含むデータフレームを返します。 Azure Databricks ワークスペースで実行できる同様のコードを含むクイック スタート ノートブックの ノートブックの例 を参照してください。
既存の Azure Databricks ノートブックに次のコードをコピーして貼り付けることができます。
%pip install mlflow databricks-agents
dbutils.library.restartPython()
import mlflow
import pandas as pd
examples = {
"request": [
{
# Recommended `messages` format
"messages": [{
"role": "user",
"content": "Spark is a data analytics framework."
}],
},
# SplitChatMessagesRequest format
{
"query": "How do I convert a Spark DataFrame to Pandas?",
"history": [
{"role": "user", "content": "What is Spark?"},
{"role": "assistant", "content": "Spark is a data processing engine."},
],
}
# Note: Using a primitive string is discouraged. The string will be wrapped in the
# OpenAI messages format before being passed to your agent.
],
"response": [
"Spark is a data analytics framework.",
"This is not possible as Spark is not a panda.",
],
"retrieved_context": [ # Optional, needed for judging groundedness.
[{"doc_uri": "doc1.txt", "content": "In 2013, Spark, a data analytics framework, was open sourced by UC Berkeley's AMPLab."}],
[{"doc_uri": "doc2.txt", "content": "To convert a Spark DataFrame to Pandas, you can use toPandas()"}],
],
"expected_response": [ # Optional, needed for judging correctness.
"Spark is a data analytics framework.",
"To convert a Spark DataFrame to Pandas, you can use the toPandas() method.",
]
}
global_guidelines = {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
result = mlflow.evaluate(
data=pd.DataFrame(examples), # Your evaluation set
# model=logged_model.model_uri, # If you have an MLFlow model. `retrieved_context` and `response` will be obtained from calling the model.
model_type="databricks-agent", # Enable Mosaic AI Agent Evaluation
evaluator_config={
"databricks-agent": {"global_guidelines": global_guidelines}
}
)
# Review the evaluation results in the MLFLow UI (see console output), or access them in place:
display(result.tables['eval_results'])
エージェント評価の入力と出力
入力
フィールド名やデータ型など、エージェント評価に必要な入力の詳細については、 input スキーマを参照してください。 フィールドの一部は次のとおりです。
-
ユーザーのクエリ (
request): エージェントへの入力 (ユーザーの質問またはクエリ)。 たとえば、"RAG とは何ですか?"。 -
エージェントの応答 (
response): エージェントによって生成された応答。 たとえば "検索拡張生成は..."。 -
予想される応答 (
expected_response): (省略可能) グラウンド トゥルースによる (正しい) 応答。 -
MLflow トレース (
trace): (省略可能) エージェントの MLflow トレース。エージェント評価では、取得したコンテキストやツール呼び出しなどの中間出力が抽出されます。 または、これらの中間出力を直接指定することもできます。 -
ガイドライン (
guidelines): (省略可能) モデルの出力が準拠することが期待されるガイドラインまたは名前付きガイドラインの一覧。
出力
これらの入力に基づいて、Agent Evaluation は次の 2 種類の出力を生成します。
-
評価結果 (行ごと): 入力として指定された各行に対して、エージェント評価は、エージェントの品質、コスト、待機時間の詳細な評価を含む対応する出力行を生成します。
- LLM のジャッジは、正確性や接地性など、品質のさまざまな側面をチェックし、はい/いいえのスコアを出力し、そのスコアの根拠を書き込みます。 詳細については、 エージェント評価 (MLflow 2) による品質、コスト、待機時間の評価方法に関するページを参照してください。
- LLM ジャッジの評価を組み合わせて、その行が "合格" (高品質) または "失敗" (品質の問題がある) かどうかを示す全体的なスコアを生成します。
- 失敗した行については、根本原因が特定されます。 各根本原因は、特定の LLM ジャッジの評価に対応しており、判事の根拠を使用して潜在的な修正を特定できます。
- コストと待機時間は、 MLflow トレースから抽出されます。 詳細については、「 コストと待機時間の評価方法を参照してください。
- メトリック (集計スコア): すべての入力行にわたるエージェントの品質、コスト、待機時間を集計した集計スコア。 これには、正しい回答の割合、平均トークン数、平均待機時間などのメトリックが含まれます。 詳細については、「コストと待機時間を評価する方法品質、コスト、待機時間について MLflow 実行のレベルでメトリックを集計する方法を参照してください。
開発 (オフライン評価) と運用 (オンライン監視)
エージェント評価は、開発 (オフライン) 環境と運用環境 (オンライン) 環境の間で一貫するように設計されています。 この設計により、開発から運用環境へのスムーズな移行が可能になり、高品質のエージェント アプリケーションをすばやく反復処理、評価、デプロイ、監視できます。
開発環境と運用環境の主な違いは、運用環境ではグラウンドトゥルース ラベルを持たないのに対し、開発環境では必要に応じてグラウンドトゥルース ラベルを使用できることです。 グラウンドトゥルース ラベルを使用すると、エージェント評価で追加の品質メトリックを計算できます。
開発 (オフライン)
開発中、 requests と expected_responses は、 評価セットから取得されます。 評価セットは、エージェントが正確に処理できる代表的な入力のコレクションです。 評価セットの詳細については、 評価セット (MLflow 2) を参照してください。
responseとtraceを取得するために、Agent Evaluation はエージェントのコードを呼び出して、評価セット内の各行に対してこれらの出力を生成できます。 または、これらの出力を自分で生成し、エージェント評価に渡すことができます。 詳細については、「 評価実行に入力を提供する方法 を参照してください。
運用環境 (オンライン)
運用環境での監視の詳細については、「運用環境 での GenAI の監視」を参照してください。 この MLflow 3 機能は、MLflow 2 の実験と互換性があります。 MLflow 2 の実験で監視を有効にするには、 MLflow 3 SDK を使用して、 mlflow>=3.1をインストールします。
評価セットを使用して品質ベンチマークを確立する
開発環境 (オフライン) の AI アプリケーションの品質を測定するには、評価セット、つまり代表的な質問のセットと省略可能なグラウンドトゥルースによる回答を定義する必要があります。 アプリケーションに RAG ワークフローなどの取得手順が含まれている場合、必要に応じて、応答の根拠になると思われる補足ドキュメントを作成します。
- メトリックの依存関係やベスト プラクティスなど、評価セットの詳細については、 評価セット (MLflow 2) を参照してください。
- 必要なスキーマについては、 エージェント評価入力スキーマ (MLflow 2) を参照してください。
- 高品質な評価セットを合成的に生成する方法については、「評価セットの合成」を参照してください。
評価の実行
評価を実行する方法の詳細については、「評価を 実行して結果を表示する (MLflow 2)」を参照してください。 エージェント評価では、チェーンからの出力を提供するための 2 つのオプションがサポートされています。
- アプリケーションを評価実行の一部として実行できます。 アプリケーションは、評価セット内の入力ごとに結果を生成します。
- アプリケーションの前回の実行からの出力を提供できます。
各オプションを使用するタイミングの詳細と説明については、「評価実行に入力を提供する」を参照してください。
生成型 AI アプリケーションの品質に関する人間のフィードバックを得る
Databricks レビュー アプリを使用すると、人間のレビュー担当者から AI アプリケーションの品質に関するフィードバックを簡単に収集できます。 詳細については、「 Gen AI アプリ (MLflow 2) の人間によるレビューにレビュー アプリを使用する」を参照してください。
Mosaic AI エージェント評価の利用可能地域
Mosaic AI エージェント評価は、顧客コンテンツを処理するときにデータ所在地を管理するために地域を使用する指定サービスです。 さまざまな地域でエージェント評価機能を利用できるかどうかの詳細については、「Databricks Designated Services」を参照してください。
価格
価格情報については、「Mosaic AI エージェント評価の価格」を参照してください。
LLM ジャッジをサポートするモデルに関する情報
- LLM ジャッジではサードパーティのサービスを使用して、Microsoft が運営する Azure OpenAI などの、GenAI アプリケーションを評価する場合があります。
- Azure OpenAI の場合、Databricks は不正使用の監視をオプトアウトしているため、Azure OpenAI ではプロンプトや応答が格納されません。
- 欧州連合 (EU) ワークスペースの場合、LLM ジャッジは EU でホストされているモデルを使用します。 他のすべてのリージョンでは、米国でホストされているモデルが使用されます。
- パートナーを利用する AI 機能を無効にすると、LLM ジャッジがパートナーを利用するモデルを呼び出すのを防ぐことができます。 独自のモデルを提供することで、LLM ジャッジを引き続き使用できます。
- LLM ジャッジは、お客様が GenAI エージェント/アプリケーションを評価するのを支援することを目的としています。LLM ジャッジの出力は、LLM のトレーニング、改善、微調整には使用しないでください。
ノートブックの例
次のノートは、モザイクAIエージェント評価の使用方法を説明しています。