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