Este documento descreve como ativar a coleta e o armazenamento de atividades do Gemini para Google Cloud , incluindo:
- O Gemini para Google Cloud comandos e registros de resposta, como entrada do usuário, informações contextuais e respostas.
- Gemini para registros de metadados Google Cloud , como metadados de telemetria e linhas de código aceitas pelo usuário.
O Gemini para Google Cloud não coleta nem envia para o Cloud Logging nenhuma outra interação do usuário com o Gemini para Google Cloud, incluindo feedback por escrito. Os
dados coletados são enviados para armazenamento no Cloud Logging. É possível analisar esses dados
pesquisando entradas de registro com o tipo de recurso
cloudaicompanion.googleapis.com/Instance
.
Esse recurso não registra comandos ou respostas no Gemini na Vertex AI. Para ativar os registros do Gemini na Vertex AI, consulte Ativar registros de auditoria de acesso a dados.
Os papéis do Identity and Access Management (IAM) controlam a capacidade de um principal de acessar registros. É possível conceder papéis predefinidos aos principais ou criar papéis personalizados. Para mais informações sobre as permissões necessárias, consulte Controle de acesso.
Por padrão, o Cloud Logging criptografa o conteúdo do cliente armazenado em repouso. Os dados armazenados em buckets de registro pelo Logging são criptografados usando chaves de criptografia de chaves, um processo conhecido como criptografia de envelope. Para acessar os dados de registro, é preciso ter acesso a essas chaves de criptografia de chaves. Elas são gerenciadas pelo Google sem que você precise realizar nenhuma ação.
Sua organização pode ter requisitos de criptografia regulamentares, relacionados à conformidade ou avançados que nossa criptografia em repouso padrão não oferece. Para atender aos requisitos da sua organização, em vez de deixar que o Google gerencie as chaves de criptografia que protegem seus dados, você pode gerenciar suas chaves.
Para informações específicas sobre o uso de chaves de criptografia gerenciadas pelo cliente (CMEK), incluindo vantagens e limitações, consulte Chaves de criptografia gerenciadas pelo cliente.
Limitações
Os dados de registro registrados pelo Gemini em Google Cloud não incluem interações do usuário com os seguintes produtos:- Gemini no BigQuery
- Gemini no Looker
- Gemini no Google Security Operations
- Painel do Gemini no console do Google Cloud para o Database Center
Antes de começar
-
Para receber as permissões necessárias para visualizar os registros do Gemini para Google Cloud , peça ao administrador para conceder a você o papel do IAM de Leitor de registros (
roles/logging.viewer
) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Consulte os preços do Cloud Logging e os preços do Gemini para Google Cloud antes de ativar o Gemini para Google Cloud logging.
Ativar o Gemini para Google Cloud geração de registros
Entre em contato com o Google Cloud suporte ou com seu representante Google Cloud com o ID do projeto em que você quer ativar o Gemini para Google Cloud registros, Gemini para registros de metadados, ou ambos. Google Cloud
Acessar os registros de usuário e de metadados do Gemini para Google Cloud
Para conferir os registros de usuário e de metadados do Gemini para Google Cloud , faça o seguinte:
Console do Google Cloud
-
No console do Google Cloud, acesse a página Análise de registros:
Acessar a Análise de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.
- Na barra de ferramentas, selecione um projeto do console do Google Cloud.
- Na barra de ferramentas, abra o menu All resources e selecione o recurso Cloud AI Companion Instance.
Google Cloud CLI
Execute este comando:
gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID --limit 3
Gemini para registros de Google Cloud
Um LogEntry
é a unidade básica de
dados no Cloud Logging. As seções a seguir fornecem listas de campos encontrados
no LogEntry
para um evento da plataforma Gemini para Google Cloud , como
solicitações do usuário e Gemini para Google Cloud respostas.
Solicitações de usuários
A tabela a seguir mostra uma lista de campos encontrados em uma entrada de registro de solicitação do usuário.
Campo | Valores e observações |
---|---|
LogEntry.resource.type |
Gemini para Google Cloud tipo de recurso: cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container |
ID exclusivo do contêiner de recursos em que o Gemini for Google Cloud foi usado. |
LogEntry.resource.labels.location |
Local onde o Gemini para Google Cloud foi usado. |
LogEntry.resource.labels.instance_id |
ID exclusivo do recurso em que o Gemini for Google Cloud foi usado. |
LogEntry.labels.method |
Pode ser uma das seguintes, dependendo do que invocou logEntry :CompleteTask : por exemplo, uma solicitação de chat do Gemini Code Assist ou outro serviço do Gemini para Google Cloud .GenerateCode : por exemplo, uma solicitação para gerar código, como com uma solicitação de transformação de código no Gemini Code Assist.CompleteCode : por exemplo, uma solicitação para preencher o código ao trabalhar no ambiente de desenvolvimento integrado, como com sugestões inline no Gemini Code Assist. |
LogEntry.labels.product |
Gemini para Google Cloud nome do serviço. Se o produto Gemini for Google Cloud Gemini Code Assist, esse valor será code_assist . Se o produto Gemini para Google Cloud for o Gemini Cloud Assist, esse valor será cloud_assist . Caso contrário, o valor será unknown . |
LogEntry.labels.request_id |
Um identificador exclusivo para correlacionar uma solicitação a uma entrada de registro de resposta. |
LogEntry.labels.user_id |
O identificador do usuário que iniciou essa solicitação. |
LogEntry.jsonPayload |
O payload da entrada de registro. |
LogEntry.logName |
Identifica o registro. |
O exemplo a seguir mostra uma entrada de registro de exemplo para um evento de comando 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"
}
O exemplo a seguir mostra uma entrada RequestLog
de exemplo para comandos automáticos de
sugestão de código inline
e
comando Gemini para Google Cloud em um arquivo de código.
Os dados de solicitação para sugestões de código inline usam o objeto codeCompletionRequest
(conforme mostrado no exemplo abaixo), enquanto a geração acionada manualmente 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 respostas Google Cloud
A tabela a seguir mostra os campos de resposta e as descrições do Gemini para Google Cloud .
Campo | Valores e observações |
---|---|
LogEntry.resource.type |
Gemini para Google Cloud tipo de recurso: cloudaicompanion.googleapis.com/Instance . |
LogEntry.resource.labels.resource_container |
ID exclusivo do contêiner de recursos em que o Gemini for Google Cloud foi usado. |
LogEntry.resource.labels.location |
Local onde o Gemini para Google Cloud foi usado. |
LogEntry.resource.labels.instance_id |
ID exclusivo do recurso em que o Gemini for Google Cloud foi usado. |
LogEntry.labels.method |
Pode ser uma das seguintes, dependendo do que invocou logEntry :CompleteTask : por exemplo, uma solicitação de chat do Gemini Code Assist ou outro serviço do Gemini para Google Cloud .GenerateCode : por exemplo, uma solicitação para gerar código, como com uma solicitação de transformação de código no Gemini Code Assist.CompleteCode : por exemplo, uma solicitação para preencher o código ao trabalhar no ambiente de desenvolvimento integrado, como com sugestões inline no Gemini Code Assist. |
LogEntry.labels.product |
Gemini para Google Cloud nome do serviço. Se o produto Gemini for Google Cloud Gemini Code Assist, esse valor será code_assist . Se o produto Gemini para Google Cloud for o Gemini Cloud Assist, esse valor será cloud_assist . Caso contrário, o valor será unknown . |
LogEntry.labels.request_id |
Um identificador exclusivo para correlacionar uma solicitação a uma entrada de registro de resposta. |
LogEntry.labels.user_id |
O identificador do usuário que iniciou essa solicitação. |
LogEntry.jsonPayload |
O payload da entrada de registro. Todas as citações de origem usadas para gerar a resposta são incluídas neste objeto como attribution_context . |
LogEntry.logName |
Identifica o registro. |
Gemini para registros de metadados Google Cloud
Para que os registros de metadados sejam gerados, a configuração de telemetria da extensão Gemini Code Assist precisa estar ativada para as extensões do VS Code e do IntelliJ. Além disso, para o VS Code, a configuração de coleta de telemetria global também precisa estar ativada.
Os registros de metadados do Gemini para Google Cloud seguem a mesma estrutura dos registros do Gemini para Google Cloud , mas especificam campos diferentes. A tabela a seguir mostra uma lista de campos encontrados em uma entrada de registro de solicitação do usuário:
Campo | Valores e observações |
---|---|
LogEntry.@type |
Gemini para tipo de recurso de metadados Google Cloud : type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog . |
LogEntry.labels.method |
Para registros de metadados, o valor do identificador é Export.Metrics . |
LogEntry.labels.product |
Gemini para Google Cloud nome do serviço. Se o produto Gemini for Google Cloud Gemini Code Assist, esse valor será code_assist . Se o produto Gemini para Google Cloud for o Gemini Cloud Assist, esse valor será cloud_assist . Caso contrário, o valor será unknown . |
LogEntry.labels.user_id |
O identificador do usuário que iniciou essa solicitação. |
LogEntry.jsonPayload |
Indica um evento codeExposure ou code.Acceptance . Um evento codeExposure indica a exposição de uma sugestão de código a um usuário. Um evento code.Acceptance indica que houve algum evento de aceitação pelo usuário, como digitação, guia ou aceitação total. |
LogEntry.jsonPayload.clientName |
O nome do ambiente de desenvolvimento integrado, como CloudCodeVscode . |
LogEntry.jsonPayload.clientVersion |
O número da versão do ambiente de desenvolvimento integrado. |
LogEntry.jsonPayload.codeAcceptance |
Indica que houve algum evento de aceitação do usuário, como digitação, guia ou aceitação total, apenas para o VS Code e os IDEs do IntelliJ. Também inclui os seguintes campos:
|
LogEntry.jsonPayload.codeExposure |
Somente para ambientes de desenvolvimento integrados do VS Code e do IntelliJ, indica que houve exposição de uma sugestão de código a um usuário. Também inclui os seguintes campos:
|
LogEntry.jsonPayload.chatExposure |
Indica que houve exposição de uma resposta de chat a um usuário. Também inclui o seguinte campo:
|
O exemplo a seguir mostra uma entrada de registro codeExposure
de exemplo:
{
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"
}
O exemplo a seguir mostra uma entrada de registro codeAcceptance
de exemplo:
{
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"
}
O exemplo a seguir mostra uma entrada de registro chatExposure
de exemplo:
{
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 a taxa de aceitação do código
Para calcular a taxa de aceitação usando os registros de metadados do Gemini Code Assist, encontre o número total de IDs exclusivos de eventos com codeAcceptance.originalRequestId
e divida pelo número total de IDs exclusivos de eventos com codeExposure.originalRequestId
. É possível refinar ainda mais esse cálculo por
linguagem de programação e pelo usuário usando os respectivos campos de evento de registro de metadados.
Linhas de código aceitas para cálculo
Para calcular as linhas de código aceitas, encontre o evento com carimbo de data/hora final com
codeAcceptance
para um codeAcceptance.originalRequestId
exclusivo e, em seguida, verifique
codeAcceptance.linesCount
. Em seguida, adicione o valor linesCount
para todos os eventos
codeAcceptance
finais de cada originalRequestId
para calcular o total
de linhas de código aceitas. É possível refinar ainda mais esse cálculo pela linguagem
de programação e pelo usuário usando os respectivos campos de evento de registro de metadados.
A seguir
- Saiba como visualizar, analisar e monitorar seus registros em Google Cloud.
- Saiba mais sobre como monitorar o uso do Gemini para Google Cloud.