開發人員專用 Gemini Code Assist (原稱 Duet AI) 導覽

1. 簡介

本研究室將使用 Gemini Code Assist (原稱開發人員專用 Duet AI),這是 Google Cloud 中的 AI 技術輔助協作工具。您將瞭解如何使用 Gemini Chat 和內嵌程式碼編寫輔助功能,產生程式碼、理解程式碼及執行其他操作。

您將要執行的操作...

  • 您將使用 Cloud Shell IDE 下載網頁應用程式的現有程式碼範本。
  • 您將透過 Cloud Shell IDE 中的 Gemini Chat 提出 Google Cloud 一般問題,
  • 您將在 Cloud Shell IDE 中使用 Gemini Code Assist 內嵌程式碼輔助功能,產生、總結及完成程式碼。

課程內容...

  • 如何使用 Gemini Code Assist 執行多項開發人員工作,例如生成程式碼、完成程式碼,以及提供程式碼摘要。
  • 瞭解如何使用 Cloud 專用 Gemini 認識 Google Cloud。

軟硬體需求

  • Chrome 網路瀏覽器
  • Gmail 帳戶
  • 已啟用計費功能的 Cloud 專案
  • 你的 Cloud 專案已啟用 Gemini Code Assist

本研究室的適用對象為各級開發人員,包括初學者。雖然範例應用程式採用 Python 語言,但您不需要熟悉 Python 程式也能瞭解實際情況。我們的重點將放在向開發人員熟悉 Gemini Code Assist 的功能。

2. 設定

本節說明開始使用這個研究室所需的一切資源。

在 Google Cloud 專案中啟用 Gemini 版 Cloud

我們現在會在 Google Cloud 專案中啟用 Gemini 版 Cloud。步驟如下:

  1. 請前往 https://console.cloud.google.com,確認已選取這個研究室要執行的 Google Cloud 專案。按一下畫面右上方的「開啟 Gemini」圖示。

28f084ec1e159938.png

  1. Cloud Chat 專用 Gemini 視窗隨即會在控制台右側開啟。按一下「啟用」按鈕,如下所示。如果系統未顯示「啟用」按鈕,而是看到 Chat 介面,可能是因為專案已啟用 Gemini 版 Cloud,您可以直接進行下一個步驟。

e8df9adc4ea43a37.png

  1. 啟用之後,只要查詢一、兩個查詢,就能測試 Cloud 專用 Gemini。目前顯示了幾項查詢範例,但你可以試試 What is Cloud Run?

9859ea86a8310cb.png

Cloud 專用 Gemini 會回覆您的問題。您可以點選右上角的 f68286b2b2ea5c0a.png 圖示,關閉 Gemini 版 Cloud Chat 視窗。

在 Cloud Shell IDE 中啟用 Gemini Code Assist

我們將在程式碼研究室的其餘部分,使用 Cloud Shell IDE (全代管的程式碼 OSS 開發環境)。您必須在 Cloud Shell IDE 中啟用及設定 Code Assist,步驟如下:

  1. 前往 ide.cloud.google.com。IDE 可能需要一段時間才會顯示,請耐心等候。
  2. 按一下底部狀態列中的「Cloud Code - 登入」按鈕 (如圖所示)。按照指示授權外掛程式。如果您在狀態列中看到「Cloud Code - no project」,請選取該專案,然後從您打算使用的專案清單中選取特定的 Google Cloud 專案。

6f5ce865fc7a3ef5.png

  1. 點選畫面右下角的「Gemini」Gemini按鈕,然後選取最後一次正確的 Google Cloud 專案。如果系統要求您啟用 Cloud AI Companion API,請啟用該 API 並繼續操作。
  2. 選取 Google Cloud 專案後,請確認狀態列的 Cloud Code 狀態訊息中會顯示,且右側狀態列中顯示 Code Assist 已啟用,如下所示:

709e6c8248ac7d88.png

Gemini Code Assist 已可使用!

選用:如果在右下方的狀態列中沒有看到 Gemini,則必須啟用 Gemini 版 Cloud Code。請先前往「Cloud Code Extension」→「Settings」,然後輸入「Gemini」文字,確認已在 IDE 中啟用 Gemini,如下所示。確認已勾選該核取方塊。請重新載入 IDE。這麼做會啟用 Gemini 版 Cloud Code,IDE 狀態列中會顯示 Gemini 圖示。

