요청 및 응답 로깅

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: 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 메서드 및 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 문자열 조정된 모델이 배포된 엔드포인트의 리소스 이름입니다.
deployed_model_id 문자열 엔드포인트에 배포된 조정된 모델의 배포된 모델 ID입니다.
logging_time TIMESTAMP 로깅이 실행된 시간입니다. 대략 응답이 반환되는 시간입니다.
request_id 숫자 형식 API 요청을 기반으로 자동 생성된 정수 요청 ID입니다.
request_payload 문자열 파트너 모델 로깅 및 Vertex AI 엔드포인트 요청-응답 로그와의 하위 호환성을 위해 포함되었습니다.
response_payload 문자열 파트너 모델 로깅 및 Vertex AI 엔드포인트 요청-응답 로그와의 하위 호환성을 위해 포함되었습니다.
모델 문자열 모델 리소스 이름입니다.
model_version 문자열 모델 버전입니다. Gemini 모델의 경우 '기본값'인 경우가 많습니다.
api_method 문자열 generateContent, streamGenerateContent, rawPredict, streamRawPredict
full_request JSON 전체 GenerateContentRequest
full_response JSON 전체 GenerateContentResponse
메타데이터 JSON 호출의 메타데이터입니다. 요청 지연 시간이 포함됩니다.
otel_log JSON OpenTelemetry 스키마 형식의 로그 로깅 구성에서 otel_logging가 사용 설정된 경우에만 사용할 수 있습니다.

BigQuery write API 10MB 행 한도보다 큰 요청-응답 쌍은 기록되지 않습니다.

다음 단계