1. 總覽
生成式 AI 應用程式與其他應用程式一樣,都需要可觀測性。生成式 AI 是否需要特殊的觀測技術?
在本實驗室中,您將建立簡單的生成式 AI 應用程式。將其部署至 Cloud Run。並使用 Google Cloud Observability 服務和產品,為其導入必要的監控和記錄功能。
學習目標
- 使用 Cloud Shell 編輯器撰寫使用 Vertex AI 的應用程式
- 在 GitHub 中儲存應用程式程式碼
- 使用 gcloud CLI 將應用程式的原始碼部署至 Cloud Run
- 在生成式 AI 應用程式中新增監控和記錄功能
- 使用記錄指標
- 使用 Open Telemetry SDK 實作記錄和監控功能
- 深入瞭解負責任的 AI 資料處理方式
2. 先決條件
如果沒有 Google 帳戶,請建立新帳戶。
3. 專案設定
- 使用 Google 帳戶登入 Google Cloud 控制台。
- 建立新專案,或選擇重複使用現有專案。記下您剛建立或選取的專案 ID。
- 為專案啟用計費功能。
- 完成本實驗室的結算費用應低於 $5 美元。
- 您可以按照本實驗室結尾的步驟刪除資源,以免產生後續費用。
- 新使用者可獲得價值 $300 美元的免費試用期。
- 確認 Cloud Billing 的「我的專案」
-
已啟用計費功能
- 如果新專案的「
Billing account」欄顯示Billing is disabled,請按照下列步驟操作:- 按一下「
Actions」欄中的三點圖示 - 按一下「變更帳單」
- 選取要使用的帳單帳戶
- 按一下「
- 如果您參加的是現場活動,帳戶名稱可能為「Google Cloud Platform 試用帳單帳戶」
- 如果新專案的「
4. 準備 Cloud Shell 編輯器
- 前往 Cloud Shell 編輯器。如果系統顯示以下訊息,要求您授權 Cloud Shell 使用憑證呼叫 gcloud,請按一下「Authorize」(授權)繼續操作。

- 開啟終端機視窗
- 按一下漢堡選單

- 按一下「終端機」。
- 按一下「New Terminal」(新增終端機)

- 按一下漢堡選單
- 在終端機中設定專案 ID:
將gcloud config set project [PROJECT_ID][PROJECT_ID]替換為專案 ID。舉例來說,如果專案 ID 為lab-example-project,指令會是: 如果系統提示以下訊息,指出 gcloud 要求提供憑證給 GCPI API,請按一下「Authorize」(授權)繼續操作。gcloud config set project lab-project-id-example

執行成功後,您應該會看到以下訊息: 如果看到Updated property [core/project].
WARNING並收到Do you want to continue (Y/N)?提示,可能是輸入的專案 ID 有誤。按下N和Enter,找到正確的專案 ID 後,再次嘗試執行gcloud config set project指令。 - (選用) 如果您找不到專案 ID,請執行下列指令,查看所有專案的專案 ID,並依建立時間降序排序:
gcloud projects list \ --format='value(projectId,createTime)' \ --sort-by=~createTime
5. 啟用 Google API
在終端機中,啟用本實驗室所需的 Google API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com \
cloudtrace.googleapis.com
這個指令需要一段時間才能完成。最後,系統會產生類似以下的成功訊息:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
如果收到開頭為 ERROR: (gcloud.services.enable) HttpError accessing 的錯誤訊息,且包含下列錯誤詳細資料,請延遲 1 到 2 分鐘後重試指令。
"error": {
"code": 429,
"message": "Quota exceeded for quota metric 'Mutate requests' and limit 'Mutate requests per minute' of service 'serviceusage.googleapis.com' ...",
"status": "RESOURCE_EXHAUSTED",
...
}
6. 建立生成式 AI Python 應用程式
在這個步驟中,您會編寫簡單的應用程式程式碼,根據要求使用 Gemini 模型顯示 10 個與所選動物相關的有趣事實。請按照下列步驟建立應用程式程式碼。
- 在終端機中建立
codelab-o11y目錄:mkdir ~/codelab-o11y - 將目前目錄變更為
codelab-o11y:cd ~/codelab-o11y - 使用依附元件清單建立
requirements.txt:cat > requirements.txt << EOF Flask==3.0.0 gunicorn==23.0.0 google-cloud-aiplatform==1.59.0 google-auth==2.32.0 EOF - 建立
main.py檔案,然後在 Cloud Shell 編輯器中開啟該檔案: 現在編輯器視窗中應該會顯示空白檔案 (位於終端機上方)。畫面應如下所示:cloudshell edit main.py
- 複製下列程式碼,並貼到開啟的
main.py檔案中: 幾秒後,Cloud Shell 編輯器會自動儲存程式碼。import os from flask import Flask, request import google.auth import vertexai from vertexai.generative_models import GenerativeModel _, project = google.auth.default() app = Flask(__name__) @app.route('/') def fun_facts(): vertexai.init(project=project, location='us-central1') model = GenerativeModel('gemini-1.5-flash') animal = request.args.get('animal', 'dog') prompt = f'Give me 10 fun facts about {animal}. Return this as html without backticks.' response = model.generate_content(prompt) return response.text if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
將生成式 AI 應用程式的程式碼部署至 Cloud Run
- 在終端機視窗中執行指令,將應用程式的原始碼部署至 Cloud Run。
如果看到如下提示,表示指令會建立新的存放區。按一下gcloud run deploy codelab-o11y-service \ --source="${HOME}/codelab-o11y/" \ --region=us-central1 \ --allow-unauthenticatedEnter。 部署程序最多可能需要幾分鐘才能完成。部署程序完成後,您會看到類似以下的輸出內容:Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)?
Service [codelab-o11y-service] revision [codelab-o11y-service-00001-t2q] has been deployed and is serving 100 percent of traffic. Service URL: https://codelab-o11y-service-12345678901.us-central1.run.app
- 將顯示的 Cloud Run 服務網址複製到瀏覽器的另一個分頁或視窗。或者,您也可以在終端機中執行下列指令,列印服務網址,然後按住 Ctrl 鍵並點選顯示的網址,開啟該網址:
開啟網址時,您可能會收到 500 錯誤訊息,或看到以下訊息:gcloud run services list \ --format='value(URL)' \ --filter='SERVICE:"codelab-o11y-service"' 這表示服務未完成部署作業。請稍候片刻,然後重新整理頁面。最後你會看到以「Fun Dog Facts」(狗狗趣味小知識) 開頭的文字,其中包含 10 個狗狗趣味小知識。Sorry, this is just a placeholder...
嘗試與應用程式互動,瞭解各種動物的有趣知識。如要這麼做,請將 animal 參數附加至網址,例如 ?animal=[ANIMAL],其中 [ANIMAL] 是動物名稱。舉例來說,附加 ?animal=cat 即可取得 10 個關於貓咪的趣味知識,附加 ?animal=sea turtle 則可取得 10 個關於海龜的趣味知識。
7. 稽核 Vertex API 呼叫
稽核 Google API 呼叫可回答「誰在何時何地呼叫特定 API?」等問題。在排解應用程式問題、調查資源耗用情形或執行軟體鑑識分析時,稽核作業非常重要。
稽核記錄可讓您追蹤管理員和系統活動,以及記錄對「資料讀取」和「資料寫入」API 作業的呼叫。如要稽核生成內容的 Vertex AI 要求,您必須在 Cloud 控制台中啟用「資料讀取」稽核記錄。
- 按一下下方按鈕,在 Cloud 控制台中開啟「稽核記錄」頁面
- 確認頁面已選取您為這個實驗室建立的專案。所選專案會顯示在頁面左上角,漢堡選單的右側:

如有需要,請從下拉式方塊選取正確的專案。 - 在「資料存取稽核記錄設定」表格的「服務」欄中,找出
Vertex AI API服務,然後選取服務名稱左側的核取方塊,選取該服務。
- 在右側的資訊面板中,選取「資料讀取」稽核類型。

- 按一下 [儲存]。
如要產生稽核記錄,請開啟服務網址。重新整理頁面,同時變更 ?animal= 參數的值,即可取得不同的結果。
瞭解稽核記錄
8. 記錄與生成式 AI 的互動
您不會在稽核記錄中找到 API 要求參數或回應資料。不過,這項資訊對於排解應用程式和工作流程分析問題可能非常重要。在本步驟中,我們將新增應用程式記錄,填補這項缺口。記錄功能使用傳統 Python 的 logging 套件。雖然您在實際工作環境中可能會使用不同的記錄架構,但原則相同。
Python 的 logging 套件不知道如何將記錄寫入 Google Cloud。支援寫入標準輸出 (預設為 stderr) 或檔案。不過,Cloud Run 功能會擷取列印至標準輸出的資訊,並自動將其擷取至 Cloud Logging。請按照下列操作說明,在 Gen AI 應用程式中新增記錄功能。
- 返回瀏覽器中的「Cloud Shell」視窗 (或分頁)。
- 在終端機中重新開啟
main.py:cloudshell edit ~/codelab-o11y/main.py - 對應用程式的程式碼進行下列修改:
- 找出最後一個匯入陳述式。應該是第 5 行:
將游標放在下一行 (第 6 行),然後將下列程式碼區塊貼到該處。from vertexai.generative_models import GenerativeModel
import sys, json, logging class JsonFormatter(logging.Formatter): def format(self, record): json_log_object = { 'severity': record.levelname, 'message': record.getMessage(), } json_log_object.update(getattr(record, 'json_fields', {})) return json.dumps(json_log_object) logger = logging.getLogger(__name__) sh = logging.StreamHandler(sys.stdout) sh.setFormatter(JsonFormatter()) logger.addHandler(sh) logger.setLevel(logging.DEBUG) - 找出呼叫模型生成內容的程式碼。應為第 30 行:
將游標放在下一行開頭 (第 31 行),然後將下列程式碼區塊貼到該處。response = model.generate_content(prompt)
json_fields = { 'animal': animal, 'prompt': prompt, 'response': response.to_dict(), } logger.debug('content is generated', extra={'json_fields': json_fields})
stdout,並由 Cloud Run 記錄代理程式收集,然後非同步擷取至 Cloud Logging。記錄檔會擷取要求的動物參數,以及模型的提示和回覆。幾秒後,Cloud Shell 編輯器會自動儲存變更。 - 找出最後一個匯入陳述式。應該是第 5 行:
將生成式 AI 應用程式的程式碼部署至 Cloud Run
- 在終端機視窗中執行指令,將應用程式的原始碼部署至 Cloud Run。
如果看到如下提示,表示指令會建立新的存放區。按一下gcloud run deploy codelab-o11y-service \ --source="${HOME}/codelab-o11y/" \ --region=us-central1 \ --allow-unauthenticatedEnter。 部署程序最多可能需要幾分鐘才能完成。部署程序完成後,您會看到類似以下的輸出內容:Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)?
Service [codelab-o11y-service] revision [codelab-o11y-service-00001-t2q] has been deployed and is serving 100 percent of traffic. Service URL: https://codelab-o11y-service-12345678901.us-central1.run.app
- 將顯示的 Cloud Run 服務網址複製到瀏覽器的另一個分頁或視窗。或者,您也可以在終端機中執行下列指令,列印服務網址,然後按住 Ctrl 鍵並點選顯示的網址,開啟該網址:
開啟網址時,您可能會收到 500 錯誤訊息,或看到以下訊息:gcloud run services list \ --format='value(URL)' \ --filter='SERVICE:"codelab-o11y-service"' 這表示服務未完成部署作業。請稍候片刻,然後重新整理頁面。最後你會看到以「Fun Dog Facts」(狗狗趣味小知識) 開頭的文字,其中包含 10 個狗狗趣味小知識。Sorry, this is just a placeholder...
如要產生應用程式記錄,請開啟服務網址。重新整理頁面,同時變更 ?animal= 參數的值,即可取得不同的結果。
如要查看應用程式記錄,請執行下列操作:
- 按一下下方按鈕,在 Cloud 控制台中開啟記錄檔探索工具頁面:
- 將下列篩選條件貼到「查詢」窗格 (記錄檔探索工具介面中的 #2):
LOG_ID("run.googleapis.com%2Fstdout") AND severity=DEBUG - 點選「執行查詢」
查詢結果會顯示記錄,包括提示和 Vertex AI 回覆,以及安全評分。
9. 計算與生成式 AI 的互動次數
Cloud Run 會寫入代管指標,可用於監控已部署的服務。使用者管理的監控指標可進一步控管資料,以及指標更新的頻率。如要實作這類指標,必須編寫程式碼來收集資料,並將資料寫入 Cloud Monitoring。如要瞭解如何使用 OpenTelemetry SDK 實作,請參閱下一個 (選用) 步驟。
這個步驟說明實作使用者指標的替代做法,也就是記錄指標。記錄指標可讓您從應用程式寫入 Cloud Logging 的記錄項目產生監控指標。我們將使用上一個步驟中實作的應用程式記錄,定義計數器類型的記錄型指標。這項指標會計算 Vertex API 的成功呼叫次數。
- 查看上一步使用的「記錄檔探索器」視窗。在「查詢」窗格下方找到「動作」下拉式選單,然後點選開啟。請參閱下方螢幕截圖,找出選單:

- 在開啟的選單中選取「建立指標」,開啟「建立記錄指標」面板。
- 請按照下列步驟,在「建立記錄指標」面板中設定新的計數器指標:
- 設定「指標類型」:選取「計數器」。
- 在「詳細資料」部分中,設定下列欄位:
- 記錄指標名稱:將名稱設為
model_interaction_count。存在一些命名限制;詳情請參閱疑難排解一文。 - 說明:輸入指標說明。例如:
Number of log entries capturing successful call to model inference. - 單位:保留此欄位空白,或插入數字
1。
- 記錄指標名稱:將名稱設為
- 保留「篩選器選取」部分的值。請注意,「Build filter」(建立篩選器) 欄位與我們用來查看應用程式記錄的篩選器相同。
- (選用) 新增標籤,方便計算每種動物的叫聲次數。注意:這個標籤可能會大幅增加指標的基數,因此不建議用於正式環境:
- 按一下 [Add label] (新增標籤)。
- 在「標籤」部分中設定下列欄位:
- 標籤名稱:將名稱設為
animal。 - 說明:輸入標籤說明。例如:
Animal parameter。 - 標籤類型:選取
STRING。 - 欄位名稱:輸入
jsonPayload.animal。 - 規則運算式:留空。
- 標籤名稱:將名稱設為
- 然後按一下 [完成]。
- 按一下「建立指標」即可建立指標。
您也可以使用 gcloud logging metrics create CLI 指令或 google_logging_metric Terraform 資源,從「記錄指標」頁面建立記錄指標。
如要產生指標資料,請開啟服務網址。多次重新整理開啟的頁面,對模型發出多個呼叫。和先前一樣,請嘗試在參數中使用不同動物。
輸入 PromQL 查詢,搜尋記錄指標資料。如要輸入 PromQL 查詢,請按照下列步驟操作:
- 按一下下方按鈕,在 Cloud 控制台中開啟 Metrics Explorer 頁面:
- 在查詢建構工具窗格的工具列中,選取名稱為「< > MQL」或「< > PromQL」的按鈕。如要瞭解按鈕位置,請參閱下圖。

- 確認「語言」切換按鈕已選取「PromQL」。語言切換鍵位於可格式化查詢的工具列中。
- 在「查詢」編輯器中輸入查詢:
如要進一步瞭解如何使用 PromQL,請參閱「在 Cloud Monitoring 中使用 PromQL」。sum(rate(logging_googleapis_com:user_model_interaction_count{monitored_resource="cloud_run_revision"}[${__interval}])) - 按一下 [Run query] (執行查詢),您會看到類似以下螢幕截圖的折線圖:

請注意,啟用「自動執行」切換按鈕後,系統就不會顯示「執行查詢」按鈕。
10. (選用) 使用 Open Telemetry 監控及追蹤
如上一步所述,您可以使用 OpenTelemetry (Otel) SDK 導入指標。建議在微服務架構中使用 OTel。這個步驟說明下列事項:
- 初始化 OTel 元件,支援追蹤及監控應用程式
- 使用 Cloud Run 環境的資源中繼資料填入 OTel 設定
- 使用自動追蹤功能檢測 Flask 應用程式
- 導入計數器指標,監控模型呼叫成功次數
- 將追蹤記錄與應用程式記錄檔建立關聯
建議您使用 OTel 收集器,收集及擷取一或多項服務的所有可觀測性資料,做為產品層級服務的架構。為簡化程序,這個步驟中的程式碼不會使用收集器。而是使用 OTel 匯出功能,將資料直接寫入 Google Cloud。
設定 OTel 元件,以追蹤及監控指標
- 返回瀏覽器中的「Cloud Shell」視窗 (或分頁)。
- 在終端機中,使用其他依附元件清單更新
requirements.txt:cat >> ~/codelab-o11y/requirements.txt << EOF opentelemetry-api==1.24.0 opentelemetry-sdk==1.24.0 opentelemetry-exporter-otlp-proto-http==1.24.0 opentelemetry-instrumentation-flask==0.45b0 opentelemetry-instrumentation-requests==0.45b0 opentelemetry-exporter-gcp-trace==1.7.0 opentelemetry-exporter-gcp-monitoring==1.7.0a0 EOF - 建立新檔案
setup_opentelemetry.py: 現在編輯器視窗中應該會顯示終端機上方的空白檔案。cloudshell edit ~/codelab-o11y/setup_opentelemetry.py - 複製下列程式碼,並貼到開啟的
setup_opentelemetry.py檔案中: 幾秒後,Cloud Shell 編輯器會自動儲存程式碼。import os from opentelemetry import metrics from opentelemetry import trace from opentelemetry.exporter.cloud_monitoring import CloudMonitoringMetricsExporter from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter from opentelemetry.resourcedetector.gcp_resource_detector import GoogleCloudResourceDetector from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.sdk.resources import get_aggregated_resources, Resource, CLOUD_ACCOUNT_ID, SERVICE_NAME from opentelemetry.sdk.trace.export import BatchSpanProcessor resource = get_aggregated_resources( [GoogleCloudResourceDetector(raise_on_error=True)] ) resource = resource.merge(Resource.create(attributes={ SERVICE_NAME: os.getenv("K_SERVICE"), })) meter_provider = MeterProvider( resource=resource, metric_readers=[ PeriodicExportingMetricReader( CloudMonitoringMetricsExporter(), export_interval_millis=5000 ) ], ) metrics.set_meter_provider(meter_provider) meter = metrics.get_meter(__name__) trace_provider = TracerProvider(resource=resource) processor = BatchSpanProcessor(CloudTraceSpanExporter( # send all resource attributes resource_regex=r".*" )) trace_provider.add_span_processor(processor) trace.set_tracer_provider(trace_provider) def google_trace_id_format(trace_id: int) -> str: project_id = resource.attributes[CLOUD_ACCOUNT_ID] return f'projects/{project_id}/traces/{trace.format_trace_id(trace_id)}'
使用 OTel 檢測應用程式程式碼,並運用追蹤和監控功能
- 在終端機中重新開啟
main.py:cloudshell edit ~/codelab-o11y/main.py - 對應用程式的程式碼進行下列修改:
- 在
import os行 (第 1 行) 之前插入下列程式碼 (請注意結尾的空白行):from setup_opentelemetry import google_trace_id_format from opentelemetry import metrics, trace from opentelemetry.instrumentation.requests import RequestsInstrumentor from opentelemetry.instrumentation.flask import FlaskInstrumentor - 在
format()方法 (第 9 行) 的宣告後插入下列程式碼 (請注意縮排):span = trace.get_current_span() - 在第 13 行 (包含
"message": record.getMessage()) 之後插入下列程式碼 (請注意縮排): 這兩個額外屬性有助於關聯應用程式記錄和 OTel 追蹤範圍。"logging.googleapis.com/trace": google_trace_id_format(span.get_span_context().trace_id), "logging.googleapis.com/spanId": trace.format_span_id(span.get_span_context().span_id), - 在
app = Flask(__name__)行 (第 31 行) 之後插入下列程式碼: 這些程式碼行會追蹤 Flask 應用程式的所有傳入和傳出要求。FlaskInstrumentor().instrument_app(app) RequestsInstrumentor().instrument() - 在新增的程式碼後方 (第 33 行之後) 加入下列程式碼:
這些程式碼行會建立名為meter = metrics.get_meter(__name__) requests_counter = meter.create_counter( name="model_call_counter", description="number of model invocations", unit="1" )model_call_counter的新計數器類型指標,並註冊以供匯出。 - 在呼叫
logger.debug()(第 49 行) 之後,插入下列程式碼: 每次應用程式成功呼叫 Vertex API 與 Gemini 模型互動時,這項異動都會將計數器遞增 1。requests_counter.add(1, {'animal': animal})
- 在
將生成式 AI 應用程式的程式碼部署至 Cloud Run
- 在終端機視窗中執行指令,將應用程式的原始碼部署至 Cloud Run。
如果看到如下提示,表示指令會建立新的存放區。按一下gcloud run deploy codelab-o11y-service \ --source="${HOME}/codelab-o11y/" \ --region=us-central1 \ --allow-unauthenticatedEnter。 部署程序最多可能需要幾分鐘才能完成。部署程序完成後,您會看到類似以下的輸出內容:Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)?
Service [codelab-o11y-service] revision [codelab-o11y-service-00001-t2q] has been deployed and is serving 100 percent of traffic. Service URL: https://codelab-o11y-service-12345678901.us-central1.run.app
- 將顯示的 Cloud Run 服務網址複製到瀏覽器的另一個分頁或視窗。或者,您也可以在終端機中執行下列指令,列印服務網址,然後按住 Ctrl 鍵並點選顯示的網址,開啟該網址:
開啟網址時,您可能會收到 500 錯誤訊息,或看到以下訊息:gcloud run services list \ --format='value(URL)' \ --filter='SERVICE:"codelab-o11y-service"' 這表示服務未完成部署作業。請稍候片刻,然後重新整理頁面。最後你會看到以「Fun Dog Facts」(狗狗趣味小知識) 開頭的文字,其中包含 10 個狗狗趣味小知識。Sorry, this is just a placeholder...
如要產生遙測資料,請開啟服務網址。重新整理頁面,同時變更 ?animal= 參數的值,即可取得不同的結果。
探索應用程式追蹤記錄
- 按一下下方按鈕,在 Cloud 控制台中開啟 Trace 探索工具頁面:
- 選取其中一個最近的追蹤記錄。您應該會看到 5 或 6 個類似下方螢幕截圖的範圍。

- 找出追蹤事件處理常式 (
fun_facts方法) 呼叫的範圍。這是最後一個名為「/」的範圍。 - 在「追蹤詳細資料」窗格中,選取「記錄和事件」。您會看到與這個特定時距相關聯的應用程式記錄檔。系統會使用追蹤記錄和記錄檔中的追蹤記錄和時距 ID,偵測關聯性。您應該會看到寫入提示的應用程式記錄,以及 Vertex API 的回覆。
探索計數器指標
- 按一下下方按鈕,在 Cloud 控制台中開啟 Metrics Explorer 頁面:
- 在查詢建構工具窗格的工具列中,選取名稱為「< > MQL」或「< > PromQL」的按鈕。如要瞭解按鈕位置,請參閱下圖。

- 確認「語言」切換按鈕已選取「PromQL」。語言切換鍵位於可格式化查詢的工具列中。
- 在「查詢」編輯器中輸入查詢:
sum(rate(workload_googleapis_com:model_call_counter{monitored_resource="generic_task"}[${__interval}])) - 按一下「執行查詢」。啟用「自動執行」切換鈕後,系統就不會顯示「執行查詢」按鈕。
11. (選用) 記錄中經過模糊處理的機密資訊
在步驟 10 中,我們記錄了應用程式與 Gemini 模型互動的相關資訊。這項資訊包括動物名稱、實際提示和模型的回應。雖然將這項資訊儲存在記錄檔中應該很安全,但許多其他情況並非如此。提示可能包含使用者不想儲存的個人或其他私密資訊。為解決這個問題,您可以模糊處理寫入 Cloud Logging 的機密資料。為盡量減少程式碼修改,建議採用下列解決方案。
- 建立 PubSub 主題,用來儲存傳入的記錄項目
- 建立記錄接收器,將擷取的記錄重新導向至 Pub/Sub 主題。
- 按照下列步驟建立 Dataflow 管道,修改重新導向至 PubSub 主題的記錄:
- 從 Pub/Sub 主題讀取記錄檔項目
- 使用 DLP 檢查 API 檢查項目酬載是否含有機密資訊
- 使用其中一種 DLP 遮蓋方法,遮蓋酬載中的機密資訊
- 將經過模糊處理的記錄項目寫入 Cloud Logging
- 部署管道
12. (選用) 清除
為避免因使用程式碼研究室的資源和 API 而產生費用,建議您在完成實驗室後進行清理。如要避免付費,最簡單的方法就是刪除您為了本程式碼研究室所建立的專案。
- 如要刪除專案,請在終端機中執行刪除專案指令:
刪除 Cloud 專案後,系統就會停止對該專案使用的所有資源和 API 收取費用。您應該會看到以下訊息,其中PROJECT_ID=$(gcloud config get-value project) gcloud projects delete ${PROJECT_ID} --quietPROJECT_ID是您的專案 ID:Deleted [https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID]. You can undo this operation for a limited period by running the command below. $ gcloud projects undelete PROJECT_ID See https://cloud.google.com/resource-manager/docs/creating-managing-projects for information on shutting down projects. - (選用) 如果收到錯誤訊息,請參閱步驟 5,找出您在實驗室中使用的專案 ID。並代入第一個指令。舉例來說,如果專案 ID 為
lab-example-project,指令會是:gcloud projects delete lab-project-id-example --quiet
13. 恭喜
在本實驗室中,您已建立生成式 AI 應用程式,並使用 Gemini 模型進行預測。並透過基礎的監控和記錄功能檢測應用程式。您已將應用程式和原始碼的變更內容部署至 Cloud Run。接著,您可以使用 Google Cloud Observability 產品追蹤應用程式效能,確保應用程式的可靠性。
如要參與使用者體驗研究,協助我們改善您今天使用的產品,請按這裡註冊。
以下提供幾種繼續學習的方式:
- 程式碼實驗室:如何在 Cloud Run 上部署 Gemini 支援的聊天應用程式
- 程式碼研究室:如何搭配使用 Gemini 函式呼叫與 Cloud Run
- 如何使用 Cloud Run Jobs Video Intelligence API 逐場景處理影片
- 隨選研討會:Google Kubernetes Engine 新手上路
- 進一步瞭解如何使用應用程式記錄檔設定計數器和分佈指標
- 使用 OpenTelemetry Sidecar 寫入 OTLP 指標
- 參考資料:瞭解如何在 Google Cloud 中使用 Open Telemetry
