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

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

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

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

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

  • Anthropic Claude

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

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

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

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

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

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 テーブル。プロジェクト名のみを指定した場合、新しいデータセットが 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

# 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,
    )

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

この方法は、エンドポイントのリクエスト / レスポンス ロギング構成を更新するために使用できます。

# 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
publisher_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_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

# 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,
    )

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 モデルでは「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 の 10 MB の行の上限を超えるリクエストとレスポンスのペアは記録されません。

次のステップ