En este documento, se describe cómo puedes habilitar la recopilación y el almacenamiento de la actividad de Gemini para Google Cloud , lo que incluye lo siguiente:
- Gemini para Google Cloud instrucciones y registros de respuestas, como entradas del usuario, información contextual y respuestas.
- Gemini para Google Cloud registros de metadatos, como los metadatos de telemetría y las líneas de código que acepta el usuario.
Gemini para Google Cloud no recopila ni envía a
Cloud Logging ninguna otra interacción del usuario que este haya tenido con
Gemini para Google Cloud, incluidos los comentarios escritos. Los datos recopilados se envían a Cloud Logging para su almacenamiento. Para revisar estos datos, busca entradas de registro con el tipo de recurso cloudaicompanion.googleapis.com/Instance
.
Esta función no registra instrucciones ni respuestas dentro de Gemini en Vertex AI. Para habilitar los registros de Gemini en Vertex AI, consulta Habilita los registros de auditoría de acceso a los datos.
Los roles de Identity and Access Management (IAM) controlan la capacidad de un principal para acceder a los registros. Puedes otorgar roles predefinidos a las principales o crear roles personalizados. Para obtener más información sobre los permisos obligatorios, consulta Control de acceso.
De forma predeterminada, Cloud Logging encripta el contenido del cliente almacenado en reposo. Los datos que Logging almacena en los buckets de registros se encriptan con claves de encriptación de claves, un proceso conocido como encriptación de sobre. Acceder a tus datos de registro requiere acceso a esas claves de encriptación de claves, que Google administra sin que tengas que realizar ninguna acción.
Tu organización puede tener requisitos de encriptación avanzados, regulatorios o relacionados con el cumplimiento que nuestra encriptación en reposo predeterminada no proporciona. Para cumplir con los requisitos de tu organización, en lugar de que Google administre las claves de encriptación que protegen tus datos, puedes administrar tus claves.
Para obtener información específica sobre el uso de las claves de encriptación administradas por el cliente (CMEK), incluidas las ventajas y limitaciones, consulta Claves de encriptación administradas por el cliente.
Limitaciones
Los datos de registro que registra Gemini en Google Cloud no incluyen las interacciones de los usuarios con los siguientes productos:- Gemini en BigQuery
- Gemini en Looker
- Gemini en Google Security Operations
- Panel de Gemini en la consola de Google Cloud para Database Center
Antes de comenzar
-
Para obtener los permisos que necesitas para ver los registros de Gemini, pídele a tu administrador que te otorgue el rol de IAM Visualizador de registros (
roles/logging.viewer
) en tu proyecto. Google Cloud Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Revisa los precios de Cloud Logging y los precios de Gemini para Google Cloud antes de habilitar Gemini para Google Cloud el registro.
Habilita Gemini para el registro de Google Cloud
Comunícate con el Google Cloud equipo de asistencia o tu Google Cloud representante con el ID del proyecto para el que deseas habilitar Gemini para el registro deGoogle Cloud , Gemini para el registro de Google Cloud metadatos o ambos.
Consulta los registros de usuarios y metadatos de Gemini para Google Cloud
Para ver los registros de usuarios y de metadatos de Gemini, haz lo siguiente: Google Cloud
Consola de Google Cloud
-
En la consola de Google Cloud, ve a la página Explorador de registros.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
- En la barra de herramientas, selecciona un proyecto de la consola de Google Cloud.
- En la barra de herramientas, expande el menú Todos los recursos y selecciona el recurso Instancia complementaria de Cloud AI.
Google Cloud CLI
Ejecuta el siguiente comando:
gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID --limit 3
Gemini para registros de Google Cloud
Un LogEntry
es la unidad básica de datos en Cloud Logging. En las siguientes secciones, se proporcionan listas de campos que se encuentran
en el LogEntry
para un evento de la plataforma de Gemini para Google Cloud , como
solicitudes del usuario y respuestas de Gemini para Google Cloud .
Solicitudes del usuario
En la siguiente tabla, se muestra una lista de los campos que se encuentran en una entrada de registro de solicitudes del usuario.
Campo | Valores y notas |
---|---|
LogEntry.resource.type |
Gemini para Google Cloud tipo de recurso: cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container |
Es el ID único del contenedor de recursos en el que se usó Gemini para Google Cloud . |
LogEntry.resource.labels.location |
Ubicación en la que se usó Gemini para Google Cloud |
LogEntry.resource.labels.instance_id |
Es el ID único del recurso en el que se usó Gemini para Google Cloud . |
LogEntry.labels.method |
Puede ser uno de los siguientes, según lo que invocó logEntry :CompleteTask : por ejemplo, una solicitud de chat de Gemini Code Assist o de otro servicio de Gemini para Google Cloud .GenerateCode : por ejemplo, una solicitud para generar código, como con una solicitud de transformación de código en Gemini Code Assist.CompleteCode : por ejemplo, una solicitud para completar código cuando se trabaja en el IDE, como con las sugerencias intercaladas en Gemini Code Assist. |
LogEntry.labels.product |
Gemini para el Google Cloud nombre del servicio. Si el producto de Gemini para Google Cloud es Gemini Code Assist, este valor es code_assist . Si el producto de Gemini para Google Cloud es Gemini Cloud Assist, este valor es cloud_assist . De lo contrario, este valor es unknown . |
LogEntry.labels.request_id |
Es 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. |
En el siguiente ejemplo, se muestra una entrada de registro de ejemplo para un evento de instrucción 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"
}
En el siguiente ejemplo, se muestra una entrada RequestLog
de ejemplo para las instrucciones automáticas de sugerencia de código intercalado y solicitar a Gemini Google Cloud en un archivo de código.
Los datos de instrucciones para las sugerencias de código intercalado usan el objeto codeCompletionRequest
(como se muestra en el siguiente ejemplo), mientras que la generación activada de forma manual usa 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"
}
Gemini para respuestas de Google Cloud
En la siguiente tabla, se muestran los campos de respuesta y las descripciones de Gemini para Google Cloud .
Campo | Valores y notas |
---|---|
LogEntry.resource.type |
Gemini para Google Cloud tipo de recurso: cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container |
Es el ID único del contenedor de recursos en el que se usó Gemini para Google Cloud . |
LogEntry.resource.labels.location |
Ubicación en la que se usó Gemini para Google Cloud |
LogEntry.resource.labels.instance_id |
Es el ID único del recurso en el que se usó Gemini para Google Cloud . |
LogEntry.labels.method |
Puede ser uno de los siguientes, según lo que invocó logEntry :CompleteTask : por ejemplo, una solicitud de chat de Gemini Code Assist o de otro servicio de Gemini para Google Cloud .GenerateCode : por ejemplo, una solicitud para generar código, como con una solicitud de transformación de código en Gemini Code Assist.CompleteCode : por ejemplo, una solicitud para completar código cuando se trabaja en el IDE, como con las sugerencias intercaladas en Gemini Code Assist. |
LogEntry.labels.product |
Gemini para el Google Cloud nombre del servicio. Si el producto de Gemini para Google Cloud es Gemini Code Assist, este valor es code_assist . Si el producto de Gemini para Google Cloud es Gemini Cloud Assist, este valor es cloud_assist . De lo contrario, este valor es unknown . |
LogEntry.labels.request_id |
Es 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. Cualquier cita de fuente que se use para generar la respuesta se incluye en este objeto como attribution_context . |
LogEntry.logName |
Identifica el registro. |
Gemini para Google Cloud registros de metadatos
Para que se generen los registros de metadatos, el parámetro de configuración de telemetría de la extensión Gemini Code Assist debe estar habilitado para las extensiones de VS Code y de IntelliJ. Además, para VS Code, también se debe habilitar el parámetro de configuración de recopilación de telemetría global.
Los registros de metadatos de Gemini para Google Cloud siguen la misma estructura que los registros de Gemini para Google Cloud , pero especifican campos diferentes. En la siguiente tabla, se muestra una lista de los campos que se encuentran en una entrada de registro de solicitud del usuario:
Campo | Valores y notas |
---|---|
LogEntry.@type |
Gemini 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 |
Gemini para el Google Cloud nombre del servicio. Si el producto de Gemini para Google Cloud es Gemini Code Assist, este valor es code_assist . Si el producto de Gemini para Google Cloud 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 a un usuario. Un evento code.Acceptance indica que el usuario realizó algún evento de aceptación, como la sustitución de texto, la tecla Tab o la aceptación completa. |
LogEntry.jsonPayload.clientName |
El nombre del IDE, como CloudCodeVscode . |
LogEntry.jsonPayload.clientVersion |
Es el número de versión del IDE. |
LogEntry.jsonPayload.codeAcceptance |
Solo para VS Code y los IDEs de IntelliJ, indica que el usuario realizó algún evento de aceptación, como la sustitución de texto, la tabulación o la aceptación completa. También incluye los siguientes campos:
|
LogEntry.jsonPayload.codeExposure |
Solo para los IDEs de VS Code y 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:
|
En el siguiente ejemplo, se muestra una entrada de registro de codeExposure
de ejemplo:
{
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"
}
En el siguiente ejemplo, se muestra una entrada de registro de codeAcceptance
de ejemplo:
{
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"
}
En el siguiente ejemplo, se muestra una entrada de registro de chatExposure
de ejemplo:
{
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"
}
Cómo calcular el porcentaje de aceptación de códigos
Para calcular el porcentaje de aceptación con los registros de metadatos de Gemini Code Assist, busca la cantidad total de IDs únicos de los eventos con codeAcceptance.originalRequestId
y divídela por la cantidad total de IDs únicos de los eventos con codeExposure.originalRequestId
. Puedes definir mejor este cálculo por lenguaje de programación y por usuario con los campos de eventos de registro de metadatos correspondientes.
Calcula las líneas de código aceptadas
Para calcular las líneas de código aceptadas, busca el evento final con marca de tiempo con codeAcceptance
para obtener un codeAcceptance.originalRequestId
único y, luego, observa codeAcceptance.linesCount
. Luego, agrega el valor linesCount
para todos los eventos codeAcceptance
finales de cada originalRequestId
para calcular el total de líneas de código aceptadas. Puedes definir mejor este cálculo por lenguaje de programación y por usuario con los respectivos campos de eventos de registro de metadatos.
¿Qué sigue?
- Obtén información para ver, analizar y supervisar tus registros en Google Cloud.
- Obtén más información para supervisar el uso de Gemini para Google Cloud.