面向开发者的 Duet AI 导览

1. 简介

在此实验中,您将使用 Duet AI,它是 Google Cloud 中的一个 AI 赋能的协作工具。您将学习如何使用 Duet AI Chat 和内嵌代码助理来生成代码、理解代码等。

实践内容…

  • 您将使用 Cloud Shell IDE 下载某个 Web 应用的现有代码模板。
  • 您将使用 Cloud Shell IDE 中的 Duet AI Chat 来询问有关 Google Cloud 的常见问题。
  • 您将使用 Cloud Shell IDE 中的 Duet AI 内嵌代码助理来生成、总结和补全代码。

学习内容…

  • 如何使用 Duet AI 执行多项开发者任务,例如代码生成、代码补全和代码总结。
  • 如何使用 Duet AI 了解 Google Cloud。

所需条件…

  • Chrome 网络浏览器
  • Gmail 账号
  • 启用了结算功能的 Cloud 项目
  • 为 Cloud 项目启用了 Duet AI

本实验的适用对象为各种水平的开发者,包括新手。虽然示例应用使用的是 Python 语言,但您无需熟悉 Python 编程就能理解代码内容。我们的重点是让开发者熟悉 Duet AI 的各项功能。

2. 设置

本部分涵盖了开始此实验所需执行的所有操作。

在 Google Cloud 项目中启用 Duet AI

我们现在将在 Google Cloud 项目中启用 Duet AI API。请按下面给出的步骤操作:

  1. 访问 https://console.cloud.google.com,并确保您已选择计划用于本实验的 Google Cloud 项目。点击显示在右上角的 Duet AI 图标。

e28d7b796fb2ab47.png

  1. Duet AI 聊天窗口会在控制台右侧打开。点击“启用”按钮,如下所示。如果您没有看到启用按钮,而是看到了聊天界面,可能是因为您已经为项目启用了 Duet AI,可以直接执行下一步。

f207244ecb9d6b0d.png

  1. 启用 Duet AI 后,您可以向其发出一两句查询来测试一下。下方显示了几个查询示例,不过您可以尝试诸如 What is Cloud Run? 之类的查询

faa821f22611784a.png

Duet AI 会回答您的问题。您可以点击右上角的 f68286b2b2ea5c0a.png 图标关闭 Duet AI 聊天窗口。

在 Cloud Shell IDE 中启用 Duet AI

在此 Codelab 的其余部分,我们将使用 Cloud Shell IDE。我们需要在 Cloud Shell IDE 中启用和配置 Duet AI,相关步骤如下所示:

  1. 通过如下所示的图标启动 Cloud Shell。启动 Cloud Shell 实例可能需要一两分钟的时间。

72dc3df7b007fcde.png

  1. 点击编辑器打开编辑器按钮(视具体情况而定),然后等待 Cloud Shell IDE 出现。如果您看到试用新编辑器按钮,请点击该按钮。

1e0437ef773faca8.png

  1. 如图所示,点击底部状态栏中的 Cloud Code - Sign in 按钮。按照说明对插件进行授权。如果您在状态栏中看到 Cloud Code - no project,请选择该选项,然后从项目列表中选择您打算使用的 Google Cloud 项目。

3c448ebc5cef03e4.png

  1. (可选)。如果您在右下角的状态栏中没有看到 Duet AI,则需要在 Cloud Code 中启用 Duet AI。在执行此操作之前,请确保已在 IDE 中启用 Duet AI,方法是前往 Cloud Code 扩展程序 → 设置,然后输入文本 Duet AI: Enable,如下所示。确保选中此复选框。您应重新加载 IDE。这将在 Cloud Code 中启用 Duet AI,并且 IDE 中会显示 Duet AI 状态栏。

d5743fc11ee117bc.png

  1. 点击右下角的 Duet AI 按钮(如图所示),然后选择已启用 Cloud AI Companion API 的正确 Google Cloud 项目。

d98bff6476bb15a.png

  1. 选择 Google Cloud 项目后,请确保您能够在状态栏的 Cloud Code 状态消息中看到该项目,并且在状态栏右侧看到已启用 Duet AI,如下所示:

31002a565ea80e72.png

Duet AI 现已可供使用!

3. 创建示例应用

我们将创建一个示例应用(一个 Python Flask 应用),用于探索 Duet AI 的功能。

请按照以下步骤操作:

  1. 点击下方状态栏中的 Google Cloud 项目名称

a09e8f79daad1643.png

  1. 系统会显示一个选项列表。点击下方列表中的新应用

ed0e37d92af49b65.png

  1. 选择 Cloud Run 应用。
  2. 选择 Python (Flask): Cloud Run 应用模板。
  3. 将新应用保存到首选位置。
  4. 系统会显示一条通知,确认已创建应用,并打开一个新窗口,其中加载了您的应用,如下所示。系统会打开一个 README.md 文件。您可以暂时关闭该视图。

b29976a316b5bc21.png

4. 与 Duet AI 聊天

首先,我们来学习如何与 Duet AI 聊天。Duet AI 在 Cloud Shell IDE 中以聊天助理的形式提供,它是 VS Code 中 Cloud Code 扩展程序的一部分。点击左侧导航栏中的“Duet AI”按钮即可打开它。在左侧导航工具栏中找到 Duet AI 图标 94e547b05e30e432.png,然后点击该图标。

系统随即会在 Cloud Shell IDE 中打开 Duet AI 窗格,您可以与 Duet AI 聊天以获取 Google Cloud 方面的帮助。

b99f4f97fd1a1b62.png

让我们使用 Duet AI 窗格输入提示,并查看 Duet AI 的回答。输入以下提示:

What is Cloud Run? 

Duet AI 应该会在回答中提供有关 Cloud Run 的详细信息。提示是描述您所需要的帮助的问题或陈述。提示可以包含现有代码中的上下文,Google Cloud 会分析这些上下文,以提供更实用或更完整的回答。有关如何撰写提示以生成良好回答的更多信息,请参阅针对 Duet AI 撰写更好的提示

您可以尝试使用以下示例提示或您自己的提示,来询问有关 Google Cloud 的问题:

  • What is the difference between Cloud Run and Cloud Functions?
  • What services are available on Google Cloud to run containerized workloads?
  • What are the best practices to optimize costs while working with Google Cloud Storage?

5. 代码说明

为了在最大程度减少上下文切换的同时提高效率,Duet AI 直接在代码编辑器中提供 AI 赋能的智能操作。在代码编辑器中选择代码时,您可以查看与上下文相关的操作列表,并从中进行选择。

您可以使用 Duet AI 来帮助了解应用代码的各个部分。返回我们在上一步中创建的应用,您可以使用 Duet AI 来解释 IDE 中出现的文件和代码。

  1. 如果看不到这些文件,请在 IDE 活动栏中点击探索器 (Code OSS 探索器菜单)。
  2. 在“探索器”窗格中,选择 Dockerfile
  3. 您可以选择文件内容的任何部分,点击灯泡 (Code OSS Duet AI 灯泡),然后点击 Explain this。例如,选择以 ENTRYPOINT 开头的行,点击灯泡 (Code OSS Duet AI 灯泡),然后点击 Explain this。Duet AI 会针对您需要详细了解的特定 Dockerfile 文件部分,生成自然语言的说明。Duet AI 生成的回答中会包含有关 ENTRYPOINT 指令的详细信息。您将了解到,使用该指令,Docker 会在容器启动时运行 app.py 文件。
  4. 若要查看 app.py 文件的内容,请在活动栏中点击探索器 (Code OSS 探索器菜单),然后选择 app.py
  5. hello() 函数定义中,选择任意想要详细了解的代码行。然后点击灯泡图标 (Code OSS Duet AI 灯泡),再点击 Explain this。在我们的示例中,我们选择了以下两行代码,然后触发了 Explain this 操作。

