使用 Gemini Code Assist Enterprise 自訂程式碼

1. 事前準備

本程式碼實驗室將說明如何準備 Gemini Code Assist,以便提供專為私人存放區量身打造的程式碼自訂建議。如此一來,Code Assist 的分析結果就更加實用,尤其是對於經常重複執行類似工作制定特定慣例的團隊而言,更是如此。請放心,如果允許 Gemini 為這項功能的私人程式碼集建立索引,Gemini 就無法使用私人程式碼進行廣泛訓練。

我們也會討論如何使用 .aiexclude 檔案,排除敏感或不相關的檔案,以便進行程式碼自訂。

必要條件

  • 對 Gemini Code Assist 有基本瞭解,並能存取已啟用該功能的專案
  • 熟悉支援的程式語言,以便自訂程式碼
  • 能夠在 us-central1europe-west1 中建立資源,因為程式碼自訂功能需要在這些位置建立 Developer Connect 連線。
  • 通過驗證的最新版 Google Cloud CLI

課程內容

  • 如何在 Gemini Code Assist Enterprise 中使用程式碼自訂功能
  • 程式碼自訂功能可為團隊節省時間,這只是其中一個應用情境

需求條件

  • 已啟用 Google Cloud 專案 Gemini Code Assist
  • 要為自訂要求建立索引的私人存放區
  • 是時候為自訂化要求建立索引了。這項作業最多可能需要 24 小時
  • 已安裝 Gemini Code Assist 的 IDE

2. 背景資訊

如要嘗試程式碼自訂功能,您需要:

  1. 存取已啟用 Gemini 的 Google Cloud 專案
  2. 以及私人存放區,用於通知 Gemini 回覆。

啟用 Gemini

Gemini 最適合索引的候選存放區,應包含貴機構經常重複使用的程式碼。本程式碼研究室提供的範例存放區包含標準的 Spring Boot 網路服務,以及符合此條件規定的資料移轉物件資料夾,因為系統會建立類似的類別,用於描述資料庫中每個實體在傳送至呈現層時的狀態。

3. (選用) 設定存放區

如要使用範例存放區,而非使用您專屬的私人存放區,則可在您選擇的終端機編輯器或 Cloud Shell 執行下列步驟。請先建立私人存放區,讓我們瞭解程式碼自訂的實際運作情形:

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

將下列內容新增至 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;
}

這就足以證明,當您啟用程式碼自訂功能時,這個程式碼庫的其他貢獻者預期會使用的存取子會正確產生。

建立新的存放區,並確保該存放區為私人存放區。請按照下列步驟,將範例推送至新的存放區:

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. 排除檔案

在授予 Gemini 對私人存放區的存取權之前,請務必瞭解如何排除團隊不想索引的無關或機密檔案。這項操作會使用 .aiexclude 檔案,與 .gitignore 類似,但有幾個主要差異:

  • 空白的 .aiexclude 檔案會封鎖其目錄和子目錄中的所有檔案。
    • 這和包含 **/* 的檔案相同。
  • .aiexclude 檔案不支援否定 (以 ! 為前置詞的模式)。

請考量這項因素,並考慮團隊想排除的檔案類型或目錄,並將這些項目分行列出:

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

Developer Connect 是一項服務,可協助您在 GitHub 或 GitLab 中連結連結私人程式碼存放區。這個機制可讓 Gemini Code Assist 安全地連線至您的私人存放區,建立用於改善回覆的索引。

這兩個概念有助於您瞭解 Developer Connect 如何安全地提供程式碼存取權:

連線

  • 代表 Google 和第三方原始碼管理平台之間的橋樑。

連結

  • 代表與已連結原始碼管理平台中所選個別原始碼存放區的關聯。

瞭解這些概念後,請先前往「Developer Connect」頁面,為專案啟用 API。

啟用 Developer Connect

接著,請按照適當步驟為 GitHubGitLab 建立連線連結。這兩項資源會在精靈程序中建立。

建立連線和連結

重複執行這些步驟,為您希望 Gemini 程式碼自訂功能在回覆中考量的每個存放區建立連結。如果多個存放區來自相同平台,您可以重複使用現有的連線。

6. 建立並連結至索引

為了快速剖析及分析存放區,程式碼自訂功能會使用索引。請記下您使用的 INDEX_NAME,因為在下一個步驟中會用到。

如要建立索引,請執行下列指令:

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

如果您遇到任何 Invalid choice: ... 錯誤,請執行下列指令,確認您的 Google Cloud CLI 已更新:

gcloud components update

接著,建立存放區群組,允許存取索引:

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

替換下列值:

  • REPOSITORY_GROUP:您要建立的存放區群組名稱
  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • INDEX_NAME:您在上一步定義的索引名稱,以便建立索引。
  • REGION:說明文件中的清單所列支援的區域,您已在 Google Cloud 專案的 Developer Connect 中設定。
  • INDEX_CONNECTION:您在先前步驟中建立的索引連結,用於建立索引。
  • REPOSITORY:您要建立索引的存放區。您必須至少指定一個存放區,並可視需要指定多個存放區。
  • BRANCH_NAMES:您要建立索引的分支版本名稱,例如 main 或 dev。

視要建立索引的存放區數量和大小而定,索引內容最多可能需要 24 小時。系統每 24 小時會執行一次索引建立作業,擷取存放區中發生的任何變更。如要查看索引產生狀態,請參閱這些步驟

搜尋索引狀態

最後,請授予所需主體對群組的存取權:

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

7. 產生自訂程式碼

Gemini 存取私人存放區中的程式碼後,應該就能在程式碼完成要求中看到相關的程式碼片段。在範例存放區中,我們可以前往 DTO 資料夾,然後建立新類別來代表新物件,您可以看到預期的註解會在我們輸入時顯示:

產生的樣本

8. 結語

恭喜您完成本程式碼研究室!您已瞭解如何使用 Gemini Code Assist 的程式碼自訂功能。您的回應現在可以針對團隊專屬的私人程式碼庫進行調整,因此每個提示和程式碼補全功能對團隊開發人員來說都更有價值。

歡迎詳閱下列其他文件和資料,瞭解相關資訊及設定 IAM 角色這類支援: