1. Antes de começar
Este codelab mostra como preparar o Gemini Code Assist para fornecer sugestões de personalização de código adaptadas aos seus repositórios particulares. Isso pode tornar os resultados da Assistente de código muito mais úteis, especialmente para equipes que têm convenções específicas para trabalhos semelhantes que são repetidos com frequência. Permitir que o Gemini indexe suas bases de código particulares para esse recurso não permite que ele seja treinado com seu código particular.
Também vamos abordar como excluir arquivos sensíveis ou irrelevantes da personalização de código com um arquivo .aiexclude.
Pré-requisitos
- Entendimento básico do Gemini Code Assist e acesso a um projeto em que ele está ativado
- Familiaridade com uma linguagem de programação aceita para personalização de código
- Capacidade de criar recursos em
us-central1oueurope-west1, já que a personalização de código exige conexões do Developer Connect nesses locais. - Uma CLI do Google Cloud atualizada e autenticada
Conteúdo do laboratório
- Como usar a personalização de código no Gemini Code Assist Enterprise
- Um dos muitos casos de uso em que a personalização de código pode economizar tempo das suas equipes
O que é necessário
- Um projeto na nuvem do Google Cloud com o Gemini Code Assist ativado
- Um repositório particular para indexar solicitações de personalização
- É hora de indexar o código para solicitações de personalização. Esse processo pode levar até 24 horas
- Um ambiente de desenvolvimento integrado com o Gemini Code Assist instalado
2. Contexto
Para testar a personalização de código, é necessário:
- Acesso a um projeto na nuvem do Google Cloud com o Gemini ativado
- e um repositório particular para informar as respostas do Gemini.

Os melhores repositórios candidatos para indexação pelo Gemini contêm código que é reutilizado com frequência em toda a organização. O repositório de exemplo fornecido para este codelab contém um serviço da Web Spring Boot padrão, com uma pasta de objetos de transferência de dados que atendem a esse critério. Isso porque uma classe semelhante seria criada para descrever cada entidade em um banco de dados à medida que ela é transportada para a camada de apresentação.
3. (Opcional) Configuração do repositório
Se você preferir usar um repositório de exemplo em vez de um dos seus repositórios particulares, siga as etapas abaixo no editor de terminal de sua escolha ou no Cloud Shell. Comece criando um repositório particular para nos ajudar a ver a personalização de código em ação:
mkdir customization-starter
cd customization-starter
curl https://start.spring.io/starter.zip -d dependencies=web,lombok \
-d javaVersion=21 \
-d type=maven-project \
-d bootVersion=3.3.4 -o cc-starter.zip
unzip cc-starter.zip
rm cc-starter.zip
pushd src/main/java/com/example/demo
mkdir dtos
touch dtos/LedgerDTO.java
Adicione o seguinte ao arquivo LedgerDTO:
package com.example.demo.dtos;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@Getter
@Setter
@Accessors(chain = true)
public class LedgerEntryDto {
private Long id;
private String accountName;
private double amount;
private String transactionType;
private String description;
private java.util.Date transactionDate;
}
Isso será suficiente para demonstrar que os acessadores que outros colaboradores dessa base de código esperam usar serão gerados com precisão com a personalização de código ativada.
Crie um repositório e deixe-o particular. Siga as etapas abaixo para enviar o starter ao novo repositório:
popd
gh auth login
git init
git add .
git commit -m "code customization starter"
git remote add origin git@github.com:<YOUR_GITHUB_ID>/customization-starter.git
git branch -M main
git push -u origin main
4. Excluir arquivos
Antes de conceder acesso aos seus repositórios particulares, é importante entender como excluir arquivos irrelevantes ou sensíveis que sua equipe não quer indexar. Para isso, é usado um arquivo .aiexclude, que é semelhante a um .gitignore, mas com algumas diferenças importantes:
- Um arquivo
.aiexcludevazio bloqueia todos os arquivos no respectivo diretório e em todos os subdiretórios.- Ele é igual a um arquivo que contém
**/*.
- Ele é igual a um arquivo que contém
- Arquivos
.aiexcludenão aceitam negação (padrões de prefixo com!).
Com isso em mente, considere os tipos de arquivos ou diretórios que sua equipe quer excluir e liste cada um em linhas separadas:
#Block all files with .key extensions
*.key
#Block all files under sensitive/dir
my/sensitive/dir/
#Block all .key files under sensitive/dir
my/sensitive/dir/ /.key
5. Configurar o Developer Connect
O Developer Connect é o serviço que facilita conexões e links aos seus repositórios de código particulares no GitHub ou GitLab. Esse é o mecanismo que permite que o Gemini Code Assist se conecte com segurança aos seus repositórios particulares para criar o índice que será usado para melhorar as respostas.
Esses dois conceitos são úteis para entender como o Developer Connect oferece acesso seguro ao seu código:
Conexão
- Representa a ponte entre o Google e a plataforma de terceiros para gerenciamento de código-fonte.
Link
- Representa a associação com um repositório de código-fonte individual selecionado em uma plataforma conectada de gerenciamento de código-fonte.
Com esses conceitos em mente, navegue até a página Developer Connect para ativar a API no seu projeto.

Em seguida, siga as etapas adequadas para criar uma conexão e um link para o GitHub ou o GitLab. Os dois recursos serão criados durante o processo do assistente.

Repita essas etapas para criar um Link para cada repositório que você quer que o recurso de personalização de código do Gemini considere nas respostas. É possível reutilizar a conexão se vários repositórios forem da mesma plataforma.
6. Criar e se conectar ao índice
Para analisar seus repositórios rapidamente, a personalização de código usa um índice. Anote o INDEX_NAME usado, porque você vai precisar dele em uma etapa posterior.
Para criar um índice, execute o seguinte comando:
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Se você encontrar erros de Invalid choice: ..., verifique se a CLI do Google Cloud está atualizada executando o seguinte comando:
gcloud components update
Em seguida, permita o acesso ao seu índice criando um grupo de repositórios:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'
Substitua os seguintes valores:
- REPOSITORY_GROUP: o nome do grupo de repositórios que você está prestes a criar
- PROJECT_ID: o ID do seu projeto do Google Cloud.
- INDEX_NAME: nome do índice que você definiu em uma etapa anterior para criar um índice.
- REGIÃO: uma região compatível da lista na documentação, que você configurou no Developer Connect no seu projeto na nuvem do Google Cloud.
- INDEX_CONNECTION: conexão do índice que você criou em uma etapa anterior.
- REPOSITORY: o repositório que você quer indexar. É preciso especificar pelo menos um repositório, mas é possível especificar vários, se necessário.
- BRANCH_NAMES: nome das ramificações que você quer indexar, como "main" ou "dev".
Dependendo do número de repositórios que você quer indexar e do tamanho deles, a indexação do conteúdo pode levar até 24 horas. A indexação ocorre uma vez a cada 24 horas, capturando as mudanças feitas no repositório. Consulte estas etapas para verificar o status da geração do índice:

Por fim, conceda ao principal desejado acesso ao grupo:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. Gerar código personalizado
Agora que o Gemini tem acesso ao código no seu repositório particular, podemos esperar que snippets relevantes apareçam nas solicitações de preenchimento de código. No repositório de exemplo, navegue até a pasta DTO. Ao criar uma classe para representar um novo objeto, as anotações esperadas aparecem conforme você digita:

8. Conclusão
Parabéns por concluir este codelab. Você aprendeu a usar o recurso Personalização de código do Gemini Code Assist. Agora que suas respostas podem ser adaptadas às bases de código particulares e específicas das suas equipes, cada comando e preenchimento de código será mais valioso para os desenvolvedores das suas equipes.
Leia estes outros documentos e materiais para saber mais e receber suporte para configurar papéis do IAM, entre outras coisas: