Répartition du trafic (tests A/B)

La répartition du trafic vous permet de diviser les conversations des utilisateurs entre différentes versions de votre application d'agent CX Agent Studio dans un seul canal de déploiement. Vous pouvez utiliser la répartition du trafic pour effectuer des tests A/B ou déployer des mises à jour en toute sécurité par étapes en acheminant un pourcentage spécifié du trafic vers chaque version.

Ce guide explique comment configurer la répartition du trafic à l'aide de la console CX Agent Studio ou de l'API REST CX Agent Studio, et comment analyser les performances des versions à l'aide des journaux BigQuery une fois que votre test reçoit du trafic client en direct.

Présentation du workflow

  1. Créer des versions d'application : créez des instantanés immuables (versions) de votre application d'agent à comparer.
  2. Configurer la répartition du trafic sur un canal de déploiement : attribuez des pourcentages de trafic à plusieurs versions d'application à l'aide de la console ou de l'API REST.
  3. Analyser les performances dans BigQuery : une fois votre test en cours d'exécution et après avoir traité suffisamment de trafic client, interrogez les journaux de conversation exportés dans BigQuery pour évaluer les métriques entre les versions.

Configurer la répartition du trafic

Vous pouvez configurer la répartition du trafic entre différentes versions d'application à l'aide de la console ou de l'API REST. Chaque allocation doit pointer vers une version d'application d'agent existante, et la somme de tous les pourcentages de trafic dans le déploiement doit être égale à 100.

Utiliser la console

Pour configurer la répartition du trafic dans la console de l'outil de création d'agents :

  1. Ouvrez la console CX Agent Studio et sélectionnez votre application d'agent.
  2. Cliquez sur l'onglet Deploy (Déployer) en haut de la page.
  3. Sélectionnez un canal de déploiement existant ou cliquez sur New channel (Nouveau canal) pour en créer un (par exemple, un accès à l'API).
  4. Sous Agent version (Version de l'agent), cliquez sur Add version (Ajouter une version), puis sélectionnez les versions d'application d'agent que vous souhaitez inclure dans le test.
  5. Saisissez le Traffic percentage (Pourcentage de trafic) pour chaque version (par exemple, 90% pour la version A et 10% pour la version B). Assurez-vous que le total des pourcentages est égal à 100%.
  6. Cliquez sur Create channel (Créer un canal) pour appliquer la configuration.

Utiliser l'API REST

Vous pouvez configurer la répartition du trafic par programmation en appelant la patch méthode sur votre ressource de déploiement et en définissant experimentConfig.versionRelease.trafficAllocations.

Avant d'appeler l'API, assurez-vous de disposer des identifiants suivants :

  • PROJECT_ID: ID de votre Google Cloud projet.
  • LOCATION_ID : région de votre application d'agent (par exemple, us-east1).
  • APP_ID : ID de votre application d'agent.
  • DEPLOYMENT_ID : ID du canal de déploiement.
  • VERSION_A_UUID / VERSION_B_UUID : identifiants uniques de vos versions d'application.

Envoyez une requête PATCH pour mettre à jour la configuration du déploiement :

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
          }
        ]
      }
    }
  }'

Vérifier la configuration du déploiement

Pour vérifier que vos allocations de trafic sont actives :

Utiliser la console

  1. Ouvrez la page Deploy (Déployer) dans la console CX Agent Studio.
  2. Recherchez votre canal dans la liste des déploiements.
  3. Vérifiez que la colonne Version affiche la répartition configurée (par exemple, Version A (90%), Version B (10%)).

Utiliser l'API REST

Envoyez une requête GET pour récupérer les détails de la ressource de déploiement :

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"

La réponse JSON inclut l'élément experimentConfig actif, qui confirme les pourcentages de trafic attribués à chaque version et affiche "state": "RUNNING" dans versionRelease.

Analyser les performances des versions dans BigQuery

Une fois votre test de répartition du trafic en cours d'exécution et après avoir traité un volume suffisant de conversations client en direct, vous pouvez analyser les performances des versions à l'aide des journaux BigQuery.

Avant d'analyser les journaux, assurez-vous d'avoir activé l'exportation BigQuery pour votre application en accédant à la console CX Agent Studio, puis à Build > Settings > Advanced, et en activant Export logs to BigQuery. Lorsque l'exportation est activée, les enregistrements d'interaction, y compris l'app_version_id spécifique géré par chaque tour, sont enregistrés dans votre ensemble de données BigQuery.

Vous pouvez exécuter des requêtes SQL pour évaluer et comparer les réponses générées par chaque version pendant la période de répartition du trafic.

  1. Dans la Google Cloud console, accédez à BigQuery.
  2. Exécutez l'exemple de requête sur votre table de journaux d'interaction en remplaçant les détails de votre projet et la période d'évaluation (START_TIME et END_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. Évaluer les métriques :

    • Identifier les versions : mappez les lignes de sortie à vos UUID de version spécifiques ou à vos exécutions d'outils (par exemple, en comparant les réponses de la version A à celles de la version B).
    • Calculer le taux de réussite : comparez le ratio entre les résultats et les erreurs ou les réponses obsolètes entre les deux versions pour déterminer si vous devez promouvoir la version candidate à 100% du trafic.