ハンドブックの評価

このガイドでは、Dialogflow CX コンソールの組み込み評価機能を使用して、エージェントの機能を検証し、更新後の回帰を防ぐ方法について説明します。Dialogflow CX には、エージェントのパフォーマンスの評価に役立つすぐに使える指標が用意されています。

レイテンシを除くすべての指標には、少なくとも 1 つのテストケースが必要です。これは、Dialogflow CX がエージェントのパフォーマンスを比較して結果を測定する「ゴールデン レスポンス」です。各テストケースは、環境のコンテキストで測定できます。これにより、エージェントのパフォーマンス評価で使用するハンドブック、フロー、ツールの異なるバージョンを指定できます。

(省略可)環境を作成する

環境の作成は任意です。作成しない場合、デフォルト値は [下書き] です。

  1. [環境] に移動し、[作成] をクリックします。
  2. エージェントのパフォーマンスの測定に使用するハンドブック、フロー、ツールのバージョンを選択します。
  3. [Save] をクリックして環境を保存します。

テストケースを作成する

会話履歴の既存の会話からテストケースを作成したり、テストケースとして保存する新しい会話を作成したり、テストケースを Dialogflow CX にインポートしたりできます。

コンソールでテストケースを作成する

  1. ナビゲーション メニューの [会話履歴] に移動します。
  2. 新しい会話を作成するには、エージェントの電話番号に発信するなどして、エージェントを有効にします。テストケースとして使用する会話を選択します。
  3. 会話を表示して、エージェントのレスポンス、呼び出されたツール、各レスポンスの音声を確認します。問題がなければ、[テストケースを作成] を選択します。
  4. テストケースの表示名を指定し、会話レベルで発生する必要があるイベントの期待値を指定します。これには、会話内で呼び出されることが想定されるツール、ハンドブック、フローが含まれます。[+ 期待値を追加] を選択して、期待値をさらに追加します。期待値を上から順に評価するには、[Sequential validation] を切り替えます。
  5. [保存] をクリックして、テストケースを保存します。

テストケースをアップロードする

  1. テストケースは、次の CSV 形式にする必要があります。
  2. テストケースをシステムにアップロードするには、テストケース メニューの上部にある [インポート] をクリックします。
  3. 表示されたメニューで、ローカルに保存されているファイルを選択するか、Cloud Storage バケットのパスを入力します。
  4. テストケースがテストケース メニューに表示されます。

テストケースを実行する

  1. ナビゲーション メニューの [テストケース] に移動し、エージェントと比較するテストケースを選択します。1 つのテストケースまたは複数のテストケースを選択できます。
  2. [選択したテストケースを実行] をクリックします。

テスト結果

  1. 結果にアクセスする: 完了後、[テストケース] ビューに各テストケースの最新のテスト実行結果が表示されます。
    1. 意味的類似性: エージェントの会話が「ゴールデン レスポンス」(テストケースのレスポンス)とどの程度類似しているかを測定します。この指標を受け取るには、ゴールデン レスポンスが必要です。値は 0(不一致)、0.5(ある程度一致)、1(完全に一致)のいずれかです。
    2. ツール呼び出しの精度: 会話中に呼び出されることが想定されるツールが、会話にどの程度忠実に含まれているかを反映します。値の範囲は 0 ~ 1 です。会話でツールが使用されていない場合、精度は --(該当なし)と表示されます。
    3. レイテンシ: エージェントがユーザー リクエストを処理してユーザーに応答するまでにかかる合計時間。ユーザーの発話の終了からエージェントの応答の開始までの差(秒単位)として測定されます。
  2. ゴールデン テストケースを更新する: 最新の実行にエージェントの更新による想定される変更が反映されている場合は、[ゴールデンとして保存] を選択して、元のテストケースを上書きします。
  3. 結果のフィルタと並べ替え: 生成された指標または特定の環境で評価結果をフィルタして並べ替え、更新後のパフォーマンスの変化を追跡できます。

テストケースの一括インポートの形式

このセクションでは、エージェントのバッチテスト ケースをインポートするための 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 文字列としてフォーマットされます。

テストケースを作成する

テストケースはデータ行ごとに整理されます。

  1. 新しいテストケースを開始するには、メタデータ行に入力します。
    • ルール: この行の 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)。
  2. 開始したテストケースのすぐ下に新しい行を追加して、会話ターンを追加します。
    • ルール: DisplayName 列は空にする必要があります。これにより、パーサーは、前のテストケースに属するターンであることを認識します。
    • アクション: ユーザーのアクションと、このターンで想定されるエージェントのレスポンスを説明する列(UserInput.Input.Text や OrderedExpectations.ExpectedAgentReply など)に入力します。JSON を必要とする列には、有効な JSON オブジェクトを文字列として指定する必要があります(例: {"param_name": "param_value", "number_param": 123})。