Configurare la personalizzazione del codice di Gemini Code Assist

Questo documento descrive come configurare la personalizzazione del codice di Gemini Code Assist nella console Google Cloud , con Google Cloud CLI o con Terraform collegando Gemini Code Assist ai tuoi repository di codice privati. La funzionalità di personalizzazione del codice di Gemini Code Assist ti consente di ricevere suggerimenti sul codice, che si basano sulle librerie interne, sulle API private e sullo stile di programmazione della tua organizzazione.

Per configurare la personalizzazione del codice di Gemini Code Assist nella console Google Cloud , consulta Configurare la personalizzazione del codice di Gemini Code Assist.

Prima di iniziare

  1. Configura Gemini Code Assist con un abbonamento Enterprise.
  2. Verifica di disporre dei seguenti ruoli Identity and Access Management (IAM) sul progetto proprietario dell'abbonamento:

    • Code Repository Indexes Admin (roles/cloudaicompanion.codeRepositoryIndexesAdmin)
    • Gemini for Google Cloud User (roles/cloudaicompanion.user)
  3. Crea o configura gli account utente. Ogni sviluppatore della tua organizzazione che utilizza Gemini Code Assist deve avere un'identità utente in Google Cloud che disponga dell'autorizzazione per accedere al tuo progetto Google Cloud . Per ulteriori informazioni, consulta Concedere ruoli nella console Google Cloud . Verifica che ogni utente disponga dei seguenti ruoli:

Scegliere quali repository vengono indicizzati

Come best practice, dovresti indicizzare i repository che presentano le seguenti caratteristiche:

  • Codice con uno stile o una struttura simili a quelli che vuoi che i tuoi sviluppatori scrivano.
  • Librerie o API private che vuoi chiamare dal codebase attuale.

(Facoltativo) Scegliere i file non indicizzati

Per impostazione predefinita, la personalizzazione del codice indicizza tutti i file di codice supportati nei repository specificati.

Per evitare l'esposizione di codice che non vuoi indicizzare, puoi utilizzare i pattern dei rami per controllare l'accesso all'indice e utilizzare un ramo stabile, ad esempio main.

In alternativa, puoi anche escludere i file dall'indice creando un file .aiexclude.

Configurare la personalizzazione del codice di Gemini Code Assist

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Prodotti Gemini.

    Vai ai prodotti Gemini

    Viene caricata la pagina Prodotti Gemini.

  2. Nel menu di navigazione, fai clic su Personalizzazione del codice.

    Viene caricata la pagina Personalizzazione codice.

  3. Crea un indice. La personalizzazione del codice si basa su un indice per analizzare il repository al fine di fornire suggerimenti più rapidi per la generazione del codice e le ricerche.

    1. Fai clic su Crea e configura i dettagli dell'indice:

      • Seleziona la regione configurata in Developer Connect nel tuo progetto Google Cloud .
      • Inserisci un nome per l'indice. Prendi nota del nome dell'indice. Ti servirà per diversi passaggi di questo documento.
    2. Fai clic su Crea.

    In genere, la creazione dell'indice richiede 30 minuti, ma potrebbe essere necessaria fino a un'ora. Al termine dell'indicizzazione, riceverai una notifica nella console Google Cloud .

    Google limita il numero di indici del repository di codice a uno per ogni progetto e organizzazione.

  4. Controlla l'accesso all'indice utilizzando i gruppi di repository.

    Un gruppo di repository è un contenitore per la configurazione di indicizzazione, che include i repository e i relativi pattern di ramificazione. I gruppi di repository sono progettati per il controllo IAM granulare, che consente agli sviluppatori di accedere ai dati indicizzati di questi gruppi, se dispongono dell'autorizzazione cloudaicompanion.repositoryGroups.use.

    I gruppi di repository contengono repository Developer Connect o link dello stesso progetto e della stessa località.

  5. Nella pagina Personalizzazione del codice per Gemini Code Assist, fai clic su Aggiungi repository e poi seleziona Aggiungi repository di origine.

    Viene visualizzato un elenco dei repository esistenti in Developer Connect per la regione che hai configurato nel passaggio precedente per creare l'indice.

    Se devi aggiungere nuovi repository al gruppo di repository, fai clic su Collega repository e segui i passaggi nella console Google Cloud .

    Inoltre, puoi selezionare e poi modificare uno o più repository per aggiungere un nuovo ramo.

  6. Seleziona il gruppo di repository a cui vuoi aggiungere nuovi repository. In alternativa, fai clic su Crea un nuovo gruppo di repository per creare e configurare un nuovo gruppo di repository.

  7. Per iniziare a indicizzare i repository selezionati, fai clic su Indice.

    Il tempo di indicizzazione varia a seconda delle dimensioni dei repository.

Interfaccia a riga di comando

  1. Verifica di aver configurato Developer Connect e di esserti connesso al tuo repository:
  2. In un ambiente shell, esegui il comando gcloud components update per verificare di aver aggiornato tutti i componenti installati di gcloud CLI all'ultima versione. Per questo passaggio, puoi installare e inizializzare gcloud CLI oppure puoi utilizzare l'editor di Cloud Shell.

    gcloud components update
    
  3. Crea un indice. La personalizzazione del codice si basa su un indice per analizzare il repository al fine di fornire suggerimenti più rapidi per la generazione del codice e le ricerche.

    1. Per creare l'indice, in un ambiente shell, utilizza il comando gemini code-repository-indexes create:

      gcloud gemini code-repository-indexes create INDEX_NAME \
          --project=PROJECT_ID \
          --location=REGION
      

      Sostituisci quanto segue:

      • INDEX_NAME: il nome dell'indice. Importante: Prendi nota del nome dell'indice. Ti servirà per diversi passaggi di questo documento.
      • PROJECT_ID: il tuo ID progetto Google Cloud .
      • REGION: la regione configurata in Developer Connect nel tuo progetto Google Cloud .

      In genere, la creazione dell'indice richiede 30 minuti, ma potrebbe essere necessaria fino a un'ora.

      Google limita il numero di indici del repository di codice a uno per ogni progetto e organizzazione.

  4. Controlla l'accesso all'indice utilizzando i gruppi di repository. Un gruppo di repository è un contenitore per la configurazione di indicizzazione, che include i repository e i relativi pattern di rami. I gruppi di repository sono progettati per un controllo IAM granulare, che consente agli sviluppatori di accedere ai dati indicizzati di questi gruppi, dove dispongono dell'autorizzazione cloudaicompanion.repositoryGroups.use.

    I gruppi di repository contengono repository Developer Connect o link dello stesso progetto e della stessa località.

    Gli amministratori eseguono le seguenti azioni:

    • Crea la risorsa Indice del repository di codice.
    • Nello stesso progetto e nella stessa posizione, configura una nuova connessione Developer Connect.
    • Collega i repository Git nella connessione.
    • Recupera i nomi delle risorse dei link, scegli il pattern del ramo da indicizzare per ogni link e inseriscilo in uno o più gruppi di repository.

    Per creare un gruppo di repository, in un ambiente shell, utilizza il comando gemini code-repository-indexes repository-groups create:

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'
    

    Sostituisci quanto segue:

    • REPOSITORY_GROUP: il nome del gruppo di repository, ad esempio default.
    • REPOSITORY_RESOURCE_NAME: il nome del repository all'interno della connessione Developer Connect. Per trovare il nome del repository, vai alla pagina Repository Git nella console Google Cloud e, nella scheda Repository, cerca l'ID connessione nella colonna Connessione della tabella. Per copiare il nome della risorsa, fai clic sul menu more_vert per altre opzioni e seleziona Copia percorso risorsa.
    • BRANCH_NAMES: il nome dei rami che vuoi indicizzare, ad esempio main|dev.

    Puoi anche creare un gruppo di repository con repository definiti in un file JSON (o YAML), formattato nel seguente modo:

    JSON

    [
      {
          "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
      },
      {
          "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
      }
    ]
    

    YAML

    - resource: REPOSITORY_RESOURCE_NAME
      branchPattern: main|dev
    
    - resource: REPOSITORY_RESOURCE_NAME
      branchPattern: dev
    

    Per creare un gruppo di repository basato su un file JSON o YAML, in un ambiente shell, utilizza il comando gemini code-repository-indexes repository-groups create:

    JSON

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories=FILEPATH.json
    

    YAML

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories=FILEPATH.yaml
    

    Se preferisci, puoi criptare e controllare i tuoi dati con una chiave di crittografia gestita dal cliente (CMEK) tramite Cloud Key Management Service. Per scoprire di più sull'utilizzo di una chiave CMEK, consulta Criptare i dati con chiavi di crittografia gestite dal cliente.

  5. Concedi ruoli IAM al gruppo di repository in un progetto.

    Ricevi suggerimenti solo dai repository nell'indice. Ogni repository appartiene a uno o più gruppi di repository. Per accedere ai suggerimenti, devi concedere il ruolo IAM Utente Cloud AI Companion Repository Groups (roles/cloudaicompanion.repositoryGroupsUser), che contiene l'autorizzazione IAM cloudaicompanion.repositoryGroups.user richiesta, al gruppo di repository in uno dei seguenti modi:

    • Concedi alle entità l'autorizzazione ad accedere all'intero indice.
    • Concedere alle entità l'accesso a un sottoinsieme dell'indice.

    Intero indice

    1. Per associare una policy IAM a un progetto, in un ambiente shell, utilizza il comando projects add-iam-policy-binding:

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

      Sostituisci quanto segue:

      • PRINCIPAL: l'indirizzo email del principal che deve accedere, ad esempio user:test-user@gmail.com per un singolo utente o group:admins@example.com per un gruppo.

      Per ulteriori informazioni, vedi gcloud projects set-iam-policy.

    2. Quando ti viene chiesto di specificare una condizione, inserisci None.

    Sottoinsieme dell'indice

    Puoi creare più gruppi di repository e assegnare ruoli IAM a diverse entità IAM.

    Per configurare una policy IAM, devi preparare il file JSON o YAML della policy IAM, che conterrà un elenco di gruppi IAM e ruoli assegnati. Ad esempio:

      bindings:
      - members:
        - group:my-group@example.com
        - user:test-user@example.com
        role: roles/cloudaicompanion.repositoryGroupsUser
    

    Per ulteriori dettagli e sintassi, vedi Informazioni sui criteri di autorizzazione.

    Per impostare la policy IAM, in un ambiente shell, utilizza il comando gemini code-repository-indexes repository-groups set-iam-policy:

      gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
          --project=PROJECT_ID \
          --location=REGION \
          --code-repository-index=INDEX_NAME
    

    Sostituisci quanto segue:

Terraform

  1. Verifica di aver configurato Developer Connect e di esserti connesso al tuo repository:

  2. Crea un indice. La personalizzazione del codice si basa su un indice per analizzare il repository al fine di fornire suggerimenti più rapidi per la generazione del codice e le ricerche.

    resource "google_gemini_code_repository_index" "example" {
      location = "REGION"
      code_repository_index_id = "INDEX_NAME"
    }
    

    Sostituisci quanto segue:

    • INDEX_NAME: il nome dell'indice. Importante: Prendi nota del nome dell'indice. Ti servirà per diversi passaggi di questo documento.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • REGION: la regione configurata in Developer Connect nel tuo progetto Google Cloud .

    In genere, la creazione dell'indice richiede 30 minuti, ma potrebbe essere necessaria fino a un'ora.

    Google limita il numero di indici del repository di codice a uno per ogni progetto e organizzazione.

  3. Controlla l'accesso all'indice utilizzando i gruppi di repository. Un gruppo di repository è un contenitore per la configurazione di indicizzazione, che include i repository e i relativi pattern di rami. I gruppi di repository sono progettati per un controllo IAM granulare, che consente agli sviluppatori di accedere ai dati indicizzati di questi gruppi, dove dispongono dell'autorizzazione cloudaicompanion.repositoryGroups.use.

    I gruppi di repository contengono repository Developer Connect o link dello stesso progetto e della stessa località.

    Gli amministratori eseguono le seguenti azioni:

    • Crea la risorsa Indice del repository di codice.
    • Nello stesso progetto e nella stessa posizione, configura una nuova connessione Developer Connect.
    • Collega i repository Git nella connessione.
    • Recupera i nomi delle risorse dei link, scegli il pattern del ramo da indicizzare per ogni link e inseriscilo in uno o più gruppi di repository.
    resource "google_gemini_repository_group" "example" {
      location = "REGION"
      code_repository_index = "INDEX_NAME"
      repository_group_id = "REPOSITORY_GROUP"
      repositories {
        resource = "REPOSITORY_RESOURCE_NAME"
        branch_pattern = "BRANCH_NAMES"
      }
    }
    

    Sostituisci quanto segue:

    • REPOSITORY_GROUP: il nome del gruppo di repository, ad esempio default.
    • REPOSITORY_RESOURCE_NAME: il nome del repository all'interno della connessione Developer Connect. Per trovare il nome del repository, vai alla pagina Repository Git nella console Google Cloud e, nella scheda Repository, cerca l'ID connessione nella colonna Connessione della tabella. Per copiare il nome della risorsa, fai clic sul menu more_vert per altre opzioni e seleziona Copia percorso risorsa.
    • BRANCH_NAMES: il nome dei rami che vuoi indicizzare, ad esempio main|dev.

    Puoi anche creare un gruppo di repository con repository definiti in un file JSON (o YAML), formattato nel seguente modo:

    JSON

    [
      {
          "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
      },
      {
          "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
      }
    ]
    

    YAML

    - resource: REPOSITORY_RESOURCE_NAME
      branchPattern: main|dev
    
    - resource: REPOSITORY_RESOURCE_NAME
      branchPattern: dev
    

    Per creare un gruppo di repository basato su un file JSON o YAML, in un ambiente shell, utilizza il comando gemini code-repository-indexes repository-groups create:

    JSON

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories=FILEPATH.json
    

    YAML

    gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
        --project=PROJECT_ID \
        --location=REGION \
        --code-repository-index=INDEX_NAME \
        --repositories=FILEPATH.yaml
    

    Se preferisci, puoi criptare e controllare i tuoi dati con una chiave di crittografia gestita dal cliente (CMEK) tramite Cloud Key Management Service. Per scoprire di più sull'utilizzo di una chiave CMEK, consulta Criptare i dati con chiavi di crittografia gestite dal cliente.

  4. Concedi ruoli IAM al gruppo di repository in un progetto.

    Ricevi suggerimenti solo dai repository nell'indice. Ogni repository appartiene a uno o più gruppi di repository. Per accedere ai suggerimenti, devi concedere il ruolo IAM Utente Cloud AI Companion Repository Groups (roles/cloudaicompanion.repositoryGroupsUser), che contiene l'autorizzazione IAM cloudaicompanion.repositoryGroups.user richiesta, al gruppo di repository in uno dei seguenti modi:

    • Concedi alle entità l'autorizzazione ad accedere all'intero indice.
    • Concedere alle entità l'accesso a un sottoinsieme dell'indice.

    Intero indice

    1. Per associare una policy IAM a un progetto, in un ambiente shell, utilizza il comando projects add-iam-policy-binding:

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

      Sostituisci quanto segue:

      • PRINCIPAL: l'indirizzo email del principal che deve accedere, ad esempio user:test-user@gmail.com per un singolo utente o group:admins@example.com per un gruppo.

        Per ulteriori informazioni, vedi gcloud projects set-iam-policy.

    2. Quando ti viene chiesto di specificare una condizione, inserisci None.

    Sottoinsieme dell'indice

    Puoi creare più gruppi di repository e assegnare ruoli IAM a diverse entità IAM.

      data "google_iam_policy" "foo" {
        binding {
          role = "roles/cloudaicompanion.repositoryGroupsUser"
          members = ["test-user@example.com"]
        }
      }
    
      resource "google_gemini_repository_group_iam_policy" "foo" {
        project = "PROJECT_ID"
        location = "REGION"
        code_repository_index_id = "INDEX_NAME"
        repository_group_id = "GROUP_NAME"
        policy_data = data.google_iam_policy.foo.policy_data
      }
    
      data "google_gemini_repository_group_iam_policy" "foo" {
        project = "PROJECT_ID"
        location = "REGION"
        code_repository_index_id = "INDEX_NAME"
        repository_group_id = "GROUP_NAME"
        depends_on = [
          google_gemini_repository_group_iam_policy.foo
        ]
      }
    

    Puoi anche creare un binding:

      resource "google_gemini_repository_group_iam_binding" "foo" {
        project = "PROJECT_ID"
        location = "REGION"
        code_repository_index_id = "INDEX_NAME"
        repository_group_id = "GROUP_NAME"
        role = "roles/cloudaicompanion.repositoryGroupsUser"
        members = ["test-user@example.com"]
      }
    

    Sostituisci quanto segue:

    • GROUP_NAME: il nome del gruppo di repository creato in un passaggio precedente per controllare l'accesso all'indice utilizzando i gruppi di repository.

Controllare lo stato dell'indicizzazione

A seconda del numero di repository che vuoi indicizzare e delle loro dimensioni, l'indicizzazione dei contenuti può richiedere fino a 24 ore. Per i repository di grandi dimensioni, l'indicizzazione può richiedere più tempo. L'indicizzazione avviene una volta ogni 24 ore e rileva eventuali modifiche apportate al repository.

  1. Cerca i log di indexing. Per maggiori informazioni, consulta Linguaggio delle query di Logging.

    Console

    1. Nella console Google Cloud , vai a Esplora log.

      Vai a Esplora log

    2. Utilizza il filtro dei nomi dei log per visualizzare i log indexing.

    Interfaccia a riga di comando

    Per cercare i log di indicizzazione, in un ambiente shell, utilizza il comando logging read:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
    

    Sostituisci PROJECT_ID con l'ID progetto in cui si trova il gruppo di repository.

    Ad esempio, per visualizzare gli errori nei log di indexing, esegui il seguente comando:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. Esamina gli stati di indicizzazione associati, ad esempio:

    • Inizio dell'indicizzazione del repository, ad esempio Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Fine dell'indicizzazione del singolo repository, ad esempio:
      • Operazione riuscita: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Errore: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Fine dell'indicizzazione del repository, ad esempio:
      • Operazione riuscita: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Errore: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.

    Negli stati dell'indice, REPOSITORY_NAME è il repository che vuoi esaminare.

  3. Controlla gli errori di indicizzazione associati, ad esempio:

    • Impossibile recuperare il repository.
    • Impossibile elencare i file del repository.
    • Impossibile recuperare le informazioni sul repository dall'indice.
    • Impossibile recuperare i file dall'indice.
    • Errore interno.

Utilizzare la personalizzazione del codice

Una volta configurata la personalizzazione del codice, inizierai a visualizzare suggerimenti per il completamento e la generazione del codice che potrebbero essere basati sul codice privato che hai indicizzato, oltre ai risultati della conoscenza completa del codebase.

Per scoprire di più sull'utilizzo della personalizzazione del codice e sulle best practice, consulta Utilizzare la personalizzazione del codice.

Disattivare la personalizzazione del codice

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai alla pagina Prodotti Gemini.

    Vai ai prodotti Gemini

    Viene caricata la pagina Prodotti Gemini.

  2. Nel menu di navigazione, fai clic su Personalizzazione del codice.

    Viene caricata la pagina Personalizzazione codice.

  3. Per eliminare l'indice, fai clic su Elimina indice.

    Viene visualizzato un messaggio di avviso. Se vuoi procedere ed eliminare l'indice, inserisci il nome dell'indice e fai clic su Elimina.

Interfaccia a riga di comando

  1. Per elencare tutti i gruppi di repository per l'indice corrente, in un ambiente shell, utilizza il comando gemini code-repository-indexes repository-groups list:

    gcloud gemini code-repository-indexes repository-groups list --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME --uri
    

    Sostituisci quanto segue:

    • REGION: la regione configurata in Developer Connect nel tuo progetto Google Cloud .
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • INDEX_NAME: il nome dell'indice creato in un passaggio precedente per creare un indice.
  2. Per eliminare un gruppo di repository dall'indice corrente, utilizza il comando gemini code-repository-indexes repository-groups delete:

    gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \
        --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME
    
  3. Ripeti i passaggi precedenti per ogni gruppo di repository finché non elimini tutti i gruppi di repository dall'indice.

  4. (Facoltativo) Per eliminare l'indice, in un ambiente shell, utilizza il comando gemini code-repository-indexes delete:

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

Passaggi successivi