GSP1201

概览
本实验演示了如何使用 Google Cloud 上的 Cloud Run 来构建和部署 AI 赋能的聊天应用。该聊天应用可由 Gemini 大语言模型 (LLM) 的 API 提供支持。
您将在 Web 应用中利用这些 API,使用 Cloud Build 构建应用,并使用制品库存储应用构建的容器映像,以将应用部署到 Cloud Run。该应用可用作使用 Gemini API 的网页界面的起点。
在本实验中,您将构建一个在 Cloud Run 上运行的 Web 应用,该应用将利用 Gemini 大语言模型 (LLM) 提供的 API,并通过在实验中部署的一个简单网页界面来呈现这些 API。
通过构建该应用,您可以了解如何构建可利用 Gemini 等大语言模型的 Web 应用,以便为最终用户提供富有吸引力的对话式互动体验,使他们能够通过聊天应用来提问并获得富有见解的回答。
学习内容
在本实验中,您需要完成以下操作:
- 使用 Cloud Build 构建运行应用的 Docker 映像。
- 部署用于执行应用的 Cloud Run 服务。
- 查看 Python 代码,了解应用如何通过聊天会话利用
gemini-2.0-flash
模型。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud
的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 环境设置
要部署 Cloud Run 应用,您需要从 Cloud Storage 存储桶下载源代码。
- 在 Cloud Shell 中,输入以下命令。
gsutil cp -R gs://spls/gsp1201/chat-flask-cloudrun .
- 然后,前往项目文件夹。
cd chat-flask-cloudrun
- 设置要在后续命令中使用的区域和项目环境变量。
export PROJECT_ID={{{ project_0.project_id | "Filled in at lab startup." }}}
export REGION={{{ project_0.startup_script.region | "Filled in at lab startup." }}}
任务 2. 构建 Docker 映像
接下来,您将为应用构建 Docker 映像,并将其推送到 Artifact Registry。构建并存储容器映像后,您需要引用该映像,以将应用部署到 Cloud Run。
- 设置要在后续命令中使用的环境变量:
export AR_REPO='chat-app-repo'
export SERVICE_NAME='chat-flask-app'
- 运行以下命令来创建制品库:
gcloud artifacts repositories create "$AR_REPO" --location="$REGION" --repository-format=Docker
- 配置 Docker 身份验证,并将容器映像构建作业提交到 Cloud Build:
gcloud builds submit --tag "$REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME"
- 要验证映像是否已推送到 Artifact Registry,请前往 Artifact Registry 页面。
- 在 Google Cloud 控制台的标题栏中,在搜索字段中输入 Artifact Registry,然后点击搜索结果中的 Artifact Registry。
- 确认
chat-app-repo
可用。
注意:运行下方检查后,如果发现需要对 Docker 进行身份验证,请尝试在 Cloud Shell 中运行以下命令:
gcloud auth configure-docker us-central1-docker.pkg.dev
点击检查我的进度以验证是否完成了以下目标:
构建 Docker 映像
任务 3. 将应用部署到 Cloud Run
应用已下载并通过 Cloud Build 构建。接下来,您将在 Cloud Run 上部署并测试该应用。
- 在 Cloud Shell 中,运行以下命令:
gcloud run deploy "$SERVICE_NAME" --port=8080 --image="$REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME:latest" --allow-unauthenticated --region=$REGION --platform=managed --project=$PROJECT_ID --set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION
注意:此步骤需要几分钟才能完成。
- 要启动应用,请点击上一条命令的输出中提供的服务网址。输出类似于以下内容:
Deploying container to Cloud Run service [chat-flask-app] in project [qwiklabs-gcp-03-fda25c1691e3] region [us-central1]
OK Deploying new service... Done.
OK Creating Revision...
OK Routing traffic...
OK Setting IAM Policy...
Done.
Service [chat-flask-app] revision [chat-flask-app-00001-x9r] has been deployed and is serving 100 percent of traffic.
Service URL: https://chat-flask-app-308034796843.us-central1.run.app
- 在输入文本框中输入以下查询,然后点击发送:
什么是 Google Cloud Platform?
您将在提示输入下方的输出文本框中收到由 gemini-2.0-flash
API 生成的回答。
点击检查我的进度以验证是否完成了以下目标:
将应用部署到 Cloud Run
任务 4. 探索 Python 代码
为了更深入地了解应用如何利用 Gemini Chat Bison API,接下来您将简单探索应用使用的代码。
-
在 Cloud Shell 中,点击打开编辑器。该操作将打开 Cloud Shell 编辑器,以便您浏览代码。
-
在探索窗格中,展开 chat-flask-cloudrun
文件夹,然后选择 app.py
以开始探索代码。
-
请注意以下 Python 方法:
-
create_session
:此方法使用 chat_model = GenerativeModel("gemini-2.0-flash")
模型创建与 Vertex AI 的新会话。您稍后将观察到,/gemini
路由将使用此方法建立新的聊天会话。
def create_session():
chat_model = GenerativeModel("gemini-2.0-flash")
chat = chat_model.start_chat()
return chat
def response(chat, message):
result = chat.send_message(message)
return result.text
-
index
和 gemini_chat
:index
和 gemini_chat
方法用于定义应用 API 的路由。index
方法用于在用户加载应用时加载 index.html
页面,gemini_chat
方法将从 index.html
页面收集的用户提示提交到 API,并以 JSON 格式返回结果。
@app.route('/')
def index():
###
return render_template('index.html')
@app.route('/gemini', methods=['GET', 'POST'])
def gemini_chat():
user_input = ""
if request.method == 'GET':
user_input = request.args.get('user_input')
else:
user_input = request.form['user_input']
logger.log(f"Starting chat session...")
chat_model = create_session()
logger.log(f"Chat Session created")
content = response(chat_model,user_input)
return jsonify(content=content)
index.html
文件包含内嵌 JavaScript,用于在用户点击发送时读取表单提交的结果;该文件还使用 Gemini API 调用的回答更新界面。
恭喜!
您现已完成本实验!在本实验中,您学习了如何使用 Cloud Build 和 Artifact Registry 来构建和部署简单的 Web 应用。将应用部署到 Cloud Run 后,它便可以利用 Gemini 来响应最终用户的查询,成为一款聊天应用,使最终用户能够在网页界面提问并接收回答。
后续步骤
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 3 月 31 日
上次测试实验的时间:2025 年 3 月 13 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。