Este documento describe cómo puede habilitar la recopilación y el almacenamiento de Gemini para Google Cloud actividad, incluyendo lo siguiente:
- Géminis para Google Cloud indicaciones y registros de respuestas, como entrada del usuario, información contextual y respuestas.
- Géminis para Google Cloud registros de metadatos, como metadatos de telemetría y líneas de código aceptadas por el usuario.
Si necesita generar métricas de Gemini Code Assist, consulte Monitor Gemini para Google Cloud uso .
Géminis para Google Cloud no recopila ni envía a Cloud Logging ninguna otra interacción del usuario que el usuario pueda haber tenido con Gemini. Google Cloud, incluyendo comentarios por escrito. Los datos recopilados se envían a Cloud Logging para su almacenamiento. Puede revisar estos datos buscando entradas de registro con el tipo de recurso cloudaicompanion.googleapis.com/Instance
.
Esta función no registra solicitudes ni respuestas en Gemini en Vertex AI. Para habilitar los registros de Gemini en Vertex AI, consulte "Habilitar registros de auditoría de acceso a datos" .
Los roles de Administración de Identidad y Acceso (IAM) controlan la capacidad de una entidad de seguridad para acceder a los registros. Puede otorgar roles predefinidos a las entidades de seguridad o crear roles personalizados. Para obtener más información sobre los permisos necesarios, consulte Control de acceso .
De forma predeterminada, Cloud Logging cifra el contenido de los clientes almacenado en reposo . Los datos que Logging almacena en los depósitos de registro se cifran mediante claves de cifrado de claves, un proceso conocido como cifrado de sobre . Para acceder a sus datos de registro, es necesario acceder a dichas claves de cifrado de claves, que Google gestiona automáticamente sin que usted tenga que hacer nada.
Es posible que su organización tenga requisitos de cifrado regulatorios, de cumplimiento o avanzados que nuestro cifrado en reposo predeterminado no cubre. Para cumplir con los requisitos de su organización, en lugar de que Google administre las claves de cifrado que protegen sus datos, puede administrarlas usted mismo.
Para obtener información específica sobre el uso de claves de cifrado administradas por el cliente (CMEK), incluidas las ventajas y limitaciones, consulte Claves de cifrado administradas por el cliente .
Limitaciones
Géminis en Google Cloud La grabación de datos de registro se limita a las interacciones del usuario con Gemini Code Assist dentro del IDE.
Además, si el usuario final desactiva la configuración de telemetría de VS Code, Gemini para Google Cloud No registra metadatos. Sin embargo, se siguen generando registros de solicitudes y respuestas cuando los administradores los habilitan.
Antes de empezar
Para obtener los permisos que necesita para ver Gemini Google Cloud Para obtener información sobre los registros, solicite a su administrador que le otorgue el rol de IAM " Visor de registros" (
roles/logging.viewer
) en su proyecto. Para obtener más información sobre cómo otorgar roles, consulte "Administrar el acceso a proyectos, carpetas y organizaciones" .También es posible que puedas obtener los permisos necesarios a través de roles personalizados u otros roles predefinidos .
Revise los precios de Cloud Logging y Gemini para Google Cloud precios antes de habilitar Gemini para Google Cloud registro .
Ver Gemini para Google Cloud registros de usuarios y registros de metadatos
Para ver Gemini por Google Cloud registros de usuario y registros de metadatos, realice una de las siguientes acciones:
Consola
En el Google Cloud consola, vaya a la página del Explorador de registros :
Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo sea Registro .
- En la barra de herramientas, seleccione una Google Cloud proyecto de consola.
- En la barra de herramientas, expanda el menú Todos los recursos y seleccione el recurso Cloud AI Companion Instance .
nube g
Ejecute el siguiente comando:
gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID --limit 3
Reemplace PROJECT_ID
con el ID del proyecto para el cual Gemini está diseñado. Google Cloud registros que desea ver.
API
Crea un archivo JSON que contenga la siguiente información:
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "resource.type: cloudaicompanion.googleapis.com/Instance" }
Reemplace
PROJECT_ID
con el ID del proyecto para el cual Gemini está diseñado. Google Cloud registros que desea ver.Obtener un token de autenticación :
TOKEN=$(gcloud auth print-access-token)
Utilice
cURL
para llamar al métodoentries.list
:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://logging.googleapis.com/v2/entries:list"
Reemplace
JSON_FILE_NAME
con la ruta del archivo JSON que creó en el paso anterior.Para obtener más información sobre la autenticación, consulte Autenticar para usar REST .
La respuesta devuelve un conjunto de entradas de registro.
Géminis para Google Cloud registros
Una LogEntry
es la unidad básica de datos en Cloud Logging. Las siguientes secciones proporcionan listas de campos que se encuentran en la LogEntry
de un Gemini. Google Cloud evento de la plataforma, como solicitudes de usuarios y Gemini para Google Cloud respuestas .
Solicitudes de los usuarios
La siguiente tabla muestra una lista de campos encontrados en una entrada de registro de solicitud de usuario.
Campo | Valores y notas |
---|---|
LogEntry.resource.type | Géminis para Google Cloud tipo de recurso : cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container | Identificador único del contenedor de recursos donde se encuentra Gemini Google Cloud fue utilizado |
LogEntry.resource.labels.location | Ubicación donde se encuentra Géminis Google Cloud fue utilizado |
LogEntry.resource.labels.instance_id | Identificador único del recurso donde se encuentra Gemini Google Cloud fue utilizado |
LogEntry.labels.method | Puede ser uno de los siguientes, dependiendo de lo que haya invocado logEntry :CompleteTask : por ejemplo, una solicitud de chat de Gemini Code Assist u otro Gemini para Google Cloud servicio.GenerateCode : por ejemplo, una solicitud para generar código, como con una solicitud de transformación de código dentro de Gemini Code Assist.CompleteCode : por ejemplo, una solicitud para completar el código cuando se trabaja en el IDE, como con sugerencias en línea dentro de Gemini Code Assist. |
LogEntry.labels.product | Géminis para Google Cloud Nombre del servicio. Si el Gemini para Google Cloud El producto es Gemini Code Assist, entonces este valor es code_assist . Si Gemini para Google Cloud Si el producto es Gemini Cloud Assist, este valor es cloud_assist . De lo contrario, este valor es unknown . |
LogEntry.labels.request_id | Un identificador único para correlacionar una solicitud con una entrada de registro de respuesta. |
LogEntry.labels.user_id | El identificador del usuario que inició esta solicitud. |
LogEntry.jsonPayload | La carga útil de la entrada de registro. |
LogEntry.logName | Identifica el registro. |
El siguiente ejemplo muestra una entrada de registro de ejemplo para un evento de aviso de chat.
{
"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"
}
El siguiente ejemplo muestra un ejemplo de entrada RequestLog
para solicitudes de sugerencias de código en línea automáticas y solicitudes de Gemini para Google Cloud en un archivo de código .
Los datos de solicitud para sugerencias de código en línea utilizan el objeto codeCompletionRequest
(como se muestra en el siguiente ejemplo), mientras que la generación activada manualmente utiliza 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"
}
Géminis para Google Cloud respuestas
La siguiente tabla muestra Géminis para Google Cloud campos de respuesta y descripciones.
Campo | Valores y notas |
---|---|
LogEntry.resource.type | Géminis para Google Cloud tipo de recurso : cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container | Identificador único del contenedor de recursos donde se encuentra Gemini Google Cloud fue utilizado |
LogEntry.resource.labels.location | Ubicación donde se encuentra Géminis Google Cloud fue utilizado |
LogEntry.resource.labels.instance_id | Identificador único del recurso donde se encuentra Gemini Google Cloud fue utilizado |
LogEntry.labels.method | Puede ser uno de los siguientes, dependiendo de lo que haya invocado logEntry :CompleteTask : por ejemplo, una solicitud de chat de Gemini Code Assist u otro Gemini para Google Cloud servicio.GenerateCode : por ejemplo, una solicitud para generar código, como con una solicitud de transformación de código dentro de Gemini Code Assist.CompleteCode : por ejemplo, una solicitud para completar el código cuando se trabaja en el IDE, como con sugerencias en línea dentro de Gemini Code Assist. |
LogEntry.labels.product | Géminis para Google Cloud Nombre del servicio. Si el Gemini para Google Cloud El producto es Gemini Code Assist, entonces este valor es code_assist . Si Gemini para Google Cloud Si el producto es Gemini Cloud Assist, este valor es cloud_assist . De lo contrario, este valor es unknown . |
LogEntry.labels.request_id | Un identificador único para correlacionar una solicitud con una entrada de registro de respuesta. |
LogEntry.labels.user_id | El identificador del usuario que inició esta solicitud. |
LogEntry.jsonPayload | La carga útil de la entrada de registro. Las citas de fuentes utilizadas para generar la respuesta se incluyen en este objeto como attribution_context . |
LogEntry.logName | Identifica el registro. |
Géminis para Google Cloud registros de metadatos
Para generar los registros de metadatos, la configuración de telemetría de la extensión Gemini Code Assist debe estar habilitada tanto para VS Code como para IntelliJ. Además, para VS Code, también debe estar habilitada la configuración de recopilación de telemetría global .
Géminis para Google Cloud Los registros de metadatos siguen la misma estructura que Gemini para Google Cloud Los registros, pero especifican campos diferentes. La siguiente tabla muestra una lista de campos encontrados en una entrada del registro de solicitud de usuario:
Campo | Valores y notas |
---|---|
LogEntry.@type | Géminis para Google Cloud Tipo de recurso de metadatos: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog . |
LogEntry.labels.method | Para los registros de metadatos, este valor de etiqueta es Export.Metrics . |
LogEntry.labels.product | Géminis para Google Cloud Nombre del servicio. Si el Gemini para Google Cloud El producto es Gemini Code Assist, entonces este valor es code_assist . Si Gemini para Google Cloud Si el producto es Gemini Cloud Assist, este valor es cloud_assist . De lo contrario, este valor es unknown . |
LogEntry.labels.user_id | El identificador del usuario que inició esta solicitud. |
LogEntry.jsonPayload | Indica un evento codeExposure o code.Acceptance . Un evento codeExposure indica la exposición de una sugerencia de código al usuario. Un evento code.Acceptance indica que el usuario ha aceptado algún evento, como una sobreescritura, una tabulación o una aceptación completa. |
LogEntry.jsonPayload.clientName | El nombre del IDE, como CloudCodeVscode . |
LogEntry.jsonPayload.clientVersion | El número de versión IDE. |
LogEntry.jsonPayload.codeAcceptance | Solo para IDEs de VS Code e IntelliJ, indica que el usuario aceptó algún evento, como una sobreescritura, una tabulación o una aceptación completa. También incluye los siguientes campos:
|
LogEntry.jsonPayload.codeExposure | Solo para IDEs de VS Code e IntelliJ, indica que se expuso una sugerencia de código a un usuario. También incluye los siguientes campos:
|
LogEntry.jsonPayload.chatExposure | Indica que se expuso una respuesta de chat a un usuario. También incluye el siguiente campo:
|
El siguiente ejemplo muestra un ejemplo de entrada del registro de 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"
}
El siguiente ejemplo muestra un ejemplo de entrada de registro 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"
}
El siguiente ejemplo muestra un ejemplo de entrada de registro 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"
}
Calcular la tasa de aceptación del código
Para calcular la tasa de aceptación con los registros de metadatos de Gemini Code Assist, encuentre el número total de ID únicos de eventos con codeAcceptance.originalRequestId
y divídalo entre el número total de ID únicos de eventos con codeExposure.originalRequestId
. Puede refinar este cálculo por lenguaje de programación y por usuario utilizando los campos de evento del registro de metadatos correspondientes.
Calcular líneas de código aceptadas
Para calcular las líneas de código aceptadas, encuentre el valor máximo de codeAcceptance.linesCount
para un codeAcceptance.originalRequestId
único. Luego, sume el valor linesCount
de todos los eventos codeAcceptance
finales para cada originalRequestId
para calcular el total de líneas de código aceptadas. Puede refinar este cálculo por lenguaje de programación y por usuario utilizando los campos de eventos del registro de metadatos correspondientes.
¿Qué sigue?
- Aprenda a ver, analizar y supervisar sus registros en Google Cloud .
- Obtenga más información sobre cómo monitorear el uso de Gemini para Google Cloud .