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

カスタムジャッジ

MLflow カスタムジャッジは LLM ベースのスコアラーであり、これを使用することで、自然言語でエージェント向けの複雑でニュアンスのあるスコアリングガイドラインを定義できます。

MLflow組み込みLLMジャッジは一般的な品質ディメンションの優れた出発点を提供しますが、 make_judge()を使用して作成されたカスタム ジャッジでは評価基準を完全に制御できます。

プロンプトとテンプレート変数

ジャッジを作成するには、エージェントの品質を評価する方法についての自然言語の指示を含むプロンプトを提供します。make_judge() 、エージェントの入力、出力、予想される出力または動作、さらには完全なトレースにアクセスするためのテンプレート変数を受け入れます。

指示には少なくとも 1 つのテンプレート変数を含める必要がありますが、すべてを使用する必要はありません。

  • {{ inputs }} - エージェントに提供される入力データ
  • {{ outputs }} - エージェントによって生成された出力データ
  • {{ expectations }} - グラウンドトゥルースまたは期待される結果
  • {{ trace }} - エージェントの完全な実行トレース

許可される変数はこれらだけです。{{ question }}のようなカスタム変数は、一貫した動作を確保し、テンプレート インジェクションの問題を防ぐために検証エラーをスローします。

フィールドベースのジャッジ

最もシンプルなカスタム ジャッジは、リクエスト ({{ inputs }})、エージェントのレスポンス ({{ outputs }})、およびグラウンド トゥルースがある場合は期待される回答 ({{ expectations }}) というフィールドから、単一のインタラクションを評価します。これらを使用して、エージェントの内部ステップを確認することなくレスポンスの品質を評価します。

次の例では、応答が期待される答えと一致するかどうかをチェックするジャッジを定義しています。

Python
from mlflow.genai.judges import make_judge
from typing import Literal

# Field-based judge: compare the response to the expected answer
correctness_judge = make_judge(
name="answer_correctness",
instructions=(
"Given the request in {{ inputs }}, decide whether the response in "
"{{ outputs }} matches the expected answer in {{ expectations }}.\n\n"
"Return 'correct' only if the response conveys the same facts as the "
"expected answer. Otherwise, return 'incorrect'."
),
feedback_value_type=Literal["correct", "incorrect"],
)

トレースベースのジャッジとは異なり、フィールドベースのジャッジでは model を指定する必要はありません。defaultのジャッジモデルで実行されます。グラウンド トゥルースがない場合は {{ expectations }} を省略します (たとえば、入力と出力のみからトーンやフォーマットをスコアリングする場合など)。

トレースベースのジャッジ

トレースベースのジャッジは実行トレースを分析して、エージェントの実行中に何が起こったかを理解します。モデル コンテキスト プロトコル (MCP) ツールを使用してトレースを自律的に探索し、次の操作を実行できます。

  • ツールの使用パターンを検証する
  • パフォーマンスのボトルネックを特定する
  • 実行失敗の調査
  • 複数ステップのワークフローを検証する

次の例では、トレースを分析してツール呼び出しの正確性を評価するジャッジを定義します。

Python
from mlflow.genai.judges import make_judge
from typing import Literal

# Agent judge for tool calling correctness
tool_usage_judge = make_judge(
name="tool_usage_validator",
instructions=(
"Analyze the {{ trace }} to verify correct tool usage.\n\n"
"Check that the agent selected appropriate tools for the user's request "
"and called them with correct parameters."
),
feedback_value_type=Literal["correct", "incorrect"],
model="databricks:/databricks-gpt-5-mini" # Required for trace-based judges
)

トレースベースのジャッジが完全なトレースを分析するには、 make_judge()model引数を指定する必要があります。

完全なチュートリアルについては、 make_judge()を使用してカスタム ジャッジを作成する」を参照してください。

トレースベースのジャッジのためのモデル要件

トレースベースのジャッジには、トレース分析が可能なモデルが必要です。このモデルは以下によって提供されます:

推奨モデル:

  • databricks:/databricks-gpt-5-mini
  • databricks:/databricks-gpt-5
  • databricks:/databricks-gpt-oss-120b
  • databricks:/databricks-claude-opus-4-5

ジャッジへの指示書作成のベストプラクティス

予想される出力形式を具体的に指定します。指示には、ジャッジが返送すべき形式を明確に指定する必要があります。

  • カテゴリ応答 : 特定の値をリストします (例: 'fully_resolved'、'partially_resolved'、'needs_follow_up')
  • Boolean応答 : ジャッジがtrueを返す必要があることを明示的に指定するか、 false
  • 数値スコア : スコアの範囲と各スコアの意味を指定します

複雑な評価を分解します。複雑な評価タスクの場合は、指示を明確なセクションに構造化します。

  • 何を評価するか
  • どのような情報を調べるか
  • どのように判断するか
  • 返される形式

ジャッジを人間の専門家と連携させる

ベースジャッジは出発点となります。アプリケーションの出力に関する専門家のフィードバックを収集するにつれて、LLM ジャッジをそのフィードバックに合わせて調整し、ジャッジの精度をさらに向上させることができます。「LLM ジャッジを人間のフィードバックに合わせる」を参照してください。

次のステップ

標準のジャッジとトレースベースのジャッジの両方を紹介する実践的なチュートリアルについては、「カスタム ジャッジの作成」を参照してください。

次のステップ: コードベースのスコアラー