デプロイされたモデル、プロンプト エージェント、またはホストされているエージェントにテスト クエリを送信し、実行時に生成された応答を評価します。
前提条件
- クラウド評価の前提条件とクライアントのセットアップを完了します。
- 入力クエリの JSONL または CSV データセット。
- デプロイされたモデル、プロンプト エージェント、またはターゲットとして使用するホステッド エージェント。
この例では、「SDK クライアントのセットアップ」で構成された SDK クライアントを使用します。
モデル ターゲットを評価する
実行時にデプロイされたモデルにクエリを送信します。
azure_ai_target_completions データ ソースの種類とazure_ai_modelターゲットを使用して、応答を評価します。 入力データにはクエリが含まれています。 モデルによって応答が生成され、評価されます。
Important
開始する前に、 クライアントのセットアップ を完了し、 入力データを準備します。
Note
モデル ルーターをターゲット モデルとして使用できます。 モデル ルーターは、評価ターゲットとして のみ サポートされます。 他の評価機能のモデルとして選択することはできません。
メッセージ テンプレートとターゲットを定義する
input_messages テンプレートは、クエリをモデルに送信する方法を制御します。 入力データからフィールドを参照するには、 {{item.query}} を使用します。 評価するモデルと省略可能なサンプリング パラメーターを指定します。
input_messages = {
"type": "template",
"template": [
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.query}}"
}
}
]
}
target = {
"type": "azure_ai_model",
"model": "gpt-5-mini",
"sampling_params": {
"top_p": 1.0,
"max_completion_tokens": 2048,
},
}
エバリュエーターとデータ マッピングを設定する
モデルが実行時に応答を生成する場合は、{{sample.output_text}}のdata_mappingを使用してモデルの出力を参照します。 入力データからフィールドを参照するには、 {{item.field}} を使用します。
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"query": {"type": "string"},
},
"required": ["query"],
},
include_sample_schema=True,
)
testing_criteria = [
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="coherence",
evaluator_name="builtin.coherence",
initialization_parameters={"model": model_deployment_name},
data_mapping={
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
),
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="violence",
evaluator_name="builtin.violence",
data_mapping={
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
),
]
評価を作成して実行する
eval_object = openai_client.evals.create(
name="Model Target Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": data_id,
},
"input_messages": input_messages,
"target": target,
}
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="model-target-evaluation",
data_source=data_source,
)
実行可能な完全な例については、GitHubの sample_model_evaluation.py を参照してください。 完了するまでポーリングして結果を解釈するには、クラウド評価の結果を取得するを参照してください。
ヒント
別の評価実行を追加するには、同じコードを使用します。
エージェントのターゲットを評価する
実行時に Foundry エージェントにクエリを送信し、azure_ai_target_completionsターゲットでazure_ai_agentデータ ソースの種類を使用して応答を評価します。 このシナリオは、 プロンプト エージェント と ホステッド エージェントの両方で機能します。
Important
開始する前に、 クライアントのセットアップ を完了し、 入力データを準備します。
ヒント
応答プロトコルを使用するホスト型エージェントは、次に示すのと同じコード サンプルで動作します。 呼び出しプロトコルを使用するホステッド エージェントの場合、 input_messages 形式は異なります。 詳細については、 ホストされるエージェント呼び出しプロトコル を参照してください。
メッセージ テンプレートとターゲットを定義する
input_messages テンプレートは、エージェントにクエリを送信する方法を制御します。 入力データからフィールドを参照するには、 {{item.query}} を使用します。 名前で評価するエージェントを指定します。
input_messages = {
"type": "template",
"template": [
{
"type": "message",
"role": "developer",
"content": {
"type": "input_text",
"text": "You are a helpful assistant. Answer clearly and safely."
}
},
{
"type": "message",
"role": "user",
"content": {
"type": "input_text",
"text": "{{item.query}}"
}
}
]
}
target = {
"type": "azure_ai_agent",
"name": "my-agent",
"version": "1" # Optional. Uses latest version if omitted.
}
エバリュエーターとデータ マッピングを設定する
エージェントが実行時に応答を生成する場合は、{{sample.*}}data_mapping変数を使用してエージェントの出力を参照します。
| 変数 | 説明 | 用途 |
|---|---|---|
{{sample.output_text}} |
エージェントのプレーン テキスト応答。 | 文字列応答を期待するエバリュエーター (たとえば、 coherence、 violence)。 |
{{sample.output_items}} |
ツール呼び出しを含む、エージェントの構造化された JSON 出力。 | 完全な対話コンテキスト (たとえば、 task_adherence) を必要とするエバリュエーター。 |
{{item.field}} |
入力データのフィールド。 |
queryやground_truthなどの入力フィールド。 |
ヒント
query フィールドには、システム メッセージや会話履歴など、構造化された JSON を含めることができます。
task_adherenceなどの一部のエージェント エバリュエーターは、より正確なスコア付けにこのコンテキストを使用します。 クエリの書式設定の詳細については、 エージェント エバリュエーターを参照してください。
data_source_config = DataSourceConfigCustom(
type="custom",
item_schema={
"type": "object",
"properties": {
"query": {"type": "string"},
},
"required": ["query"],
},
include_sample_schema=True,
)
testing_criteria = [
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="coherence",
evaluator_name="builtin.coherence",
initialization_parameters={"model": model_deployment_name},
data_mapping={
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
),
TestingCriterionAzureAIEvaluator(
type="azure_ai_evaluator",
name="violence",
evaluator_name="builtin.violence",
data_mapping={
"query": "{{item.query}}",
"response": "{{sample.output_text}}",
},
),
]
評価を作成して実行する
eval_object = openai_client.evals.create(
name="Agent Target Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": data_id,
},
"input_messages": input_messages,
"target": target,
}
agent_eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="agent-target-evaluation",
data_source=data_source,
)
実行可能な完全な例については、GitHubのsample_agent_evaluation.pyを参照してください。 完了するまでポーリングして結果を解釈するには、クラウド評価の結果を取得するを参照してください。
ホストされるエージェント呼び出しプロトコル
呼び出しプロトコルを使用するホストエージェントは、同じazure_ai_agentターゲットの種類をサポートしますが、フリーフォームのinput_messages形式を使用します。 構造化されたテンプレート形式の代わりに、エージェントの /invocations 要求本文に直接マップする JSON オブジェクトを指定します。
{{item.*}}プレースホルダーを使用して、入力データのフィールドを置き換えます。
ホストされるエージェントが応答プロトコルと呼び出しプロトコルの両方をサポートしている場合、サービスは既定で呼び出しプロトコルを使用します。
メッセージの形式とターゲットを定義する
input_messages = {"message": "{{item.query}}"}
target = {
"type": "azure_ai_agent",
"name": "my-hosted-agent", # Replace with your hosted agent name
"version": "1",
}
評価を作成して実行する
eval_object = openai_client.evals.create(
name="Hosted Agent Invocations Evaluation",
data_source_config=data_source_config,
testing_criteria=testing_criteria,
)
data_source = {
"type": "azure_ai_target_completions",
"source": {
"type": "file_id",
"id": data_id,
},
"input_messages": input_messages,
"target": target,
}
eval_run = openai_client.evals.runs.create(
eval_id=eval_object.id,
name="hosted-agent-invocations-evaluation",
data_source=data_source,
)
エバリュエーターのセットアップとデータ マッピングは、 プロンプト エージェントの評価の場合と同じです。 エージェントのテキスト応答には {{sample.output_text}} を使用し、ツール呼び出しを含む完全な構造化出力には {{sample.output_items}} を使用します。