Microsoft Foundry の評価データセット スキーマ

評価 JSONL ファイルの各行には、1 つの評価テスト ケースが含まれています。 評価シナリオでは主に必要な列が決まりますが、選択したエバリュエーターにはサポート列が必要な場合があります。

評価シナリオ プライマリ必須列 追加の列は次によって異なります
既存の対話を評価する messages 選択した評価者。
格納されている個別の入力と出力を評価する queryresponse 選択した評価者。
モデルまたはエージェントターゲットを評価する messagesまたはquery列にキャプチャされた入力。Foundry が応答を生成する 選択した評価者。
シミュレートされた会話を評価する test_case_description desired_num_turnsなどのオプションのシミュレーション ガイダンス。

追加の要件は、選択したエバリュエーターによって異なります。 たとえば、テキストの類似性エバリュエーターではground_truthが必要になる場合があり、queryresponseが文字列である場合はグラウンドでcontextが必要になる場合があり、エージェント エバリュエーターではtool_definitionsが必要になる場合があります。 エバリュエーターの要件については、 組み込みのエバリュエーターを参照してください。

既存のトレース、応答 ID、または 生成された合成クエリ に基づく評価では、入力データセットは必要ありません。

標準列

標準列は、評価でモデルまたはエージェントの相互作用データまたは会話シミュレーションのどちらを使用するかによって異なります。

モデルとエージェントの評価列

テスト ケースごとに 1 つの対話形式 ( messages 列、または個別の query 列と response 列) を使用します。

Column 必要な場合 内容は何か
messages 格納されている対話またはモデルまたはエージェントのターゲット入力に messages 形式を使用する 保存されたやり取りについては、入力メッセージと出力メッセージ。 モデルまたはエージェントターゲットの場合、Foundry がターゲットに送信するメッセージを入力して応答を生成します。 メッセージには、システム命令、会話履歴、型指定されたテキスト コンテンツ、ツール呼び出し、ツールの結果を含めることができます。
query 個別のクエリ形式と応答形式の使用 responseスコア付けするときにコンテキストとして使用される、文字列またはメッセージ配列として提供される入力と対話履歴。
response 格納された応答の評価。モデルまたはエージェントターゲットには必要ありません 評価対象の応答。
ground_truth エバリュエーターは、出力を参照回答と比較します 予期される応答または参照応答。
tool_definitions エバリュエーターには、エージェントで使用できるツールのスキーマが必要です ツール名、説明、およびパラメーター スキーマ。 この列は、ほとんどの評価では省略可能です。
context 特定のエバリュエーターには、個別のサポート コンテキストが必要です 必要なコンテキストがまだメッセージで表されていない場合に、主に文字列 queryresponse 値で使用されるサポート情報。

会話シミュレーション列

Column 必須 内容は何か
test_case_description Yes シミュレーターが対処する必要があるユーザーの状況、目標、制約、および動作。
desired_num_turns No シミュレートされた会話の予想される長さのガイダンス。

メッセージの形式

messages列は配列です。 各メッセージは、ロールとその内容を識別します。 行には、1 つの交換または完全な複数ターンの会話を含めることができます。

次の実行中の例には、アカウントサポートの短い操作が含まれています。

{
  "messages": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": "What error message do you see?"},
    {"role": "user", "content": "It says my password is incorrect."},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page. If the reset email doesn't arrive, check your spam folder or contact account support."}
  ]
}

この例には格納されたエージェント応答が含まれているため、最終的なメッセージには assistant ロールがあります。 モデルまたはエージェントターゲットの場合は、userメッセージでmessages配列を終了します。 Foundry はメッセージをターゲットに送信し、次のアシスタント応答を生成し、その応答を評価します。

ターンレベル評価の場合、以前のメッセージは、スコア付けされる応答のコンテキストを提供します。 この例では、エバリュエーターは、前のメッセージをコンテキストとして使用して、最終的なパスワード リセット ガイダンスをスコア付けできます。 会話レベルの評価では、エバリュエーターは完全な対話をスコア付けします。 実行の evaluation_level 設定ではスコアリング レベルが選択されます。 messages 行は同じままです。

詳細については、「 評価レベルの選択」を参照してください。

メッセージ構造

各メッセージには、 rolecontentがあります。 content値には、文字列または型指定されたコンテンツ項目の配列を指定できます。 また、ツールの結果メッセージでは、 tool_call_id を使用して対応するツール呼び出しを識別します。

テキスト メッセージは 、OpenAI Responses メッセージ構造と一致します。 入力メッセージは input_textを使用でき、アシスタント出力では output_textを使用できます。 Foundry の評価では、この記事に示す text の短縮形と正規化された tool_calltool_result コンテンツ項目もサポートされています。

[
  {
    "role": "developer" | "system" | "user" | "assistant" | "tool",
    "tool_call_id": "string",              // For role "tool"
    "content": "string" | [                // String or content-item array
      {
        "type": "text" | "input_text" | "output_text" | "tool_call" | "tool_result",
        "text": "string",                  // For text content
        "tool_call_id": "string",          // When type is tool_call
        "name": "string",                  // Tool name for tool_call
        "arguments": { ... },              // Tool arguments for tool_call
        "tool_result": { ... }             // Result for tool_result
      }
    ]
  }
]
Role Description
developer ユーザー メッセージよりも優先されるアプリケーション命令。
system エージェントの指示。
user ユーザー メッセージと要求。
assistant ツール呼び出しを含むエージェントの応答。
tool ツールの実行結果。

コンテンツ配列を含むメッセージ

content値には、文字列ではなく、型指定されたコンテンツ項目の配列を指定することもできます。 この例では、Responses API の input_text 型と output_text 型を使用します。

{
  "messages": [
    {
      "role": "developer",
      "content": [
        {"type": "input_text", "text": "You are an account support assistant."}
      ]
    },
    {
      "role": "user",
      "content": [
        {"type": "input_text", "text": "I can't sign in to my account."}
      ]
    },
    {
      "role": "assistant",
      "content": [
        {"type": "output_text", "text": "What error message do you see?"}
      ]
    }
  ]
}

ツール呼び出しを含むメッセージ

実行中の例のこのバリエーションには、ツール呼び出しとその結果が含まれます。

{
  "messages": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": [{"type": "tool_call", "tool_call_id": "call_123", "name": "get_sign_in_guidance", "arguments": {"error": "incorrect password"}}]},
    {"role": "tool", "tool_call_id": "call_123", "content": [{"type": "tool_result", "tool_result": {"recommended_action": "password reset"}}]},
    {"role": "assistant", "content": [{"type": "text", "text": "Use the password-reset link on the sign-in page. If the reset email doesn't arrive, check your spam folder or contact account support."}]}
  ]
}

評価者ごとの列

ほとんどの評価では、主要な相互作用列のみが必要です。 選択したエバリュエーターに必要な場合にサポート列を追加します。

正解データ

ground_truth は、予期される回答または参照回答を含む文字列です。 エバリュエーターがモデルまたはエージェントの出力を既知の回答と比較するときに含めます。

{
  "messages": [
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ],
  "ground_truth": "Direct the user to reset their password from the sign-in page."
}

ツール定義

tool_definitions では、エージェントで使用できるツールについて説明します。 messages配列には、エージェントが呼び出した内容が表示されます。 tool_definitions は、エージェントが使用できるすべてのツールの名前、説明、およびパラメーター スキーマを提供します。

エバリュエーターがツールの動作と使用可能なツールを比較する必要がある場合は、この列を含めます。

{
  "messages": [
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": [{"type": "tool_call", "tool_call_id": "call_123", "name": "get_sign_in_guidance", "arguments": {"error": "incorrect password"}}]},
    {"role": "tool", "tool_call_id": "call_123", "content": [{"type": "tool_result", "tool_result": {"recommended_action": "password reset"}}]},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ],
  "tool_definitions": [
    {
      "name": "get_sign_in_guidance",
      "description": "Get troubleshooting guidance for a sign-in error.",
      "parameters": {
        "type": "object",
        "properties": {
          "error": {"type": "string"}
        },
        "required": ["error"]
      }
    }
  ]
}

完全なスキーマについては、「 ツール定義の形式」を参照してください。

Context

context には、応答の評価に使用されるサポート情報が含まれています。 この列は主に、必要な情報がメッセージ履歴にまだ表されていない場合に、文字列 queryresponse 値で役立ちます。 この表現の詳細については、「 個別のクエリ形式と応答形式」を参照してください。

たとえば、接地エバリュエーターは、応答をサポートするソース マテリアルとして context を使用できます。

{
  "query": "How can I reset my password?",
  "response": "Use the password-reset link on the sign-in page.",
  "context": "Users can reset their password from the sign-in page."
}

会話シミュレーション

シミュレーション シード (テスト ケース シナリオとも呼ばれます) は、シミュレーターがユーザーとして動作する必要がある状況を記述します。 test_case_description は唯一必要な列です。 desired_num_turns はオプションのシミュレーション ガイダンスです。

次のシードは、アカウントサインインの例を続行します。

{
  "test_case_description": "Act as a user who can't sign in and initially provides little detail. After the agent asks a clarifying question, explain that your password is being rejected. Continue until the agent gives clear password-reset guidance.",
  "desired_num_turns": 4
}

Foundry では、シミュレーターを使用してユーザーのロールを再生し、ターゲット エージェントと対話します。 次に、会話レベルの評価器が、シード行ではなくシミュレーションされた会話にスコアを付けます。

シミュレーション手順については、「会話を シミュレートする」を参照してください。 作成する代わりにシード行を生成する方法については、「 シミュレーション シード データセットの生成」を参照してください。

クエリと応答の形式を分離する

一部のエバリュエーターとワークフローでは、個別の query 列と response 列が使用されます。 この形式は引き続きサポートされます。 どちらの列にも、 messagesと同じ構造を使用する文字列またはメッセージ配列を含めることができます。

会話履歴やツール呼び出しの詳細を必要としない単純な 1 ターン テスト ケースには、文字列値を使用します。

{"query":"I can't sign in to my account.","response":"Use the password-reset link on the sign-in page."}

queryがメッセージ配列の場合は、システム命令、前のターン、ツール呼び出し、およびツールの結果を含めることができます。 エバリュエーターは、 responseスコア付けするときに、この履歴をコンテキストとして使用します。

{
  "query": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in."},
    {"role": "assistant", "content": "What error do you see?"},
    {"role": "user", "content": "It says my password is incorrect."}
  ],
  "response": [
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ]
}

文字列 query 値と response 値に個別のサポート情報が必要な場合は、 context 列を追加します。

評価実行でモデルまたはエージェントターゲットが呼び出された場合、Foundry は入力ごとに新しい応答を生成します。 行に既に格納されている response は無視されます。

CSV は、単純な文字列ベースの queryresponse 行でもサポートされています。 CSV データセットの評価を参照してください。

データ マッピングが必要な場合

互換性のあるエバリュエーターがデータセット内の標準列を使用する場合は、 data_mapping を省略できます。 次の場合にマッピングを追加します。

  • データセットでは、queryではなく、questionなど、別の名前が使用されます。
  • モデルまたはエージェントターゲットは実行時にテキストを生成し、エバリュエーターにはテキスト応答が必要です。 たとえば、コヒーレンスでは、 {{sample.output_text}}からマップする応答が必要です。
  • エージェント ターゲットは構造化された出力を生成し、エバリュエーターにはツール呼び出しまたはその他の構造化項目が必要です。 たとえば、タスクの準拠には、 {{sample.output_items}}からマップする応答が必要です。
  • CSV ファイルでは、非標準の列ヘッダーが使用されます。

実行可能な例を使用した {{item.*}} および {{sample.*}} マッピング構文については、「 エバリュエーターとデータ マッピングの設定」を参照してください。 全体的なワークフローを選択するには、「 SDK から評価を実行する」を参照してください。

次のステップ

データセットを使用する評価実行を設定する: