Personalizzazione del codice con Gemini Code Assist Enterprise

1. Prima di iniziare

Questo codelab mostra come preparare Gemini Code Assist per fornire suggerimenti di personalizzazione del codice personalizzati per i tuoi repository privati. In questo modo, i risultati di Code Assist possono essere molto più utili, in particolare per i team che hanno convenzioni specifiche per lavori simili che si ripetono spesso. Ti assicuriamo che consentire a Gemini di indicizzare le tue basi di codice private per questa funzionalità non consente a Gemini di eseguire l'addestramento in modo ampio sul tuo codice privato.

Inoltre, discuteremo di come escludere i file sensibili o irrilevanti dalla considerazione per la personalizzazione del codice con un file .aiexclude.

Prerequisiti

  • Conoscenza di base di Gemini Code Assist e accesso a un progetto in cui è abilitato
  • Familiarità con un linguaggio di programmazione supportato per la personalizzazione del codice
  • Possibilità di creare risorse in us-central1 o europe-west1, poiché la personalizzazione del codice richiede connessioni Developer Connect in quelle località.
  • Google Cloud CLI aggiornato e autenticato

Cosa imparerai

  • Come utilizzare la personalizzazione del codice in Gemini Code Assist Enterprise
  • Uno dei tanti casi d'uso in cui la personalizzazione del codice può far risparmiare tempo ai tuoi team

Cosa serve

  • Un progetto Google Cloud con Gemini Code Assist abilitato
  • Un repository privato da indicizzare per le richieste di personalizzazione
  • È ora di indicizzare il codice per le richieste di personalizzazione. Questa operazione può richiedere fino a 24 ore
  • Un IDE con Gemini Code Assist installato

2. Contesto

Per provare la personalizzazione del codice sono necessarie due cose:

  1. Accesso a un progetto Google Cloud con Gemini abilitato
  2. e un repository privato per fornire informazioni alle risposte di Gemini.

Abilitazione di Gemini

I repository migliori candidati per l'indicizzazione da parte di Gemini contengono codice riutilizzato di frequente in tutta l'organizzazione. Il repository di esempio fornito per questo codelab contiene un servizio web Spring Boot standard, con una cartella di oggetti Data Transfer che soddisfano questi criteri, dal momento che verrebbe creata una classe simile per descrivere ogni entità in un database mentre viene trasportata al livello di presentazione.

3. (Facoltativo) Configurazione del repository

Se preferisci utilizzare un repository di esempio anziché uno dei tuoi privati, puoi seguire i passaggi che seguono nell'editor di terminale che preferisci o in Cloud Shell. Per iniziare, crea un repository privato per consentirci di vedere la personalizzazione del codice in azione:

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

Aggiungi quanto segue al file 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;
}

Sarà sufficiente per dimostrare che gli accessori che gli altri collaboratori di questo codice di base si aspettano di utilizzare verranno generati con precisione con la personalizzazione del codice abilitata.

Crea un nuovo repository, avendo cura di lasciarlo privato. Segui questi passaggi per eseguire il push del comando iniziale al tuo nuovo repository:

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. Esclusione di file

Prima di concedere a Gemini l'accesso ai tuoi repository privati, è importante capire come escludere i file irrilevanti o sensibili che il tuo team non vuole che vengano indicizzati. A questo scopo, viene utilizzato un file .aiexclude, che è simile a un .gitignore con alcune differenze fondamentali:

  • Un file .aiexclude vuoto blocca tutti i file nella sua directory e in tutte le sottodirectory.
    • È lo stesso di un file che contiene **/*.
  • I file .aiexclude non supportano la negazione (prefissi dei pattern con !).

Tenendo presente questo, cerca di considerare i tipi di file o le directory che il tuo team vuole escludere dalla considerazione e elencali su righe separate:

#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. Configurare Developer Connect

Developer Connect è il servizio che semplifica le Connessioni e i Collegamenti ai tuoi repository di codice privati in GitHub o GitLab. Questo è il meccanismo che consente a Gemini Code Assist di connettersi in modo sicuro ai tuoi repository privati per creare l'indice che verrà utilizzato per migliorare le risposte.

Questi due concetti sono utili per capire in che modo Developer Connect fornisce in modo sicuro l'accesso al tuo codice:

Connessione

  • Rappresenta il ponte tra Google e la piattaforma di gestione del codice sorgente di terze parti.

Link

  • Rappresenta l'associazione con un singolo repository di codice sorgente selezionato all'interno di una piattaforma di gestione del codice sorgente collegata.

Tenendo a mente questi concetti, inizia visitando la pagina Developer Connect per attivare l'API per il tuo progetto.

Attivazione di Developer Connect

Poi, segui i passaggi appropriati per creare una Connessione e un Collegamento per GitHub o GitLab. Entrambe le risorse verranno create durante la procedura guidata.

Creazione di una connessione e di un collegamento

Ripeti questi passaggi per creare un link per ogni repository che vuoi che la funzionalità di personalizzazione del codice di Gemini tenga in considerazione nelle sue risposte. Puoi riutilizzare la connessione esistente se più repository provengono dalla stessa piattaforma.

6. Crea e connettiti all'indice

Per analizzare e analizzare rapidamente i repository, la personalizzazione del codice si basa su un indice. Prendi nota del nome dell'indice INDEX_NAME che utilizzi, poiché ti servirà in un passaggio successivo.

Per creare un indice, esegui questo comando:

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

Se si verificano errori Invalid choice: ..., assicurati che Google Cloud CLI sia aggiornato eseguendo il seguente comando:

gcloud components update

Successivamente, consenti l'accesso all'indice creando un gruppo di repository:

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"}]'

Sostituisci i seguenti valori:

  • REPOSITORY_GROUP: il nome del gruppo di repository che stai per creare
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • INDEX_NAME: il nome dell'indice che hai definito in un passaggio precedente per creare un indice.
  • REGIONE: una regione supportata dall'elenco nella documentazione, che hai configurato in Developer Connect nel tuo progetto Google Cloud.
  • INDEX_CONNECTION: connessione dell'indice creato in un passaggio precedente per creare un indice.
  • REPOSITORY: il repository che vuoi indicizzare. Devi specificare almeno un repository e puoi specificarne più di uno, se necessario.
  • BRANCH_NAMES: il nome dei branch che vuoi indicizzare, ad esempio main o dev.

A seconda del numero di repository da indicizzare e delle relative dimensioni, l'indicizzazione dei contenuti può richiedere fino a 24 ore. L'indicizzazione viene eseguita una volta ogni 24 ore e rileva eventuali modifiche apportate al repository. Per controllare lo stato della generazione dell'indice, puoi seguire questi passaggi:

Stato di indicizzazione della ricerca

Infine, concedi all'entità principale l'accesso al gruppo:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

7. Genera codice personalizzato

Ora che Gemini ha accesso al codice nel tuo repository privato, possiamo aspettarci di vedere snippet pertinenti nelle nostre richieste di completamento del codice. Nel nostro repository di esempio, possiamo accedere alla cartella DTO e, mentre creiamo una nuova classe per rappresentare un nuovo oggetto, puoi vedere le annotazioni previste che vengono visualizzate durante la digitazione:

Sample generato

8. Conclusione

Complimenti per aver completato questo codelab. Hai imparato a utilizzare la funzionalità di personalizzazione del codice di Gemini Code Assist. Ora che le tue risposte possono essere personalizzate in base alle basi di codice private e specifiche dei tuoi team, ogni prompt e completamento del codice sarà più utile per gli sviluppatori dei tuoi team.

Consulta questi altri documenti e materiali per ulteriori letture e per ottenere assistenza per aspetti come la configurazione dei ruoli IAM: