使用 Gemini CodeLab 排解問題

1. 簡介

在本研究室中,您將使用 Google Cloud 中的 AI 技術輔助協作工具 Gemini,分析錯誤記錄檔、找出問題的根本原因,並找到修正問題的方法,針對 Cloud 函式部署作業的問題進行疑難排解。

您將要執行的操作...

  • 您將使用 Cloud Shell 終端機和 gcloud CLI 設定環境,包括啟用相關的 Google API,以及透過提供的程式碼建立 Cloud 函式
  • 您將使用 Cloud Logging 記錄檔摘要功能產生記錄檔摘要,藉此瞭解擷取的資訊。
  • 你將與 Gemini 對話,請 Gemini 協助排解問題及解決問題。

課程內容:

  • 如何將 Gemini 與 Google Cloud Observability 搭配使用,以及排解問題。
  • 如何在 Gemini 的協助下尋找及解讀 Cloud 函式記錄檔。

軟硬體需求

  • Chrome 網路瀏覽器
  • 已啟用計費功能的 Google Cloud 專案
  • 擁有專案存取權限的 Google 帳戶,可讓您啟用 API 及控管資源

本研究室的適用對象為各種規模的開發運作、平台工程師和軟體開發人員,包括初學者。我們的重點會著重於引導你實作 Gemini 功能的疑難排解。

2. 設定

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

設定環境

1. 前往 https://console.cloud.google.com 登入 Cloud 控制台。

2. 選取您要在這個研究室中使用的 Google Cloud 專案。

22170459a4f3ba59.png

3. 在控制台開啟「Cloud Functions」頁面。方法是從導覽選單中選取 Cloud Functions (在控制台視窗中的左上角圖示 ⋮ )。

9d27c844c16ad3e4.png

或者,您可以搜尋「Cloud Functions」在主控台的搜尋區域中:

35f23e52875b26cd.png

按一下函式清單頂端的「建立函式」按鈕 34b5e7e36f4e48e9.png

如果您之前未曾在這項專案中使用 Cloud Functions,系統將要求您啟用 Google API。

5b7978521d6f56f7.png

按一下「啟用」即可繼續操作。

4. 定義新 Cloud 函式的基本屬性。

  • 將名稱設為「codelab-cf
  • 選取「允許未經驗證的叫用」選項。

6a2aaf9bedd161d9.png

如要完成步驟,請按一下視窗左下方的「繼續」按鈕:

f4e76470dbdf6854.png

點選「下一頁」後,系統可能會提示您啟用其他 Google API。就像步驟 4 一樣,按一下「啟用」。

1ad7bf15c07eda49.png

設定 Cloud 函式的執行階段和程式碼

這個 CodeLab 使用 Python 做為程式設計語言。如果您不熟悉 Python,也不必擔心。即使您不瞭解 Python,也能完成這個程式碼研究室。

5. 選取 Python 3.11 做為函式的執行階段

9a3cd8bf272b4d02.png

請注意,執行階段變更會變更內嵌編輯器中顯示的原始碼。

6. 將下列程式碼複製到內嵌編輯器中,即可修改自動產生的快速入門導覽課程範例。

from google.cloud import storage
import json
import re

client = storage.Client()

def get_object_list(request):
    if request.args and 'path' in request.args:
        path = request.args['path']
    else:
        return '{}'
    parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
    bucket, prefix = parsed.group(1), parsed.group(2)
    blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
    objects = []
    if (blobs):
        for blob in blobs:
            objects.append(blob.name)
    return json.dumps(objects)

這個程式碼會讀取 GET 要求中的 path 屬性,剖析路徑來挑選值區名稱,並呼叫 Google Cloud Storage API,以取得此路徑儲存的物件清單。函式 (get_object_list) 接受將 Flask 物件做為輸入引數的要求,並以 JSON 陣列的形式傳回物件名稱。

7.從內嵌編輯器的檔案清單中選取 requirements.txt 檔案。將下方程式碼複製到內嵌編輯器中,以新的依附元件清單取代目前的依附元件清單。

google-cloud-storage

8.如要部署 Cloud 函式,請按一下左下方的「部署」。

17c4828702a32cd9.png

您可能需要稍候幾分鐘,等待部署程序完成。如果您已確實按照設定指示操作,您應該會看到部署回報為失敗。

3. 找出並解決問題

在本節中,您將使用記錄檔說明功能和其他 Gemini 輔助功能,找出問題和解決方式。

1. 部署失敗。您應該會看到一則錯誤訊息,向您提供其他資訊,以及可選擇查看部署記錄檔的選項。按一下 [查看記錄檔] 即可查看部署作業記錄檔。

bc62db6ef3b35420.png

