1. Antes de comenzar
En este codelab, se muestra cómo preparar Gemini Code Assist para que proporcione sugerencias de personalización de código adaptadas a tus repositorios privados. Esto puede hacer que los resultados de la Asistencia de código sean mucho más útiles, en especial para los equipos que tienen convenciones específicas para trabajos similares que se repiten con frecuencia. Ten la seguridad de que permitir que Gemini indexe tus bases de código privadas para esta función no le permite entrenar de forma amplia en tu código privado.
También analizaremos cómo excluir archivos sensibles o irrelevantes para la personalización del código con un archivo .aiexclude
.
Requisitos previos
- Conocimientos básicos de Gemini Code Assist y acceso a un proyecto en el que esté habilitado
- Familiaridad con un lenguaje de programación admitido para la personalización de código
- Capacidad para crear recursos en
us-central1
oeurope-west1
, ya que la personalización de código requiere conexiones de Developer Connect en esas ubicaciones. - Una Google Cloud CLI autenticada y actualizada.
Qué aprenderá
- Cómo usar la personalización de código en Gemini Code Assist Enterprise
- Uno de los numerosos casos de uso en los que la personalización de código puede ahorrarles tiempo a tus equipos
Requisitos
- Gemini Code Assist habilitado para un proyecto de Google Cloud
- Un repositorio privado para indexar las solicitudes de personalización
- Es hora de indexar el código para las solicitudes de personalización. Esto puede tardar hasta 24 horas
- Un IDE con Gemini Code Assist instalado
2. Contexto
Para probar la personalización de código, se necesitan dos elementos:
- Acceso a un proyecto de Google Cloud con Gemini habilitado
- y Un repositorio privado para informar las respuestas de Gemini.
Los mejores repositorios candidatos para que Gemini indexe contendrán código que se suele volver a usar en toda tu organización. El repositorio de muestra que se proporciona para este codelab contiene un servicio web estándar de Spring Boot, con una carpeta de objetos de transferencia de datos que cumplen con este criterio, ya que se crearía una clase similar para describir cada entidad en una base de datos a medida que se transporta a la capa de presentación.
3. Configuración del repositorio (opcional)
Si prefieres usar un repositorio de ejemplo en lugar de uno propio, puedes seguir los siguientes pasos en el editor de terminal que prefieras o en Cloud Shell. Para comenzar, crea un repositorio privado que nos ayude a ver la personalización de código en acción:
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
Agrega lo siguiente al archivo 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;
}
Esto será suficiente para demostrar que los accesores que otros colaboradores de esta base de código esperan usar se generarán con precisión con la personalización de código habilitada.
Crea un repositorio nuevo y asegúrate de dejarlo privado. Sigue los pasos que se indican a continuación para enviar el activador a tu nuevo repositorio:
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. Cómo excluir archivos
Antes de otorgarle acceso a Gemini a tus repositorios privados, es importante que comprendas cómo excluir los archivos irrelevantes o sensibles que tu equipo no desea que se indexen. Para lograr esto, se usa un archivo .aiexclude
, que es similar a un .gitignore
con algunas diferencias clave:
- Un archivo
.aiexclude
vacío bloquea todos los archivos de su directorio y todos los subdirectorios.- Esto es lo mismo que un archivo que contiene
**/*
.
- Esto es lo mismo que un archivo que contiene
- Los archivos
.aiexclude
no admiten la negación (patrones con prefijo!
).
Con esto en mente, intenta considerar los tipos de archivos o directorios que tu equipo no desea incluir y escríbelos en líneas 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. Configura Developer Connect
Developer Connect es el servicio que facilita las conexiones y los vínculos a tus repositorios de código privados en GitHub o GitLab. Este es el mecanismo que permite que Gemini Code Assist se conecte de forma segura a tus repositorios privados para crear el índice que se usará para mejorar las respuestas.
Estos dos conceptos son útiles para comprender cómo Developer Connect proporciona acceso seguro a tu código:
Conexión
- Representa el puente entre Google y la plataforma de administración de código fuente de terceros.
Vínculo
- Representa la asociación con un repositorio de código fuente individual que seleccionas dentro de una plataforma de administración de código fuente conectada.
Con esos conceptos en mente, comienza por navegar a la página Developer Connect para habilitar la API de tu proyecto.
A continuación, sigue los pasos adecuados para crear una conexión y un vínculo para GitHub o GitLab. Ambos recursos se crearán durante el proceso del asistente.
Repite estos pasos para crear un vínculo para cada repositorio que quieras que la función de personalización de código de Gemini tenga en cuenta en sus respuestas. Puedes volver a usar la conexión existente si varios repositorios provienen de la misma plataforma.
6. Crea un índice y conéctate a él
Para analizar tus repositorios con rapidez, la personalización del código se basa en un Índice. Toma nota del INDEX_NAME que uses, ya que lo necesitarás en un paso posterior.
Para crear un índice, ejecuta el siguiente comando:
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Si encuentras algún error Invalid choice: ...
, ejecuta el siguiente comando para asegurarte de que Google Cloud CLI esté actualizada:
gcloud components update
A continuación, crea un grupo de repositorios para permitir el acceso a tu índice:
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"}]'
Reemplaza los siguientes valores:
- REPOSITORY_GROUP: Es el nombre del grupo de repositorios que estás a punto de crear.
- PROJECT_ID: El ID de tu proyecto de Google Cloud.
- INDEX_NAME: Es el nombre del índice que definiste en un paso anterior para crear un índice.
- REGION: Es una región admitida de la lista de la documentación que configuraste en Developer Connect en tu proyecto de Google Cloud.
- INDEX_CONNECTION: conexión del índice que creaste en un paso anterior para crear un índice.
- REPOSITORIO: Es el repositorio que deseas indexar. Debes especificar al menos un repositorio, pero puedes especificar varios según sea necesario.
- BRANCH_NAMES: nombre de las ramas que deseas indexar, como principal o dev.
Según la cantidad de repositorios que quieras indexar y su tamaño, la indexación de contenido puede tardar hasta 24 horas. El indexado se realiza una vez cada 24 horas y detecta cualquier cambio que se haya realizado en el repositorio. Puedes consultar estos pasos para verificar el estado de la generación de índices:
Por último, otorga el acceso principal deseado al grupo:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. Genera código personalizado
Ahora que Gemini tiene acceso al código de tu repositorio privado, es posible que veamos fragmentos relevantes en nuestras solicitudes de finalización de código. En nuestro repositorio de ejemplo, podemos navegar a nuestra carpeta DTO y, a medida que creamos una clase nueva para representar un objeto nuevo, puedes ver que aparecen las anotaciones esperadas a medida que escribimos:
8. Conclusión
¡Felicitaciones por completar este codelab! Aprendiste a usar la función de Personalización del código de Gemini Code Assist. Ahora que tus respuestas se pueden adaptar a las bases de código privadas y específicas de tus equipos, cada instrucción y finalización de código serán más valiosas para los desarrolladores de tus equipos.
No dudes en revisar estos otros documentos y materiales si necesitas más información, además de asistencia para otras tareas, como la configuración de roles de IAM: