テストは、Copilot Agent Kit のカスタム エージェントが期待通りに反応し、動作することを確実にするために不可欠です。 この記事では、マルチターン シナリオを含むさまざまな種類のテストの作成、管理、検証方法を説明します。 Excel で一括処理を行い、テスト セットを複製することもできます。
テストの種類
エージェントを検証するために複数のテスト タイプを作成します。
| テスト タイプ | 内容 |
|---|---|
| 応答の照合 | このテストは最も単純なテスト タイプです。 エージェントの応答と期待される応答を、選択した比較演算子を使用して比較します。 デフォルトでは、完全一致 (「等しい」) が使用されます。 その他の使用可能な比較演算子は、「等しくない」、「含む」、「含まない」、「で始まる」、「で始まらない」、「で終わる」、「で終わらない」です。 |
| 添付ファイル (アダプティブ カードなど) | エージェントの添付ファイルの JSON 応答と、期待される添付ファイルの JSON (全添付ファイルの配列) を比較します。 デフォルトでは、完全一致 (「等しい」) が使用されます。 他に利用できる比較演算子として「等しくない」、「含む」、「含まない」があります。特別な比較演算子である「AI 検証」は、開発者が指定した検証手順に基づいて、生成応答と同様に言語モデルを使用してアタッチメントを検証します。 |
| トピックの照合 |
Dataverse エンリッチメント (会話トランスクリプトで強化) を構成した場合のみ利用できます。 Dataverse エンリッチメント手順が完了すると、このテストは期待されるトピック名とトリガーされたトピック名を比較します。 トピック マッチ テストは、生成オーケストレーションが有効なカスタム エージェントでマルチトピック マッチにも対応しています。 マルチトピック マッチでは、トピックはカンマ区切りで指定します。例えば、Topic1,Topic2 のようになります。 |
| 生成応答 |
AI Builder エンリッチメント (生成応答解析) が構成されている場合のみ利用できます。 大規模な言語モデルを用いて、AI 生成の回答がサンプル回答に近いか、または検証指示に従っているかを評価します。 Azure アプリケーション Insights で強化を設定すると、モデレーションや検索結果なしなどの否定的なテストもテストできます。 詳細については、テストでルーブリックを使うをご覧ください。 |
| マルチターン | マルチターン テストは、応答マッチ、添付ファイル、トピック照会、生成応答など、他のタイプのテスト ケースを 1 つ以上含むことで構成されます。 各子テストは、指定された順序で同一の会話コンテキスト内で実行されます。 マルチターン テストを使用して、シナリオのエンドツーエンド テストや、生成オーケストレーションを用いたカスタム エージェントのテストを行います。 詳細については、マルチターン テストをご覧ください。 |
| 計画検証 | このテストにより、作成者はカスタム エージェントの動的プランに必要なツールが含まれていることを検証できます。 このテスト タイプは、生成オーケストレーションが有効になっている Copilot Studio カスタム エージェント向けです。 詳細については、プラン検証のテストをご覧ください。 |
新しいテスト セットを作成する
テスト セットを使って複数のテストをグループ化できます。 テストを実行する際は、そのセット内のすべてのテストを実行するテスト セットを選択します。
- Copilot Agent Kit アプリケーションにアクセスします。
- テスト セットに移動します。
- 新しいエージェント テスト セット レコードを作成します。
- 名前を入力します。
- 保存を選択します。
新しいテストを作成する
テスト セットを作成した後、それにテストを追加します。 テスト サブグリッドから、+ 新しいエージェント テスト を選択します。
次のテーブルでこれらのフィールドについて説明します。
| 列名 | 要求済み | 説明 |
|---|---|---|
| 名前 | はい | テストの名前。 この名前は TST-001 のような内部参照 ID である場合もあります。 |
| エージェント テスト セット | はい | テスト用親テスト セット |
| テスト タイプ | はい | 利用可能な テスト タイプの 1 つです。 |
| startConversation イベントを送信する | いいえ | 有効化されると、エージェントは startConversation イベントを受け取り積極的に会話を開始し、その後テスト発話が送信されます。 この設定は、会話の開始トピックにユーザーやテスト発話に応答する前に実行しなければならないロジックが含まれている場合に、通常必要です。 |
| 応答メッセージの指定位置 | いいえ | 確信が持てない場合は値を設定しないでください。 このオプションを使用すると、複数のメッセージを送信するエージェントから特定の応答をキャプチャできます。 例えば、エージェントが最初に「こんにちは」と発言し、次に「何かお困りでしょうか?」と言った場合、2 番目のメッセージをテストしたいときは、値を 1 に設定します。 順序は 0 ベースで、最初のメッセージが 0、2 番目の応答が 1、その後も同様にインデックスされます。 |
| テスト発話 | はい | テストの一環としてエージェントに送信するメッセージ。 |
| 予想される応答 | 変動 | 応答マッチ テストの種類では必須です。 エージェントからの期待される応答。 生成応答テストの場合は、大規模言語モデルに対してサンプル回答や独自の検証指示を設定してください。 |
| 外部変数 JSON | いいえ | テストの一環としてエージェントに渡す任意の外部またはコンテキスト値の JSON レコードを記述してください。 例: { "Language": "fr" } |
| 応答を得る直前の数秒 | いいえ | ボットからの応答を評価するまでの待機秒数。 ほとんどの場合、この値は空欄のままで問題ありませんが、エージェントが API を呼び出し、応答に通常より時間がかかる場合には役立ちます。 |
| 期待される生成応答結果 | 変動 | 生成応答テスト タイプでは必須です。 回答済みまたは未回答のいずれかである必要があります。 Azure アプリケーション Insights エンリッチメントが有効な場合、モデレートまたは検索結果なしを選択できます。 |
| 期待されるトピック名 | 変動 | トピック マッチ タイプでは必須です。 トリガーされると予想されるトピックの名前。 生成オーケストレーションが有効なカスタム エージェントでは、マルチトピック マッチがサポートされています。 マルチトピック マッチの場合は、カンマ区切りリストを使用します。例: 「Topic1,Topic2」。 余分な空白を入れないでください。 マルチトピック マッチは、期待されるトピックが計画内のトピックに含まれていることを保証します。 |
| 期待されるアタッチメント JSON | 変動 | 添付ファイル (アダプティブ カードなど) のテスト タイプには必須です。 エージェントの応答に期待される完全な添付ファイル JSON 配列。 |
| 期待されるツール | 変動 | プラン検証テスト タイプの場合は必須です。 期待されるツール (ツール、アクション、接続エージェント) のカンマ区切りリスト。 余分な空白を入れないでください。 順序は関係ありません。 例: 「Weather,Climate change」 |
| しきい値 % を渡す | 変動 | プラン検証テスト タイプの場合は必須です。 テストに合格するために動的プランに含める必要がある期待ツールの割合。 割合が 100 の場合、すべての期待されるツールが動的プランに含まれている必要があります。 動的プランに追加のツールはテスト結果に影響を与えません。 |
マルチターン テスト
マルチターン テスト タイプの場合は、通常 タイプの子テストを 1 つ以上指定します。 各子テストには順序と重要度があります。 順序は、同じ会話コンテキスト (マルチターン テスト ケース内) での実行順序を定義します。 重要度は、マルチターン テストの実行を継続するために子テスト ケースが合格する必要があるかどうかを定義します。
子テストが、トピック一致や生成応答などのテスト後評価を必要とする場合、そのテストは保留中状態のままとなり、重要度の状態に関係なくテスト実行が継続されます。 クリティカルなテストのいずれかが失敗した場合、マルチターン テストの実行は停止し、その結果は失敗となります。 すべてのクリティカルな子テスト ケースが成功した場合、マルチターンの結果も成功となります。
非クリティカルな子テスト ケースを使用して、生成オーケストレーションを通じてカスタム エージェントに情報を「フィード」します。 また、応答が重要でない場合に、クリティカル テストに発展させたい場合にもこれらのテスト ケースを利用できます。
計画検証テスト
計画検証はツールの正確性に焦点を当てています。 エージェントが何を話したかを評価するのではなく、このテスト タイプでは期待されるツールが計画中に使用されたかどうかを確認します。
計画検証テストを定義する際には、以下を指定します。
- テスト発話
- 動的計画に含めるべきツールのカンマ区切りリスト
- 合格しきい値 (リストからどれだけ逸脱を許容するかを示します)
このテストは会話トランスクリプトを使用し、実際のテスト実行後にエンリッチメント処理として評価されます。
次のポイントに注意してください。
期待されるツール: ツール、アクション、接続されたエージェントをカンマ区切りのリストに含めます。 余分な空白を入れないでください。 順序は問題ではありません。
合格しきい値 %: 合格しきい値は、テストが成功するために動的計画内に含まれている必要がある期待されるツールの必要割合を指定します。
プラン検証は決定論的なテストであり、実際のツールと期待されるツールの逸脱を計算し、合格しきい値と比較します。 偏差がしきい値内であればテストは合格し、そうでなければ失敗となります。
詳細については、生成 AI でエージェントの動作を調整する を参照してください。
コネクタ認証が必要なテスト エージェント
エージェントが SharePoint や Dataverse などの外部データ ソースを使用する場合、最初の会話では通常、「接続して続行する」認証カードが表示されます。 エージェントがコネクタを呼び出すには、ユーザーが 許可 を選択する必要があります。 このフローを自動化テストで実施するために、プロンプトとユーザーの応答をマルチターン テスト内の 2 つの子テストとしてモデル化します。
注意
これはテスト セットごとに一度きりのセットアップです。 テスト ユーザーに接続が承認された後は、それ以降のテストで認証手順を繰り返す必要はありません。
マルチターン テストは 2 つの順序付けられた子テストを含みます。
| 注文 | 検査の種類 | 操作の種類 | 目的 |
|---|---|---|---|
| 1 | アタッチメント (アダプティブ カードなど) | 比較演算子 | コネクタをトリガーする発話を送信し、認証カード JSON に対してアサーションを行います。 |
| 2 | アタッチメント (アダプティブ カードなど) | アクションの呼び出し | 承認カードに 許可 を提出し、エージェントが通話を完了できるようにします。 |
テストを作成するには:
テスト セットで + 新しいエージェント テスト を選択し、名前を入力して、テスト タイプ を マルチターン に設定してから 保存 を選択します。
マルチターン テストの子グリッドで + 新しいエージェントテスト を選択し、最初の子テストを構成します。
フィールド 値 テスト タイプ アタッチメント (アダプティブ カードなど) 注文 1 テスト発話 コネクタをトリガーする発話 ( List Fourth Coffee Brandsなど)。操作の種類 比較演算子 比較演算子 次と等しい 期待されるアタッチメント JSON [](プレースホルダー — 初回実行後にこれを置き換えます)テストを保存 を選択します。
テスト セットを保存して実行します。 最初の子テストは予想通り失敗します。これは、プレースホルダー JSON が認可カードと一致しなかいためです。
テスト実行結果を開き、マルチターン子テストを選択し、アタッチメント セクションを見つけて、アタッチメント JSON をクリップボードにコピーします。
最初の子テストを編集し、コピーした JSON を 期待されるアタッチメント JSON に貼り付け、テストを保存 を選択します。
マルチターン テストの子グリッドでもう一度 + 新しいエージェントテスト を選択し、2 つ目のテストを構成します。
フィールド 値 テスト タイプ アタッチメント (アダプティブ カードなど) Order 2 操作の種類 アクションの呼び出し アダプティブ カード ペイロード {"action": "Allow", "id": "submit", "shouldAwaitUserInput": true}比較演算子 データを含む (または、アサートする応答によっては、等しい) 予想される応答 空欄のままにするか、接続が許可された後に期待するデータに基づいて設定します。 ペイロード値はステップ 4 で取得したアダプティブ カード JSON から取得されます。 コネクタ カードの識別子が異なる場合は、
actionとidフィールドを調整します。テストを保存 を選択します。
もう一度テスト セットを保存して実行します。 これで両方の子テストが合格するはずです。
このマルチターン テストが一度正常に実行されると、テスト ユーザーに対して接続が承認され、同じコネクタに対するそれ以降のテストは、通常のシングルターン テストとして作成することができます。
Excel を使用してテストを一括作成または更新する
テスト セットを作成した後、Excel を使用してテストを一括作成したり更新したりできます。
- テスト セット レコードから、サブグリッド ビューをテストからエクスポート/インポート ビューに切り替えます。
- Excel Online でエージェント テストをエクスポートするを選択します。
- 必要に応じてテストを追加・修正してください。
- 保存を選択します。
複数ターンの子テストをインポートする場合、まず実際の親マルチターン テストを作成またはインポートする必要があります。 次に、子テスト ケースをインポートします。
詳細については、Power Apps のモデル駆動型アプリにおける Excel のインポートとエクスポート を参照してください。
テストおよびテスト セットを複製する
テスト セットおよび個々のテストを複製できます。
単一のテスト ケースを複製するには、エージェント テスト レコードを開き、テスト ケースを複製するを選択します。 この操作は、場所や時間、金額などを変更してテスト ケースのバリエーションを作成する際に便利です。
テスト セット全体を複製する場合は、テスト セットのレコードを開き、コマンド バーからテスト セットを複製するを選択してください。 この操作により、テスト セットおよび配下のすべての子テストのコピーが作成されます。