請注意,部署記錄會在相同瀏覽器中以獨立分頁開啟。你必須在各個分頁間瀏覽,才能完成這個程式碼研究室。

請注意,按一下 [View LogS] (查看記錄) 或只看到幾行時,可能就不會看到記錄行。在這類事件中,請在記錄檔探索工具的查詢窗格使用時間範圍選取器,然後選取「過去 30 分鐘」

e24856920201ebf8.png

2. 在開啟的分頁中查看記錄檔。請注意,記錄摘要看起來就像例外狀況呼叫堆疊的多行一樣。這是因為 Cloud 函式會擷取列印到 stdoutstderr 的文字,並將每一行寫入為獨立的記錄項目。其他記錄檔行會匯總結束錯誤代碼的相關資訊,以及 Cloud Functions 和 Cloud Run API 回報的額外資訊。

b49e41594173b57c.png

您可以按一下任一行,查看特定記錄的詳細資訊。展開的記錄會顯示其他 UI 元素,讓您複製記錄的所有資訊、展開所有欄位以顯示記錄項目的所有資料,以及使用 Gemini 介紹記錄項目。

4. 例外狀況呼叫堆疊提供的資訊並不實用。查看記錄,找出例外狀況的堆疊追蹤記錄檔。這就是「Container called exit(1)」的行。記錄摘要如下:

functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...

看來應該適合進行調查。按一下這行即可展開記錄項目。接著點選 [說明這個記錄項目]按鈕,查看所選記錄的其他資訊。

b815de46d1b4597c.png

如果這項專案未曾使用 Gemini,系統會提示您啟用必要的 API。如果系統提示您啟用 API,請點選「啟用」繼續操作。

7ca90e087a2e99d1.png

請注意,提示 Gemini 時,系統有時可能會發生錯誤。如果是這類事件,請再次重複提示作業以取得回應。例如,點選「說明這個記錄項目」按鈕。

5. 查看 Gemini 提供的說明。如果提供的說明不夠清楚或不清楚,可以採用下列任一提示或自行提問,提示 Gemini 提供更多資訊

可以針對這份記錄提供更多資訊嗎?
可否針對這項錯誤提供更多資訊?

6. 接著提示 Gemini 提供解決問題的建議。比方說,您可以問問 Gemini

如何解決這個問題?
建議如何解決這項錯誤
建議如何修正這項錯誤

Gemini 的回覆可能會因為目前情境、提示的字詞和格式而有所不同。Gemini 應該會建議確保 Cloud 函式原始碼的函式名稱為「hello_http」。

7.您目前看到的分頁是 Cloud Functions 記錄檔。選取前一個分頁,顯示發生錯誤的 Cloud 函式部署作業頁面,然後按一下「編輯」。

c3d9b207214a2240.png

8.確認驗證設定仍設為「允許未經驗證的叫用」,並視需要更新選項。

6a2aaf9bedd161d9.png

9.輕觸畫面底部的「下一頁」,即可查看內嵌編輯器。遵循 Gemini 的建議,將函式名稱從 get_order_list 變更為 hello_http

完成編輯後,按一下「部署」。

您可能需要稍候幾分鐘,等待部署程序完成。確認部署已成功完成,且畫面上未顯示錯誤訊息。

請注意,控制台會持續顯示最後一則錯誤訊息,直到部署程序完成為止。

10.使用 curl 傳送下列 HTTPS 要求,檢查 Cloud 函式是否正常運作。您可以使用 Cloud Shell,或透過 Cloud Shell 終端機執行下列指令,從任何已安裝 curlgcloud CLI 的終端機執行指令。

curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"

請注意,如要從終端機執行這個指令,您必須使用 gcloud CLI 進行驗證,並將專案 ID 的值設為環境變數 GOOGLE_CLOUD_PROJECT

獎勵

使用者選取 Python 執行階段時,hello_http 函式的名稱已定義為 HTTP 觸發的 Cloud 函式的預設進入點。替代解決方案可以保留 get_order_list 做為原始碼中的函式名稱,並透過「執行階段」欄位將位於內嵌編輯器上方的 Cloud 函式進入點欄位更新為右側:

9a3cd8bf272b4d02.png

將進入點從 hello_http 變更為 get_order_list 可解決部署作業的問題。

4. 清除

如要清除所用資源,您可以關閉專案或刪除 Cloud 函式執行個體。您可以透過主控台CLI 指令刪除 Cloud Functions,如下所示:

gcloud functions delete codelab-cf --region=us-central1

5. 恭喜!

恭喜,您已成功使用 Gemini 排解及解決應用程式問題,也瞭解 Gemini 如何提供記錄檔,以及 Google Cloud 相關問題的解答。

參考說明文件...