Von Bedeutung
このページでは、MLflow 2 でのエージェント評価バージョン 0.22
の使用方法について説明します。 Databricks では、エージェント評価 >1.0
と統合された MLflow 3 を使用することをお勧めします。 MLflow 3 では、エージェント評価 API が mlflow
パッケージの一部になりました。
このトピックの詳細については、「 アプリケーションの評価と改善」を参照してください。
この記事では、AI アプリケーションの開発中に評価を実行し、結果を確認する方法について説明します。 デプロイされたエージェントを監視する方法については、「 エージェント フレームワーク (MLflow 2) を使用してデプロイされたアプリを監視する」を参照してください。
エージェントを評価するには、評価セットを指定する必要があります。 少なくとも、評価セットとは、キュレーションされた評価要求のセットや、エージェントのユーザーによるトレースから取得できるアプリケーションへの一連の要求のことです。 詳細については、 評価セット (MLflow 2) と エージェント評価入力スキーマ (MLflow 2) を参照してください。
評価を実行する
評価を実行するには、MLflow API の mlflow.evaluate() メソッドを使用し、model_type
に databricks-agent
を指定します。これにより、Databricks での Agent Evaluation および組み込みの AI ジャッジが有効になります。
次の例では、グローバルガイドライン AI ジャッジ 向けのグローバル対応ガイドラインのセットを指定します。これにより、応答がガイドラインに準拠していない場合に評価は失敗します。 この方法でエージェントを評価するために、要求ごとのラベルを収集する必要はありません。
import mlflow
from mlflow.deployments import get_deploy_client
# The guidelines below will be used to evaluate any response of the agent.
global_guidelines = {
"rejection": ["If the request is unrelated to Databricks, the response must should be a rejection of the request"],
"conciseness": ["If the request is related to Databricks, the response must should be concise"],
"api_code": ["If the request is related to Databricks and question about API, the response must have code"],
"professional": ["The response must be professional."]
}
eval_set = [{
"request": {"messages": [{"role": "user", "content": "What is the difference between reduceByKey and groupByKey in Databricks Spark?"}]}
}, {
"request": "What is the weather today?",
}]
# Define a very simple system-prompt agent.
@mlflow.trace(span_type="AGENT")
def llama3_agent(messages):
SYSTEM_PROMPT = """
You are a chatbot that answers questions about Databricks.
For requests unrelated to Databricks, reject the request.
"""
return get_deploy_client("databricks").predict(
endpoint="databricks-meta-llama-3-3-70b-instruct",
inputs={"messages": [{"role": "system", "content": SYSTEM_PROMPT}, *messages]}
)
# Evaluate the Agent with the evaluation set and log it to the MLFlow run "system_prompt_v0".
with mlflow.start_run(run_name="system_prompt_v0") as run:
mlflow.evaluate(
data=eval_set,
model=lambda request: llama3_agent(**request),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": global_guidelines
}
}
)
結果は、MLflow 実行ページの [ トレース ] タブで使用できます。
この例では、グラウンドトゥルースが不要なジャッジとして Guideline adherence、Relevance to query、Safety を実行します。
取得コンポーネントを利用したエージェントを使用する場合は、ジャッジとして Groundedness、Chunk relevance が実行されます。
mlflow.evaluate()
では、各評価レコードの待機時間とコスト メトリックも計算され、特定の実行のすべての入力にわたって結果が集計されます。 これらは評価結果と呼ばれます。 評価結果は、評価実行とともに MLflow 実行に記録され、モデル パラメーターなど他のコマンドで記録された情報と一緒に保存されます。 MLflow 実行の外部で mlflow.evaluate()
を呼び出すと、新しい実行が作成されます。
グラウンドトゥルースを用いた評価
次の例では、行ごとにグラウンドトゥルースとして expected_facts
と guidelines
を指定し、それぞれが correctness ジャッジと guidelines ジャッジを実行します。 各評価は行ごとのグラウンドトゥルース ラベルを使用して個別に処理されます。
%pip install databricks-agents
dbutils.library.restartPython()
import mlflow
from mlflow.types.llm import ChatCompletionResponse, ChatCompletionRequest
from mlflow.deployments import get_deploy_client
import dataclasses
eval_set = [{
"request": "What is the difference between reduceByKey and groupByKey in Databricks Spark?",
"expected_facts": [
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
],
"guidelines": ["The response must be concice and show a code snippet."]
}, {
"request": "What is the weather today?",
"guidelines": ["The response must reject the request."]
}]
# Define a very simple system-prompt agent.
@mlflow.trace(span_type="AGENT")
def llama3_agent(messages):
SYSTEM_PROMPT = """
You are a chatbot that answers questions about Databricks.
For requests unrelated to Databricks, reject the request.
"""
return get_deploy_client("databricks").predict(
endpoint="databricks-meta-llama-3-3-70b-instruct",
inputs={"messages": [{"role": "system", "content": SYSTEM_PROMPT}, *messages]}
)
# Evaluate the agent with the evaluation set and log it to the MLFlow run "system_prompt_v0".
with mlflow.start_run(run_name="system_prompt_v0") as run:
mlflow.evaluate(
data=eval_set,
model=lambda request: llama3_agent(**request),
model_type="databricks-agent"
)
この例では、次に加えて、上記と同じジャッジを実行します。正確性、関連性、安全
取得コンポーネントを利用したエージェントを使用する場合は、ジャッジとして Context sufficiency が実行されます。
要件
Azure AI 支援機能はワークスペースで有効にしておく必要があります。
評価実行に入力を提供する
評価実行には、以下の 2 通りの入力方法があります。
事前に生成された出力を提供する 既に本番環境でデプロイされているアプリケーションの出力を評価する場合や、異なる評価構成間で結果を比較する場合に推奨される方法です。
この方法では、以下のコード例のように評価セットを指定します。 評価セットには事前に生成された出力を含める必要があります。 詳細な例については、「例: 事前生成された出力を Agent Evaluation に渡す方法」を参照してください。
evaluation_results = mlflow.evaluate( data=eval_set_with_chain_outputs_df, # pandas DataFrame with the evaluation set and application outputs model_type="databricks-agent", )
アプリケーションを引数として渡す
mlflow.evaluate()
は、評価セット内の各入力に対してアプリケーションを呼び出し、生成された出力ごとに品質評価とその他のメトリックを報告します。 この方法は、MLflow Tracing を有効にした MLflow でアプリケーションをログに記録している場合や、ノートブック内でアプリケーションを Python 関数として実装している場合に推奨されます。 Databricks 以外で開発・デプロイされたアプリケーションには推奨されません。この方法では、次のコードに示すように、評価セットとアプリケーションを関数呼び出しで指定します。 詳細な例については、「アプリケーションを Agent Evaluation に渡す方法」を参照してください。
evaluation_results = mlflow.evaluate( data=eval_set_df, # pandas DataFrame containing just the evaluation set model=model, # Reference to the MLflow model that represents the application model_type="databricks-agent", )
評価セット スキーマの詳細については、 エージェント評価入力スキーマ (MLflow 2) を参照してください。
評価結果の出力
Agent Evaluation の出力は、mlflow.evaluate()
からデータフレームとして返され、また MLflow 実行にも記録されます。 出力結果はノートブック内、または該当する MLflow 実行ページで確認できます。
ノートブックで出力を確認する
次のコードは、ノートブックから評価実行結果を確認する方法の例を示しています。
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
###
# Run evaluation
###
evaluation_results = mlflow.evaluate(..., model_type="databricks-agent")
###
# Access aggregated evaluation results across the entire evaluation set
###
results_as_dict = evaluation_results.metrics
results_as_pd_df = pd.DataFrame([evaluation_results.metrics])
# Sample usage
print(f"The percentage of generated responses that are grounded: {results_as_dict['response/llm_judged/groundedness/percentage']}")
###
# Access data about each question in the evaluation set
###
per_question_results_df = evaluation_results.tables['eval_results']
# Show information about responses that are not grounded
per_question_results_df[per_question_results_df["response/llm_judged/groundedness/rating"] == "no"].display()
per_question_results_df
データフレームには、入力スキーマのすべての列と、リクエストごとの評価結果が含まれています。 計算結果の詳細については、 エージェント評価 (MLflow 2) による品質、コスト、待機時間の評価方法に関するページを参照してください。
MLflow UI で出力を確認する
評価結果は MLflow UI でも確認できます。 MLflow UI にアクセスするには、ノートブックの右側のサイドバーにある をクリックして、対応する実行を選択するか、実行したノートブック セルのセル結果に表示されるリンクをクリックします。
単一の実行結果を確認する
このセクションでは、個別の実行の評価結果を確認する方法について説明します。 複数の実行結果を比較する場合は、「複数の実行結果を比較する」を参照してください。
LLM ジャッジによる品質評価の概要
リクエストごとのジャッジ評価は databricks-agents
バージョン 0.3.0 以上で利用できます。
評価セット内の各要求の LLM 判定品質の概要を表示するには、[MLflow 実行] ページの [ トレース ] タブをクリックします。
)
この概要では、要求ごとに異なるジャッジの評価と、これらの評価に基づく各要求の品質合格/失敗状態を示します。
詳細については、テーブル内の行をクリックして、その要求の詳細ページを表示します。 詳細ページから、[ 詳細なトレース ビューの表示] をクリックできます。
評価セット全体の集計結果
評価セット全体の集計結果を確認するには [概要] タブ (数値) または [モデルのメトリック] タブ (グラフ) をクリックします。
複数の実行結果を比較する
エージェント アプリケーションが変更にどのように応答するかを確認するには、実行間で評価結果を比較することが重要です。 結果を比較することで、変更が品質に良い影響を与えているか、または動作の変化をトラブルシュートできるかを確認できます。
MLflow 実験ページを使用して、実行間で結果を比較します。 [実験] ページにアクセスするには、ノートブックの右側のサイドバーにある実験アイコン [ をクリックするか、
mlflow.evaluate()
実行したノートブック セルのセルの結果に表示されるリンクをクリックします。
リクエストごとの結果を複数実行で比較する
実行全体で個々の要求のデータを比較するには、次のスクリーンショットに示すアーティファクト評価ビュー アイコンをクリックします。 テーブルには評価セット内の各質問が表示されます。 ドロップダウン メニューを使用して表示する列を選択します。 セルをクリックすると、その内容全体が表示されます。
集計結果を複数実行で比較する
次のスクリーンショットに示すように、実行または異なる実行間で集計された結果を比較するには、グラフ ビュー アイコンをクリックします。 選択した実行の集計結果を視覚化し、過去の実行と比較することができます。
実行されるジャッジの種類
既定では、Mosaic AI Agent Evaluation は各評価レコードに対して、そのレコードに含まれる情報に最も適したジャッジのサブセットを適用します。 具体的な内容は次のとおりです。
- レコードにグラウンドトゥルースの応答が含まれている場合、Agent Evaluation は
context_sufficiency
、groundedness
、correctness
、safety
、guideline_adherence
の各ジャッジを適用します。 - レコードにグラウンドトゥルースの応答が含まれていない場合、Agent Evaluation は
chunk_relevance
、groundedness
、relevance_to_query
、safety
、guideline_adherence
の各ジャッジを適用します。
詳細については、以下を参照してください。
LLMジャッジの信頼と安全に関する情報については、LLMのジャッジ を推進するモデルに関する情報を参照してください。
例: アプリケーションを Agent Evaluation に渡す方法
mlflow_evaluate()
にアプリケーションを渡すには、model
引数を使用します。 model
引数でアプリケーションを渡す方法は 5 つあります。
- Unity Catalog に登録されたモデル
- 現在の MLflow 実験でログに記録された MLflow モデル
- ノートブックで読み込んだ PyFunc モデル
- ノートブック内のローカル関数
- デプロイされたエージェント エンドポイント
各オプションのコード例は以下のセクションを参照してください。
方法 1. Unity Catalog に登録されたモデル
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "models:/catalog.schema.model_name/1" # 1 is the version number
model_type="databricks-agent",
)
方法 2. 現在の MLflow 実験でログに記録された MLflow モデル
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
# In the following lines, `6b69501828264f9s9a64eff825371711` is the run_id, and `chain` is the artifact_path that was
# passed with mlflow.xxx.log_model(...).
# If you called model_info = mlflow.langchain.log_model() or mlflow.pyfunc.log_model(), you can access this value using `model_info.model_uri`.
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "runs:/6b69501828264f9s9a64eff825371711/chain"
model_type="databricks-agent",
)
方法 3. ノートブックで読み込んだ PyFunc モデル
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = mlflow.pyfunc.load_model(...)
model_type="databricks-agent",
)
オプション 4: ノートブック内のローカル関数
この関数は以下の形式の入力を受け取ります。
{
"messages": [
{
"role": "user",
"content": "What is MLflow?",
}
],
...
}
この関数は、プレーン文字列またはシリアル化可能なディクショナリ (たとえば、 Dict[str, Any]
) の値を返す必要があります。 組み込みのジャッジで最良の結果を得るには、 ChatCompletionResponse
などのチャット形式を使用することをお勧めします。 例えば次が挙げられます。
{
"choices": [
{
"message": {
"role": "assistant",
"content": "MLflow is a machine learning toolkit.",
},
...
}
],
...,
}
次の例では、ローカル関数で基盤モデルのエンドポイントをラップし、評価を実行しています。
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
def model(model_input):
client = mlflow.deployments.get_deploy_client("databricks")
return client.predict(endpoint="endpoints:/databricks-meta-llama-3-1-405b-instruct", inputs={"messages": model_input["messages"]})
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = model
model_type="databricks-agent",
)
方法 5. デプロイされたエージェント エンドポイント
このオプションは、databricks.agents.deploy
を使用してデプロイされ、databricks-agents
SDK バージョン 0.8.0
以上のエージェント エンドポイントでのみ動作します。 基盤モデルや古い SDK バージョンを使用する場合は、オプション 4 を使用してローカル関数でモデルをラップしてください。
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
# In the following lines, `endpoint-name-of-your-agent` is the name of the agent endpoint.
evaluation_results = mlflow.evaluate(
data=eval_set_df, # pandas DataFrame with just the evaluation set
model = "endpoints:/endpoint-name-of-your-agent"
model_type="databricks-agent",
)
mlflow_evaluate()
呼び出しでアプリケーションを渡す場合の評価セットの指定方法
次のコードで、data
は評価セットを含む pandas DataFrame です。 ここでは簡単な例を示しています。 詳細については、「入力スキーマ」を参照してください。
# You do not have to start from a dictionary - you can use any existing pandas or Spark DataFrame with this schema.
# Minimal evaluation set
bare_minimum_eval_set_schema = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
}]
# Complete evaluation set
complete_eval_set_schema = [
{
"request_id": "your-request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
# In `expected_retrieved_context`, `content` is optional, and does not provide any additional functionality.
"content": "Answer segment 1 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_1",
},
{
"content": "Answer segment 2 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_2",
},
],
"expected_response": "There's no significant difference.",
}]
# Convert dictionary to a pandas DataFrame
eval_set_df = pd.DataFrame(bare_minimum_eval_set_schema)
# Use a Spark DataFrame
import numpy as np
spark_df = spark.table("catalog.schema.table") # or any other way to get a Spark DataFrame
eval_set_df = spark_df.toPandas()
例: 事前に生成された出力を Agent Evaluation に渡す方法
このセクションでは、mlflow_evaluate()
呼び出しで事前に生成された出力を渡す方法について説明します。 必要な評価セット スキーマについては、 エージェント評価入力スキーマ (MLflow 2) を参照してください。
次のコードでは、data
はアプリケーションによって生成された出力を含む評価セットの pandas DataFrame です。 ここでは簡単な例を示しています。 詳細については、「入力スキーマ」を参照してください。
%pip install databricks-agents pandas
dbutils.library.restartPython()
import mlflow
import pandas as pd
evaluation_results = mlflow.evaluate(
data=eval_set_with_app_outputs_df, # pandas DataFrame with the evaluation set and application outputs
model_type="databricks-agent",
)
# You do not have to start from a dictionary - you can use any existing pandas or Spark DataFrame with this schema.
# Minimum required input
bare_minimum_input_schema = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
}]
# Input including optional arguments
complete_input_schema = [
{
"request_id": "your-request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
# In `expected_retrieved_context`, `content` is optional, and does not provide any additional functionality.
"content": "Answer segment 1 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_1",
},
{
"content": "Answer segment 2 related to What is the difference between reduceByKey and groupByKey in Spark?",
"doc_uri": "doc_uri_2_2",
},
],
"expected_response": "There's no significant difference.",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"retrieved_context": [
{
# In `retrieved_context`, `content` is optional. If provided, the Databricks Context Relevance LLM Judge is executed to check the `content`'s relevance to the `request`.
"content": "reduceByKey reduces the amount of data shuffled by merging values before shuffling.",
"doc_uri": "doc_uri_2_1",
},
{
"content": "groupByKey may lead to inefficient data shuffling due to sending all values across the network.",
"doc_uri": "doc_uri_6_extra",
},
],
# You can also just pass an array of guidelines directly to guidelines, but Databricks recommends naming them with a dictionary.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}]
# Convert dictionary to a pandas DataFrame
eval_set_with_app_outputs_df = pd.DataFrame(bare_minimum_input_schema)
# Use a Spark DataFrame
import numpy as np
spark_df = spark.table("catalog.schema.table") # or any other way to get a Spark DataFrame
eval_set_with_app_outputs_df = spark_df.toPandas()
例: LangGraph の応答を処理するカスタム関数の使用
LangGraph エージェント (特にチャット機能を持つもの) は、1 回の推論呼び出しで複数のメッセージを返すことがあります。 エージェントの応答を、Agent Evaluation がサポートする形式に変換するのはユーザーの責任です。
この場合、カスタム関数を使用して応答を処理する方法があります。 次の例では、LangGraph モデルから最後のチャット メッセージを抽出するカスタム関数を示しています。 この関数は mlflow.evaluate()
で使用されて、単一の文字列応答を返し、ground_truth
列と比較できるようにします。
このコード例は、次のことを前提としています。
- このモデルは、{“messages”: [{“role”: “user”, “content”: “hello”}]} の形式の入力を受け取ります。
- このモデルは、文字列のリストを [“response 1”, “response 2”] の形式で返します。
次のコードでは、結合した応答を "response 1nresponse2" の形式でジャッジに送信します。
import mlflow
import pandas as pd
from typing import List
loaded_model = mlflow.langchain.load_model(model_uri)
eval_data = pd.DataFrame(
{
"inputs": [
"What is MLflow?",
"What is Spark?",
],
"expected_response": [
"MLflow is an open-source platform for managing the end-to-end machine learning (ML) lifecycle. It was developed by Databricks, a company that specializes in big data and machine learning solutions. MLflow is designed to address the challenges that data scientists and machine learning engineers face when developing, training, and deploying machine learning models.",
"Apache Spark is an open-source, distributed computing system designed for big data processing and analytics. It was developed in response to limitations of the Hadoop MapReduce computing model, offering improvements in speed and ease of use. Spark provides libraries for various tasks such as data ingestion, processing, and analysis through its components like Spark SQL for structured data, Spark Streaming for real-time data processing, and MLlib for machine learning tasks",
],
}
)
def custom_langgraph_wrapper(model_input):
predictions = loaded_model.invoke({"messages": model_input["messages"]})
# Assuming `predictions` is a list of strings
return predictions.join("\n")
with mlflow.start_run() as run:
results = mlflow.evaluate(
custom_langgraph_wrapper, # Pass the function defined above
data=eval_data,
model_type="databricks-agent",
)
print(results.metrics)
メトリックが表示されたダッシュボードを作成する
エージェントの品質改善を繰り返している際に、品質が時間とともにどのように向上したかを示すダッシュボードをステークホルダーと共有したくなることがあります。 MLflow の評価実行からメトリックを抽出し、値を Delta テーブルに保存し、ダッシュボードを作成することができます。
次の例は、最新の評価実行からメトリック値を抽出してノートブック内に保存する方法を示しています。
uc_catalog_name = "catalog"
uc_schema_name = "schema"
table_name = "results"
eval_results = mlflow.evaluate(
model=logged_agent_info.model_uri, # use the logged Agent
data=evaluation_set, # Run the logged Agent for all queries defined above
model_type="databricks-agent", # use Agent Evaluation
)
# The `append_metrics_to_table function` is defined below
append_metrics_to_table("<identifier-for-table>", eval_results.metrics, f"{uc_catalog_name}.{uc_schema_name}.{table_name}")
次の例は、MLflow 実験で保存した過去の実行からメトリック値を抽出して保存する方法を示しています。
import pandas as pd
def get_mlflow_run(experiment_name, run_name):
runs = mlflow.search_runs(experiment_names=[experiment_name], filter_string=f"run_name = '{run_name}'", output_format="list")
if len(runs) != 1:
raise ValueError(f"Found {len(runs)} runs with name {run_name}. {run_name} must identify a single run. Alternatively, you can adjust this code to search for a run based on `run_id`")
return runs[0]
run = get_mlflow_run(experiment_name ="/Users/<user_name>/db_docs_mlflow_experiment", run_name="evaluation__2024-10-09_02:27:17_AM")
# The `append_metrics_to_table` function is defined below
append_metrics_to_table("<identifier-for-table>", run.data.metrics, f"{uc_catalog_name}.{uc_schema_name}.{table_name}")
このデータを使用して、ダッシュボードを作成できます。
次のコードは、前述の例で使用した append_metrics_to_table
関数を定義しています。
# Definition of `append_metrics_to_table`
def append_metrics_to_table(run_name, mlflow_metrics, delta_table_name):
data = mlflow_metrics.copy()
# Add identifying run_name and timestamp
data["run_name"] = run_name
data["timestamp"] = pd.Timestamp.now()
# Remove metrics with error counts
data = {k: v for k, v in mlflow_metrics.items() if "error_count" not in k}
# Convert to a Spark DataFrame(
metrics_df = pd.DataFrame([data])
metrics_df_spark = spark.createDataFrame(metrics_df)
# Append to the Delta table
metrics_df_spark.write.mode("append").saveAsTable(delta_table_name)
LLM ジャッジを支えるモデルに関する情報
- LLM ジャッジは、Microsoft が運営する Azure OpenAI を含むサードパーティ サービスを使用して、生成 AI アプリケーションを評価する場合があります。
- Azure OpenAI については、Databricks は Abuse Monitoring (不正使用の監視) をオプトアウトしているため、プロンプトや応答は Azure OpenAI に保存されません。
- 欧州連合 (EU) ワークスペースでは、LLM ジャッジは EU 内でホストされているモデルを使用します。 その他のリージョンでは、米国でホストされているモデルが使用されます。
- Azure AI 支援機能を無効にすると、LLM ジャッジは Azure AI モデルを呼び出せなくなります。
- LLM ジャッジは、お客様が GenAI エージェント/アプリケーションを評価するのを支援することを目的としています。LLM ジャッジの出力は、LLM のトレーニング、改善、微調整には使用しないでください。