Registrar solicitudes y respuestas

Vertex AI puede registrar muestras de solicitudes y respuestas para Gemini y los modelos de socios compatibles. Los registros se guardan en una tabla de BigQuery para su visualización y análisis. En esta página, se describe cómo configurar los registros de solicitudes y respuestas para los modelos básicos fundamentales y los modelos ajustados.

Métodos de la API compatibles para el registro

Los registros de solicitud y respuesta son compatibles con todos los modelos de Gemini que usan generateContent o streamGenerateContent.

También se admiten los siguientes modelos de socios que usan rawPredict o streamrawPredict:

  • Anthropic Claude

Registros de solicitudes y respuestas para modelos básicos

Puedes configurar los registros de solicitudes y respuestas para los modelos básicos fundamentales con la API de REST o el SDK de Python. La configuración del registro puede tardar unos minutos en aplicarse.

Habilita el registro de solicitudes y respuestas

Selecciona una de las siguientes pestañas para obtener instrucciones sobre cómo habilitar los registros de solicitud y respuesta para un modelo fundamental básico.

En el caso de los modelos de Anthropic, solo se admite REST para la configuración del registro. Habilita la configuración de registro a través de la API de REST configurando el publicador en anthropic y estableciendo el nombre del modelo en uno de los modelos de Claude compatibles.

Python SDK

Este método se puede usar para crear o actualizar 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 de REST

Crea o actualiza un PublisherModelConfig con setPublisherModelConfig:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • ENDPOINT_PREFIX: Es la región del recurso del modelo, seguida de -. Por ejemplo, us-central1-. Si usas el extremo global, déjalo en blanco. El registro de solicitudes y respuestas se admite en todas las regiones compatibles con el modelo.
  • PROJECT_ID: ID del proyecto
  • LOCATION: Es la región del recurso del modelo. Si usas el extremo global, ingresa global.
  • PUBLISHER: Es el nombre del publicador. Por ejemplo, google.
  • MODEL: Es el nombre del modelo de base. Por ejemplo, gemini-2.0-flash-001.
  • SAMPLING_RATE: Para reducir los costos de almacenamiento, puedes establecer un número entre 0 y 1 para definir la fracción de solicitudes que se registrarán. Por ejemplo, un valor de 1 registra todas las solicitudes y un valor de 0.1 registra el 10% de las solicitudes.
  • BQ_URI: Es la tabla de BigQuery que se usará para el registro. Si solo especificas un nombre de proyecto, se crea un conjunto de datos nuevo con el nombre logging_ENDPOINT_DISPLAY_NAME\_ENDPOINT_ID, en el que ENDPOINT_DISPLAY_NAME sigue las reglas de nombres de BigQuery. Si no especificas un nombre de tabla, se crea una tabla nueva con el nombre request_response_logging.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Obtén la configuración de registro

Obtén la configuración del registro de solicitudes y respuestas para el modelo fundamental con la API de REST.

API de REST

Obtén la configuración del registro de solicitudes y respuestas con fetchPublisherModelConfig:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: ID del proyecto
  • LOCATION: Es la ubicación del recurso del modelo.
  • PUBLISHER: Es el nombre del publicador. Por ejemplo, google.
  • MODEL: Es el nombre del modelo de base. Por ejemplo, gemini-2.0-flash-001.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

Ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Inhabilita el registro

Inhabilita el registro de solicitudes y respuestas para el modelo fundamental con la API de REST o el SDK de Python.

Python SDK

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

API de REST

Usa setPublisherModelConfig para inhabilitar el registro:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: ID del proyecto
  • LOCATION: Es la ubicación del recurso del modelo.
  • PUBLISHER: Es el nombre del publicador. Por ejemplo, google.
  • MODEL: Es el nombre del modelo de base. Por ejemplo, gemini-2.0-flash-001.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Registros de solicitudes y respuestas para modelos ajustados

Puedes configurar los registros de solicitud y respuesta para los modelos ajustados con la API de REST o el SDK de Python.

Habilita los registros de solicitudes y respuestas

Selecciona una de las siguientes pestañas para obtener instrucciones sobre cómo habilitar los registros de solicitud y respuesta para un modelo ajustado.

Python SDK

Este método se puede usar para actualizar la configuración del registro de solicitudes y respuestas de un extremo.

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 de REST

Solo puedes habilitar el registro de solicitudes y respuestas cuando creas un extremo con projects.locations.endpoints.create o aplicas un parche a un extremo existente con projects.locations.endpoints.patch.

Las solicitudes y las respuestas se registran a nivel del extremo, por lo que se registran las solicitudes enviadas a cualquier modelo implementado en el mismo extremo.

Cuando creas o parches un extremo, propaga el campo predictRequestResponseLoggingConfig del recurso de Endpoint con las siguientes entradas:

  • enabled: Se establece en True para habilitar el registro de solicitudes y respuestas.

  • samplingRate: Para reducir los costos de almacenamiento, puedes establecer un número entre 0 y 1 para definir la fracción de solicitudes que se registrarán. Por ejemplo, un valor de 1 registra todas las solicitudes y un valor de 0.1 registra el 10% de las solicitudes.

  • BigQueryDestination: Es la tabla de BigQuery que se usará para el registro. Si solo especificas un nombre de proyecto, se crea un conjunto de datos nuevo con el nombre logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID, en el que ENDPOINT_DISPLAY_NAME sigue las reglas de nombres de BigQuery. Si no especificas un nombre de tabla, se crea una tabla nueva con el nombre request_response_logging.

  • enableOtelLogging: Se establece en true para habilitar el registro de OpenTelemetry (OTEL) además del registro predeterminado de solicitudes y respuestas.

Para ver el esquema de la tabla de registro de BigQuery, consulta Esquema de la tabla de registro.

A continuación, se muestra una configuración de ejemplo:

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

Obtén la configuración de registro

Obtén la configuración del registro de solicitudes y respuestas del modelo ajustado con la API de REST.

API de REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: ID del proyecto
  • LOCATION: Es la ubicación del recurso de extremo.
  • MODEL: Es el nombre del modelo de base. Por ejemplo, gemini-2.0-flash-001.
  • ENDPOINT_ID: Es el ID del extremo.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

Ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Inhabilita la configuración de registro

Inhabilita la configuración del registro de solicitudes y respuestas para el extremo.

Python SDK

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 de REST

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

Esquema de la tabla de registro

En BigQuery, los registros se registran con el siguiente esquema:

Nombre del campo Tipo Notas
extremo STRING Es el nombre del recurso del extremo en el que se implementa el modelo ajustado.
deployed_model_id STRING Es el ID del modelo implementado para un modelo ajustado que se implementó en un extremo.
logging_time TIMESTAMP Es la fecha y hora en que se realiza el registro. Es aproximadamente el momento en que se devuelve la respuesta.
request_id NUMERIC Es el ID de solicitud de número entero generado automáticamente según la solicitud de la API.
request_payload STRING Se incluye para el registro de modelos de socios y la retrocompatibilidad con el registro de solicitudes y respuestas del extremo de Vertex AI.
response_payload STRING Se incluye para el registro de modelos de socios y la retrocompatibilidad con el registro de solicitudes y respuestas del extremo de Vertex AI.
modelo STRING Nombre del recurso del modelo.
model_version STRING Es la versión del modelo. Suele ser "predeterminado" para los modelos de Gemini.
api_method STRING generateContent, streamGenerateContent, rawPredict, streamRawPredict
full_request JSON El GenerateContentRequest completo.
full_response JSON El GenerateContentResponse completo.
metadatos JSON Son los metadatos de la llamada, que contienen la latencia de la solicitud.
otel_log JSON Registros en formato de esquema de OpenTelemetry. Solo está disponible si otel_logging está habilitado en la configuración de registro.

Ten en cuenta que no se registran los pares de solicitud-respuesta que superan el límite de 10 MB por fila de la API de escritura de BigQuery.

¿Qué sigue?