트래픽 분할 (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. 페이지 상단의 배포 탭을 클릭합니다.
  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. CX Agent Studio console에서 배포 페이지를 엽니다.
  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에는 각 버전에 할당된 트래픽 비율을 확인하고 "state": "RUNNING" 내에 versionRelease을 표시하는 활성 experimentConfig가 포함됩니다.

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의 응답 비교).
    • 성공률 계산: 두 버전 간의 결과 비율을 오류 또는 오래된 응답과 비교하여 후보 버전을 100% 트래픽으로 승격할지 결정합니다.