透過 Gemini Code Assist 編寫程式碼

本文說明如何使用 Gemini Code Assist ( Google Cloud中的 AI 技術輔助協作工具),在 Cloud Shell 中執行下列作業:

  • 提供指引,協助您解決程式碼問題。

  • 為專案產生程式碼。

  • 在編寫程式時,可接收行內建議。

瞭解 Gemini for Google Cloud 如何使用您的資料,以及使用時機

為了協助您遵守程式碼的任何授權規定,Gemini Code Assist 會在建議內容直接引用特定來源的大量內容時,提供來源引用資訊。如要進一步瞭解 Gemini 引用來源的方式和時機,請參閱「Gemini 如何協助您產生程式碼並引用來源」。

程式碼自訂功能可讓您直接從 Gemini Code Assist 取得貴機構私人程式碼集的程式碼建議。瞭解如何設定程式碼自訂功能

本文檔適用於各項技能等級的開發人員。本教學課程假設您具備 Cloud Shell 編輯器的工作知識,且熟悉 Google Cloud。如有需要,您也可以在 Cloud WorkstationsCloud Code for IntelliJCloud Code for VS Code 中探索 Gemini Code Assist。

連線至 Google Cloud 並選取專案

在本節中,您將連線至 Google Cloud 並選取Google Cloud 專案,在 Cloud Shell 編輯器中啟用 Gemini for Google Cloud API。

如果您選取的 Google Cloud 專案未啟用 Gemini for Google Cloud API,系統會傳送通知,讓您選擇是否要透過 IDE 啟用 API。在通知視窗中選取「啟用 API」,即可為專案啟用 API。詳情請參閱「為專案設定 Gemini Code Assist」。

如要在 Cloud Shell 編輯器中連線至 Google Cloud ,請按照下列步驟操作:

  1. 啟動 Cloud Shell 編輯器

  2. 如果您使用的是舊版編輯器,請按一下「試用新版編輯器」

  3. 在狀態列中,按一下「Cloud Code - Sign In」

    狀態列中的「Cloud Code - Sign In」按鈕。

  4. 如果系統提示您授權 Cloud Shell 編輯器發出 Google CloudAPI 呼叫,請按一下「Authorize」(授權)

  5. 按照提示登入 Google 帳戶。

    您已連結至 Google Cloud。

接著,如要選取已啟用 Gemini for Google Cloud API 的 Google Cloud 專案,請按照下列步驟操作:

  1. 在「Gemini Code Assist」狀態列中,點按「Gemini Code Assist」

    可使用 Gemini 狀態列。

  2. 在「Gemini Code Assist」選單中,選取「Select Gemini Code project」

  3. 選取已啟用 Gemini for Google Cloud API 的 Google Cloud 專案。

    可以開始使用 Gemini 了。

    狀態列中的 Gemini 圖示已設為正常。

與 Gemini Code Assist 對話

在本節中,您將瞭解如何開啟 Gemini Code Assist 窗格,並與 Gemini Code Assist 進行即時通訊,以便瞭解現有程式碼的內容。

如要開始與 Gemini 對話,請按照下列步驟操作:

  1. 開啟程式碼檔案。

  2. 在 Cloud Shell 編輯器的活動列中,按一下 spark「Gemini Code Assist」

  3. 在「Gemini Code Assist」窗格中輸入提示 Explain this code to me,然後點按「Send」圖示 send

    Gemini 會使用程式碼檔案中的程式碼做為提示的參照,並回覆程式碼說明。

    如要參照特定的程式碼區塊,而非檔案中的所有程式碼,您可以選取程式碼檔案中的區塊,然後提示 Gemini。

重設即時通訊記錄

回覆提示時,Gemini Code Assist 會使用對話記錄提供額外的背景資訊。

如果對話記錄不再與您嘗試達成的目標相關,您可以重設對話記錄:在「Gemini Code Assist」窗格中,按一下 delete「Reset Chat」

使用提示產生程式碼

以下各節將說明如何使用 Gemini Code Assist,在程式碼檔案中使用範例提示 Function to create a Cloud Storage bucket 產生程式碼。您也可以選取程式碼的一部分,然後透過聊天功能向 Gemini Code Assist 尋求協助,並在編寫程式碼時接收並接受或拒絕程式碼建議。

在程式碼檔案中提示 Gemini Code Assist

  1. 在程式碼檔案的新行中輸入註解 Function to create a Cloud Storage bucket,然後按下 Enter 鍵 (Windows 和 Linux) 或 Return 鍵 (macOS)。

  2. 如要產生程式碼,請按下 Control + Enter 鍵 (Windows 和 Linux) 或 Control + Return 鍵 (macOS)。

    Gemini Code Assist 會在程式碼檔案中,在提示文字旁以鬼影文字的形式產生程式碼。

  3. 選用步驟:如要接受產生的程式碼,請按下 Tab 鍵。

選用:變更產生程式碼的鍵盤快速鍵

如果產生程式碼的預設鍵盤快速鍵無法正常運作,請按照下列步驟變更鍵盤快速鍵:

  1. 在 Cloud Shell 編輯器中,按一下 menu「Menu」,然後依序前往「File」>「Preferences」>「Keyboard Shortcuts」

  2. 在鍵盤快速鍵清單中搜尋「Cloud Code: Generate Code」

  3. 依序點選「Cloud Code: Generate Code」edit「Change Keybinding」

  4. 在隨即顯示的對話方塊中,輸入你要使用的捷徑。

  5. 按下 Enter 鍵 (Windows 和 Linux) 或 Return 鍵 (macOS)。

    您現在可以使用新指派的鍵盤快速鍵,透過 Gemini 產生程式碼。

透過即時通訊,向 Gemini Code Assist 提示所選程式碼

Gemini Code Assist 可根據您選取的程式碼執行工作或回答問題。如要取得根據提示產生的程式碼,請按照下列步驟操作:

  1. 在活動列中,按一下 spark「Gemini Code Assist」,開啟「Gemini Code Assist」窗格。

  2. 在程式碼檔案中選取程式碼區塊。

  3. 在「Gemini Code Assist」窗格文字欄位中,輸入所選程式碼的提示。

    舉例來說,您可以選取程式碼中的函式,然後輸入提示 Write a unit test for this function

    Gemini 會為所選函式編寫單元測試。

    Gemini 會使用您選取的程式碼做為參考,並回應提示。

在編寫程式碼時取得行內建議

在您編寫程式碼時,Gemini Code Assist 會提供內嵌程式碼建議,您可以選擇接受或忽略。如要試用這項功能,請按照下列步驟操作:

  1. 在程式碼檔案的新行中,開始編寫函式。舉例來說,如果您使用的是 Python 檔案,請輸入 def

    Gemini 會以鬼影文字的形式提供程式碼建議。

  2. 如要接受 Gemini Code Assist 提供的程式碼建議,請按下 Tab 鍵。如要忽略建議,請按下 Esc 鍵或繼續編寫程式碼。

選用:停用內嵌建議

如要停用 Gemini Code Assist 中的內嵌建議功能,請按照下列步驟操作:

  1. 在 Cloud Shell 編輯器中,依序選取 menu 選單,然後前往「File」>「Preferences」>「Settings」

  2. 在「Settings」對話方塊的「User」分頁中,依序前往「Extensions」>「Cloud Code」

  3. 捲動至「Cloudcode: Gemini Code Assist: Inline Suggestions: Enable Auto」清單,然後選取「Off」

    這麼做會關閉內嵌建議功能。您仍可按下 Control + Enter 鍵 (Windows 和 Linux) 或 Control + Return 鍵 (macOS),手動觸發內嵌建議。

選用:使用 .aiexclude 檔案從內容中排除檔案

您可以建立 .aiexclude 檔案,將檔案排除在 Gemini Code Assist 的脈絡考量之外。.aiexclude 檔案的語法與 .gitignore 檔案相似,但有以下差異:

  • 空白或不存在的 .aiexclude 檔案不會封鎖目錄和所有子目錄中的任何檔案。
  • .aiexclude 檔案不支援否定,也就是在模式前面加上驚嘆號 (!)。
  • .aiexclude 檔案會貪婪地比對 * 字元。這會在目錄和檔案中不加區分地進行比對。這個 .aiexclude 檔案不會針對資料夾或檔案區分 ***

目前僅支援單一 .aiexclude 檔案。如要設定 .aiexclude 檔案,請在工作區資料夾的根目錄中建立名為 .aiexclude 的檔案。如果您想將這個檔案放在工作區根目錄之外,或重新命名檔案,可以透過 VS Code 設定中的「Context Exclusion File」設定路徑。這個設定中提供的路徑值會相對於您開啟的工作區根目錄進行解析。

範例

