このガイドでは、Dialogflow CX コンソールの組み込み評価機能を使用して、エージェントの機能を検証し、更新後の回帰を防ぐ方法について説明します。Dialogflow には、エージェントのパフォーマンスを評価するのに役立つすぐに使用できる指標が用意されています。
レイテンシ以外のすべての指標には、少なくとも 1 つのテストケースが必要です。これは、Dialogflow がエージェントのパフォーマンスを比較してパフォーマンスを計算する「ゴールデン レスポンス」です。各テストケースは環境のコンテキストで測定できます。これにより、エージェントのパフォーマンス評価で使用するプレイブック、フロー、ツールのさまざまなバージョンを指定できます。
(省略可)環境を作成する
環境の作成は省略可能です。作成しない場合、デフォルト値は [下書き] になります。
- 環境を作成するには、左側のメニューで [環境] をクリックし、[+ 作成] を選択します。
- エージェントのパフォーマンスの測定に使用するプレイブック、フロー、ツールのバージョンを選択します。
- [保存] をクリックして、環境を保存します。
テストケースを作成する
会話履歴にある既存の会話からテストケースを作成する、テストケースとして保存する新しい会話を作成する、テストケースを Dialogflow にインポートする、のいずれかを選択できます。
コンソールでテストケースを作成する
- 左側のメニューで [会話履歴] に移動します。
- 新しい会話を作成するには、エージェントを有効にして(エージェントの電話番号に電話をかけるなど)、会話履歴に会話を作成します。テストケースとして使用する会話を選択します。
- 会話を表示し、エージェントの回答、呼び出されたツール、各回答の表現を確認します。満足のいく結果が得られたら、ウィンドウの右上にある [テストケースを作成] をクリックします。
- テストケースの表示名を指定し、会話レベルで発生するイベントの期待値を指定します。これには、会話内で呼び出されることが想定されるツール、プレイブック、フローが含まれます。[+ 期待値を追加] をクリックして、期待値をさらに追加します。期待値をリストに記載されている順(上から下)に評価するには、[Sequential validation] を切り替えます。
- [保存] をクリックして、テストケースを保存します。
テストケースをアップロードする
- テストケースは次の CSV 形式にする必要があります。
- テストケースをシステムにアップロードするには、テストケース メニューの上部にある [インポート] をクリックします。
- ポップアップ表示されたメニューで、ローカルに保存されたファイルを選択するか、Cloud Storage バケットへのパスを入力します。
- テストケースがテストケース メニューに表示されます。
テストケースを実行する
- 左側のメニューで [テストケース] をクリックし、エージェントの比較対象とするテストケースを選択します。単一のテストケースまたは複数のテストケースを指定できます。
- [選択したテストケースを実行] をクリックします。
テスト結果
- 結果にアクセスする: 最新のテスト実行の結果は、完了後に [テストケース] ビューの各テストケースに表示されます。
- 意味的類似性: エージェントの会話が「ゴールデン レスポンス」(テストケースのレスポンス)とどの程度類似しているかを測定します。この指標を取得するには、ゴールデン レスポンスが必要です。値は、0(一貫性がない)、0.5(ある程度一貫性がある)、1(一貫性が高い)のいずれかになります。
- ツール呼び出しの精度: 会話中に呼び出されることが想定されるツールが、会話にどの程度忠実に含まれているかを反映する値。値の範囲は 0 ~ 1 です。会話でツールが使用されていない場合、精度は
--
(該当なし)と表示されます。 - レイテンシ: エージェントがエンドユーザーのリクエストを処理してユーザーに応答するまでにかかった合計時間(ユーザーの発話の終了とエージェントのレスポンスの開始の差)。単位は秒です。
- ゴールデン テストケースを更新する: エージェントの更新により、最新の実行に想定される変更が反映された場合は、[ゴールデンとして保存] をクリックして元のテストケースを上書きできます。
- 結果のフィルタと並べ替え: 生成された指標または特定の環境で評価結果をフィルタして並べ替えることができます。これは、各更新後のパフォーマンスの変化を追跡するのに役立ちます。
テストケースの一括インポートの形式
このセクションでは、エージェントのバッチ テストケースをインポートするための CSV ファイルの形式について説明します。システムはこのファイルを読み取り、1 つ以上の会話ターンを含むテストケースの構造化されたセットを作成します。
1 つのテストケースが CSV ファイルの複数の行にまたがることもあります。テストケースの最初の行では、名前や言語などの全体的なプロパティを定義します。そのテストケースの以降の各行では、会話の 1 回のやり取り(ユーザーが発言し、エージェントが返答することが想定されている)を定義します。
ヘッダー
CSV ファイルの先頭行はヘッダー行にする必要があります。このヘッダーは、各列のデータを定義します。
必須ヘッダー
2 つの必須ヘッダーは、表示されている順序で指定する必要があります。どちらも新しいテストケースの最初の行に必要です。新しい DisplayName
値と LanguageCode
値を指定すると、新しいテストケースを開始できます。
DisplayName
: テストケースの名前。これは、新しいテストケースの最初の行に対してのみ入力されます。LanguageCode
: テストの言語コード(en
、en-US
、es
など)。
オプションのヘッダー
次のオプション ヘッダーを含めて、テストケースの詳細を指定できます。最初の 2 つの必須列の後は、任意の順序で指定できます。
テストケースのメタデータ
- タグ: テストを整理するためのスペース区切りのタグ(例: 「payments onboarding」)。
- メモ: テストケースの目的を説明するフリーテキストのメモまたは説明。
TestCaseConfigV2.StartResource
: テストを開始するフローまたはプレイブックを指定します。
ユーザー入力
UserInput.Input.Text
: ユーザーが特定のターンで「入力」するテキスト。UserInput.InjectedParameters
: ターン開始時に会話に挿入するパラメータ。JSON 文字列としてフォーマットされます。
エージェントの出力
AgentOutput.QueryResult.ResponseMessages.Text
: エージェントが返信したと主張する正確なテキスト。AgentOutput.QueryResult.Parameters
: エージェントによって抽出されたと想定されるパラメータ。JSON 文字列としてフォーマットされます。
期待する対応
OrderedExpectations.ExpectedFlow
: ターン後にアクティブになることが想定されるフロー。OrderedExpectations.ExpectedIntent
: ターンで一致すると予想されるインテント。OrderedExpectations.ExpectedAgentReply
: エージェントが返信するテキスト。完全な返信のサブ文字列にできます。OrderedExpectations.ExpectedOutputParameter
: ターン終了時に設定されることが想定されるパラメータ。JSON 文字列としてフォーマットされます。
音声メタデータ
AudioTurnMetadata
音声ベースのテストのメタデータ。JSON 文字列としてフォーマットされます。
テストケースを作成する
テストケースはデータ行ごとに整理されます。
- 新しいテストケースを開始するには、そのメタデータ行を入力します。
- ルール: この行の
DisplayName
列に値が必要です。 - アクション:
DisplayName
とLanguageCode
の値を入力します。この行にタグ、メモ、TestCaseConfigV2.StartResource
を追加することもできます。この行の会話ターンの列(UserInput.Input.Text
など)は空のままにします。タグを使用する場合は、各タグをスペースで区切ります。例:tag1 tag2 tag3
。TestCaseConfigV2.StartResource
を使用する場合は、リソース名の前にstart_flow:
またはstart_playbook:
を付けます。例:start_flow:projects/p/locations/l/agents/a/flows/f
。
- ルール: この行の
- 新しい行をすぐ下に追加して、開始したばかりのテストケースに会話のターンを追加します。
- ルール:
DisplayName
列は空である必要があります。これにより、パーサーは、これが前のテストケースに属するターンであることを認識します。 - アクション:
UserInput.Input.Text
やOrderedExpectations.ExpectedAgentReply
など、ユーザーのアクションとこのターンのエージェントの想定されるレスポンスを説明する列に入力します。JSON が必要な列には、有効な JSON オブジェクトを文字列として指定する必要があります。例:{"param_name": "param_value", "number_param": 123}
。
- ルール: