トラフィック分割(A/B テスト)

トラフィック分割を使用すると、1 つのデプロイ チャネル内で、CX Agent Studio エージェント アプリケーションの異なる バージョン間でユーザーの会話を分割できます。トラフィック分割を使用すると、トラフィックの指定された割合を各バージョンにルーティングすることで、A/B テストを実施したり、更新を段階的に安全にデプロイしたりできます。

このガイドでは、CX Agent Studio コンソール または CX Agent Studio REST API を使用してトラフィック分割を構成する方法と、テストで実際の顧客トラフィックを受信した後に BigQuery ログを使用してバージョン パフォーマンスを分析する方法について説明します。

ワークフローの概要

  1. アプリケーション バージョンを作成する: エージェント アプリケーションの不変のスナップショット(バージョン)を作成して比較します。
  2. デプロイ チャネルでトラフィック分割を構成する: コンソールまたは REST API を使用して、複数のアプリケーション バージョンにトラフィックの割合を割り当てます。
  3. BigQuery でパフォーマンスを分析する: テストが実行され、十分な顧客トラフィックが処理されたら、BigQuery でエクスポートされた会話ログに対してクエリを実行して、バージョン間の指標を評価します。

トラフィック分割を構成する

コンソールまたは REST API を使用して、異なるアプリケーション バージョン間でトラフィックの割り当てを構成できます。各割り当ては既存のエージェント アプリケーション バージョンを指している必要があり、デプロイ内のすべてのトラフィックの割合の合計は 100 にする必要があります。

コンソールの使用

エージェント ビルダー コンソールでトラフィック分割を構成する手順は次のとおりです。

  1. CX Agent Studio コンソールを開き、エージェント アプリケーションを選択します。
  2. ページ上部の [デプロイ] タブをクリックします。
  3. 既存のデプロイ チャネルを選択するか、[新しいチャネル] をクリックして作成します(たとえば、API アクセス)。
  4. [エージェント バージョン] で [バージョンを追加] をクリックし、テストに含めるエージェント アプリケーション バージョンを選択します。
  5. 各バージョンのトラフィックの割合 を入力します(例: バージョン A は 90%、バージョン B は 10%)。割合の合計が 100% になるようにしてください。
  6. [チャネルを作成] をクリックして構成を適用します。

REST API の使用

デプロイ リソースで patch メソッドを呼び出し、experimentConfig.versionRelease.trafficAllocations を定義することで、トラフィック分割をプログラムで設定できます。

API を呼び出す前に、次の識別子があることを確認してください。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • LOCATION_ID: エージェント アプリケーションのリージョン(us-east1 など)。
  • APP_ID: エージェント アプリケーションの ID。
  • DEPLOYMENT_ID: デプロイ チャネルの ID。
  • VERSION_A_UUID / VERSION_B_UUID: アプリケーション バージョンの一意の識別子。

PATCH リクエストを送信して、デプロイ構成を更新します。

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://ces.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION_ID/apps/APP_ID/deployments/DEPLOYMENT_ID?updateMask=experimentConfig" \
  -d '{
    "experimentConfig": {
      "versionRelease": {
        "trafficAllocations": [
          {
            "appVersion": "projects/PROJECT_ID/locations/LOCATION_ID/apps/APP_ID/versions/VERSION_A_UUID",
            "trafficPercentage": 90
          },
          {
            "appVersion": "projects/PROJECT_ID/locations/LOCATION_ID/apps/APP_ID/versions/VERSION_B_UUID",
            "trafficPercentage": 10
          }
        ]
      }
    }
  }'

デプロイ構成を確認する

トラフィックの割り当てが有効になっていることを確認する手順は次のとおりです。

コンソールの使用

  1. [Deploy] ページを [CX Agent Studio コンソール] で開きます。
  2. デプロイメント リストでチャネルを見つけます。
  3. [バージョン] 列に、構成された分割が表示されていることを確認します(例: Version A (90%), Version B (10%))。

REST API の使用

GET リクエストを送信して、デプロイ リソースの詳細を取得します。

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://ces.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION_ID/apps/APP_ID/deployments/DEPLOYMENT_ID"

レスポンス JSON には、アクティブな experimentConfig が含まれており、各バージョンに割り当てられたトラフィックの割合が確認され、"state": "RUNNING" 内に versionRelease が表示されます。

BigQuery でバージョン パフォーマンスを分析する

トラフィック分割テストが実行され、十分な量の実際の顧客会話が処理されたら、BigQuery ログを使用してバージョン パフォーマンスを分析できます。

ログを分析する前に、CX Agent Studio コンソールで [ビルド] > [設定] > [詳細設定] に移動し、[ログを BigQuery にエクスポートする] をオンにして、アプリケーションの BigQuery エクスポートを有効にしていることを確認してください。エクスポートが有効になっている場合、各ターンで処理される特定の app_version_id を含むインタラクション レコードが BigQuery データセットに記録されます。

SQL クエリを実行して、トラフィック分割ウィンドウ中に各バージョンによって生成されたレスポンスを評価して比較できます。

  1. コンソール Google Cloud で、[BigQuery] に移動します。
  2. インタラクション ログテーブルに対してサンプルクエリを実行し、プロジェクトの詳細と評価ウィンドウ(START_TIMEEND_TIME)を置き換えます。

    SELECT
      app_version_id,
      tool_call.name AS tool_name,
      tool_call.output AS tool_result_message,
      COUNT(1) AS count
    FROM
      `PROJECT_ID.conversational_agents_logs.v1beta_logs`,
      UNNEST(json_payload.query_result.generations) AS generation,
      UNNEST(generation.tool_calls) AS tool_call
    WHERE
      json_payload.resource = 'projects/PROJECT_ID/locations/LOCATION_ID/apps/APP_ID'
      AND timestamp >= TIMESTAMP('START_TIME_YYYY-MM-DD HH:MM:SS', 'TIMEZONE')
      AND timestamp <= TIMESTAMP('END_TIME_YYYY-MM-DD HH:MM:SS', 'TIMEZONE')
    GROUP BY
      app_version_id, tool_name, tool_result_message
    ORDER BY
      app_version_id, count DESC
    
  3. 指標を評価する:

    • バージョンを特定する: 出力行を特定のバージョン UUID またはツール実行にマッピングします(バージョン A とバージョン B のレスポンスを比較するなど)。
    • 成功率を計算する: 2 つのバージョン間で結果とエラーまたは古いレスポンスの比率を比較して、候補バージョンをトラフィックの 100% に昇格させるかどうかを決定します。