记录和分享请求和回答

Gemini Enterprise Agent Platform 可以记录 Gemini 和受支持的合作伙伴模型的请求和响应样本。日志会保存到 BigQuery 表中,以供查看和分析。此外,Agent Platform 还可以与某些 MaaS 合作伙伴分享特定高级 AI 模型的请求-响应日志,以帮助您履行对这些 MaaS 合作伙伴的义务。

本页介绍了如何为基础模型和微调模型配置请求-响应日志。

日志记录支持的 API 方法

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

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

  • Anthropic Claude

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

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

启用请求-响应日志记录

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

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

如需为 Anthropic 模型使用请求-响应日志记录,请使用区域端点。全球端点多区域端点不支持此功能。

Python SDK

此方法可用于创建或更新 PublisherModelConfig

# Specify the preview version of GenerativeModel
import vertexai
from vertexai.preview.generative_models import(
    GenerativeModel,
    )

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"

vertexai.init(project=PROJECT_ID, location=LOCATION)

publisher_model = GenerativeModel("gemini-2.5-flash")

# 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 表的 URI。例如,bq://PROJECT_ID.DATASET_NAME.TABLE_NAME。如果仅指定项目名称,则系统会创建名为 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

# Specify the preview version of GenerativeModel
import vertexai
from vertexai.preview.generative_models import(
    GenerativeModel,
    )

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"

vertexai.init(project=PROJECT_ID, location=LOCATION)

publisher_model = GenerativeModel("gemini-2.5-flash")

# Disable logging
publisher_model.set_request_response_logging_config(
    enabled=False,
    sampling_rate=1.0,
    bigquery_destination="bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
    )

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

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

# Specify the preview version of GenerativeModel
import vertexai
from vertexai.preview.generative_models import(
    GenerativeModel,
    )

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"

vertexai.init(project=PROJECT_ID, location=LOCATION)

tuned_model = GenerativeModel(f"projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/ENDPOINT_ID")

# Set logging configuration
tuned_model.set_request_response_logging_config(
    enabled=True,
    sampling_rate=1.0,
    bigquery_destination=f"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

# Specify the preview version of GenerativeModel
import vertexai
from vertexai.preview.generative_models import(
    GenerativeModel,
    )

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"

vertexai.init(project=PROJECT_ID, location=LOCATION)

tuned_model = GenerativeModel(f"projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/ENDPOINT_ID")

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

REST API

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

日志记录表架构

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

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

请注意,如果请求-响应对的大小超过 BigQuery 写入 API 的 10MB 行限制,则不会记录。

与 MaaS 合作伙伴分享请求和响应

对于某些高级 AI 模型,部分 MaaS 合作伙伴要求以防篡改的方式与他们的信任与安全团队共享提示和回答的日志,以便他们监控潜在的滥用行为。例如,使用 Anthropic Advanced AI 受 Anthropic 的特定服务条款的第 F 条款约束。在 dataSharingEnabledProvider 功能处于有效状态时,根据《高级 AI 安全附录》记录的请求和响应将实时与 MaaS 合作伙伴共享。

如以下各部分中所述,您可以使用 setPublisherModelConfig API 启用防篡改的请求-响应日志共享。

支持的模型

下表列出了支持共享请求和响应的 MaaS 合作伙伴和模型:

支持的 MaaS 合作伙伴 支持的模型
Anthropic
  • Claude Mythos 预览版
  • Claude Mythos 5
  • Google Cloud 上的 Claude Fable 5

MaaS 合作伙伴和型号必须匹配。请求-响应日志只能与发布相应模型的 MaaS 合作伙伴共享。

前提条件

Google 必须先在此项目中获得《高级 AI 安全附录》的同意声明,然后才能启用数据共享。如需详细了解附录,请参阅高级 AI 安全

您无需为 BigQuery 启用请求-响应日志记录,即可使用请求-响应日志共享功能。

限制

默认情况下,受 VPC Service Controls 保护的项目无法与 MaaS 合作伙伴共享数据。不支持配置 VPC Service Controls 出站规则。如需为受 VPC Service Controls 保护的项目启用数据共享,请提交支持服务工单

启用数据

执行以下操作:

REST API

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

  • ENDPOINT_PREFIX:模型端点位置的相应前缀。请使用以下值:
    • 对于 global 端点,请使用 aiplatform
    • 对于 useu 等多区域端点,请使用 aiplatform.LOCATION.rep
    • 对于 us-central1 等区域级端点,请使用 LOCATION-aiplatform
  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型端点的位置。例如,globaluseuus-central1
  • PUBLISHER:模型发布者的名称,以小写形式表示。例如 anthropic
  • MODEL:基础模型名称。例如,claude-fable-5
  • MAAS_PARTNER:模型发布者的名称,采用大写形式。MaaS 合作伙伴必须是上述 MODEL 的大写版本。例如 ANTHROPIC

HTTP 方法和网址:

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

请求 JSON 正文:

{
  "publisherModelConfig": {
    "dataSharingEnabledProvider": "ANTHROPIC"
  }
}

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

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_PREFIX.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_PREFIX.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

获取共享配置

执行以下操作:

REST API

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

  • ENDPOINT_PREFIX:模型端点位置的相应前缀。请使用以下值:
    • 对于 global 端点,请使用 aiplatform
    • 对于 useu 等多区域端点,请使用 aiplatform.LOCATION.rep
    • 对于 us-central1 等区域级端点,请使用 LOCATION-aiplatform
  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型端点的位置。例如,globaluseuus-central1
  • PUBLISHER:模型发布者的名称,以小写形式表示。例如 anthropic
  • MODEL:基础模型名称。例如,claude-fable-5

HTTP 方法和网址:

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

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

curl

执行以下命令:

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

PowerShell

执行以下命令:

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

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

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

{
  "loggingConfig": {},
  "dataSharingEnabledProvider": "ANTHROPIC"
}

停用数据共享

执行以下操作:

REST API

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

  • ENDPOINT_PREFIX:模型端点位置的相应前缀。请使用以下值:
    • 对于 global 端点,请使用 aiplatform
    • 对于 useu 等多区域端点,请使用 aiplatform.LOCATION.rep
    • 对于 us-central1 等区域级端点,请使用 LOCATION-aiplatform
  • PROJECT_ID:您的项目 ID。
  • LOCATION:模型端点的位置。例如,globaluseuus-central1
  • PUBLISHER:模型发布者的名称,以小写形式表示。例如 anthropic
  • MODEL:基础模型名称。例如,claude-fable-5

HTTP 方法和网址:

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

请求 JSON 正文:

{
  "publisherModelConfig": {
    "dataSharingEnabledProvider": "MODEL_PROVIDER_UNSPECIFIED"
  }
}

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

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_PREFIX.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_PREFIX.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/PUBLISHER/models/MODEL:setPublisherModelConfig" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

阻止数据共享请求

为防止与 MaaS 合作伙伴共享请求和响应日志,项目管理员可以执行以下任一操作:

后续步骤