Agent Evaluation (MLflow 2)
Databricks では、GenAI アプリの評価とモニタリングに MLflow 3 の使用を推奨しています。このページでは、MLflow 2 の Agent Evaluation について説明します。
- MLflow 3での評価とモニタリングの概要については、AI エージェントの評価とモニタリングを参照してください。
- MLflow 3への移行に関する情報については、Agent EvaluationからMLflow 3への移行を参照してください。
- このトピックに関する MLflow 3 の情報については、「AI エージェントの評価と監視」を参照してください。
この記事では、MLflow 2に基づいたAgent Evaluationの操作方法の概要を説明します。
Agent Evaluationの使用方法
次のコードは、以前に生成された出力に対してAgent Evaluationを呼び出してテストする方法を示しています。Agent Evaluationの一部であるLLM審査員によって計算された評価スコアを含むデータフレームを返します。Databricksワークスペースで実行できる同様のコードを含むクイックスタートノートブックについては、ノートブックの例を参照してください。
以下を既存のDatabricksノートブックにコピーして貼り付けることができます。
%pip install mlflow==2.21.0 databricks-agents==0.16.0
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 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'])
Agent Evaluation の入力と出力
入力
エージェント評価の期待される入力(フィールド名やデータ型を含む)の詳細については、入力スキーマを参照してください。フィールドの一部を次に示します。
- ユーザーのクエリ (
request): エージェントへの入力(ユーザーの質問またはクエリ)たとえば、「RAGとは」。 - エージェントの応答(
response): エージェントによって生成された応答です。たとえば、「Retrieval augmented generation は…」です。 - 期待される応答 (
expected_response): (オプション) 正解の応答。 - MLflowトレース(
trace): (オプション)エージェントのMLflowトレース。これは、Agent Evaluationが、取得されたコンテキストやツール呼び出しなどの推論の中間出力を抽出する元になります。あるいは、これらの推論の中間出力を直接提供することもできます。 - **ガイドライン
guidelines():** (任意) モデルの出力が準拠することが期待されるガイドラインまたは名前付きガイドラインのリスト。
出力
これらの入力に基づいて、Agent Evaluation は2種類の出力を生成します:
-
評価結果(各行): 入力として提供された各行について、Agent Evaluation は、エージェントの品質、コスト、レイテンシの詳細な評価を含む対応する出力行を生成します。
-
LLMのジャッジは、正しさや根拠など、品質のさまざまな側面をチェックし、はい/いいえのスコアとそのスコアの根拠を出力します。詳細については 、「エージェント評価による品質、コスト、待機時間の評価方法 (MLflow 2)」を参照してください。
-
LLMジャッジの評価を組み合わせて、その行が「合格」(高品質である)か「不合格」(品質上の問題がある)かを示す全体的なスコアが生成されます。
- 失敗した行については、根本原因が特定されます。各根本原因は特定のLLMジャッジの評価に対応しており、そのジャッジの根拠を使用して潜在的な修正を特定できます。
-
コストとレイテンシーは、MLflowトレースから抽出されます。詳細については、コストとレイテンシーの評価方法を参照してください。
-
-
メトリクス(集計スコア): すべての入力行にわたるエージェントの品質、コスト、レイテンシをまとめた集計スコア。これには、正解率、平均トークン数、平均レイテンシなどのメトリクスが含まれます。詳細については、コストとレイテンシの評価方法と品質、コスト、レイテンシについてMLflow実行レベルでメトリクスを集計する方法を参照してください。
開発(オフライン評価)と本番運用(オンラインモニタリング)
Agent Evaluationは、開発 (オフライン) 環境と本番運用 (オンライン) 環境の間で一貫性を持つように設計されています。この設計により、開発から本番運用へのスムーズな移行が可能になり、高品質なエージェント アプリケーションを迅速に反復、評価、デプロイ、監視できます。
開発と本番運用の主な違いは、本番運用ではグラウンドトゥルースラベルがないのに対し、開発ではオプションでグラウンドトゥルースラベルを使用できる点です。 グラウンドトゥルースラベルを使用すると、Agent Evaluation は追加の品質メトリクスをコンピュートできます。
開発(オフライン)
開発では、お客様の requests と expected_responses は 評価セット から取得されます。評価セットとは、エージェントが正確に処理できるはずの代表的な入力の集合のことです。評価セットに関する詳細情報は、「評価セット (MLflow 2)」を参照してください。
responseとtraceを取得するために、エージェント評価はエージェントのコードを呼び出して、評価セットの各行に対してこれらの出力を生成できます。または、これらの出力を自分で生成し、Agent Evaluation に渡すこともできます。詳細については、「 評価ランに入力を提供する方法 」を参照してください。
本番運用(オンライン)
本番運用でのモニタリングに関する情報については、本番運用での生成AIアプリのモニタリングを参照してください。このMLflow 3の機能は、MLflow 2エクスペリメントと互換性があります。MLflow 2エクスペリメントでモニタリングを有効にするには、MLflow 3 SDKを使用し、mlflow>=3.1をインストールします。
評価セットで品質ベンチマークを確立します。
開発中の AI アプリケーション(オフライン)の品質を測定するには、評価セット、つまり代表的な質問とオプションの根拠となる回答のセットを定義する必要があります。アプリケーションにRAGワークフローのような取得ステップが含まれる場合は、応答の根拠となる補足ドキュメントを任意で提供できます。
- メトリクスの依存関係とベストプラクティスを含め、評価セットの詳細については、「評価セット (MLflow 2)」を参照してください。
- 必要なスキーマについては、Agent Evaluation 入力スキーマ (MLflow 2)を参照してください。
- 高品質な評価セットを合成的に生成する方法の詳細については、「評価セットの合成」を参照してください。
評価ラン
評価を実行する方法の詳細については、「評価の実行と結果の表示(MLflow 2)」を参照してください。Agent Evaluation は、チェーンから出力を提供するための2つのオプションをサポートしています。
- 評価ランの一部としてアプリケーションを実行できます。 アプリケーションは、評価セットの各入力に対して結果を生成します。
- アプリケーションの以前の実行からの出力を提供できます。
各オプションをいつ使用するかの詳細と説明については、「 評価ランに入力を提供する」を参照してください。
生成AIアプリケーションの品質に関する人間のフィードバックを取得する
Databricks レビュー アプリを使用すると、AI アプリケーションの品質に関するフィードバックを人間のレビュアーから簡単に収集できます。詳細については、レビュー アプリを使用して生成AI アプリの人間によるレビューを行う (MLflow 2)を参照してください。
Agent Evaluation の Geo の利用可能性
Agent Evaluation は、顧客コンテンツを処理する際に Geos を使用してデータ所在地を管理する 指定サービス です。さまざまな地域での Agent Evaluation の利用可能性について詳しくは、Databricks 指定サービスをご覧ください。
価格
価格情報については、Agent Evaluationの価格を参照してください。
LLMジャッジを支援するモデルに関する情報
- LLMジャッジは、Microsoftが運営するAzure OpenAIなどのサードパーティサービスを使用して生成AIアプリケーションを評価する場合があります。
- Azure OpenAIの場合、Databricksは不正行為モニタリングをオプトアウトしているため、プロンプトや応答はAzure OpenAIに保存されません。
- 欧州連合(EU)のワークスペースの場合、LLMジャッジはEUでホストされているモデルを使用します。他のすべてのリージョンでは、米国でホストされているモデルを使用します。
- パートナーを利用したAI機能を無効にすると、 LLMジャッジがパートナーを利用したモデルを呼び出すことができなくなります。 独自のモデルを提供することで、LLM ジャッジを引き続き使用できます。
- LLM ジャッジは、顧客が生成AIエージェント/アプリケーションを評価するのを支援することを目的としており、ジャッジ LLM アウトプットを LLMのトレーニング、改善、または微調整に使用すべきではありません。
ノートブックの例
次のノートブックは、Agent Evaluation を使用する方法を示しています。