228c9c9c6b956c8e.png

3. 建立範例應用程式

我們會建立範例應用程式 (Python Flask 應用程式),用來探索 Gemini Code Assist 功能。

請按照下列步驟操作:

  1. 在下方狀態列中點選 Google Cloud 專案名稱

f151759c156c124e.png

  1. 畫面上會顯示選項清單。在下方清單中點選「New Application」

91ea9836f38b7f74.png

  1. 選取「Cloud Run」應用程式。
  2. 選取「Python (Flask): Cloud Run」應用程式範本。
  3. 將新應用程式儲存到偏好位置。
  4. 您會收到確認應用程式已建立的通知,同時系統會開啟一個新視窗,並顯示您的應用程式,如下所示。系統隨即會開啟 README.md 檔案。您現在可以關閉該檢視畫面。

aaa3725b17ce27cf.png

4. 與 Gemini 對話

我們先學習如何與 Gemini 對話。Gemini 可做為 Cloud Shell IDE 中的對話助理,做為 VS Code 的 Cloud Code 擴充功能的一部分。按一下左側導覽列中的「Gemini」按鈕即可前往。請在左側導覽面板中找出 Gemini 圖示 a489f98a34898727.png,按一下該圖示。

Cloud Shell IDE 中會開啟「Chat:GeminiI」窗格,您也可以與 Gemini 對話,在 Google Cloud 中取得協助。

14ad103efaa0ddaa.png

讓我們使用 Gemini 對話窗格輸入提示,並查看 Gemini 的回覆。輸入下列提示:

What is Cloud Run? 

Gemini 應在回覆時提供 Cloud Run 的詳細資料。提示是指透過問題或陳述來說明所需協助。在提示中加入 Google Cloud 分析的現有程式碼背景資訊,可得到更實用或完整的回覆。如要進一步瞭解如何撰寫提示來生成優質回覆,請參閱「為 Gemini 版 Google Cloud 撰寫更優質的提示」。

您可以試用下列提示範例,或嘗試自行提出有關 Google Cloud 的問題:

  • What is the difference between Cloud Run and Cloud Functions?
  • What services are available on Google Cloud to run containerized workloads?
  • What are the best practices to optimize costs while working with Google Cloud Storage?

請注意,畫面頂端的垃圾桶圖示,這是重設 Code Assist 即時通訊記錄內容的途徑。另請注意,此即時通訊互動內容與您目前在 IDE 中處理的檔案相關。

5. 程式碼說明

為協助您提升工作效率,同時盡量減少環境切換的時間,Gemini Code Assist 直接在程式碼編輯器中提供 AI 技術輔助的智慧動作。在程式碼編輯器中選取程式碼時,您可以檢視和選取與內容相關的動作清單。

您可以運用 Gemini Code Assist,瞭解應用程式程式碼的部分內容。返回我們在前一個步驟建立的應用程式,你可以使用 Gemini Code Assist 說明 IDE 中提供的檔案和程式碼。

  1. 如果看不到檔案,請在 IDE 活動列中按一下「Explorer」Explorer ( Code OSS Explorer 選單)。
  2. 在 Explorer 窗格中選取「Dockerfile」
  3. 您可以選取檔案內容中的任何部分,然後依序點選「燈泡」圖示 Code OSS Duet AI 燈泡 和「Gemini:說明此內容」。舉例來說,選取以 ENTRYPOINT 開頭的行,依序點選「燈泡」圖示 Code OSS Duet AI 燈泡 >「Gemini:說明此指令」。Gemini 會針對 Dockerfile 的特定區段,產生自然語言解釋,您需要深入瞭解。Gemini 會在回覆時提供 ENTRYPOINT 指令的詳細資料。您瞭解到,透過以上操作說明,Docker 會在容器啟動時執行 app.py 檔案。
  4. 如要查看 app.py 檔案的內容,請在活動列中按一下「Explorer」圖示 Code OSS Explorer 選單,然後選取「app.py
  5. hello() 函式定義中,您可以選取要進一步瞭解的行。然後依序點選燈泡 ( Code OSS Duet AI 燈泡) 和「Gemini : Explain this」。在範例中,我們選取下列兩行程式碼,並觸發「Gemini:說明這項」動作。

14d9c56af016b65d.png

  1. Gemini 會在回覆中詳細說明這兩個 Cloud Run 環境變數 (K_SERVICE, K_REVISION),以及這些變數在應用程式程式碼中的使用情形。請注意,Gemini 能充分瞭解 Google Cloud 和 Cloud Run 等服務,不僅說明 Python 程式碼,還會說明這些變數在 Cloud Run 中的意義。

請嘗試下列其他取得程式碼說明的方式:

  1. 保留 app.py 做為 IDE 中目前開啟的檔案。前往 VS Code 左側導覽列的 Gemini 對話窗格,輸入「說明這個檔案」提示。這項操作會考量整個檔案並向您說明檔案內容。
  2. 你也可以選取檔案中的任何部分,然後使用左側的 Gemini 對話窗格輸入「說明這個」提示。這只會說明檔案中選取的部分。做法類似點選「燈泡」( Code OSS Duet AI 燈泡),然後點選「Gemini:說明此內容」
  3. 您也可以選取一段文字,然後點按 IDE 右上方的「Gemini:智慧動作」,查看可對所選文字執行的動作。以下其中一個選項為「說明此動作」

adeb72acd708174.png

6. 使用提示生成程式碼

本節說明如何使用 Gemini Code Assist,根據註解生成程式碼。

我們來試用這些功能吧!步驟如下:

  1. 建立名為 utils.py 的新檔案。
  2. 在新的程式碼檔案中,輸入 # Function to print a list of blobs in a Google Cloud Storage bucket,然後按下 Enter (Windows 和 Linux) 或 Return (MacOS)。Gemini 可能會在輸入時嘗試生成程式碼,但不接受。我們會在下一個步驟中明確觸發程式碼產生功能。
  3. 如要觸發程式碼產生功能,請按下 Control+Enter (適用於 Windows 和 Linux) 或 Control+Return (適用於 MacOS)。Gemini Code Assist 會在 Python 檔案中的提示文字旁邊,產生 Ghost 文字形式的程式碼。這個工具會針對含有工具列的程式碼提供一或多項建議,讓您從一項程式碼建議前往另一個程式碼建議 (如有多項建議的話)。您甚至可以透過工具列「接受」任何程式碼建議。如果工具列未顯示或消失,請將遊標懸停在產生的程式碼上,即可再次顯示工具列。
  4. 選用:如要接受產生的驗證碼,請按 Tab。如有多項建議,您可以多次按下 Tab,從其中一個建議的程式碼片段前往下一個。

這項操作會將您在 utils.py 檔案中接受的程式碼插入。下方為螢幕截圖範例。系統提供給您的程式碼可能與下方顯示的程式碼不同。如果產生了其他方法,您可以在接受程式碼後刪除這些方法。

d6d7915885c5e74b.png

請注意程式碼周圍有波浪狀的線條。這是程式碼引用的實際運作方式。將遊標懸停在任一行,即可顯示程式碼出處和其他授權相關資訊。範例如下所示:

c7473cadcf15d887.png

你隨後可以按一下「快速修正...」,選擇忽略引用警告。這時會顯示建議的「快速修正」功能,如下所示:

10f4672830954c90.png

如果您接受代碼授權,可選擇「略過引文警告」

(選用) 您也可以試試下列其他的程式碼產生功能:

  1. 你也可以使用 Gemini 對話功能提出相同提示,然後在對話視窗中取得回覆。Chat 介面隨即顯示複製程式碼或插入目前檔案中的選項。
  2. 視需求編寫程式碼提示,嘗試不同操作。下方提供一些建議 (假設您位於其中一個 Python 檔案):或從下方的提示中選擇:
  • 編寫 Python 程式碼,將訊息發布至 Google Cloud Pub/Sub
  • 編寫 Python 程式碼,初始化 BigQuery 用戶端
  • 編寫 Python 程式碼,將應用程式連結至 Cloud SQL

7. 編寫程式碼時取得內嵌程式碼建議

