Consigner les requêtes et les réponses

Vertex AI peut enregistrer des exemples de requêtes et de réponses pour Gemini et les modèles partenaires compatibles. Les journaux sont enregistrés dans une table BigQuery pour être consultés et analysés. Cette page explique comment configurer les journaux de requête et de réponse pour les modèles de base et les modèles affinés.

Méthodes d'API compatibles pour la journalisation

Les journaux de requêtes et de réponses sont compatibles avec tous les modèles Gemini qui utilisent generateContent ou streamGenerateContent.

Les modèles partenaires suivants qui utilisent rawPredict ou streamrawPredict sont également acceptés :

  • Anthropic Claude

Journaux des requêtes et réponses pour les modèles de fondation de base

Vous pouvez configurer les journaux de requête/réponse pour les modèles de base à l'aide de l'API REST ou du SDK Python. L'application des configurations de journalisation peut prendre quelques minutes.

Activer la journalisation des requêtes et réponses

Sélectionnez l'un des onglets suivants pour obtenir des instructions sur l'activation des journaux de demande et de réponse pour un modèle de fondation de base.

Pour les modèles Anthropic, seule l'API REST est compatible avec la configuration de la journalisation. Activez la configuration de la journalisation via l'API REST en définissant l'éditeur sur anthropic et le nom du modèle sur l'un des modèles Claude compatibles.

SDK Python

Cette méthode permet de créer ou de mettre à jour un PublisherModelConfig.

publisher_model = GenerativeModel('gemini-2.0-pro-001')

# Set logging configuration
publisher_model.set_request_response_logging_config(
    enabled=True,
    sampling_rate=1.0,
    bigquery_destination="bq://PROJECT_ID.DATASET_NAME.TABLE_NAME",
    enable_otel_logging=True
    )

API REST

Créez ou mettez à jour un PublisherModelConfig à l'aide de setPublisherModelConfig :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • ENDPOINT_PREFIX : région de la ressource de modèle suivie de -. Par exemple, us-central1-. Si vous utilisez le point de terminaison mondial, laissez ce champ vide. La journalisation des requêtes et des réponses est disponible pour toutes les régions acceptées par le modèle.
  • PROJECT_ID : ID de votre projet
  • LOCATION : région de la ressource de modèle. Si vous utilisez le point de terminaison mondial, saisissez global.
  • PUBLISHER : nom de l'éditeur. Exemple : google.
  • MODEL : nom du modèle de fondation. Exemple : gemini-2.0-flash-001.
  • SAMPLING_RATE : Pour réduire les coûts de stockage, vous pouvez définir un nombre compris entre 0 et 1 pour définir la fraction des requêtes à consigner. Par exemple, une valeur de 1 consigne toutes les requêtes, tandis qu'une valeur de 0,1 n'en consigne que 10 %.
  • BQ_URI : table BigQuery à utiliser pour la journalisation. Si vous ne spécifiez qu'un nom de projet, un ensemble de données est créé, nommé logging_ENDPOINT_DISPLAY_NAME\_ENDPOINT_ID, où ENDPOINT_DISPLAY_NAME suit les règles de dénomination de BigQuery. Si vous ne spécifiez pas de nom de table, une nouvelle table est créée avec le nom request_response_logging.

Méthode HTTP et URL :

POST https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig

Corps JSON de la requête :

{
  "publisherModelConfig": {
     "loggingConfig": {
       "enabled": true,
       "samplingRate": SAMPLING_RATE,
       "bigqueryDestination": {
         "outputUri": "BQ_URI"
       },
       "enableOtelLogging": true
     }
   }
 }

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Obtenir la configuration de la journalisation

Obtenez la configuration de la journalisation des requêtes et réponses pour le modèle de fondation à l'aide de l'API REST.

API REST

Obtenez la configuration de la journalisation des requêtes et réponses à l'aide de fetchPublisherModelConfig :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : emplacement de la ressource de modèle.
  • PUBLISHER : nom de l'éditeur. Exemple : google.
  • MODEL : nom du modèle de fondation. Exemple : gemini-2.0-flash-001.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:fetchPublisherModelConfig

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:fetchPublisherModelConfig"

PowerShell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:fetchPublisherModelConfig" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Désactiver la journalisation

Désactivez la journalisation des requêtes et réponses pour le modèle de fondation à l'aide de l'API REST ou du SDK Python.

SDK Python

publisher_model.set_request_response_logging_config(
  enabled=False,
  sampling_rate=0,
  bigquery_destination=''
  )

API REST

Utilisez setPublisherModelConfig pour désactiver la journalisation :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : emplacement de la ressource de modèle.
  • PUBLISHER : nom de l'éditeur. Exemple : google.
  • MODEL : nom du modèle de fondation. Exemple : gemini-2.0-flash-001.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig

Corps JSON de la requête :

{
  "publisherModelConfig": {
     "loggingConfig": {
       "enabled": false
     }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Journaux des requêtes et réponses pour les modèles affinés

Vous pouvez configurer les journaux de requête/réponse pour les modèles affinés à l'aide de l'API REST ou du SDK Python.

Activer les journaux de requêtes et de réponses

Sélectionnez l'un des onglets suivants pour obtenir des instructions sur l'activation des journaux de demande/réponse pour un modèle affiné.

SDK Python

Cette méthode permet de mettre à jour la configuration de journalisation des requêtes et réponses pour un point de terminaison.

tuned_model = GenerativeModel("projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")

# Set logging configuration
tuned_model.set_request_response_logging_config(
    enabled=True,
    sampling_rate=1.0,
    bigquery_destination="bq://PROJECT_ID.DATASET_NAME.TABLE_NAME",
    enable_otel_logging=True
    )

API REST

Vous ne pouvez activer la journalisation des requêtes et réponses que lorsque vous créez un point de terminaison à l'aide de projects.locations.endpoints.create ou appliquez un correctif à un point de terminaison existant à l'aide de projects.locations.endpoints.patch.

Les requêtes et les réponses sont enregistrées au niveau du point de terminaison. Par conséquent, les requêtes envoyées aux modèles déployés sous le même point de terminaison sont consignées.

Lorsque vous créez ou corrigez un point de terminaison, remplissez le champ predictRequestResponseLoggingConfig de la ressource Endpoint avec les entrées suivantes :

  • enabled : défini sur True pour activer la journalisation des requêtes et réponses.

  • samplingRate : Pour réduire les coûts de stockage, vous pouvez définir un nombre compris entre 0 et 1 pour définir la fraction des requêtes à consigner. Par exemple, une valeur de 1 consigne toutes les requêtes, tandis qu'une valeur de 0,1 n'en consigne que 10 %.

  • BigQueryDestination : table BigQuery à utiliser pour la journalisation. Si vous ne spécifiez qu'un nom de projet, un ensemble de données est créé, nommé logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID, où ENDPOINT_DISPLAY_NAME suit les règles de dénomination de BigQuery. Si vous ne spécifiez pas de nom de table, une nouvelle table est créée avec le nom request_response_logging.

  • enableOtelLogging : défini sur true pour activer la journalisation OpenTelemetry (OTEL) en plus de la journalisation des requêtes et réponses par défaut.

Pour afficher le schéma de la table BigQuery, consultez Schéma de la table de journaux.

Voici un exemple de configuration :

{
  "predictRequestResponseLoggingConfig": {
    "enabled": true,
    "samplingRate": 0.5,
    "bigqueryDestination": {
      "outputUri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
    },
    "enableOtelLogging": true
  }
}

Obtenir la configuration de la journalisation

Obtenez la configuration de la journalisation des requêtes et réponses pour le modèle affiné à l'aide de l'API REST.

API REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : emplacement de la ressource de point de terminaison.
  • MODEL : nom du modèle de fondation. Exemple : gemini-2.0-flash-001.
  • ENDPOINT_ID : ID du point de terminaison.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID"

PowerShell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Désactiver la configuration de la journalisation

Désactivez la configuration de journalisation des requêtes et réponses pour le point de terminaison.

SDK Python

tuned_model = GenerativeModel("projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")

# Set logging configuration
tuned_model.set_request_response_logging_config(
    enabled=False,
    sampling_rate=1.0,
    bigquery_destination="bq://PROJECT_ID.DATASET_NAME.TABLE_NAME",
    enable_otel_logging=False
    )

API REST

{
"predictRequestResponseLoggingConfig": {
  "enabled": false
}
}

Schéma de la table de journalisation

Dans BigQuery, les journaux sont enregistrés à l'aide du schéma suivant :

Nom du champ Type Remarques
point de terminaison STRING Nom de ressource du point de terminaison sur lequel le modèle réglé est déployé.
deployed_model_id STRING ID du modèle déployé pour un modèle réglé déployé sur un point de terminaison.
logging_time TIMESTAMP Heure à laquelle la journalisation est effectuée. Il s'agit approximativement du moment où la réponse est renvoyée.
request_id NUMERIC ID de requête entier généré automatiquement en fonction de la requête API.
request_payload STRING Inclus pour la journalisation des modèles partenaires et la rétrocompatibilité avec le journal des requêtes et réponses des points de terminaison Vertex AI.
response_payload STRING Inclus pour la journalisation des modèles partenaires et la rétrocompatibilité avec le journal des requêtes et réponses des points de terminaison Vertex AI.
modèle STRING Nom de ressource du modèle.
model_version STRING Version du modèle. Il s'agit souvent de "default" pour les modèles Gemini.
api_method STRING generateContent, streamGenerateContent, rawPredict, streamRawPredict
full_request JSON L'intégralité de GenerateContentRequest.
full_response JSON L'intégralité de GenerateContentResponse.
métadonnées JSON Toutes les métadonnées de l'appel, y compris la latence de la requête.
otel_log JSON Journaux au format de schéma OpenTelemetry. Disponible uniquement si otel_logging est activé dans la configuration de la journalisation.

Notez que les paires requête/réponse dont la taille dépasse la limite de 10 Mo par ligne de l'API BigQuery Write ne sont pas enregistrées.

Étapes suivantes