이 문서에서는 다음을 포함하여 Google Cloud 활동에 Gemini 수집 및 저장을 사용 설정하는 방법을 설명합니다.
- 사용자 입력, 문맥 정보, 대답과 같은 Google Cloud 프롬프트 및 응답 로그를 위한 Gemini
- Gemini for Google Cloud 메타데이터 로그(예: 원격 분석 메타데이터, 사용자가 수락한 코드 줄)
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
시작하기 전에
-
로그용 Gemini를 보는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 뷰어 (
roles/logging.viewer
) IAM 역할을 부여해 달라고 요청하세요. Google Cloud 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요. 로깅을 위한 Gemini를 사용 설정하기 전에 Cloud Logging 가격 책정 및 Gemini 가격 책정 Google Cloud 을 검토합니다. Google Cloud
로깅을 위해 Gemini 사용 설정 Google Cloud
Google Cloud 로깅을 위한 Gemini, Google Cloud 메타데이터 로깅을 위한 Gemini 또는 둘 다를 사용 설정하려는 프로젝트 ID를 포함하여 지원팀 Google Cloud 또는 Google Cloud 담당자에게 문의하세요.
Google Cloud 사용자 로그 및 메타데이터 로그를 위한 Gemini 보기
사용자 로그 및 메타데이터 로그용 Gemini를 보려면 다음 중 하나를 실행합니다. Google Cloud
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의 기본 데이터 단위입니다. 다음 섹션에는 플랫폼용 Gemini 이벤트의 LogEntry
에 있는 필드 목록(예: 사용자 요청, 플랫폼용 Gemini 응답)이 나와 있습니다. Google Cloud Google Cloud
사용자 요청
다음 표에서는 사용자 요청 로그 항목에 있는 필드 목록을 보여줍니다.
필드 | 값 및 참고 |
---|---|
LogEntry.resource.type |
Google Cloud 리소스 유형: cloudaicompanion.googleapis.com/Instance 을 위한 Gemini |
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 또는 기타 Gemini for Google Cloud service의 채팅 요청입니다.GenerateCode : 예를 들어 Gemini Code Assist 내의 코드 변환 요청과 같이 코드를 생성해 달라는 요청입니다.CompleteCode : 예를 들어 Gemini Code Assist 내의 인라인 추천과 같이 IDE에서 작업할 때 코드를 완성해 달라는 요청입니다. |
LogEntry.labels.product |
Google Cloud 서비스 이름을 위한 Gemini입니다. Gemini for Google Cloud 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Gemini for Google Cloud 제품이 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 리소스 유형: cloudaicompanion.googleapis.com/Instance 을 위한 Gemini |
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 또는 기타 Gemini for Google Cloud service의 채팅 요청입니다.GenerateCode : 예를 들어 Gemini Code Assist 내의 코드 변환 요청과 같이 코드를 생성해 달라는 요청입니다.CompleteCode : 예를 들어 Gemini Code Assist 내의 인라인 추천과 같이 IDE에서 작업할 때 코드를 완성해 달라는 요청입니다. |
LogEntry.labels.product |
Google Cloud 서비스 이름을 위한 Gemini입니다. Gemini for Google Cloud 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Gemini for Google Cloud 제품이 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 |
메타데이터 리소스 유형을 위한 Gemini: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog Google Cloud |
LogEntry.labels.method |
메타데이터 로그의 경우 이 라벨 값은 Export.Metrics 입니다. |
LogEntry.labels.product |
Google Cloud 서비스 이름을 위한 Gemini입니다. Gemini for Google Cloud 제품이 Gemini Code Assist이면 이 값은 code_assist 입니다. Gemini for Google Cloud 제품이 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 사용량 모니터링에 대해 자세히 알아보세요.