當你撰寫程式碼時,Gemini Code Assist 會提供內嵌程式碼建議,您可以選擇接受或忽略。如要試用這項功能,我們將修改在上一節建立的 utils.py 檔案:

  1. 在 Cloud Shell IDE 中開啟 utils.py 檔案,做為目前的檔案。
  2. 如果產生的程式碼中沒有正確的 import 陳述式,我們就能採取其中一個做法。
  3. 輸入「import」這個字詞後,Gemini Code Assist 應會以幽靈文字的形式提供程式碼建議。如要接受 Gemini Code Assist 提供的程式碼建議,請按 Tab。或者,如要忽略建議,請按下 Esc 或繼續編寫程式碼。在下方的範例畫面中,由於程式碼正在使用 storage 類別,建議匯入。按 Tab 即可接受程式碼建議。此外,我們也建議採用 import os 陳述式,但由於這並非必要,所以我們可以將其移除。

cb3dfff74172959d.png

  1. 前往 utils.py 檔案的結尾,然後新增該行以叫用函式 (如果沒有提供)。這裡使用的是 print_blobs 函式。只要開始輸入函式名稱和完整程式碼,陳述式將有助於撰寫完整內容。
  2. 您必須提供 bucket_name,並使用以下公開值區名稱:gemini-codeassist-bucket。函式的叫用範例如下所示。請注意,您可能會看到函式名稱等方面的細微差異。

print_blobs(bucket_name="gemini-codeassist-bucket")

(選用) 執行程式碼範例

由於我們已編寫程式碼來列出 Google Cloud Storage 值區中的 blob,因此我們需要安裝 google-cloud-storage Python 程式庫。

前往 requirements.txt 檔案,然後新增包含 google-cloud-storage 依附元件的新行,如下所示。以下是 requirements.txt 範例檔案。

Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-cloud-storage

儲存 requirements.txt 檔案。

如要查看程式碼的實際運作情形,您必須透過左上方的選單圖示,從 Cloud Shell IDE 啟動新的終端機工作階段。依序按一下選單圖示和「Terminal」(終端機) →「New Terminal」(新增終端機),如下所示:

289173c68f1addb5.png

在終端機工作階段中,透過下列指令安裝 Python 依附元件:

pip3 install -r requirements.txt

最後,您可以透過下列指令執行 utils.py 檔案:

python utils.py

這樣應該會顯示公開 Google Cloud Storage 值區中的 blob。在理想情況下,輸出內容應會列出 2 個 blob (file1.txtfile2.txt)。

疑難排解

當您收到「存取權」顯示上述公開值區中的物件時發生錯誤,您可以選擇建立自己的 Google Cloud Storage 值區,並使用該值區來取代 gemini-codeassist-bucket。下一節將說明操作方式。

(選用) 建立自己的 Cloud Storage 值區

我們請 Gemini 助您提供指令來建立值區、將值區設為可公開存取,並將範例物件上傳至值區。

從下列提示開始:「What is the gcloud command to create a public bucket in Google Cloud Storage?」(什麼是 Google Cloud Storage 中公開值區的 gcloud 指令?)

畫面上應該會提供用來建立值區的 gcloud 指令。確切指令如下所示:

gcloud storage buckets create gs://<BUCKET_NAME>

<BUCKET_NAME> 選取專屬名稱,然後在終端機中執行指令。

我們已建立值區,要將值區設為可公開存取。請使用以下提示,要求 Gemini 執行指令:「如何將 Google Cloud Storage 值區設為可公開存取?」

您應該會提供 gcloud 指令,讓該指令可公開存取。回應應如下所示:

gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> --member=allUsers --role=roles/storage.objectViewer

<BUCKET_NAME> 替換為您先前使用的值區名稱,然後執行指令。

最後,我們要將幾個範例檔案上傳到值區。在終端機中執行下列指令 (請記得將 <BUCKET_NAME> 變數換成您的值區名稱。

touch f1.txt
touch f2.txt

gcloud storage cp f1.txt gs://<BUCKET_NAME>
gcloud storage cp f2.txt gs://<BUCKET_NAME>

現在您可以使用 <BUCKET_NAME> 執行 utils.py 檔案而非 gemini-codeassist-bucket

清除所用資源

如果您已建立自己的 Google Cloud Storage 值區,我們強烈建議刪除該值區,以免產生任何費用或潛在的安全風險。

您可以使用下列指令來刪除值區:

gcloud storage buckets delete gs://<BUCKET_NAME>

8. 恭喜!

恭喜!您已成功使用 Gemini Code Assist,建構範例專案,瞭解如何生成程式碼、完成程式碼、產生程式碼摘要,並解答 Google Cloud 相關問題。

參考文件