流量分配 (A/B 測試)

流量拆分功能可將使用者對話分配給單一部署管道中,不同版本的 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. 按一下頁面頂端的「Deploy」分頁標籤。
  3. 選取現有的部署管道,或按一下「新管道」建立管道 (例如「API 存取權」)。
  4. 在「代理程式版本」下方,按一下「新增版本」,然後選取要納入實驗的代理程式應用程式版本。
  5. 輸入每個版本的流量百分比 (例如 A 版為 90%,B 版為 10%)。確認百分比總和為 100%。
  6. 按一下「建立頻道」套用設定。

使用 REST API

如要以程式輔助方式設定流量分配,請在 Deployment 資源上呼叫 patch 方法,並定義 experimentConfig.versionRelease.trafficAllocations

呼叫 API 前,請確認您擁有下列 ID:

  • PROJECT_ID: Google Cloud 專案 ID。
  • LOCATION_ID:代理程式應用程式的區域 (例如 us-east1)。
  • APP_ID:代理程式應用程式的 ID。
  • DEPLOYMENT_ID:部署管道的 ID。
  • VERSION_A_UUID / VERSION_B_UUID:應用程式版本的專屬 ID。

傳送 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. CX Agent Studio 控制台中開啟「Deploy」(部署) 頁面。
  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,確認指派給各版本的流量百分比,並在 versionRelease 內顯示 "state": "RUNNING"

在 BigQuery 中分析版本成效

流量分配實驗開始運作並處理足夠的即時顧客對話量後,您可以使用 BigQuery 記錄檔分析版本成效。

分析記錄前,請先在 CX Agent Studio 控制台中依序前往「Build」 >「Settings」 >「Advanced」,然後開啟「Export logs to 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 的回應)。
    • 計算成功率:比較兩個版本的結果與錯誤或過時回應的比率,決定是否將候選版本升級為 100% 流量。