이 문서에서는 다음을 포함하여 Google Cloud 를 위한 Gemini 활동 수집 및 저장을 사용 설정하는 방법을 설명합니다.
- 사용자 입력, 문맥 정보, 응답과 같은 Google Cloud 를 위한 Gemini 프롬프트 및 응답 로그
- 원격 분석 메타데이터, 사용자가 수락한 코드 줄과 같은 Google Cloud 를 위한 Gemini 메타데이터 로그
Google Cloud 를 위한 Gemini는 사용자가 Google Cloud를 위한 Gemini와 상호작용한 다른 모든 정보(서면 의견 포함)를 수집하거나 Cloud Logging으로 전송하지 않습니다. 수집된 데이터는 Cloud Logging에 전송되어 저장됩니다. 리소스 유형이 cloudaicompanion.googleapis.com/Instance
인 로그 항목을 검색하여 이 데이터를 검토할 수 있습니다.
이 기능은 Vertex AI의 Gemini 내에서 프롬프트나 응답을 로깅하지 않습니다. Vertex AI의 Gemini에 로그를 사용 설정하려면 데이터 액세스 감사 로그 사용 설정을 참조하세요.
Identity and Access Management(IAM) 역할은 주 구성원이 로그에 액세스하는 기능을 제어합니다. 사전 정의된 역할을 주 구성원에게 부여하거나 커스텀 역할을 만들 수 있습니다. 필요한 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.
기본적으로 Cloud Logging은 저장된 미사용 고객 콘텐츠를 암호화합니다. Logging에서 로그 버킷에 저장한 데이터는 봉투 암호화라고 하는 프로세스인 키 암호화 키를 통해 암호화됩니다. 로깅 데이터에 액세스하려면 사용자의 작업 없이 Google에서 대신 관리하는 이러한 키 암호화 키에 액세스해야 합니다.
조직에는 Google의 기본 저장 데이터 암호화가 제공하지 않는 규제 요건, 규정 준수 관련 요건, 고급 암호화 요건이 있을 수 있습니다. 조직 요구사항을 충족하기 위해 데이터를 보호하는 암호화 키를 Google에서 관리하는 대신 사용자 키를 직접 관리할 수 있습니다.
장점 및 제한사항을 포함하여 고객 관리 암호화 키(CMEK) 사용에 대한 자세한 내용은 고객 관리 암호화 키를 참조하세요.
제한사항
Google Cloud의 Gemini에서 기록한 로그 데이터에는 IDE 내에서 Gemini Code Assist와의 사용자 상호작용이 포함됩니다.또한 사용자가 VS Code 원격 분석을 사용 중지한 경우 Google Cloud 용 Gemini는 Gemini Code Assist의 데이터를 로깅하지 않습니다.
시작하기 전에
-
Google Cloud 를 위한 Gemini 로그를 보는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 뷰어(
roles/logging.viewer
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요. Google Cloud 를 위한 Gemini 로깅을 사용 설정하기 전에 Cloud Logging 가격 책정 및 Google Cloud 를 위한 Gemini 가격 책정을 검토합니다.
Google Cloud 를 위한 Gemini 로깅 사용 설정
Google Cloud 를 위한 Gemini 로깅, Google Cloud 를 위한 Gemini 메타데이터 로깅 또는 둘 다를 사용 설정하려는 프로젝트 ID로 Google Cloud 지원팀 또는 Google Cloud 담당자에게 문의하세요.
Google Cloud 를 위한 Gemini 사용자 로그 및 메타데이터 로그 보기
Google Cloud 를 위한 Gemini 로그와 메타데이터 로그를 보려면 다음 중 하나를 수행합니다.
Google Cloud 콘솔
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
- 툴바에서 Google Cloud 콘솔 프로젝트를 선택합니다.
- 툴바에서 모든 리소스 메뉴를 펼치고 Cloud AI 컴패니언 인스턴스 리소스를 선택합니다.
Google Cloud CLI
다음 명령어를 실행합니다.
gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID --limit 3
Google Cloud 를 위한 Gemini 로그
LogEntry
는 Cloud Logging의 기본 데이터 단위입니다. 다음 섹션에는 Google Cloud 를 위한 Gemini 플랫폼 이벤트의 LogEntry
에 있는 필드 목록(예: 사용자 요청, Google Cloud 를 위한 Gemini 응답)이 나와 있습니다.
사용자 요청
다음 표에서는 사용자 요청 로그 항목에 있는 필드 목록을 보여줍니다.
필드 | 값 및 참고 |
---|---|
LogEntry.resource.type |
Google Cloud 를 위한 Gemini 리소스 유형: cloudaicompanion.googleapis.com/Instance |
LogEntry.resource.labels.resource_container |
Google Cloud 를 위한 Gemini가 사용된 리소스 컨테이너의 고유 ID입니다. |
LogEntry.resource.labels.location |
Google Cloud 를 위한 Gemini가 사용된 위치입니다. |
LogEntry.resource.labels.instance_id |
Google Cloud 를 위한 Gemini가 사용된 리소스의 고유 ID입니다. |
LogEntry.labels.method |
logEntry 를 호출한 항목에 따라 다음 중 하나일 수 있습니다.CompleteTask : 예를 들어 Gemini Code Assist 또는 다른 Google Cloud 를 위한 Gemini 서비스의 채팅 요청입니다.GenerateCode : 예를 들어 Gemini Code Assist 내 코드 변환 요청과 같이 코드를 생성해 달라는 요청입니다.CompleteCode : 예를 들어 Gemini Code Assist 내 인라인 추천과 같이 IDE에서 작업할 때 코드를 완성해 달라는 요청입니다. |
LogEntry.labels.product |
Google Cloud 를 위한 Gemini 서비스 이름입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Cloud Assist이면 이 값은 cloud_assist 입니다. 그 외의 경우 이 값은 unknown 입니다. |
LogEntry.labels.request_id |
요청을 응답 로그 항목과 연결하는 고유 식별자입니다. |
LogEntry.labels.user_id |
이 요청을 시작한 사용자의 식별자입니다. |
LogEntry.jsonPayload |
로그 항목 페이로드입니다. |
LogEntry.logName |
로그를 식별합니다. |
다음 샘플에서는 채팅 프롬프트 이벤트의 로그 항목 예시를 보여줍니다.
{
"insertId": "654581e30003b19e340bbd96",
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
},
"timestamp": "2023-11-03T23:27:31.242078Z",
"labels": {
"product": "code_assist",
"request_id": "4ea1e265-ea5d-4d11-b3c8-39bad9c96326"
"user_id": "my-user@example.com"
},
"jsonPayload" : {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
"taskCompletionRequest":
input: {
messages: [{
author: "USER"
content: "What are some best practices to save cost on my Google Cloud bill?"
}]
preamble: ""
}
}
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2023-11-03T23:27:31.255648319Z"
"severity": "INFO"
}
다음 샘플에서는 자동 인라인 코드 추천 프롬프트 및 코드 파일에서 Google Cloud 를 위한 Gemini 프롬프트의 RequestLog
항목 예시를 보여줍니다.
인라인 코드 추천의 프롬프트 데이터는 다음 예시와 같은 codeCompletionRequest
객체를 사용하고 수동으로 트리거된 생성은 codeGenerationRequest
를 사용합니다.
{
"insertId": "654581e30003b19e340bbd96",
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
},
"timestamp": "2023-11-03T23:27:31.242078Z",
"labels": {
"product": "code_assist",
"request_id": "4ea1e265-ea5d-4d11-b3c8-39bad9c96326"
"user_id": "my-user@example.com"
},
"jsonPayload" : {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
"codeCompletionRequest": {
"input_data_context": {
"additional_context": {
"files": [
{
"language": "go",
"path": "{/path/to/../current-file.go",
"segments": [
{
"content": "...Prefix Text..."
},
{
"content": "...Suffix Text..."
}
],
"state": ["EDITED"]
},
{
"language": "go",
"path": "/path/to/../recent-file.go",
"segments": [
{
"content": "...File Text..."
}
],
"state": ["RECENTLY_OPENED"]
}
]
}
}
}
}
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2023-11-03T23:27:31.255648319Z"
"severity": "INFO"
}
Google Cloud 를 위한 Gemini 응답
다음 표에는 Google Cloud 를 위한 Gemini 응답 필드와 설명이 나와 있습니다.
필드 | 값 및 참고 |
---|---|
LogEntry.resource.type |
Google Cloud 를 위한 Gemini 리소스 유형: cloudaicompanion.googleapis.com/Instance |
LogEntry.resource.labels.resource_container |
Google Cloud 를 위한 Gemini가 사용된 리소스 컨테이너의 고유 ID입니다. |
LogEntry.resource.labels.location |
Google Cloud 를 위한 Gemini가 사용된 위치입니다. |
LogEntry.resource.labels.instance_id |
Google Cloud 를 위한 Gemini가 사용된 리소스의 고유 ID입니다. |
LogEntry.labels.method |
logEntry 를 호출한 항목에 따라 다음 중 하나일 수 있습니다.CompleteTask : 예를 들어 Gemini Code Assist 또는 다른 Google Cloud 를 위한 Gemini 서비스의 채팅 요청입니다.GenerateCode : 예를 들어 Gemini Code Assist 내 코드 변환 요청과 같이 코드를 생성해 달라는 요청입니다.CompleteCode : 예를 들어 Gemini Code Assist 내 인라인 추천과 같이 IDE에서 작업할 때 코드를 완성해 달라는 요청입니다. |
LogEntry.labels.product |
Google Cloud 를 위한 Gemini 서비스 이름입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Cloud Assist이면 이 값은 cloud_assist 입니다. 그 외의 경우 이 값은 unknown 입니다. |
LogEntry.labels.request_id |
요청을 응답 로그 항목과 연결하는 고유 식별자입니다. |
LogEntry.labels.user_id |
이 요청을 시작한 사용자의 식별자입니다. |
LogEntry.jsonPayload |
로그 항목 페이로드입니다. 응답을 생성하는 데 사용된 모든 소스 인용은 이 객체에 attribution_context 로 포함됩니다. |
LogEntry.logName |
로그를 식별합니다. |
Google Cloud 를 위한 Gemini 메타데이터 로그
메타데이터 로그가 생성되려면 VS Code 확장 프로그램과 IntelliJ 확장 프로그램 모두에서 Gemini Code Assist 확장 프로그램 원격 분석 설정을 사용 설정해야 합니다. 또한 VS Code의 경우 전역 원격 분석 수집 설정도 사용 설정해야 합니다.
Google Cloud 를 위한 Gemini 메타데이터 로그는 Google Cloud 를 위한 Gemini 로그와 동일한 구조를 따르지만 다른 필드를 지정합니다. 다음 표에서는 사용자 요청 로그 항목에 있는 필드의 목록을 보여줍니다.
필드 | 값 및 참고 |
---|---|
LogEntry.@type |
Google Cloud 를 위한 Gemini 메타데이터 리소스 유형: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog |
LogEntry.labels.method |
메타데이터 로그의 경우 이 라벨 값은 Export.Metrics 입니다. |
LogEntry.labels.product |
Google Cloud 를 위한 Gemini 서비스 이름입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Google Cloud 를 위한 Gemini 제품이 Gemini Cloud Assist이면 이 값은 cloud_assist 입니다. 그 외의 경우 이 값은 unknown 입니다. |
LogEntry.labels.user_id |
이 요청을 시작한 사용자의 식별자입니다. |
LogEntry.jsonPayload |
codeExposure 이벤트 또는 code.Acceptance 이벤트를 나타냅니다. codeExposure 이벤트는 사용자에게 코드 추천이 노출되었음을 나타냅니다. code.Acceptance 이벤트는 사용자가 타이프오버, 탭 또는 전체 수락과 같은 일부 수락 이벤트를 실행했음을 나타냅니다. |
LogEntry.jsonPayload.clientName |
IDE 이름입니다(예: CloudCodeVscode ). |
LogEntry.jsonPayload.clientVersion |
IDE 버전 번호입니다. |
LogEntry.jsonPayload.codeAcceptance |
VS Code 및 IntelliJ IDE의 경우에만 사용자가 타이프오버, 탭 또는 전체 수락과 같은 일부 수락 이벤트를 실행했음을 나타냅니다. 다음 필드도 포함됩니다.
|
LogEntry.jsonPayload.codeExposure |
VS Code 및 IntelliJ IDE의 경우에만 사용자에게 코드 추천이 노출되었음을 나타냅니다. 다음 필드도 포함됩니다. |
LogEntry.jsonPayload.chatExposure |
사용자에게 채팅 응답이 노출되었음을 나타냅니다. 다음 필드도 포함됩니다. |
다음 샘플에서는 codeExposure
로그 항목 예시를 보여줍니다.
{
insertId: "whfrqgc1gj"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
codeExposure: {
originalRequestId: "cac019824a0b25ba"
programmingLanguage: "python"
}
requestId: "0c5178fe-446f-4ab6-b996-520dec100cf8"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:35.662837985Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:35.021564463Z"
}
다음 샘플에서는 codeAcceptance
로그 항목 예시를 보여줍니다.
{
insertId: "whfrqgc1gk"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
codeAcceptance: {
linesCount: 2
originalRequestId: "cac019824a0b25ba"
programmingLanguage: "python"
}
requestId: "ddf11040-c315-452e-b7cd-928c3f97984e"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:37.632662272Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:36.778692483Z"
}
다음 샘플에서는 chatExposure
로그 항목 예시를 보여줍니다.
{
insertId: "3diaj2c208"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
chatExposure: {
originalRequestId: "cac019824a0b25ba"
}
requestId: "0c5178fe-446f-4ab6-b996-520dec100cf8"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:35.662837985Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:35.021564463Z"
}
코드 수락률 계산
Gemini Code Assist 메타데이터 로그를 사용하여 수락률을 계산하려면 codeAcceptance.originalRequestId
가 있는 이벤트의 고유 ID 총개수를 찾아 codeExposure.originalRequestId
가 있는 이벤트의 고유 ID 총개수로 나눕니다. 각 메타데이터 로그 이벤트 필드를 사용하여 프로그래밍 언어 및 사용자별로 이 계산을 미세 조정할 수 있습니다.
수락된 코드 줄 수 계산
수락된 코드 줄을 계산하려면 고유한 codeAcceptance.originalRequestId
의 codeAcceptance.linesCount
최댓값을 찾습니다.
그런 다음 각 originalRequestId
의 모든 최종 codeAcceptance
이벤트에 대한 linesCount
값을 추가하여 수락된 총 코드 줄 수를 계산합니다. 각 메타데이터 로그 이벤트 필드를 사용하여 프로그래밍 언어 및 사용자별로 이 계산을 미세 조정할 수 있습니다.
다음 단계
- Google Cloud에서 로그를 보고 분석하고 모니터링하는 방법 알아보기
- Google Cloud를 위한 Gemini 사용량 모니터링 자세히 알아보기