日志请求和响应

Vertex AI 可以为 Gemini 和受支持的合作伙伴模型记录请求和响应示例。日志会保存到 BigQuery 表中,以供查看和分析。本页介绍了如何为基础模型和微调模型配置请求-响应日志。

支持的日志记录 API 方法

所有使用 generateContentstreamGenerateContent 的 Gemini 模型都支持请求-响应日志。

还支持使用 rawPredictstreamrawPredict 的以下合作伙伴模型:

  • Anthropic Claude

基础模型的请求-响应日志

您可以使用 REST API 或 Python SDK 为基础模型配置请求-响应日志。日志记录配置可能需要几分钟才能生效。

启用请求-响应日志记录

请选择以下任一标签页,了解如何为基础框架模型启用请求-响应日志。

对于 Anthropic 模型,仅支持 REST 日志记录配置。通过 REST API 启用日志记录配置,方法是将发布商设置为 anthropic,并将模型名称设置为受支持的 Claude 模型之一。

Python SDK

此方法可用于创建或更新 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
    )

REST API

使用 setPublisherModelConfig 创建或更新 PublisherModelConfig

在使用任何请求数据之前,请先进行以下替换:

  • ENDPOINT_PREFIX:模型资源所在的区域,后跟 -。例如 us-central1-。如果使用全球端点,请留空。模型支持的所有区域都支持请求-响应日志记录。
  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型资源所在的区域。 如果使用全球端点,请输入 global
  • PUBLISHER:发布商名称。例如 google
  • MODEL:基础模型名称。例如 gemini-2.0-flash-001
  • SAMPLING_RATE:为降低存储费用,您可以设置介于 0 和 1 之间的数字,以定义要记录的请求的比例。例如,如果值为 1,则会记录所有请求;如果值为 0.1,则会记录 10% 的请求。
  • BQ_URI:用于日志记录的 BigQuery 表。如果仅指定项目名称,则系统会创建名为 logging_ENDPOINT_DISPLAY_NAME\_ENDPOINT_ID 的新数据集,其中 ENDPOINT_DISPLAY_NAME 遵循 BigQuery 命名规则。如果您未指定表名称,则系统会创建名为 request_response_logging 的新表。

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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

您应该收到类似以下内容的 JSON 响应:

获取日志记录配置

使用 REST API 获取基础模型的请求-响应日志记录配置。

REST API

使用 fetchPublisherModelConfig 获取请求-响应日志记录配置:

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型资源的位置。
  • PUBLISHER:发布商名称。例如 google
  • MODEL:基础模型名称。例如 gemini-2.0-flash-001

HTTP 方法和网址:

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

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

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

执行以下命令:

$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

您应该收到类似以下内容的 JSON 响应:

停用日志记录

使用 REST API 或 Python SDK 为基础模型停用请求-响应日志记录。

Python SDK

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

REST API

使用 setPublisherModelConfig 停用日志记录:

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型资源的位置。
  • PUBLISHER:发布商名称。例如 google
  • MODEL:基础模型名称。例如 gemini-2.0-flash-001

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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

您应该收到类似以下内容的 JSON 响应:

经过微调的模型的请求-响应日志

您可以使用 REST API 或 Python SDK 为微调模型配置请求-响应日志。

启用请求-响应日志

请选择以下任一标签页,了解如何为经过微调的模型启用请求-响应日志。

Python SDK

此方法可用于更新端点的请求-响应日志记录配置。

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
    )

REST API

只有在使用 projects.locations.endpoints.create 创建端点或使用 projects.locations.endpoints.patch 修补现有端点时才能启用请求-响应日志记录。

请求和响应是在端点级别记录的,因此系统会记录发送到同一端点下所有已部署模型的请求。

创建或修补端点时,请使用以下条目填充端点资源predictRequestResponseLoggingConfig 字段:

  • enabled:设置为 True 以启用请求-响应日志记录。

  • samplingRate:为降低存储费用,您可以设置介于 0 和 1 之间的数字,以定义要记录的请求的比例。例如,如果值为 1,则会记录所有请求;如果值为 0.1,则会记录 10% 的请求。

  • BigQueryDestination:用于日志记录的 BigQuery 表。如果仅指定项目名称,则系统会创建名为 logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID 的新数据集,其中 ENDPOINT_DISPLAY_NAME 遵循 BigQuery 命名规则。如果您未指定表名称,则系统会创建名为 request_response_logging 的新表。

  • enableOtelLogging:设置为 true 可启用 OpenTelemetry (OTEL) 日志记录,以及默认的请求-响应日志记录。

如需查看 BigQuery 表架构,请参阅日志表架构

下面是一个示例配置:

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

获取日志记录配置

使用 REST API 获取经过微调的模型的请求-响应日志记录配置。

REST API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:端点资源的位置。
  • MODEL:基础模型名称。例如 gemini-2.0-flash-001
  • ENDPOINT_ID:端点的 ID。

HTTP 方法和网址:

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

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

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

执行以下命令:

$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

您应该收到类似以下内容的 JSON 响应:

停用日志记录配置

停用端点的请求-响应日志记录配置。

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
    )

REST API

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

日志记录表架构

在 BigQuery 中,日志是使用以下架构记录的:

字段名称 类型 备注
endpoint STRING 要部署经过调优的模型的端点的资源名称。
deployed_model_id STRING 已部署到端点的调优模型的部署模型 ID。
logging_time TIMESTAMP 执行日志记录的时间。这大致是返回响应的时间。
request_id NUMERIC 根据 API 请求自动生成的整数请求 ID。
request_payload STRING 添加了此字段,以便进行合作伙伴模型日志记录,并与 Vertex AI 端点请求-响应日志向后兼容。
response_payload STRING 添加了此字段,以便进行合作伙伴模型日志记录,并与 Vertex AI 端点请求-响应日志向后兼容。
模型 STRING 模型资源名称。
model_version STRING 模型版本。对于 Gemini 模型,这通常是“默认”值。
api_method STRING generateContent、streamGenerateContent、rawPredict、streamRawPredict
full_request JSON 完整的 GenerateContentRequest
full_response JSON 完整的 GenerateContentResponse
元数据 JSON 调用的任何元数据;包含请求延迟时间。
otel_log JSON 采用 OpenTelemetry 架构格式的日志。仅当日志记录配置中启用了 otel_logging 时才可用。

请注意,如果请求-响应对大于 BigQuery Write API 10 MB 行限制,则不会记录。

后续步骤