检查点
Enable relevant APIs and set IAM roles.
/ 20
Create and start a Cloud Workstation.
/ 20
Deploy your app to Cloud Run.
/ 60
使用 Gemini 开发应用
概览
在本实验中,您将使用 Google Cloud 中 AI 赋能的协作工具 Gemini,探索、创建、修改、测试和部署一个示例应用。
您要使用 Cloud Workstations 创建一个以 Code OSS 作为 IDE 的开发环境。您将在 Cloud Code 中使用 Gemini CodeAssist 来理解代码,并构建一个具有两个 API 方法的示例库存应用。您还会使用 Gemini 生成将应用部署到 Cloud Run 的步骤。
本实验面向参与构建应用但不熟悉云应用开发的开发者,不限经验水平。如果您能具备一些使用 VS Code 或 Code OSS 作为 IDE 的经验,并熟悉 Python 和 Flask 框架,将会很有帮助。
目标
在本实验中,您将学习如何执行以下任务:
- 使用 Cloud Workstations 创建云端应用开发环境。
- 向 Gemini 提出基于上下文的问题,以探索可用于部署应用的各种 Google 服务。
- 输入提示要求 Gemini 提供可用于在 Cloud Run 中开发基本应用的模板。
- 使用 Gemini 解释并生成代码,以创建、探索和修改应用。
- 在本地运行并测试应用,随后利用 Gemini 生成操作步骤,将应用部署到 Google Cloud。
设置
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
-
请使用无痕式窗口登录 Qwiklabs。
-
留意实验的访问时限(例如
1:15:00
)并确保能在相应时间段内完成实验。
系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。 -
准备就绪时,点击开始实验。
-
请记好您的实验凭据(用户名和密码)。您需要使用这组凭据来登录 Google Cloud 控制台。
-
点击打开 Google 控制台。
-
点击使用其他账号,然后将此实验的凭据复制并粘贴到相应提示框中。
如果您使用其他凭据,将会收到错误消息或产生费用。 -
接受条款并跳过恢复资源页面。
激活 Cloud Shell
Cloud Shell 是一种包含开发工具的虚拟机。它提供了一个 5 GB 的永久性主目录,并且在 Google Cloud 上运行。Cloud Shell 可让您通过命令行访问 Google Cloud 资源。gcloud
是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 键自动补全功能。
-
在 Google Cloud Console 的导航窗格中,点击激活 Cloud Shell ()。
-
点击继续。
预配和连接到环境需要一些时间。若连接成功,也就表明您已通过身份验证,且相关项目的 ID 会被设为您的 PROJECT_ID。例如:
命令示例
-
列出有效的帐号名称:
(输出)
(输出示例)
-
列出项目 ID:
(输出)
(输出示例)
任务 1. 配置环境和账号
-
使用您的实验凭据登录 Google Cloud 控制台,并打开 Cloud Shell 终端窗口。
-
如需设置项目 ID 和区域环境变量,请在 Cloud Shell 中运行以下命令:
PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|set at lab start}}} echo "PROJECT_ID=${PROJECT_ID}" echo "REGION=${REGION}" -
如需将已登录的 Google 用户账号存储到环境变量中,请运行以下命令:
USER=$(gcloud config get-value account 2> /dev/null) echo "USER=${USER}" -
为 Gemini 启用 Cloud AI Companion API:
gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID} -
如需使用 Gemini,请为您的 Google Cloud Qwiklabs 用户账号授予必要的 IAM 角色:
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer 添加这些角色后,用户即可开始使用 Gemini 助手。
如需验证是否已完成以下目标,请点击检查我的进度:
任务 2. 创建 Cloud Workstations 工作站
本实验利用 Gemini 助手,通过 Cloud Workstations IDE 的 Cloud Code 插件来开发应用。Cloud Workstations 是一种全托管式集成开发环境,包含与 Gemini 的原生集成。
在此任务中,您将配置并预配 Cloud Workstations 环境,并为 Gemini 启用 Cloud Code 插件。
查看工作站集群
我们已经为本实验预先创建了一个名为 my-cluster
的工作站集群。此集群用于配置和创建工作站。
-
在 Google Cloud 控制台中,选择导航菜单 (),然后选择更多产品 > 工具 > Cloud Workstations。
-
在导航窗格中,点击集群管理。
-
检查集群状态。如果集群状态为
正在调整
或正在更新
,则定期进行刷新,直至其变为准备就绪
后再继续执行下一步。
创建工作站配置
在创建工作站前,您必须在 Cloud Workstations 中创建工作站配置。
-
在导航窗格中,依次点击工作站配置和创建工作站配置。
-
指定以下值:
属性 值 名称 my-config 工作站集群 选择 my-cluster -
点击创建。
-
点击刷新。
-
检查所创建配置的状态。如果该配置的状态为
正在调整
或正在更新
,则定期进行刷新,直至其变为准备就绪
后再继续执行下一步。
创建工作站
-
在导航窗格中,依次点击工作站和创建工作站。
-
指定以下值:
属性 值 名称 my-workstation 配置 选择 my-config -
点击创建。
工作站创建完毕后会列在我的工作站下,状态为
已关停
。 -
如需启动工作站,请点击启动。
在工作站启动期间,状态会变为
正在启动
。请等待状态变为正在运行
,这代表它已经可以使用了。工作站可能需要几分钟时间才能完全启动。
启动 IDE
为保证正常工作,有些扩展程序要求在您的浏览器中启用第三方 Cookie。
-
如需在 Chrome 中启用第三方 Cookie,请点击 Chrome 菜单中的设置。
-
在搜索栏中输入第三方 Cookie。
-
点击第三方 Cookie 设置,并选择允许第三方 Cookie。
注意:如果在本实验结束后,您希望将浏览器还原到当前的设置,请记下您原本的第三方 Cookie 设置。
-
如需在工作站上启动 Code OSS IDE,请在 Google Cloud 控制台的工作站页面中点击启动。
该 IDE 将在单独的浏览器标签页中打开。
如需验证是否已完成以下目标,请点击检查我的进度:
任务 3. 更新 Cloud Code 扩展程序以启用 Gemini
在此任务中,您要在 Cloud Code 中为您的工作站 IDE 启用 Gemini。
连接到 Google Cloud
如需在您的工作站中连接到 Google Cloud,请执行以下步骤:
-
在窗口底部的状态栏中,点击 Cloud Code - Sign In(Cloud Code - 登录)。
-
在系统提示您登录时,点击 Proceed to sign in(继续登录)。
终端中会显示一个链接。
-
为了启动 Cloud Code 登录流程,在按下 Ctrl 键(对于 Windows 和 Linux)或 Command 键(对于 MacOS)的同时点击终端内的链接。
-
如果系统要求您确认是否打开外部网站,请点击 Open(打开)。
-
点击学生电子邮件地址。
-
看到要求您继续操作的提示时,点击 Continue(继续)。
-
若要允许 Google Cloud SDK 访问您的 Google 账号并同意条款,请点击 Allow(允许)。
您的验证码会显示在浏览器标签页中。
注意:系统可能会显示警告,指出您运行了 gcloud auth login 命令。这个过程是正常的。此命令由 IDE 代您执行。 -
点击复制。
-
回到 IDE 中,将验证码粘贴到终端中显示 Enter authorization code(输入授权代码)的位置。
-
如果系统提示您批准从剪贴板复制内容,请点击 Allow(允许)。
-
按 Enter 键,然后等待状态栏显示 Cloud Code - No Project(Cloud Code - 无项目)。
您现已连接到 Google Cloud。
在 Cloud Code 中启用 Gemini
要在 Cloud Code 中为您的工作站 IDE 启用 Gemini,请完成以下步骤:
-
在工作站 IDE 中,点击菜单 (),然后前往 File > Preferences > Settings(文件 > 偏好设置 > 设置)。
-
在“Settings”(设置)对话框的 User(用户)标签页中,选择 Extensions > Google Cloud Code(扩展程序 > Google Cloud Code)。
-
在 Search settings(搜索设置)中输入
Gemini
。 -
在 Qwiklabs 实验凭据面板中,点击 Copy(复制)以复制项目 ID。
-
在 Cloud Code 设置页面中,在 Cloudcode > Gemini: Project(Cloudcode > Gemini:项目)中粘贴 Google Cloud 项目 ID。
注意:此设置可能显示为 Cloudcode > Duet AI: Project(Cloudcode > Duet AI:项目)。 -
确定 Cloud Code > Gemini: Enable(Cloud Code > Gemini:启用)设置处于已启用状态。
注意:此设置可能显示为 Cloudcode > Duet AI: Enable(Cloudcode > Duet AI:启用)。 -
在 IDE 状态栏中,点击 Cloud Code - No Project(Cloud Code - 无项目)。
-
点击 Select a Google Cloud Project(选择 Google Cloud 项目),然后点击您的项目 ID。
项目 ID 现在会显示在状态栏中。现在就可以使用 Gemini 了。
任务 4. 与 Gemini 聊天
Gemini 可以根据您的应用架构要求,帮您选择合适的 Google Cloud 服务。如果您想在本地 IDE 中开发和测试应用,随后将其部署到 Google Cloud,则可以与 Gemini 聊天来获得帮助。
在此任务中,您将使用 Gemini 窗格输入提示,并查看 Gemini 提供的回答。
提示是描述您所需要的帮助的问题或陈述。提示可以包含现有代码中的上下文,Google Cloud 会分析这些上下文,以提供更实用或更完整的回答。如需详细了解如何撰写提示以生成优质回答,请参阅在 Google Cloud 中撰写更好的 Gemini 提示。
向 Gemini 发出提示
若要向 Gemini 发出提示,让它为您提供有关 Google Cloud 服务的建议,请执行以下步骤:
-
在 IDE 活动栏中点击 Gemini (),以打开 Gemini 对话窗格。
-
如果在尝试打开 Gemini 对话窗格时发生错误,请刷新浏览器窗口。
-
在 Gemini 窗格中,输入以下提示,然后点击 Send(发送)():
I am new to Google Cloud and I want to use the Cloud Code extension. Give me some examples of Google services that I can use to build and deploy a sample app. Gemini 会在回答中提供一份 Google Cloud 服务及描述的列表。
在本例中,假设 Gemini 推荐使用 Cloud Run 和 Cloud Functions 这两种 Google Cloud 服务来帮您构建和部署示例应用。您可以询问有关这些服务的更多信息。
-
若要提出进一步的问题或提示,请在 Gemini 窗格中输入以下文字,然后点击 Send(发送):
What is the difference between Cloud Run and Cloud Functions? Gemini 将在回答中说明这两种 Google Cloud 服务的主要区别。
-
如需重置聊天记录,请在 Gemini 窗格中点击 Reset Chat(重置聊天)()。
注意:聊天记录状态仅保留在记忆功能中,在您切换到另外一个工作区或关闭 IDE 后不会保留。Gemini 不会将您的提示或其回答用作训练模型的数据。如需了解详情,请参阅 Gemini for Google Cloud 如何使用您的数据。
任务 5. 开发 Python 应用
接下来我们使用 Cloud Run 创建和部署一个基本的 Python 应用。作为 Cloud Run 和 Cloud Code 的新手用户,您需要有关应用创建步骤的帮助。
在此任务中,您将发出提示,让 Gemini 帮助您在 Cloud Run 中构建一个 Hello World Python 应用。
获得 Gemini 的帮助
-
在 Gemini 窗格中,要了解如何使用 Cloud Code 创建 Cloud Run 应用,请输入以下提示,随后点击 Send(发送)():
How do I create a new Cloud Run app in Cloud Code using the command palette? What languages are supported? -
在 Gemini 生成的回答中,您可以看到创建应用的一系列步骤。Gemini 还会显示 Cloud Run 应用支持的语言。
注意:VS Code 中的命令面板提供了所有命令的列表,包括适用于 Cloud Code 的命令。
按照 Gemini 提供的步骤创建 Python 应用
-
点击菜单 (),然后前往 View > Command Palette(视图 > 命令面板)。
-
输入
Cloud Code New
,然后选择 Cloud Code: New Application(Cloud Code:新应用)。 -
选择 Cloud Run application(Cloud Run 应用)。
-
选择 Python (Flask):Cloud Run。
-
将应用名称和顶层文件夹更新为
/home/user/hello-world
,然后点击确定。Cloud Code 将下载模板,并在您 IDE 的该文件夹中创建应用文件。
使用 Gemini 探索应用
现在,您已经在 Cloud Run 中创建了 Hello World
应用,可以使用 Gemini 来解释 IDE 中部署的文件和代码段。
-
如果看不到这些文件,请在 IDE 活动栏中点击 Explorer(探索器)()。
-
在“Explorer”(探索器)窗格中,选择 Dockerfile。
-
选中 Dockerfile 的全部内容,点击灯泡图标 (),然后从 More Actions(更多操作)菜单中点击 Explain this(解释此内容)。
Gemini 将使用自然语言生成有关
Dockerfile
内容及作用的解释。您还可以选择文件内容的各个部分,点击灯泡图标 (),然后点击 Explain this(解释此内容)。 -
选择以 ENTRYPOINT 开头的行,点击灯泡图标 (),然后点击 Explain this(解释此内容)。
Gemini 的回答中会包含 ENTRYPOINT 指令的详细信息。您将了解到,使用该指令,Docker 会在容器启动时运行 app.py 文件。
-
如需查看
app.py
文件的内容,请在活动栏中点击 Explorer(探索器)(),然后点击app.py
。 -
在
hello()
函数定义中,选择包含环境变量K_SERVICE
和K_REVISION
的行。然后依次点击灯泡图标 () 和 Explain this(解释此内容)。Gemini 会在回答中详细说明这两个 Cloud Run 环境变量,以及它们在应用代码中的用法。
在本地运行应用
在 IDE 中,您可以使用 Cloud Run 模拟器在本地运行应用。在本实验中,“本地”是指在工作站机器上。
-
在 IDE 的活动栏中,点击 Cloud Code (),然后点击 Cloud Run。
注意:您首先要使用 Cloud Run 模拟器运行该应用,所以暂时不必启用 Cloud Run API。 -
在 Cloud Run 活动栏中,点击 Run App on Local Cloud Run Emulator(在本地 Cloud Run 模拟器中运行应用)(),然后点击 Run(运行)。
IDE 中的 Output(输出)标签页会显示构建进度。
-
当屏幕顶部显示 Enable minikube gcp-auth addon to access Google APIs(启用 minikube gcp-auth 插件以访问 Google API)提示时,选择 Yes(是)。
等待构建和部署完成。
-
将指针悬停在 hello-world 服务的本地主机网址链接上,点击随即出现的 Follow link(打开链接)。
浏览器中将会打开一个新标签页,显示一个指明服务正在运行的网页。
任务 6. 增强 Python 应用
下面我们来为应用添加数据和功能,以便使用它来管理库存数据。
在此任务中,您首先要为应用添加库存数据。
使用 Gemini 生成示例数据
-
在 IDE 的活动栏中,点击 Explorer(探索器)()。
-
点击 New file(新建文件)(),并创建一个名为
inventory.py
的文件。 -
为了让 Gemini 生成示例数据,请打开 Gemini 窗格,输入以下提示,然后点击 Send(发送):
Create a variable called inventory which is a list of 3 JSON objects. Each JSON object has 2 attributes: productid and onhandqty. Both attributes are strings. Gemini 会生成
inventory
JSON 数组,其中包含 3 个 JSON 对象。 -
若要将示例 JSON 数据插入到 inventory.py 文件中,请在 Gemini 回答中点击 Insert in current file(插入到当前文件中)()。该文件的内容如下所示:
inventory = [ { "productid": "P001", "onhandqty": "10" }, { "productid": "P002", "onhandqty": "20" }, { "productid": "P003", "onhandqty": "30" } ] -
若要在
home/user/hello-world
文件夹中保存inventory.py
文件,请在 IDE 菜单 () 中点击 File > Save(文件 > 保存)。在下一个子任务中,您将使用这些示例库存数据。
为应用添加 GET /inventory list API 方法
接下来,您将在 app.py
文件中添加 API 方法,以便对库存数据执行操作。为了完成这个子任务,您要使用 Gemini 中的代码生成功能。
-
在 Explorer(探索器)中的文件夹和文件列表中,选中并打开
app.py
文件。 -
修改 flask import 语句,添加
inventory.py
文件和jsonify
库:from flask import Flask, render_template, jsonify from inventory import inventory -
在
app.py
文件中,将光标置于 app 的赋值语句下方:app = Flask(__name__) -
要让 Gemini 生成第一个 API 方法的代码,请在
app.py
文件中输入以下注释:# Generate an app route to display a list of inventory items in the JSON format from the inventory.py file. # Use the GET method. -
选择注释行,包括注释下方的空行。
-
点击灯泡图标 (),然后在 More Actions(更多操作)菜单中选择 Generate code(生成代码)。
Gemini 会生成一个执行 GET 操作的函数,它将返回
inventory.py
文件中的商品项列表。此函数大致如下所示:@app.route('/inventory', methods=['GET']) def inventory_list(): """Return a list of inventory items in JSON format.""" return jsonify(inventory) 注意:如需进一步了解 jsonify(inventory)
函数,请突出显示对应的词语,然后向 Gemini 发出提示,让它为您解释此代码。 -
若要接受生成的代码,请将指针悬停在回答中生成的代码的任意部分上,然后点击 Accept(接受)。
重要提示:Gemini 可能会生成多个代码段,而且为您生成的代码段可能与上面显示的代码段有所不同。 -
如果为您生成的代码中的 app.route 和 return 语句与上面显示的代码有所不同,请用上面显示的代码段取代 Gemini 为您生成的代码段。这样应该就能确保本实验按预期进行。
为应用添加 GET /inventory/ 方法
下面我们来添加另一个 API 方法,用于在给定 productID 的前提下,返回对应的特定库存项的数据。如果未找到该 productID,API 会返回标准 HTTP 状态代码 404。
-
添加几个空行。
-
为了让 Gemini 生成第二个 API 方法的代码,请在
app.py
文件中输入以下注释:# Generate an App route to get a product from the list of inventory items given the productID. # Use the GET method. # If there is an invalid productID, return a 404 error with an error message in the JSON. -
选中 3 个注释行及注释后面的空行,点击灯泡图标 (),然后在 More Actions(更多操作)菜单中选择 Generate code(生成代码)。
Gemini 会生成一个执行 GET 操作的函数,它将根据请求中提供的 productID 在库存文件中查找对应的商品项,如果此商品存在,则返回对应的项,否则返回 404 状态代码。
@app.route('/inventory/<productid>', methods=['GET']) def inventory_item(productid): """Return a single inventory item in JSON format.""" for item in inventory: if item['productid'] == productid: return jsonify(item) return jsonify({'error': 'Product not found'}), 404 -
将指针悬停在回答中生成的代码的任意部分上。若要接受生成的代码,请点击工具栏中的 Accept(接受)。
-
如果为您生成的代码与上面显示的代码有所不同,请用上面显示的代码段取代 Gemini 为您生成的代码段。
在本地重新构建并重新部署应用
在 IDE 中,您可以使用 Cloud Run 模拟器在本地运行应用。在本实验中,“本地”是指在工作站机器上。
-
在 IDE 的活动栏中,点击 Cloud Code ()。
-
在 Cloud Run 活动栏中,点击 Run App on Local Cloud Run Emulator(在本地 Cloud Run 模拟器中运行应用)()。
-
当屏幕顶部显示 Enable minikube gcp-auth addon to access Google APIs(启用 minikube gcp-auth 插件以访问 Google API)提示时,选择 Yes(是)。
等待构建和部署完成。
-
将指针悬停在 hello-world 服务的本地主机网址链接上,点击随即出现的 Follow link(打开链接)。
浏览器中将会打开一个新标签页,显示一个指明服务正在运行的网页。
测试 API 方法
-
请按照上一个任务中的步骤在本地运行应用。
-
打开链接并在另一个浏览器标签页中查看正在运行的应用之后,在此标签页的网址末尾附加
/inventory
,并按 Enter 键。API 将返回 JSON 响应,其中包含
inventory.py
文件中的商品列表。 -
向以
/inventory
结尾的网址附加/{PRODUCTID}
,这里的{PRODUCTID}
是库存中的一个商品 ID。 -
按 Enter 键。
API 将返回 JSON 响应,其中包含该特定商品的数据。
-
将商品 ID 替换为
XXXXX
,并按 Enter 键。XXXXX 并非有效的商品 ID,因此 API 会返回 JSON 错误响应,指出未找到此商品。
任务 7. 将应用部署到 Cloud Run
现在可以将应用部署到 Google Cloud 上的 Cloud Run 中。
-
在活动栏主菜单 () 中,点击View > Command Palette(视图 > 命令面板)。
-
在“Command Palette”(命令面板)字段中,输入 Cloud Code Deploy,然后从列表中选择 Cloud Code: Deploy to Cloud Run(Cloud Code:部署到 Cloud Run)。
-
若要为您的项目启用 Cloud Run API,请点击 Enable API(启用 API)。
-
在 Service Settings(服务设置)页面上,为 Region(区域)选择
。 -
其余设置均保留默认值,然后点击 Deploy(部署)。
Cloud Code 会构建映像,将其推送到注册表,并将您的服务部署到 Cloud Run。这可能需要几分钟的时间。
注意:如需查看详细的部署日志,请点击 Show Detailed Logs(显示详细日志)。 -
如需查看正在运行的服务,请打开“Deploy to Cloud Run”(部署到 Cloud Run)对话框中显示的网址。
-
在此网址末尾附加
/inventory
和/inventory/{PRODUCTID}
路径测试服务,并验证响应。如需获取 Cloud Run 服务库存页面的网址,请在 Cloud Shell 中运行以下命令:
export SVC_URL=$(gcloud run services describe hello-world \ --region {{{project_0.default_region|set at lab start}}} \ --platform managed \ --format='value(status.url)') echo ${SVC_URL}/inventory
如需验证是否已完成以下目标,请点击检查我的进度:
结束实验
完成实验后,请点击结束实验。Qwiklabs 会移除您使用过的资源并为您清理帐号。
系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交。
星级的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
恭喜!
在本实验中,您学习了如何执行以下操作:
- 向 Gemini 提出基于上下文的问题,以探索可用于部署应用的各种 Google 服务。
- 输入提示要求 Gemini 提供可用于在 Cloud Run 中开发基本应用的模板。
- 使用 Gemini 解释并生成代码,以创建、探索和修改应用。
- 在本地运行并测试应用,随后利用 Gemini 生成操作步骤,将应用部署到 Google Cloud。
后续步骤/了解详情
- Gemini for Google Cloud 概览
- 借助 Gemini for Google Cloud 开发 Python 应用
- 借助 Gemini for Google Cloud 开发 Node.js 应用
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。