准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create an Agent Search data store
/ 20
Create an Agent Search app
/ 20
Create a Backend app
/ 20
Deploy the LangChain agent
/ 20
Develop and test the Flutter chat app
/ 20
Create an Agent Search data store
/ 20
Create an Agent Search app
/ 20
Create a Backend app
/ 20
Deploy the LangChain agent
/ 20
Develop and test the Flutter chat app
/ 20
在本实验中,您要将一个 LangChain AI 智能体与 Flutter 应用进行集成。Flutter 将作为客户端应用框架,Gemini Enterprise Agent Platform 上的 Agent Search 将作为向量数据库,Gemini Enterprise Agent Platform 上的 Agent Runtime 则用于构建和部署 LangChain 智能体。该智能体将使用 Gemini 这一强大的大语言模型 (LLM) 系列,根据文本和图片提示生成 AI 回答。
本实验已使用 code-server 预配置了 VSCode 来作为 IDE,以及运行 Flutter 应用所需的 Flutter 和 Dart 扩展程序。本实验还会使用 fwr,该工具可将 Flutter 应用作为 Web 应用部署,以便通过浏览器访问。
本实验面向参与构建应用但可能不熟悉云应用开发的开发者,不限经验水平。如果您具备一些使用 Python 的经验,并熟悉 Flutter 框架,将会很有帮助。您无需了解 Flutter 就能完成本实验中的任务,不过您需要查看 Flutter 应用的一些代码并测试该应用的功能。
在本实验中,您将执行以下任务:
在 Google Cloud 控制台中使用 AI Applications 创建搜索数据存储区和搜索应用。
使用 Gemini Enterprise Agent Platform Workbench 部署 LangChain 智能体。
使用与 Agent Search 和 LangChain 智能体集成的 Python 应用。
将该应用部署到 Cloud Run,并将其作为 Flutter 应用的后端。
创建一个 Flutter 应用,用作前端聊天应用。
下面是本实验使用的不同组件的概览:
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
使用无痕式窗口登录 Google Skills。
留意实验的访问时限(例如 1:15:00)并确保能在相应时间段内完成实验。
系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。
准备就绪时,点击开始实验。
请记好您的实验凭据(用户名和密码)。您需要使用这组凭据来登录 Google Cloud 控制台。
点击打开 Google 控制台。
点击使用其他账号,然后将此实验的凭据复制并粘贴到相应提示框中。
如果您使用其他凭据,将会收到错误消息或产生费用。
接受条款并跳过恢复资源页面。
在此任务中,您将在 Google Cloud 控制台中使用 AI Applications 创建搜索数据存储区和搜索应用,以实现 Flutter 应用的搜索功能。
在 Cloud 控制台中,点击查看所有产品。在所有产品页面上,滚动到人工智能部分,然后点击 AI Applications。
点击继续并激活 API。
在左侧窗格中,点击数据存储区,然后在数据存储区页面上点击创建数据存储区。
在此页面上,您可以配置要用于提供搜索结果的数据源。本实验预配置了一个 Cloud Storage 存储桶,其中的 .csv 文件包含 Google 官方商店的商品数据。
若要选择 Cloud Storage 作为数据源,请点击 Cloud Storage 下的选择。
对于要导入的数据种类,请在结构化数据导入下选择 CSV(用于常见问题解答数据)。
滚动到选择您要导入的文件夹或文件部分,然后点击文件。
点击浏览以便提供 CSV 文件的 Cloud Storage 网址。
点击 ,查看 Cloud Storage 存储桶
选择 goog_merch.csv 文件,然后点击选择。
系统会自动填充相应文件夹的 gs:// URI。
点击继续。
输入数据存储区名称 goog-merch-ds,然后点击继续。
保留默认选定的定价模式,然后点击创建。
系统会创建数据存储区,并启动从 CSV 文件注入数据的流程。
在数据存储区页面上,点击您新建的数据存储区的名称。
点击刷新。
文档标签页会显示已导入文档的列表。
如需查看与某个文档关联的数据,请点击查看文档。
如需验证是否已完成以下目标,请点击检查我的进度:
若要使用搜索数据存储区,需要在 AI Applications 中将其与一个搜索应用相关联。
在 Cloud 控制台中,点击 AI Applications,然后点击应用。
点击创建新应用。
在创建应用页面,针对要构建的应用类型,在搜索和 Google 助理标签页的自定义搜索(常规)下方,点击创建。
在搜索应用配置页面,使用以下设置来配置网站搜索应用,并将其余设置保留为默认值:
| 属性 | 值(输入或选择) |
|---|---|
| 企业版功能 | 停用 |
| 您的应用名称 | gms-search-app |
| 贵公司或组织的外部名称 | gms-company |
| 您的应用的位置 | global(全球) |
点击继续。
页面会显示现有数据存储区的列表。选择您在上一个子任务中创建的 goog_merch_ds 数据存储区,然后点击继续。
保留默认选定的定价方案,然后点击创建。
现在,您已创建搜索应用,并已将数据存储区与该应用相关联。
如需测试该搜索应用,请点击 AI Applications 导航菜单中的预览。
在搜索字段中,输入 dino,然后按 Enter 键。
系统会显示相关搜索结果列表,这些结果来自导入到数据存储区的文档。
如需验证是否已完成以下目标,请点击检查我的进度:
Flutter 应用的后端将在 Google Cloud 上作为一项 Cloud Run 服务运行。该后端服务将与您在上一个任务中创建的搜索应用集成,以便根据官方商店数据生成搜索回答。
在后续任务中,您还需将后端应用与 LangChain 智能体集成,以便针对来自 Flutter 应用的搜索查询,调用 Gemini 获取生成式 AI 内容。
在此任务中,您将构建后端 Python 应用并将其部署到 Cloud Run。
本实验已预配置了一个基于 VSCode 的 IDE。如需访问该 IDE,请复制本实验凭证面板中的 IDE 服务网址,然后将其粘贴到一个新的无痕式浏览器窗口或标签页。
在 IDE 中打开一个终端:在 IDE 导航菜单 () 中,依次点击终端 > 新建终端。
本实验已预配置后端应用的初始版本和相关文件。请从 Cloud Storage 中的归档文件复制后端应用文件夹的初始版本及其内容:
若要列出该文件夹的内容,请在 IDE 终端窗口中运行以下命令:
ag-web/app 文件夹包含构建后端应用并将其部署到 Cloud Run 所需的应用源代码和其他文件。
为应用设置 PROJECT_ID 和 LOCATION 配置。
将该后端应用配置为使用您之前创建的搜索数据存储区。
在该命令中,将字符串 {YOUR_SEARCH_DATASTORE_ID} 替换为搜索数据存储区 ID 的值。请务必移除 sed 命令中的大括号。
若要在 IDE 中查看代码,请在 IDE 导航菜单中点击 ,然后点击打开文件夹。
从列表中选择 IDE-DEV/ag-web/ 文件夹,然后点击确定。
若要信任代码的作者,请点击 Yes, I trust the authors(是,我信任这些作者)。
在探索器窗格中,展开 app 文件夹,然后点击 app.py 以在编辑器中打开该文件。
后端应用代码会执行以下操作:
discoveryengine.googleapis.com API 初始化 SearchServiceClient。search_gms() 函数会使用该 API 的 datastores 端点发起搜索请求。您之前创建的数据存储区 ID 将包含在网址中。flask 将请求路由到各个函数。/ 端点是用于验证应用是否成功加载的默认页面,而 /ask_gms 端点则会调用使用 Agent Search 的 search_gms() 函数。现在,您可以使用一个部署脚本来构建后端应用并将其部署到 Cloud Run。
在 IDE 中打开一个终端窗口,并切换至后端应用文件夹:
从 gcloud CLI 向 Google Cloud 进行身份验证:
若要继续,请输入 Y
按住 Ctrl 键(对于 Windows 和 Linux)或 Command 键(对于 MacOS),并点击终端中的链接启动登录流程。
如果系统要求您确认是否打开外部网站,请点击打开。
点击在本实验中使用的学员邮箱。
看到要求您继续操作的提示时,点击继续。
若要允许 Google Cloud SDK 访问您的 Google 账号并同意相关条款,请点击允许。
您的验证码会显示在浏览器标签页中。
点击复制。
回到 IDE 终端窗口,将验证码粘贴到输入授权代码的位置,然后按 Enter 键。
您现已登录 Google Cloud。
将 deploy.sh 脚本设为可执行脚本,然后运行该脚本以在指定的 Cloud Run 区域中部署应用:
成功构建应用并将其部署到 Cloud Run 后,脚本输出末尾会显示该应用的端点网址。该网址由脚本中执行的 gcloud run deploy 命令生成。
您可以通过访问应用的 Cloud Run 端点来测试应用功能。
复制上一步中生成的应用端点网址,并在新的浏览器标签页中前往该网址。
应用加载后,首页会显示:Welcome to the ag-web backend app(欢迎使用 ag-web 后端应用)。
在浏览器的网址栏中,将以下路径附加至网址末尾:
验证应用是否会使用从您之前创建的搜索数据存储区中获取的结果进行响应。
如需验证是否已完成以下目标,请点击检查我的进度:
AI 智能体是一种应用,它利用大语言模型 (LLM) 的强大能力进行推理,并通过与外部工具的编排协作来实现其目标。Gemini Enterprise Agent Platform 是 Google 提供的一套产品和工具,可让您通过接入受信任的数据源,轻松打造 AI 智能体。
Gemini Enterprise Agent Platform 上的 Agent Runtime 可帮助您在 Agent Platform 上构建和部署推理智能体。LangChain 是一款用于构建聊天机器人和 RAG 系统的常用 OSS 工具。
通过 Agent Platform,开发者可以使用函数调用将 LLM (Gemini) 模型的输出映射到 Python 函数。您可以使用 Agent Platform SDK,通过专用于 LangChain 框架的模板开发和部署智能体。
在此任务中,您将使用 Agent Platform Workbench 和 Jupyter 笔记本来构建和部署采用 Python 函数的 LangChain 智能体。在本实验的下一个任务中,我们将在生成式 AI 后端应用中使用此智能体。
Agent Platform Workbench 是基于 Jupyter 笔记本的开发环境,涵盖了完整的数据科学和机器学习工作流。您可以在工作台实例的 Jupyter 笔记本中与 Agent Platform 和其他 Google Cloud 服务进行交互。例如,借助 BigQuery 和 Cloud Storage 的集成,您可以从 Jupyter 笔记本访问并浏览数据。
Agent Platform Workbench 笔记本提供了灵活、可扩缩的解决方案,支持在 Google Cloud 上开发和部署机器学习模型。
若要创建 Workbench 实例,请在 Cloud 控制台中点击导航菜单 (),然后依次选择 Agent Platform > Notebooks。
在 Notebooks 导航菜单中,点击 Workbench。
确保在实例标签页中选中了实例,然后点击新建。
在“新建实例”页面的名称部分,输入 my-instance
其余设置均保留默认值,然后点击创建。
您的新实例会在“实例”部分启动。等待实例创建完毕,然后继续执行下一步。
在实例准备就绪后,点击打开 Jupyterlab。
点击 Python 3 笔记本启动 Python 3 Jupyter 笔记本。
本实验预配置了用于构建和部署 LangChain 智能体的笔记本。
若要将该笔记本复制到您的 JupyterLab 实例,请将以下代码复制到新笔记本的第一个单元中:
选择该单元,然后点击单元菜单中的运行来运行该单元:
此命令会将笔记本从 Cloud Storage 复制到您的 JupyterLab 实例。命令完成后,该笔记本文件会列在顶级根文件夹下。
双击文件夹列表中的笔记本文件打开该笔记本。系统即会打开一个单独的标签页,显示该笔记本的内容。
按顺序从头开始运行笔记本中的所有代码单元。若要运行某个单元,请点击该单元中的任意位置将其选中,然后点击单元菜单或顶部笔记本菜单中的运行。
a. [CELL INSTR] 重启当前运行时
如果系统提示,请在内核重启对话框中点击确定。
b. [CELL INSTR] 设置 Google Cloud 项目信息并初始化 Agent Platform:
在运行此单元以初始化 Agent Platform 之前,请更新实验项目 ID、位置和暂存存储桶的配置值:
包含示例配置设置的已更新单元:
c. [CELL INSTR] 定义智能体:
在运行此单元之前,请将 GEMINI_MODEL_ID 的值替换为此笔记本使用的最新模型 ID:
运行 Deploy the Agent to the Agent Runtime(将智能体部署到 Agent Runtime)单元后,请等待命令执行完毕,完成 LangChain 智能体的部署。然后,复制该智能体 ID:
您将在下一个任务中使用此 ID 来配置和重新部署后端应用。
若要测试 LangChain 智能体是否成功运行,请运行接下来的两个单元并观察输出。
LangChain 智能体根据查询输入成功调用了 Wikipedia 或 Agent Search 数据存储区。
如需验证是否已完成以下目标,请点击检查我的进度:
现在,我们来增强后端应用,以调用您在上一个任务中部署的 LangChain 智能体。
后端应用的初始版本只能直接从 Agent Search 提取结果。更新后的应用还将调用智能体。此智能体结合 Gemini 的输出与自身工具,根据输入提示从 Agent Search 或 Wikipedia 获取信息并生成回答。
在此任务中,您将更新后端应用代码,添加一个额外的入口点,用于通过查询请求调用 LangChain 智能体并返回智能体的响应。
在 IDE 终端窗口中运行以下命令,将新的入口点代码附加至 app.py 文件中:
将后端应用配置为使用您之前创建的 LangChain 智能体。
将下方命令中的字符串 {YOUR_LANGCHAIN_AGENT_ID} 替换为您在上一个任务中从笔记本单元复制的智能体 ID 值,并在 IDE 终端窗口中运行该命令。
请务必移除 sed 命令中的大括号。
如需在 IDE 中查看代码,请在 IDE 导航菜单中点击 ,然后选择
IDE-DEV/ag-web/app/app.py 文件。
在增强版的后端应用中:
LANGCHAIN_AGENT_ID,从 Agent Runtime 中检索 remote_agent 的句柄。/ask_gemini 端点,用于定义 ask_gemini() 函数。query 参数传递给 LangChain 智能体 (remote_agent),并返回该智能体的响应。切换到后端应用文件夹:
运行以下脚本,在指定的 Cloud Run 区域中重新部署应用:
您可以通过访问应用的 Cloud Run 端点来测试应用功能。
复制上一步中生成的应用端点网址,并在新的浏览器标签页中前往该网址。
应用加载后,首页会显示 Welcome to the ag-web backend app(欢迎使用 ag-web 后端应用)。
在浏览器的网址栏中,将以下路径附加至网址末尾:
该应用将返回智能体从您之前创建的 Agent Search 数据存储区中提取的结果。
在浏览器的网址栏中,将路径替换为:
该应用将返回智能体从您在笔记本中配置的 Wikipedia API 中提取的结果。
Flutter 是一个开源的多平台应用开发框架。借助该框架,您只需编写一套代码即可同时支持在 Android、iOS、Web、macOS、Windows 和 Linux 上运行。Flutter 应用使用 Dart 编程语言开发。
在本实验中,您将使用 Web 作为目标平台,以便将 Flutter 应用部署为 Web 应用并通过浏览器访问。
在此任务中,您将使用 Flutter 创建一个简单的聊天应用,更新代码,并将其作为 Web 应用进行构建和运行。
在 IDE 终端中,前往您的主目录并运行以下命令:
flutter create 命令会为新的 Flutter 项目创建其运行所需的所有文件、文件夹和配置。
如需在 IDE 中查看默认聊天应用代码,请前往 IDE-DEV/chat_app 文件夹。
如果系统提示您信任该文件夹中文件的作者,请点击 Yes, I trust the authors(是,我信任这些作者)。
以下是对 chat_app 文件夹内容的简要概述:
| 文件夹/文件 | 说明 |
|---|---|
| chat_app | 项目根文件夹,内含构成 Flutter 应用的子文件夹和文件。 |
| android/ios/linux/macos/web/windows | 内含专用于特定平台的文件,即在各受支持平台上运行 Flutter 应用所需的文件。 |
| lib | 内含核心应用 Dart 文件,包括功能和界面。 |
| test | 内含用于测试应用 widget 的 Dart 测试。 |
| pubspec.yaml | 内含应用依赖项、Flutter 版本和其他配置设置。 |
| analysis_options.yaml | 内含针对应用的静态分析配置。 |
我们来查看一下 Flutter 应用的入口点文件 main.dart。
在探索器菜单中,点击 IDE-DEV/chat_app/lib/main.dart 文件将其打开。
这是 Flutter 应用的入口点。在执行初始化任务后,此文件中的代码会使用 Material 组件构建应用的界面,并设置应用的名称、主题和其他配置。
Flutter 使用 widget 的概念,即用于构建应用的声明式类。在 Flutter 中,您可以通过组合 widget 来构建更复杂的 widget,从而形成 widget 树并创建布局。如需详细了解如何在 Flutter 中构建界面,请查看此文档。
此文件包含用于构建应用的 widget 的类,具体包括:
MyApp 类:聊天应用的根 widget。MyHomePage 类:通过 _MyHomePageState 类创建应用主页面。_MyHomePageState 类:负责构建应用的界面并更新界面状态。在接下来的子任务中,我们将随着聊天应用的构建,逐步替换这些类中默认生成的代码。
首先,更新应用名称。在 MyApp 类的第 14 行,更改 title 属性的值:
在 _MyHomePageState 类的第 58 行,删除 int _counter = 0; 行和 _incrementCounter() 函数,并添加以下属性:
这些属性用于接收用户输入的文本提示、存储用户输入和后端应用响应以供显示,并保存后端应用 Cloud Run 服务的主机名。
在该类中添加 initState() 方法:
此方法会在 State 对象创建时执行初始化。在聊天应用中,我们通过调用 _loadConfig() 方法来加载文件的内容,该方法将在后续步骤中实现。
在该类中添加 _loadConfig() 方法:
此方法会检索聊天应用配置文件的内容,该配置文件以 JSON 对象的形式存储 Cloud Run 后端应用主机名的值。我们将在本实验的后续部分创建此文件。该方法会将值存储在之前创建的内部 _cloudRunHost 属性中,并构建 widget 界面。
在该类中添加 _sendMessage() 方法:
此方法会检索用户输入的提示文本,并将其添加到对话面板中显示的消息列表中。它会向 Cloud Run 后端服务端点网址发送带有输入提示的 HTTP GET 请求,并显示该服务返回的响应。
上面的代码会构建一个指向 Cloud Run 后端主机端点的网址,提示文本作为查询参数包含在其中。HTTP GET 请求随后会发送到相应端点。在收到状态代码为 200 的响应后,系统会对其进行解码并添加到消息列表中,以便在聊天界面中显示。如果响应未成功或发生异常,系统会将状态代码或异常信息添加到消息列表并加以显示。
将 _MyHomePageState 类中现有的 build 方法替换为以下代码,以构建聊天应用界面:
build 方法描述了聊天应用的界面。它会根据配置和当前状态创建一个 widget 树,然后由 Flutter 框架将其渲染到屏幕上。在此聊天应用界面中,代码以列的形式显示聊天消息,同时提供一个文本字段和发送按钮供用户输入提示。用户输入的消息(提示)呈现在蓝色框中,而应用(聊天机器人)返回的回答或错误消息呈现在灰色框中。
当用户在聊天应用中点击 Send(发送)或在文本字段中输入提示后按 Enter 键时,系统将调用 _sendMessage() 回调方法。
所添加的代码依赖于 Dart 和 Flutter SDK 中的特定库或软件包。
在 main.dart 文件开头、现有 import 语句的下方添加以下 import 语句,导入这些软件包:
在 IDE 导航菜单中依次点击文件 > 保存,保存对应用所做的更改。
pubspec.yaml 文件指定了 Flutter 应用的项目元数据、软件包依赖项和资产。
在 IDE 的“探索器”窗格中选中 pubspec.yaml 文件并进行修改。该文件位于 chat_app 文件夹中。
在 dependencies 部分 cupertino_icons 字体库的下方,添加 http 软件包依赖项:
滚动到 pubspec.yaml 文件中的 flutter 部分,并取消注释第 63 行。在 assets 下添加 assets 文件夹,并保持正确的空格缩进:
这会配置资产文件夹,我们将在此文件夹中存储应用的 config.json 文件。
在 IDE 导航菜单中依次点击文件 > 保存,保存对 pubspec.yaml 文件所做的更改。
Flutter 应用将与您之前在此实验中部署的 Reasoning Engine 智能体集成。为实现集成,您需要将 Flutter 应用关联到您构建并部署到 Cloud Run 的后端应用的端点。
您可能已经注意到,_sendMessage() 方法中的代码会检查 _cloudRunHost 属性是否为空,或者是否未在名为 assets/config.json 的文件中配置。在这项子任务中,我们会将该文件添加到 Flutter 应用中。
首先,提取后端应用的 Cloud Run 端点主机名,并将该值存储在环境变量中。
在 IDE 终端窗口中运行以下命令:
在 Flutter 聊天应用主目录中创建 /assets 目录:
在 /assets 目录中创建 config.json 文件:
若要验证所作更改,请刷新 IDE 的探索器菜单中的内容,然后点击 IDE-DEV/chat_app/assets/config.json 文件将其打开。验证 cloudRunHost 配置条目值是否已更新为 Cloud Run 后端应用主机名的值。
现在,Flutter 应用配置已完成,您可以构建和部署该应用了。在本实验中,为了以 Web 应用的形式运行该应用,我们将使用 Fwr,这是一款针对 Flutter Web 的开发服务器。
确保您位于 Flutter 应用文件夹中。在 IDE 终端窗口中运行以下命令:
运行以下命令提取应用项目依赖项:
运行以下命令构建项目并启动 Web 服务器:
等待服务器启动并部署 Flutter 应用。启动后,该命令的输出应类似于以下内容:
我们来测试一下 Flutter 应用的功能。
从实验凭证面板中复制实时服务器网址,然后在无痕式浏览器窗口的新标签页中打开该网址,以访问该 Flutter 应用。
等待几秒钟,直到聊天应用加载完毕。
在底部的消息输入框中输入以下内容:
几秒钟后,后端智能体返回的回答就会显示在应用中。
在消息输入框中输入以下内容,以测试应用和智能体:
几秒钟后,后端智能体返回的回答就会显示在应用中。
聊天应用会调用后端应用的 /ask_gemini Cloud Run 端点,后者随后调用 LangChain 智能体。该智能体通过 Gemini 从 Agent Search 数据存储区获取结果并返回响应。
如需查看将 Flutter 应用切换为移动端布局的效果,请将浏览器窗口调整到接近移动设备的大小:
这表明 Flutter 应用可根据屏幕或窗口大小做出相应调整。Flutter 提供各种 widget 和软件包,能让您的应用根据设备配置灵活调整,实现响应式和自适应效果。
如需验证是否已完成以下目标,请点击检查我的进度:
完成实验后,请点击结束实验。Google Skills 会移除您使用过的资源并为您清理账号。
系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交。
星级的含义如下:
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
在本实验中,您完成了以下操作:
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验