14d9c56af016b65d.png

  1. Duet AI 会在回复中详细说明这两个 Cloud Run 环境变量 (K_SERVICE, K_REVISION),以及它们在应用代码中的使用方式。请注意,Duet AI 凭借对 Google Cloud 和 Cloud Run 等服务的了解,不仅解释了 Python 代码,还给出了这些变量在 Cloud Run 中的上下文含义。

尝试使用以下其他方式获取代码说明:

  1. app.py 保留为 IDE 中当前打开的文件。在 VS Code 中,进入左侧导航栏中的 Duet AI 聊天窗格,然后输入提示 Explain this file。系统会考虑整个文件并向您解释。
  2. 您还可以选择文件的任何部分,然后在左侧的 Duet AI 聊天窗格中输入提示 Explain this。这样系统只会对文件的选定部分进行解释。这类似于您点击灯泡 (Code OSS Duet AI 灯泡),然后点击 Explain this。
  3. 您还可以选择一段文本,然后在 IDE 的右上角点击 Duet AI Smart Actions(如下所示),获取可对所选文本执行的操作列表。Explain this 操作是其中一个选项:

35b59223f0726492.png

6. 根据提示生成代码

本部分介绍了如何使用 Duet AI 通过注释生成代码。

我们来试试这些功能。请按下面给出的步骤操作:

  1. 创建名为 utils.py 的新文件。
  2. 在新代码文件中,另起一行输入 # Function to print a list of blobs in a Google Cloud Storage bucket,然后按 Enter(适用于 Windows 和 Linux)或 Return(适用于 MacOS)。Duet 可能会尝试在您输入时生成代码,但不要接受。我们将在下一步中专门触发代码生成。
  3. 如需触发代码生成,请按 Control+Enter(适用于 Windows 和 Linux)或 Control+Return(适用于 MacOS)。在 Python 文件中的提示文本旁边,Duet AI 以幽灵文本的形式生成代码。它将通过工具栏为您提供一条或多条代码建议,您可以通过工具栏从一条代码建议导航到另一条代码建议(如有多条建议)。您甚至可以通过工具栏接受任何代码建议。如果您看不到工具栏或工具栏消失了,请将鼠标悬停在生成的代码上,使其再次显示。
  4. 可选:若要接受生成的代码,请按 Tab。如果有多个建议,您可以多次按 Tab,从一个建议的代码段导航到下一个建议的代码段。

此操作会将您接受的代码插入 utils.py 文件中。示例屏幕截图如下所示。提供给您的代码可能与下方显示的代码不同。

ef132e1f83eaf508.png

请注意代码周围的波浪线。以下是代码引用的实际应用。如果您将鼠标悬停在任何行上,系统会显示代码出处,以及有关许可的其他相关信息。相关示例如下所示:

84b8d1024b867a48.png

然后,您可以点击 Quick Fix…选择忽略引用警告。系统将显示“Quick Fix”建议,其示例如下所示:

10f4672830954c90.png

如果您同意接受代码许可,可以选择 Ignore Citation Warning

(可选)以下是一些其他建议,您可以尝试使用这些建议生成代码:

  1. 您还可以使用 Duet AI 聊天功能提出相同的提示,并在聊天窗口中获得回答。然后,聊天界面会显示用于复制代码或将其插入当前文件的选项。
  2. 您可以根据需要,尝试使用您自己的提示生成示例代码。下面给出了一些建议(假设您位于其中一个 Python 文件中),或者从下面给出的一些提示中选择:
  • 编写 Python 代码以将消息发布到 Google Cloud Pub/Sub
  • 编写 Python 代码以初始化 BigQuery 客户端
  • 编写 Python 代码以将我的应用连接到 Cloud SQL

7. 在编码时获取内嵌代码建议

在您编写代码时,Duet AI 会提供内嵌代码建议,您可以选择接受或忽略这些建议。为了试用此功能,我们将修改在上一部分中创建的 utils.py 文件:

  1. 在 Cloud Shell IDE 中打开 utils.py 文件作为当前文件。
  2. 如果生成的代码中不包含 import 语句,我们可以采取的其中一项措施是提供正确的语句。
  3. 开始输入单词 import,您应该会看到 Duet AI 以幽灵文本的形式提供建议代码。若要接受 Duet AI 给出的代码建议,请按 Tab。否则,若要忽略建议,请按 Esc 或继续编写代码。在下面的示例屏幕中,系统建议导入 storage 类,因为代码正在使用该类。按 Tab 键可接受代码建议。系统还建议了 import os 语句,但由于不需要它,我们可以将其移除。

cb3dfff74172959d.png

  1. 前往 utils.py 文件的末尾,并添加用于调用该函数的代码行(如果未提供该行)。在这个例子中就是 list_blobs 函数。您只需开始输入函数名称,代码补全功能将帮助您完成语句。
  2. 您需要提供 bucket_name,并可以使用以下公共存储桶名称:duetai-tour-bucket。下面显示了该函数的示例调用。请注意,您可能会看到函数名称等方面的细微差异。

ac3818b516ef228f.png

(可选)运行示例代码

由于我们编写了用于列出 Google Cloud Storage 存储桶中的 blob 的代码,因此我们需要安装 google-cloud-storage Python 库。

前往 requirements.txt 文件,然后添加一行包含 google-cloud-storage 依赖项的新代码,如下所示。示例 requirements.txt 文件如下所示。

Flask==2.3.3
requests==2.31.0
debugpy # Required for debugging.
google-cloud-storage

保存 requirements.txt 文件。

要查看代码的实际应用,我们需要通过左上角的菜单图标,从 Cloud Shell IDE 启动新的终端会话。点击菜单图标,然后点击终端 → New Terminal,如下所示:

6bd5bec67de34b2a.png

在终端会话中,通过以下命令安装 Python 依赖项:

pip install -r requirements.txt

最后,您可以通过以下命令运行 utils.py 文件:

python utils.py

这应该会显示公共 Google Cloud Storage 存储桶中的 blob。理想情况下,您应该会在输出中看到 2 个列出的 blob(file1.txtfile2.txt)。

问题排查

如果您在显示上述公共存储桶中的对象时收到“访问”错误,可以选择创建自己的 Google Cloud Storage 存储桶,并使用该存储桶而不是 duetai-tour-bucket。下一部分将向您介绍如何执行此操作。

(可选)创建您自己的 Cloud Storage 存储桶

让我们借助 Duet AI 提供用于创建存储桶的命令,使其可供公开访问,并将示例对象上传到存储桶中。

首先输入以下提示:What is the gcloud command to create a public bucket in Google Cloud Storage?

这应该会为您提供用于创建存储桶的 gcloud 命令。确切的命令如下所示:

gcloud storage buckets create gs://<BUCKET_NAME>

<BUCKET_NAME> 选择一个唯一的名称,然后在终端中执行该命令。

创建存储桶后,我们希望该存储桶可公开访问。让我们使用以下提示让 Duet AI 给出相应命令:How do I make a google cloud storage bucket publicly accessible?

这应该会为您提供一个 gcloud 命令,使存储桶可公开访问。回答应如下图所示:

gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> --member=allUsers --role=roles/storage.objectViewer

<BUCKET_NAME> 替换为您之前使用的存储桶名称,然后执行该命令。

最后,我们希望将一些示例文件上传到存储桶。在终端中执行以下命令(请务必将 <BUCKET_NAME> 变量替换为您的存储桶名称)。

touch f1.txt
touch f2.txt

gcloud storage cp f1.txt gs://<BUCKET_NAME>
gcloud storage cp f2.txt gs://<BUCKET_NAME>

您现在可以使用 <BUCKET_NAME>(而非 duetai-tour-bucket)执行 utils.py 文件。

8. 恭喜!

恭喜!您已成功在示例项目中使用了 Duet AI,了解了它如何协助完成代码生成、代码补全和代码总结,并帮助回答有关 Google Cloud 的问题。

参考文档…