1. Antes de começar
Este codelab mostra como preparar o Gemini Code Assist para fornecer sugestões de personalização de código personalizadas para seus repositórios particulares. Isso pode tornar os resultados do Code Assist significativamente mais úteis, especialmente para equipes que têm convenções específicas para trabalhos semelhantes que muitas vezes são repetidos. Não se preocupe: permitir que o Gemini indexe suas bases de código privadas para esse recurso não permite que ele treine amplamente no seu código privado.
Também vamos discutir como excluir arquivos sensíveis ou irrelevantes da personalização de código com um arquivo .aiexclude
.
Pré-requisitos
- Conhecimento básico do Gemini Code Assist e acesso a um projeto em que ele esteja ativado
- Conhecimento de uma linguagem de programação com suporte para personalização de código
- Saber criar recursos em
us-central1
oueurope-west1
, já que a personalização do código exige conexões do Developer Connect nesses locais. - Uma Google Cloud CLI 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 do código pode economizar tempo para suas equipes
O que é necessário
- Um projeto 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. Isso 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, duas coisas são necessárias:
- Acesso a um projeto 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 padrão do Spring Boot, com uma pasta de objetos de transferência de dados que atendem a esse critério, já que 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 particulares, siga as etapas abaixo no editor de terminal de sua escolha ou no Cloud Shell. Comece criando um repositório privado para nos ajudar a ver a personalização do 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 acionadores que outros colaboradores esperam usar nessa base de código serão gerados com precisão quando a personalização de código estiver ativada.
Crie um novo repositório e deixe-o particular. Siga as etapas abaixo para enviar o starter para seu 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. Como excluir arquivos
Antes de conceder ao Gemini acesso aos seus repositórios particulares, é importante entender como excluir arquivos irrelevantes ou sensíveis que sua equipe não quer que sejam indexados. Um arquivo .aiexclude
é usado para isso, que é semelhante a um .gitignore
, mas com algumas diferenças importantes:
- Um arquivo
.aiexclude
vazio bloqueia todos os arquivos no diretório e em todos os subdiretórios.- Isso é o mesmo que um arquivo que contém
**/*
.
- Isso é o mesmo que um arquivo que contém
- Os arquivos
.aiexclude
não aceitam a negação (prefixo de padrões com!
).
Com isso em mente, tente considerar os tipos de arquivos ou diretórios que sua equipe gostaria de excluir e liste cada um deles 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 para seus repositórios de código privados no GitHub ou GitLab. Com esse mecanismo, o Gemini Code Assist pode se conectar com segurança aos seus repositórios particulares e criar o índice que será usado para melhorar as respostas.
Esses dois conceitos ajudam a entender como o Developer Connect oferece acesso seguro ao seu código:
Conexão
- Representa a ponte entre o Google e a plataforma de gerenciamento de código-fonte de terceiros.
Link
- Representa a associação com um repositório de código-fonte individual selecionado em uma plataforma de gerenciamento de código-fonte conectada.
Com esses conceitos em mente, acesse 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 e crie 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 atual se vários repositórios vierem da mesma plataforma.
6. Criar e conectar ao índice
Para analisar e analisar seus repositórios rapidamente, a personalização do código depende de um índice. Anote o INDEX_NAME que você usa, pois você 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 Invalid choice: ...
, verifique se a Google Cloud CLI está atualizada executando o comando a seguir:
gcloud components update
Em seguida, permita o acesso ao índice criando um grupo de repositório:
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ório 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.
- REGION: uma região com suporte da lista na documentação que você configurou no Developer Connect no seu projeto do Google Cloud.
- INDEX_CONNECTION: conexão do índice criado em uma etapa anterior para criar um índice.
- REPOSITORY: o repositório que você quer indexar. É necessário especificar pelo menos um repositório, mas é possível especificar vários, conforme 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 e detecta todas as mudanças feitas no repositório. Consulte estas etapas para verificar o status da geração de índice:
Por fim, conceda o acesso principal desejado 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, esperamos que snippets relevantes apareçam nas nossas solicitações de preenchimento de código. Em nosso repositório de exemplo, podemos navegar até a pasta DTO e, à medida que criamos uma nova classe para representar um novo objeto, você pode ver as anotações esperadas aparecendo conforme digitamos:
8. Conclusão
Parabéns por concluir este codelab. Você aprendeu a usar o recurso de personalização de código do Gemini Code Assist. Agora que suas respostas podem ser personalizadas para bases de código particulares e específicas das suas equipes, cada comando e preenchimento de código será mais valioso para os desenvolvedores delas.
Confira os documentos e materiais abaixo para saber mais e receber suporte para a configuração de papéis do IAM, por exemplo: