View a markdown version of this page

データセットスキーマ - Amazon Bedrock AgentCore

データセットスキーマ

データセットには 1 つ以上のシナリオが含まれています。各シナリオは、エージェントとの会話 (セッション) を表します。オンデマンドデータセットランナーとバッチデータセットランナーの両方が同じデータセット形式を使用します。

AgentCore SDK は 2 つのシナリオタイプをサポートしています。

  • 事前定義されたシナリオでは、手動で作成する固定のターンシーケンスを使用します。ランナーは、書き込まれたとおりにターンを再生します。

  • シミュレートされたシナリオでは、LLM-backed アクターを使用して、ペルソナと目標に基づいて動的にターンを生成します。アクタープロファイルとシミュレーション設定の詳細については、「ユーザーシミュレーション」を参照してください。

FileDatasetProvider は JSON 構造からシナリオタイプを自動検出します。 turns フィールドを持つシナリオは事前定義済みとしてロードされ、 actor_profileフィールドを持つシナリオ (および なしturns) はシミュレートされたとおりにロードされます。

事前定義されたシナリオ

事前定義されたシナリオでは、既知の入力とオプションの予想出力を使用して、固定のターンシーケンスを指定します。

シングルターンの例

各シナリオは 1 つのプロンプトを送信し、レスポンスをチェックします。

{ "scenarios": [ { "scenario_id": "math-question", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" } ], "expected_trajectory": ["calculator"], "assertions": ["Agent used the calculator tool to compute the result"] }, { "scenario_id": "weather-check", "turns": [ { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["weather"], "assertions": ["Agent used the weather tool"] } ] }

マルチターンの例

マルチターンシナリオでは、シナリオごとに複数のターンがあります。同じセッション内で順番に実行し、会話コンテキストを維持します。各ターンは独自の を持つことができexpected_responseassertionsと はセッション全体expected_trajectoryに適用されます。

{ "scenarios": [ { "scenario_id": "math-then-weather", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" }, { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["calculator", "weather"], "assertions": [ "Agent used the calculator tool for the math question", "Agent used the weather tool when asked about weather" ] } ] }

シナリオフィールド

フィールド 必要 タイプ 制約 [Description] (説明)

scenario_id

はい

String

空ではない。

シナリオの一意の識別子。

turns

はい

オブジェクトのリスト

空でないリスト

会話のターンのリスト。各ターンには input (必須) と expected_response (オプション) があります。

expected_trajectory

いいえ

文字列のリスト

予想されるツール名のシーケンス。軌道評価者 (Builtin.TrajectoryExactOrderMatchBuiltin.TrajectoryInOrderMatch、) が使用しますBuiltin.TrajectoryAnyOrderMatch

assertions

いいえ

文字列のリスト

予想される動作に関する自然言語アサーション。Builtin.GoalSuccessRate で使用されます。

metadata

いいえ

オブジェクト

シナリオの任意のキーと値のメタデータ。

ターンフィールド

フィールド 必要 タイプ 制約 [Description] (説明)

input

はい

文字列またはオブジェクト

空ではない。

このターンのためにエージェントに送信されたプロンプト。プレーン文字列 ( など"What is my balance?") または構造化オブジェクト ( など) を使用できます{"role": "user", "content": "What is my balance?"}

expected_response

いいえ

String

このターンで予想されるエージェントのレスポンス。Builtin.Correctness で使用されます。このターンによって生成されたトレースに位置的にマッピングされます。0 のマップをトレース 0 に、1 のマップをトレース 1 に変えます。

シミュレートされたシナリオ

シミュレートされたシナリオでは、アクタープロファイルと初期入力を定義します。アクターは後続のターンを動的に生成します。

{ "scenarios": [ { "scenario_id": "geography-student", "scenario_description": "A curious student asks geography questions", "actor_profile": { "traits": {"expertise": "novice", "tone": "curious"}, "context": "A student studying world geography who wants to learn about capitals", "goal": "Find out the capital cities of at least two different countries" }, "input": "Hi! I'm studying geography. Can you help me learn about world capitals?", "max_turns": 5, "assertions": [ "Agent provides accurate capital city information", "Agent is helpful and encouraging to the student" ] } ] }

シナリオフィールド

フィールド 必要 タイプ 制約 [Description] (説明)

scenario_id

はい

String

空ではない。

シナリオの一意の識別子。

actor_profile

はい

オブジェクト

context と を含める必要があります goal

(必須)、 context (goal必須)、 traits (オプション) を含むアクターのアイデンティティと目的。「ユーザーシミュレーション」を参照してください。

input

はい

文字列またはオブジェクト

空ではない。

会話を開始するためにエージェントに送信された最初のメッセージ。通常、プレーン文字列ですが、構造化オブジェクトにすることもできます。

scenario_description

いいえ

String

シナリオを説明するオプションのメタデータ。結果のシナリオを整理および識別するのに役立ちます。

max_turns

いいえ

整数

≥ 1 である必要があります

会話が停止するまでの最大ターン数。デフォルト: 10

assertions

いいえ

文字列のリスト

予想される動作に関する自然言語アサーション。Builtin.GoalSuccessRate で使用されます。

metadata

いいえ

オブジェクト

シナリオの任意のキーと値のメタデータ。

注記

会話フローが事前にわからないexpected_responseため、シミュレートされたシナリオでは、ターンごとの expected_trajectoryまたは はサポートされていません。シミュレートされたシナリオでグラウンドトゥルースassertionsに使用します。

グラウンドトゥルースマッピング

どちらのランナーも、データセットフィールドをそれらを使用する評価者に自動的にマッピングします。

評価者 Ground Truth フィールド レベル 説明

Builtin.Correctness

turns[].expected_response

トレース

エージェントのレスポンスが予想される回答とどの程度正確に一致するかを測定します。

Builtin.GoalSuccessRate

assertions

Session

エージェントの動作が自然言語アサーションを満たしているかどうかを検証します。

Builtin.TrajectoryExactOrderMatch

expected_trajectory

Session

実際のツール呼び出しシーケンスが正確に一致することを確認します。

Builtin.TrajectoryInOrderMatch

expected_trajectory

Session

予想されるツールが順番に表示され、それらの間に余分なツールがあることを確認します。

Builtin.TrajectoryAnyOrderMatch

expected_trajectory

Session

順序に関係なく、予想されるすべてのツールが存在することを確認します。

  • Ground Truth フィールドはオプションです。グラウンドトゥルースを使用しない評価者 (例: Builtin.HelpfulnessBuiltin.Faithfulness) は、セッションコンテンツのみに基づいて評価します。

  • すべてのグラウンドトゥルースフィールドを 1 つのデータセットに含めることができます。各ランナーは、関連するフィールドを適切な評価者にルーティングします。

  • グラウンドトゥルースフィールドが存在しない場合、評価者はグラウンドトゥルースフリーモードに戻ります。

グラウンドトゥルースフィールドとそれらが Evaluate API とどのように連携するかの詳細については、「グラウンドトゥルース評価」を参照してください。

インラインデータセットの構築

JSON ファイルからロードする代わりに、Python でデータセットを直接作成できます。

from bedrock_agentcore.evaluation import Dataset, PredefinedScenario, Turn dataset = Dataset( scenarios=[ PredefinedScenario( scenario_id="math-question", turns=[ Turn( input="What is 15 + 27?", expected_response="15 + 27 = 42", ), ], expected_trajectory=["calculator"], assertions=["Agent used the calculator tool"], ), PredefinedScenario( scenario_id="weather-check", turns=[ Turn(input="What's the weather?"), ], expected_trajectory=["weather"], ), ] )

または、JSON ファイルからロードします。

from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()