評価 JSONL ファイルの各行には、1 つの評価テスト ケースが含まれています。 評価シナリオでは主に必要な列が決まりますが、選択したエバリュエーターにはサポート列が必要な場合があります。
| 評価シナリオ | プライマリ必須列 | 追加の列は次によって異なります |
|---|---|---|
| 既存の対話を評価する | messages |
選択した評価者。 |
| 格納されている個別の入力と出力を評価する |
query、response |
選択した評価者。 |
| モデルまたはエージェントターゲットを評価する |
messagesまたはquery列にキャプチャされた入力。Foundry が応答を生成する |
選択した評価者。 |
| シミュレートされた会話を評価する | test_case_description |
desired_num_turnsなどのオプションのシミュレーション ガイダンス。 |
追加の要件は、選択したエバリュエーターによって異なります。 たとえば、テキストの類似性エバリュエーターではground_truthが必要になる場合があり、queryとresponseが文字列である場合はグラウンドでcontextが必要になる場合があり、エージェント エバリュエーターではtool_definitionsが必要になる場合があります。 エバリュエーターの要件については、 組み込みのエバリュエーターを参照してください。
既存のトレース、応答 ID、または 生成された合成クエリ に基づく評価では、入力データセットは必要ありません。
標準列
標準列は、評価でモデルまたはエージェントの相互作用データまたは会話シミュレーションのどちらを使用するかによって異なります。
モデルとエージェントの評価列
テスト ケースごとに 1 つの対話形式 ( messages 列、または個別の query 列と response 列) を使用します。
| Column | 必要な場合 | 内容は何か |
|---|---|---|
messages |
格納されている対話またはモデルまたはエージェントのターゲット入力に messages 形式を使用する |
保存されたやり取りについては、入力メッセージと出力メッセージ。 モデルまたはエージェントターゲットの場合、Foundry がターゲットに送信するメッセージを入力して応答を生成します。 メッセージには、システム命令、会話履歴、型指定されたテキスト コンテンツ、ツール呼び出し、ツールの結果を含めることができます。 |
query |
個別のクエリ形式と応答形式の使用 |
responseスコア付けするときにコンテキストとして使用される、文字列またはメッセージ配列として提供される入力と対話履歴。 |
response |
格納された応答の評価。モデルまたはエージェントターゲットには必要ありません | 評価対象の応答。 |
ground_truth |
エバリュエーターは、出力を参照回答と比較します | 予期される応答または参照応答。 |
tool_definitions |
エバリュエーターには、エージェントで使用できるツールのスキーマが必要です | ツール名、説明、およびパラメーター スキーマ。 この列は、ほとんどの評価では省略可能です。 |
context |
特定のエバリュエーターには、個別のサポート コンテキストが必要です | 必要なコンテキストがまだメッセージで表されていない場合に、主に文字列 query と response 値で使用されるサポート情報。 |
会話シミュレーション列
| 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 行は同じままです。
詳細については、「 評価レベルの選択」を参照してください。
メッセージ構造
各メッセージには、 role と contentがあります。
content値には、文字列または型指定されたコンテンツ項目の配列を指定できます。 また、ツールの結果メッセージでは、 tool_call_id を使用して対応するツール呼び出しを識別します。
テキスト メッセージは 、OpenAI Responses メッセージ構造と一致します。
入力メッセージは input_textを使用でき、アシスタント出力では output_textを使用できます。 Foundry の評価では、この記事に示す text の短縮形と正規化された tool_call と tool_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 には、応答の評価に使用されるサポート情報が含まれています。 この列は主に、必要な情報がメッセージ履歴にまだ表されていない場合に、文字列 query と response 値で役立ちます。 この表現の詳細については、「 個別のクエリ形式と応答形式」を参照してください。
たとえば、接地エバリュエーターは、応答をサポートするソース マテリアルとして 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 は、単純な文字列ベースの query と response 行でもサポートされています。
CSV データセットの評価を参照してください。
データ マッピングが必要な場合
互換性のあるエバリュエーターがデータセット内の標準列を使用する場合は、 data_mapping を省略できます。 次の場合にマッピングを追加します。
- データセットでは、
queryではなく、questionなど、別の名前が使用されます。 - モデルまたはエージェントターゲットは実行時にテキストを生成し、エバリュエーターにはテキスト応答が必要です。 たとえば、コヒーレンスでは、
{{sample.output_text}}からマップする応答が必要です。 - エージェント ターゲットは構造化された出力を生成し、エバリュエーターにはツール呼び出しまたはその他の構造化項目が必要です。 たとえば、タスクの準拠には、
{{sample.output_items}}からマップする応答が必要です。 - CSV ファイルでは、非標準の列ヘッダーが使用されます。
実行可能な例を使用した {{item.*}} および {{sample.*}} マッピング構文については、「 エバリュエーターとデータ マッピングの設定」を参照してください。
全体的なワークフローを選択するには、「 SDK から評価を実行する」を参照してください。
次のステップ
データセットを使用する評価実行を設定する: