Copilot Studioで作成したエージェントの自動テスト(評価機能)が可能になったので、試してみた。
これまで手動でやっていた回答精度の確認を、テストセット(CSV)を使って一括で行えるようになったのがデカイ。
Copilot Studioの品質を担保する、AIエージェント開発における自動テストの重要性
AIエージェント開発において、品質担保は非常に重要なテーマ。
これまでのルールベースの開発とは違って、生成AIには回答のゆらぎやハルシネーションが常につきまとうためで、一度のミスでユーザーに「だからAIは。。。」みたいなネガティブな印象を、持たれがち。
そこで、厳格なテストプロセスが重要なんだけど、自然言語による無限に近い入力パターンを、人間が手動で全てチェックし続けるのは現実的ではない。
ということで、今回紹介する「自動テスト」の導入が、安心して本番運用できる「信頼されるエージェント」を作る際に欠かせない要素になってくる。
Copilot Studioの自動テスト

- エージェントへの質問
- 理想の回答
- 評価方法(Test Method)
- (評価方法によっては)テスト成功とするしきい値
- ・General quality(一般的な品質)
-
生成AIを用いた最も高度な評価方法。LLMが審査員となり、以下の4つの観点から総合的にスコアリングする。「正解が一つではない」生成AIらしい回答のテストに最適。
- 関連性 (Relevance):質問の意図に対して的確に答えているか。
- 根拠 (Groundedness):回答がデータソースに基づいているか(ハルシネーションがないか)。
- 完全性 (Completeness):必要な情報が漏れなく網羅されているか。
- 丁寧さ (Politeness):不適切な表現がなく、丁寧なトーンか。
- ・Compare meaning(意味の比較)
- 「文章の意図」が合っているかを判定。一言一句が一致している必要はなく、表現が異なっていても、根底にある意味やアイデアが期待値(理想の回答)と合致していれば合格とみなされる。意味的な正しさを重視したい場合に有効。
- ・Similarity(類似性)
- AIが「コサイン類似度」を用いて、エージェントの回答と期待値の近さを0〜1のスコアで算出する。単語の完全一致だけでなく、意味的な近さも含めて機械的に評価したい場合に使用。
- ・Exact match(完全一致)
- 回答が期待値と「完全に同じ」であるかを確認する。文字、数字、記号に至るまで100%の一致が求められる。型番、コード、固定の定型文など、絶対に揺らぎが許されないデータの確認に使用。
- ・Partial match(部分一致)
- 期待する「特定のキーワード」や「フレーズ」が回答に含まれているかを確認。「不明な点はサポートまで」という案内文が入っているか、必須のURLが含まれているか、といった要件チェックに便利。
それでは、実際に自動テストを実施してみる。
この記事では、①テストセットの作成 ②実行手順 ③結果の判定方法 ④文字化け時の対処法 までを一通りご紹介。
事前準備:テスト対象のエージェントを作成
事前準備としてテスト対象のエージェントをつくる。今回は「カフェで働くエージェント」という設定でつくってみる。

あなたは「ブルー・クラウド・コーヒー」のAIバーチャル・バリスタです。 主にクラウドエンジニアや開発者が訪れるこのカフェで、お客様からの質問に答え、快適な「デプロイ待ち時間」を提供することがあなたの役割です。 ## キャラクター設定と振る舞い - トーン&マナー:知的で親しみやすく、少しユーモアがあります。IT用語やエンジニア向けのジョークを適度に交えて会話します。 - 丁寧さ:基本的には敬語を使いますが、堅苦しすぎず、同僚のエンジニアと話すようなフラットな距離感を保ってください。 - 専門性:コーヒーの知識はもちろん、Wi-Fiや電源環境など、エンジニアが気にするインフラ情報については特に正確に回答してください。 ## 回答のガイドライン 1. 挨拶には、IT用語を少し混ぜた歓迎の言葉を添えてください。(例:「アクセスありがとうございます」「接続確立しました」など) 2. メニューの案内では、単に味を説明するだけでなく、エンジニアにとってのメリット(カフェインでのブースト効果や、リラックス効果など)を付け加えてください。 3. エラーや不明な質問に対しては、「404 Not Found(答えが見つかりません)」や「内部サーバーエラー(考え中)」といった表現を交えて、ユーモラスに返答してください。 4. ナレッジにない情報は無理に創作せず、「そのデータは私のデータベースにはインデックスされていません」と正直に伝えてください。 ## 禁止事項 - 競合他社(他のカフェチェーン)の話題は、「別のリージョンの話」としてさらりと受け流してください。 - コードのデバッグや実際のプログラミング支援は行いません。「それはStack Overflowにお任せします」と断ってください。

テキストファイル↓
店舗名: ブルー・クラウド・コーヒー (Blue Cloud Coffee) コンセプト: クラウドエンジニアがくつろげる、テクノロジーとコーヒーの融合したカフェ。 住所: 東京都港区テックパーク 1-2-3 営業時間: 平日 8:00~20:00、土日祝 10:00~18:00 定休日: 毎週火曜日 Wi-Fi SSID: BlueCloud_Guest Wi-Fi パスワード: Coffee2025! 支払方法: 完全キャッシュレス(クレジットカード、交通系IC、QR決済のみ)。現金は使用不可。 メニュー: - サーバーレス・エスプレッソ: 400円 (濃厚で苦味が強い) - APIラテ: 550円 (ミルクたっぷりで甘め) - デプロイ・ドーナツ: 300円 (コーヒーとの相性抜群) 電源: 全席完備。モニターの貸し出しもあり。
説明↓
ユーザーがカフェ「ブルー・クラウド・コーヒー」に関する基本情報を求めている際に、このナレッジを使用してください。 具体的には、以下の質問に回答する場合に参照します: - 店舗の住所、営業時間、定休日などの基本情報 - Wi-FiのSSIDやパスワードなどの接続情報 - 利用可能な支払い方法(キャッシュレス対応など) - コーヒーやフードのメニューと価格 - 店内の設備や雰囲気(電源、エンジニア向けなど) エージェントのテストに使用したいテストケースをインポートしてください
以上でテスト対象のエージェントの構築は完了。
テストセット(テスト項目)を作成する
続いて自動テストで使用するテストセット(テスト項目)を作成する。


※コメントの和訳は後ろの章「おまけ」で。


※アップロードしたテストセットに名前を付けて保存しておくと、以降何度でもテストできるので便利。

自動テスト実行



テスト結果の詳細
最後に、テスト結果の詳細を見ていく。

※これはテスト項目のつくり方が悪い例で、本来は「Compare meaning」とかで実施すべき。

ただし、こちらもきちんとAIが答えられているので、「しきい値」を下げるか、テスト方法を「Compare meaning」にすべきテスト項目。

ということで、非常に強力な自動テスト機能。
プロンプトの微修正や、ナレッジ(SPOなど)の更新を行った際も、このテストを回すだけで「以前の回答が壊れていないか」を即座に検知できるので、実運用では導入必須レベルでおすすめ。
おまけ1:テストセットが文字化けするとき


おまけ2:テストセットのテンプレート(CSV)のコメント和訳
テストセットのテンプレートに記載されているコメントの和訳は以下の通り。
※テンプレートの和訳と公式ドキュメントの記載が異なる部分もあるので注意。(例:1つの質問の最大文字数が「テンプレートは500文字」「公式ドキュメントだと1,000字」となっている、など)
質問は最大 100件 まで
1つの質問につき、スペース(空白)を含めて最大 500文字 まで
インポートされる列(カラム)の説明
Question(質問): エージェントが回答するユーザーからの質問文。
Expected response(期待される回答): 「match(完全一致)」「similarity(類似性)」「compare meaning(意味比較)」のテストを実行するために必要な、正解となる回答文。
Test method type(テストメソッドの種類): エージェントの回答を評価するためのいくつかの手法があります。指定できるのは以下の通りです:
GeneralQuality(全般的な品質)
TextSimilarity(テキストの類似性)
CompareMeaning(意味の比較)
PartialMatch(部分一致)
ExactMatch(完全一致)
Passing score(合格スコア): 合格(Pass)と不合格(Fail)を分ける閾値(しきい値)です。「similarity(類似性)」と「compare meaning(意味比較)」のテストケースに対して設定できます。
詳細については、ドキュメントを参照してください。




コメント