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 專案。
3. 在控制台開啟「Cloud Functions」頁面。方法是從導覽選單中選取 Cloud Functions (在控制台視窗中的左上角圖示 ⋮ )。
或者,您可以搜尋「Cloud Functions」在主控台的搜尋區域中:
按一下函式清單頂端的「建立函式」按鈕
如果您之前未曾在這項專案中使用 Cloud Functions,系統將要求您啟用 Google API。
按一下「啟用」即可繼續操作。
4. 定義新 Cloud 函式的基本屬性。
- 將名稱設為「
codelab-cf
」 - 選取「允許未經驗證的叫用」選項。
如要完成步驟,請按一下視窗左下方的「繼續」按鈕:
點選「下一頁」後,系統可能會提示您啟用其他 Google API。就像步驟 4 一樣,按一下「啟用」。
設定 Cloud 函式的執行階段和程式碼
這個 CodeLab 使用 Python 做為程式設計語言。如果您不熟悉 Python,也不必擔心。即使您不瞭解 Python,也能完成這個程式碼研究室。
5. 選取 Python 3.11 做為函式的執行階段
請注意,執行階段變更會變更內嵌編輯器中顯示的原始碼。
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 函式,請按一下左下方的「部署」。
您可能需要稍候幾分鐘,等待部署程序完成。如果您已確實按照設定指示操作,您應該會看到部署回報為失敗。
3. 找出並解決問題
在本節中,您將使用記錄檔說明功能和其他 Gemini 輔助功能,找出問題和解決方式。
1. 部署失敗。您應該會看到一則錯誤訊息,向您提供其他資訊,以及可選擇查看部署記錄檔的選項。按一下 [查看記錄檔] 即可查看部署作業記錄檔。
請注意,部署記錄會在相同瀏覽器中以獨立分頁開啟。你必須在各個分頁間瀏覽,才能完成這個程式碼研究室。
請注意,按一下 [View LogS] (查看記錄) 或只看到幾行時,可能就不會看到記錄行。在這類事件中,請在記錄檔探索工具的查詢窗格中使用時間範圍選取器,然後選取「過去 30 分鐘」。
2. 在開啟的分頁中查看記錄檔。請注意,記錄摘要看起來就像例外狀況呼叫堆疊的多行一樣。這是因為 Cloud 函式會擷取列印到 stdout
或 stderr
的文字,並將每一行寫入為獨立的記錄項目。其他記錄檔行會匯總結束錯誤代碼的相關資訊,以及 Cloud Functions 和 Cloud Run API 回報的額外資訊。
您可以按一下任一行,查看特定記錄的詳細資訊。展開的記錄會顯示其他 UI 元素,讓您複製記錄的所有資訊、展開所有欄位以顯示記錄項目的所有資料,以及使用 Gemini 介紹記錄項目。
4. 例外狀況呼叫堆疊提供的資訊並不實用。查看記錄,找出例外狀況的堆疊追蹤記錄檔。這就是「Container called exit(1)
」的行。記錄摘要如下:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
看來應該適合進行調查。按一下這行即可展開記錄項目。接著點選 [說明這個記錄項目]按鈕,查看所選記錄的其他資訊。
如果這項專案未曾使用 Gemini,系統會提示您啟用必要的 API。如果系統提示您啟用 API,請點選「啟用」繼續操作。
請注意,提示 Gemini 時,系統有時可能會發生錯誤。如果是這類事件,請再次重複提示作業以取得回應。例如,點選「說明這個記錄項目」按鈕。
5. 查看 Gemini 提供的說明。如果提供的說明不夠清楚或不清楚,可以採用下列任一提示或自行提問,提示 Gemini 提供更多資訊
可以針對這份記錄提供更多資訊嗎?
可否針對這項錯誤提供更多資訊?
6. 接著提示 Gemini 提供解決問題的建議。比方說,您可以問問 Gemini
如何解決這個問題?
建議如何解決這項錯誤
建議如何修正這項錯誤
Gemini 的回覆可能會因為目前情境、提示的字詞和格式而有所不同。Gemini 應該會建議確保 Cloud 函式原始碼的函式名稱為「hello_http
」。
7.您目前看到的分頁是 Cloud Functions 記錄檔。選取前一個分頁,顯示發生錯誤的 Cloud 函式部署作業頁面,然後按一下「編輯」。
8.確認驗證設定仍設為「允許未經驗證的叫用」,並視需要更新選項。
9.輕觸畫面底部的「下一頁」,即可查看內嵌編輯器。遵循 Gemini 的建議,將函式名稱從 get_order_list
變更為 hello_http
。
完成編輯後,按一下「部署」。
您可能需要稍候幾分鐘,等待部署程序完成。確認部署已成功完成,且畫面上未顯示錯誤訊息。
請注意,控制台會持續顯示最後一則錯誤訊息,直到部署程序完成為止。
10.使用 curl
傳送下列 HTTPS 要求,檢查 Cloud 函式是否正常運作。您可以使用 Cloud Shell,或透過 Cloud Shell 終端機執行下列指令,從任何已安裝 curl
和 gcloud
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 函式進入點欄位更新為右側:
將進入點從 hello_http
變更為 get_order_list
可解決部署作業的問題。
4. 清除
如要清除所用資源,您可以關閉專案或刪除 Cloud 函式執行個體。您可以透過主控台或 CLI 指令刪除 Cloud Functions,如下所示:
gcloud functions delete codelab-cf --region=us-central1
5. 恭喜!
恭喜,您已成功使用 Gemini 排解及解決應用程式問題,也瞭解 Gemini 如何提供記錄檔,以及 Google Cloud 相關問題的解答。