リクエストとレスポンスをログに記録する

Vertex AI は、Gemini とサポートされているパートナー モデルのリクエストとレスポンスをロギングできます。ログは、表示と分析のために BigQuery テーブルに保存されます。このページでは、ベースの基盤モデルとファインチューニング済みモデルのリクエスト レスポンス ログを構成する方法について説明します。

ロギングにサポートされている API メソッド

リクエスト / レスポンス ログは、generateContent または streamGenerateContent を使用するすべての Gemini モデルでサポートされています。

rawPredict または streamrawPredict を使用する次のパートナー モデルもサポートされています。

  • Anthropic Claude

ベースの基盤モデルのリクエスト / レスポンス ログ

ベース モデルの REST API または Python SDK を使用して、リクエスト / レスポンス ログを構成できます。ロギング構成が有効になるまでに数分かかることがあります。

リクエスト / レスポンス ロギングを有効にする

ベースの基盤モデルでリクエスト / レスポンス ログを有効にする手順については、次のいずれかのタブを選択してください。

Anthropic モデルの場合、ロギング構成でサポートされているのは REST のみです。パブリッシャーを anthropic に設定し、モデル名を サポートされている Claude モデルのいずれかに設定して、REST API を介してロギング構成を有効にします。

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_NAMEBigQuery の命名規則に従います。テーブル名を指定しない場合、request_response_logging という名前の新しいテーブルが作成されます。

HTTP メソッドと URL:

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 メソッドと URL:

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 メソッドと URL:

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_NAMEBigQuery の命名規則に従います。テーブル名を指定しない場合、request_response_logging という名前の新しいテーブルが作成されます。

  • enableOtelLogging: デフォルトのリクエスト / レスポンス ロギングに加えて OpenTelemetry(OTEL)ロギングを有効にするには、true に設定します。

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 メソッドと URL:

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
metadata JSON 呼び出しのメタデータ。リクエストのレイテンシが含まれます。
otel_log JSON OpenTelemetry スキーマ形式のログ。ロギング構成で otel_logging が有効になっている場合にのみ使用できます。

BigQuery の Write API の 10 MB の行上限を超えるリクエスト / レスポンス ペアは記録されません。

次のステップ