以下範例說明如何設定 .aiexclude 檔案:

  • 封鎖工作區目錄中或以下所有名為 apikeys.txt 的檔案:

    apikeys.txt
    
  • 封鎖工作區目錄中或以下所有副檔名為 .key 的檔案:

    *.key
    
  • 只封鎖 .aiexclude 檔案所在目錄中的 apikeys.txt 檔案,而非任何子目錄:

    /apikeys.txt
    
  • 封鎖目錄 my/sensitive/dir 和所有子目錄中的所有檔案。路徑應以工作區根目錄為基準。

    my/sensitive/dir/*
    

停用與引述來源相符的程式碼建議

直接引用其他來源 (例如現有的開放原始碼) 的長篇內容時,Gemini 會提供引用資訊。詳情請參閱「Gemini 引用來源的方式和情形」。

如要避免系統建議與引用來源相符的程式碼,您可以在 settings.json 檔案中將 geminicodeassist.recitation.maxCitedLength 設定修改為 0

"geminicodeassist.recitation.maxCitedLength": 0

使用智慧型動作

為了協助您提高工作效率,同時盡量減少切換情境,Gemini Code Assist 會直接在程式碼編輯器中提供 AI 輔助的智慧動作。在程式碼編輯器中選取程式碼時,您可以查看與當前內容相關的動作清單,並從中選取所需動作。

如要在程式碼中使用智慧動作,請按照下列步驟操作:

  1. 在程式碼檔案中選取程式碼區塊。

  2. 在所選程式碼區塊旁邊,按一下 lightbulb「顯示程式碼動作」

    在 Shell 和 Workstations 中選取程式碼區塊後,智慧動作燈泡圖示就會顯示。

  3. 選取「產生單元測試」等動作

    Gemini 會根據所選動作產生回覆。

使用程式碼轉換

Gemini Code Assist 提供程式碼轉換功能,可讓您使用內嵌文字方塊,選取程式碼檔案的部分內容,並透過自然語言提示要求修改現有程式碼。

您可以透過程式碼轉換功能執行下列操作:

  • 產生註解行來記錄程式碼
  • 排解程式碼問題
  • 改善程式碼可讀性
  • 提高程式碼效率

您也可以在 Gemini:Chat 窗格中查看所生成回覆的背景資訊來源。

使用內嵌文字方塊提示 Gemini Code Assist

您可以透過內嵌文字方塊,直接在程式碼檔案中與 Gemini Code Assist 互動。

如要開啟內嵌文字方塊並提示 Gemini,請按照下列步驟操作:

  1. 在程式碼檔案中,按下 Control + I 鍵 (Windows 和 Linux) 或 Command + I 鍵 (macOS)。

  2. 輸入提示 (例如 Write a function to create a Cloud Storage bucket),然後按下 Enter 鍵 (Windows 和 Linux) 或 Return 鍵 (macOS)。

    Gemini Code Assist 會根據提示產生程式碼。

查看重構後的程式碼差異

內嵌文字方塊內建的差異檢視畫面可讓您查看 Gemini 建議的變更內容和原始程式碼。接著,您可以接受或捨棄建議的變更。

如要從內嵌文字方塊中查看重構程式碼的差異,請執行下列步驟:

  1. 在程式碼檔案中選取函式,然後按下 Control + I 鍵 (適用於 Windows 和 Linux) 或 Command + I 鍵 (適用於 macOS),開啟內嵌文字方塊。

  2. 輸入提示訊息 (例如 Add comments),然後按下 Enter 鍵 (Windows 和 Linux) 或 Return 鍵 (macOS)。

    當 Gemini 為所選函式產生程式碼變更時,差異檢視畫面就會顯示。

    Gemini Chat 窗格中列出的脈絡來源。

  3. 如要接受或捨棄變更,請按一下「接受」或「捨棄」

查看產生回覆的背景資訊

脈絡顯示功能會列出用於產生提示回覆時做為參考的專案檔案 (脈絡來源)。瞭解哪些檔案用於參考資料,有助於您精進提示,並獲得更具體的回應。每次使用 Gemini 對話時,系統都會顯示內容來源。

如要查看產生回覆的內容來源,請在「Gemini:Chat」窗格中捲動至「Context Sources」片段。展開程式碼片段,即可查看所有內容來源。

Gemini Chat 窗格中列出的脈絡來源。

使用智慧指令

智慧指令是指您可以在內嵌文字方塊中使用的指令,用於對程式碼執行特定動作。

如要使用 /explain 智慧指令取得整個程式碼檔案的說明,請按照下列步驟操作:

  1. 在程式碼檔案中,按下 Control + I 鍵 (Windows 和 Linux) 或 Command + I 鍵 (macOS),開啟內嵌文字方塊。

  2. 按下 / 即可查看智慧型指令清單和說明。

  3. 選取「/explain」。

    Gemini 會在內嵌文字方塊中產生整個程式碼檔案的說明。

  4. 選用:如要在「Gemini:Chat」窗格中查看產生的回覆,請點選「在 Chat 中查看」

查看提示記錄

當您需要在大型程式碼檔案中輸入相同提示時,存取提示記錄可節省您的時間。

如要存取提示記錄,請在程式碼檔案中按下 Control + I 鍵 (Windows 和 Linux) 或 Command + I 鍵 (macOS),開啟內嵌文字方塊,然後按下 Control + 上鍵 (Windows 和 Linux) 或 Command + 上鍵 (macOS)。這樣一來,您就能輪流使用舊提示,並在需要時重複使用。

為非英語母語人士改善程式碼可讀性

如果您不是英語母語人士,且需要使用翻譯應用程式,可以使用內嵌文字方塊產生其他語言的留言。

如要將英文留言轉換為其他語言,或以其他語言新增留言,請按照下列步驟操作:

  1. 在程式碼檔案中,選取要新增註解的程式碼。

  2. 按下 Control + I 鍵 (Windows 和 Linux) 或 Command + I 鍵 (macOS),開啟內嵌文字方塊。

  3. 輸入提示訊息,例如 Add spanish comments,然後按下 Enter 鍵 (Windows 和 Linux) 或 Return 鍵 (macOS)。

    Gemini 會以您在提示中指定的語言產生留言,並查看這些建議的差異。

  4. 如要接受或捨棄這些程式碼變更,請按一下「接受」或「捨棄」

測試其他範例提示

閱讀本文件的「使用提示產生程式碼」一節後,請試試下列提示範例。

取得程式碼說明

  1. 在程式碼檔案中,選取要說明的函式。
  2. 在「Gemini Code Assist」窗格中輸入提示 Explain this code to me

    Gemini 會將您選取的程式碼做為參考,並回應所選函式的說明。

產生測試計畫

  1. 在程式碼檔案中,選取要新增單元測試的程式碼。
  2. 在「Gemini Code Assist」窗格中輸入提示 Write unit tests for my code

取得程式碼偵錯相關協助

  1. 在程式碼檔案中選取要偵錯的程式碼。
  2. 在「Gemini Code Assist」窗格中輸入提示 Help me debug my code

讓程式碼更易讀

  1. 在程式碼檔案中,選取要改善易讀性的程式碼。
  2. 在「Gemini Code Assist」窗格中輸入提示 Make my code more readable

    如果您想專注於程式碼的特定部分,請在提示 Gemini 前選取偏好的程式碼部分。

已知問題

以下各節將概略說明 Gemini Code Assist 的已知問題。

授權朗讀警告不會在工作階段之間保留

如果授權朗讀警告不會在工作階段中保留,請參閱持續記錄:

  1. 依序按一下「選單」圖示 menu>「查看」>「輸出」

  2. 選取「Gemini Code Assist - Citations」

Gemini Code Assist 輸出視窗中的連線問題

如果在 Gemini Code Assist 輸出視窗中看到連線錯誤或其他連線問題,請嘗試下列操作:

  • 設定防火牆,允許存取 oauth2.googleapis.comcloudaicompanion.googleapis.com

  • 設定防火牆,允許透過 gRPC 使用的 HTTP/2 進行通訊。

您可以使用 grpc-health-probe 工具測試連線狀態。檢查成功後,系統會顯示以下輸出內容:

$ grpc-health-probe -addr cloudaicompanion.googleapis.com:443 -tls error: this server does not implement the grpc health protocol (grpc.health.v1.Health): GRPC target method can't be resolved

檢查失敗會產生以下輸出內容:

timeout: failed to connect service "cloudaicompanion.googleapis.com:443" within 1s

如要取得更多詳細資料,請在 grpc-health-probe 之前執行下列指令:

export GRPC_GO_LOG_SEVERITY_LEVEL=info

選取 Gemini Code Assist 專案後,仍會顯示「Activate Gemini Code Assist」

如果您按照本指南中的操作說明選取專案 (包括啟用 Gemini for Google Cloud API),則 LS 伺服器可能有問題。

如要進一步瞭解問題,請採取下列行動:

  1. 在狀態列中,依序按一下 spark「Gemini Code Assist」和「Send feedback」

  2. 按一下任何記錄檔的「顯示」,即可查看更多詳細資料,並協助排除問題。

提供意見

如要提供使用體驗的意見回饋,請按照下列步驟操作:

  1. 在狀態列中,按一下「Gemini Code Assist」,然後在「Quick Pick」選單中選取「Send feedback」

  2. 在表單中填寫「標題」和「註解」欄位。

  3. 如果您想分享 Skaffold 或 AI Companion 記錄檔,請務必選取「Send Skaffold logs」或「Send AI Companion logs」選項。

  4. 按一下「提交意見回饋」

後續步驟