
概览
欢迎!
如果您是应用程序开发人员,有兴趣学习如何使用人工智能构建新型应用程序体验,那么您来对地方了!从 4 月 23 日到 5 月 14 日,我们将发布新资源,在线回答问题,并直播我们的项目开发过程——所有这些都是为了帮助您开始在应用程序中应用人工智能。
注册!

初学者套件
Angular + ViF
您是否对 JavaScript 略知一二,并希望尝试构建一个使用智能代理的 Web 应用程序?通过 Angular 和 Firebase 中的 Vertex AI (ViF),您可以完全使用 JS,利用 Google Gemini 模型的强大功能为 Web 构建代理应用程序。
尝试一下!
初学者套件
Flutter + ViF
您是否对 Flutter 略知一二,并希望尝试构建一个使用智能代理的多平台应用程序?通过 Flutter 和 Firebase 中的 Vertex AI (ViF),您可以完全使用 Dart,利用 Google Gemini 模型的强大功能为多个平台构建代理应用程序!
尝试一下!
初学者套件
Angular + Genkit
如果您对 Angular 有所了解,并希望学习如何构建驻留在服务器上的智能代理,那么 Firebase Genkit 可能是适合您的解决方案。了解如何将 Angular 客户端与用 TypeScript、Python 或 Go 编写的智能代理工作流结合起来。此技术栈对于个人开发者和团队都很有趣!
尝试一下!
初学者套件
Flutter + Genkit
如果您对 Flutter 有所了解,并希望学习如何构建驻留在服务器上的智能代理,那么 Firebase Genkit 可能是适合您的解决方案。了解如何将 Flutter 客户端与用 Dart 编写的智能代理工作流结合起来。
尝试一下!2025 年 4 月 17 日,星期四
所有时间均为太平洋标准时间 (PST)
09:00 - 11:00
Flutter 可观察性直播:使用 Flutter 构建 Agentic 应用
Flutter 可观察性又回来了!观看 Craig Labenz 与 Andrew Brogdon 讨论并探索 Flutter 中由 AI 驱动的 Agentic 应用。
演讲者
Andrew Brogdon,开发者关系工程师
Craig Labenz,开发者关系工程师
2025 年 4 月 18 日,星期五
所有时间均为太平洋标准时间 (PST)
11:00 - 13:00
使用 Angular 和 Genkit 实时构建 Agentic 应用!
加入 Angular 团队的 Devin,他将使用 Angular 和 Genkit 实时编写一个 AI 驱动的应用程序,以交互方式创建图画小说。这将是一个有趣的环节……您不想错过它
演讲者
Mark Thompson,开发者关系工程师
Devin Chasanoff,开发者倡导者
2025 年 4 月 24 日,星期四
所有时间均为太平洋标准时间 (PST)
09:00 - 11:00
Flutter 可观察性直播:使用 Flutter 构建 Agentic 应用
观看 Andrew Brogdon 和 Craig Labenz 这次也许真的会编写一些代码,以在 Flutter 中构建 Agentic 体验。
演讲者
Andrew Brogdon,开发者关系工程师
Craig Labenz,开发者关系工程师
常见问题
经常被问到的
问题
什么是“使用 Flutter 和 Angular 构建 Agentic 应用程序”?
“使用 Flutter 和 Angular 构建 Agentic 应用程序”是一个为期 3 周的在线学习系列,旨在教育、启发和赋能开发人员使用 Google 工具创建下一代应用程序体验——Agentic 应用程序结合了大型语言模型(LLM)与目标和工具来执行任务,正变得高质量应用程序的关键。
什么时候举行?
学习系列的项目提交将于 2025 年 4 月 23 日至 2025 年 5 月 14 日开放。
我需要注册才能参与吗?
是的,如果您希望您的项目有机会在此次活动的宣传内容中以及 Google I/O 等活动中展示,并每周收到包含更多学习资源、新内容以及更多与社区联系方式的电子邮件,您应该通过表格注册并提交您的项目。
我需要做什么?
- 注册活动
- 选择适合您的路径(例如 Flutter + Genkit,或 Angular + Firebase 中的 Vertex AI)。
- 下载初学者套件并确定一个想法。
- 努力开发,并加入我们的直播和论坛,提出问题。
- 注册您完成的应用程序
快速入门
初学者套件
我们正在发布四个使用 Genkit 和 Firebase 中的 Vertex AI 的开源 Flutter 和 Angular 初学者项目。它们旨在为您提供 Agentic 体验的结构,您可以轻松理解、修改和重新利用。
选择并下载适合您的套件,确定一个想法,努力开发,然后提交您完成的应用程序!


Angular + Firebase 中的 Vertex AI

Flutter + Firebase 中的 Vertex AI

Angular + Genkit

Flutter + Genkit
Flutter + Firebase 中的 Vertex AI 路径
在此路径中,您将使用 Dart 代码将 Gemini API 集成到 Flutter 应用程序中,无需运行任何服务器。Firebase 中的 Vertex AI 会为您处理所有服务器端管理和访问控制。
在此初学者套件中,您将探索 Gemini 与 Flutter 应用程序交互的能力,包括响应用户书面对话请求来更新应用程序状态,以及响应用户与应用程序 UI 交互。
通过此初学者套件,您可以学习如何使用系统提示为代理定义目标,如何使用工具调用让您的代理能够与外部世界交互,以及如何围绕代理提供的流数据构建用户体验。

Flutter 和 Firebase 中的 Vertex AI 如何协同工作
Firebase 中的 Vertex AI 使在 Flutter 中使用 Gemini API 变得非常容易。使用 FirebaseVertexAI.instance.generativeModel
实例化模型,使用 model.startChat()
从生成的模型启动聊天会话,然后您可以使用 chatSession.sendMessageStream(Content.text(message))
从 Gemini 获取单词和函数调用的流。
入门
要开始使用此入门套件,请克隆 flutter/demos 仓库
$ git clone https://github.com/flutter/demos
在检出的 demos
目录中,cd 进入 vertex_ai_firebase_flutter_app 目录。安装 flutterfire 命令,并使用它配置您的 Flutter 应用程序以使用 Firebase 中的 Vertex AI。
$ flutter pub global activate flutterfire_cli
$ rm lib/firebase_options.dart
$ flutterfire configure
有关更多详细信息,请参阅 README.md 文件。
此初学者套件展示了一个最小的集成,只向 Gemini 公开了一个工具,一个名为 set_color
的工具。初学者套件处理了流式响应的集成问题,例如确保用户在之前的对话线程完成之前不会开始新的对话线程。
您可以在演示的 GeminiChatService sendMessage 方法中看到它是如何实现的。对于定义方法,您在生成模型实例化时传递方法定义,然后解析从 Gemini 返回的方法调用。您可以在 GeminiTools setColorFuncDecl 中看到方法声明的实现,并在 GeminiTools handleSetColor 中看到函数调用的解析。
引导 Gemini 使用工具并帮助用户选择颜色所需的系统提示可以在 assets/prompts/system_prompt.md 中看到。当模型在 geminiModel 函数中实例化时,此提示会加载到正在运行的 Gemini 模型实例中。
扩展向 Gemini 公开的工具涉及创建更多函数定义,将它们添加到 Gemini 模型,解析从 Gemini 返回的函数调用,最重要的是,更新系统提示以解释 LLM 应如何利用新添加的功能。
该入门套件还显示了 LLM 和应用程序之间对话的低级跟踪,以便您更好地了解函数调用何时以及如何集成到对话中。
如果您想了解此代码库的构建过程,请随时探索 构建由 Gemini 提供支持的 Flutter 应用程序 代码实验室。您可以查阅 Firebase 中的 Vertex AI 文档,特别关注 使用 Gemini API 进行函数调用 部分。
机器设置说明链接
克隆入门套件后,您的机器上只需要 Flutter 和 Firebase。如果您还没有,请按照这些入门指南安装正确的工具
然后按照这些说明创建项目
- 通过 Firebase 控制台创建 Firebase 项目。
- 使用
flutterfire configure
将 Firebase 添加到您的 Flutter 应用程序。
一些可以尝试的想法
扩展此代码库的几个想法
- 调色板生成:添加一个生成匹配或互补颜色的函数
- 语音输入:集成语音转文本以实现口头颜色描述
- 颜色历史管理:添加用于命名、保存或删除颜色的函数
- 导出功能:允许用户将颜色导出为不同的格式
- 高级分析:跟踪哪些颜色描述对 LLM 来说最难解释
完成后注册您的应用程序!
我们很乐意看到您的作品,所以完成后请使用此表格注册您的应用程序。
Flutter + Genkit 路径
Firebase SDK 中的 Vertex AI 是使用 Flutter 构建 Agentic 应用程序的绝佳方式。它是无服务器的,因此您无需管理自己的基础设施。您可以通过从 pub.dev 添加 firebase_vertexai 将其集成到您的 Flutter 应用程序中,这样您的代码就可以直接在 Flutter 项目中用 Dart 编写。它具有 AppCheck 集成,可以防止未经授权的客户端滥用 API。如果您想快速开始使用 Flutter 构建 Agentic 应用程序,Firebase 中的 Vertex AI 是您的首选。
如果是这样,那么何时以及为何您会考虑 Flutter + Genkit 项目呢?
首先,截至本文撰写之时,Firebase SDK 中的 Vertex AI 仅限于少数模型:Gemini 和 Imagen。您无法访问其他可用的 LLM。Firebase 中的 Vertex AI 与您的 Flutter 应用程序紧密耦合,如果您需要更改您构建的 Agentic 体验中的数据流,则很可能需要发布整个客户端应用程序的更新版本。
Genkit 是一个开源工具包,旨在帮助您在 Web 和移动应用程序中构建 AI 驱动的功能。其主要优势在于其多功能性和灵活性。Genkit 提供了一个统一的接口,用于集成来自 Google、OpenAI、Anthropic、Ollama 等的 AI 模型,因此您可以探索并选择最适合您需求的模型。
Genkit 是一个服务器端工具包,因此您可以即时更改,只要面向客户端的 API 保持不变,最终用户就不会注意到。此外,由于 Genkit 流作为标准 HTTPS 端点部署——无论是部署在服务器上还是无服务器——Genkit 流可以被任何可以进行网络调用的客户端访问。
最后,它还支持多种流行的服务器端语言:JavaScript、Python 和 Go。
无论您是构建聊天机器人、智能代理、工作流自动化还是推荐系统,Genkit 都能处理 AI 集成的复杂性,让您专注于创建令人难以置信的用户体验。
使用下面的入门套件,您可以构建类似这样的东西
我的打包清单:更智能地打包,而不是更辛苦。
为打包而烦恼?忘记必需品?希望有人能为您代劳?向我的打包清单问好!
告诉应用程序
- 你要去哪里。
- 你要在那里呆多久。
- 任何服装需求(例如“商务正装”或“海滩休闲”)。
我们的智能代理会获取您目的地的最新天气预报,并生成一份完全根据您的旅行量身定制的个性化打包清单!
但是等等,还有更多!
- 互动清单:轻松追踪您已打包的物品。可自定义的提示和工具。
- 一键购物:缺少一些物品?点击“购买缺失物品”按钮,Agentic 应用会为您处理购物!(注意:此演示模拟购物部分。抱歉,您不会通过构建此应用获得任何夏威夷衬衫。)




Flutter 和 Genkit 如何协同工作
首先,Flutter
这是您的开发人员将构建并与之交互的应用程序。该图显示了用于检索信息和向用户呈现信息、填写打包清单以及要求代理完成购买的屏幕。
现在,Genkit
这里是应用程序“大脑”的所在地。当 Flutter 应用程序向 Genkit 后端发送包含一些数据的请求时,它会发送到一个特定的“流”来处理任务。该流处理数据并将响应发送回 Flutter 应用程序。工具是语言模型可以用来执行特定任务以实现其目标的专门助手。语言模型的知识仅限于其训练数据,因此工具赋予它们与“外部世界”事物交互的能力。例如,检索实时数据或执行操作。工具通常是其他 API 和函数的包装器。

最后,将它们组合在一起……
用户提供旅行详情:用户打开 Flutter 应用并导航到打包清单功能。他们在主屏幕输入目的地(“火奴鲁鲁”)、旅行时长(“2 天”)和任何偏好(“我想穿夏威夷衬衫!”),然后点击按钮生成打包清单。
应用请求打包清单:Flutter 应用获取此信息,将其格式化为 JSON,并将其发送到 Genkit 后端,特别是调用 PackingHelperFlow
。
后端生成清单:Genkit 后端接收请求。PackingHelperFlow
运行,使用工具获取位置坐标 (GetLatLong
)、获取天气 (GetWeather
) 和查找图像 (GetImage
)。然后,它处理这些数据以及用户的偏好,以生成建议的打包清单。
应用显示清单:Genkit 将生成的清单、天气信息和图像 URL 作为 JSON 发送回 Flutter 应用。应用解析此数据并显示第二个屏幕,向用户展示他们的个性化打包清单(例如,“夏威夷衬衫:2 件”)。
用户决定购买:用户勾选清单上所有已有的物品,然后可以点击按钮告诉代理开始购买剩余物品。
应用请求购买:Flutter 应用获取选定的物品(例如,夏威夷衬衫,2 件),将其格式化为 JSON,并将其发送到 Genkit 后端,这次调用 PurchaseFlow
。
后端处理购买:Genkit 后端接收购买请求。PurchaseFlow
运行,使用 ShoppingTool
查找特定产品详细信息,确认价格,并计算总成本,模拟订单。
应用显示确认:Genkit 将订单确认详细信息(订购物品、价格、总成本)作为 JSON 发送回 Flutter 应用。应用解析此数据并显示最终屏幕,向用户展示订单确认和总计($302.35
)。
Flutter 应用
用户界面
TravelerFormScreen:
此屏幕收集用户的旅行目的地、时长和偏好,以启动打包清单生成。PackingList Screen:
此屏幕显示根据从后端收到的旅行详细信息生成的打包清单项目和数量。OrderConfirmationScreen:
此屏幕显示确认详细信息,包括购买的物品、价格和总成本,在“代理”代表用户完成购买后。
模型
每个模型都代表应用程序中的数据,这些模型往往与特定屏幕相匹配
TravelerFormModel:
用于存储与用户即将进行的旅行相关的数据的模型。ItemModel:
表示需要打包的物品的模型PackingListModel:
表示用户打包清单的模型,包括物品列表OrderConfirmationModel:
表示订单确认的模型
连接到 Genkit
Genkit
是一个辅助类,用于管理和抽象 Genkit 流(网络)对 Genkit 后端服务器的调用。它还处理响应的解析。因此,除非出现错误,否则这些方法会返回一个对象,例如 OrderConfirmationModel
和 PackingListModel
,应用程序可以立即使用它们。
Genkit
流程
入门套件中包含两个流程。您可以添加其他流程或调整每个流程中已有的提示
-
PackingHelperFlow:
此流程从 Flutter 应用程序接收包含用户输入(目的地、持续时间、偏好)的 JSON。它使用各种工具(见下文)获取用户提供位置的天气预报。它根据用户输入生成服装列表,对其进行分项,使用另一个工具获取位置的英雄图像,然后将所有内容打包并发送回 Flutter 应用程序。 -
PurchaseFlow:
该流程接收用户想要购买的物品列表。对于每件物品,“代理”使用ShoppingTool
从知名品牌中查找该物品并代表用户购买。它会发回一个 JSON 确认,包括总价和每个订购物品的详细信息(名称、数量、单价、该物品的总价)。Flutter 应用程序使用它来显示订单确认屏幕。
工具
Genkit 和 Flutter 入门套件中包含 4 个工具。每个工具都是完全模块化的,您可以根据需要修改这些工具以适应每个用例
-
GetLatLong:
接收位置字符串,例如“Honolulu”,并调用地理编码 API 获取精确的纬度和经度 -
GetWeather:
接收位置坐标(来自 GetLatLong)并调用天气 API 获取天气预报(“多云……70-80 度”) -
GetImage:
使用位置名称在图像 API 中搜索相关照片。 -
ShoppingTool:
调用一个假设的电子商务/购物 API,在该 API 中找到产品,并模拟下订单。
代码仓库分解
flutter_frontend/
├─ pubspec.yaml # Flutter app dependencies
├─ analysis_options.yaml
├─ lib/
│ ├─ models/ # Data models that are used throughout the app
│ │ ├─ item_model.dart
│ │ ├─ packing_list_model.dart
│ │ ├─ order_confirmation_model.dart
│ │ ├─ traveler_form_model.dart
│ ├─ screens/ # All of the screens in the app
│ │ ├─ components.dart
│ │ ├─ order_confirmation.dart
│ │ ├─ packing_list.dart
│ │ ├─ traveler_form.dart
│ ├─ settings/
│ │ ├─ config.dart # Configure Genkit Server endpoint
│ │ ├─ styles.dart
│ │ ├─ theme.dart
│ ├─ main.dart # Flutter client app's entrypoint
│ ├─ genkit.dart/ # Class for making network calls to Genkit
genkit_backend/
├─ src/
│ ├─ ai.js # Configure a Genkit instance
│ ├─ app.js # Genkit app server's entrypoint
│ ├─ config.js # Pulls API keys from environment variables
│ ├─ tools/ # Tools / Function Calls
│ │ ├─ latlong.js
│ │ ├─ shopping.js
│ │ ├─ unsplash.js
│ │ ├─ weather.js
│ ├─ flows/ # Flow definitions
│ │ ├─ purchase.js
│ │ ├─ packingHelper.js
├─ package.json # Node dependencies
您需要 3 个不同的 API 密钥才能启动此初学者套件
- Gemini API 密钥(使用 Gemini 模型需要)
- OpenWeather API 密钥(LatLong 和 Weather 工具需要)
- Unsplash 开发者访问密钥(Unsplash 工具需要)
一些可以尝试的想法
准备好构建您的 Agentic Flutter + Genkit 应用程序了吗?以下是一些想法
微小更改
- 调整一些现有提示以获得不同的输出和行为
- 修改流程:您能否让其中一个流程返回一些它尚未提供的额外信息?
- 修改其中一个工具以获取不同的数据或执行不同的操作。
中等更改
- 添加另一个流程。用户收到订单确认后,第三个流程可能会做什么?
- 添加另一个对代理有用的工具
- 将 ShoppingTool 与真实的购物 API 集成
- Genkit 赋予您访问不同 LLM 的灵活性,所以也许可以尝试不同的模型。
重大更改,完全重构应用
- 一款旅行规划应用程序,可根据用户偏好、天气和当地旅游景点生成度假行程。该应用程序将如何查找和预订当地景点?
- 一款烹饪助手应用程序,可根据用户偏好和现有食材生成食谱。该应用程序如何确定现有食材?用户可以直接拍摄冰箱的照片吗?该应用程序如何帮助用户获取额外食材?
- 将 ShoppingTool 与真实的购物 API 集成
- 思考可以通过 Agentic 应用程序解决的日常问题。
请记住,一旦您更新了 Genkit 后端……也要更新您的 Flutter 应用程序!入门套件版本有点像旅行影响者与 Flutter 应用程序开发人员的结合。所以,尽管加载新数据,修复小部件,给它涂上新漆,随心所欲,但最重要的是让它成为您自己的!
完成后注册您的应用程序!
我们很乐意看到您的作品,所以完成后请使用此表格注册您的应用程序。
更多学习方式
此入门套件仅触及了您可以使用 Flutter 和 Genkit 构建的表面。还有更强大的功能,包括
- 中断以暂停生成并返回控制权给用户。然后,准备好后再次恢复生成。
- RAG(检索增强生成):一种用于将外部信息源合并到 LLM 响应中的技术。
准备好更深入地探索 Flutter + Genkit 了吗?查看这些其他项目
- 指南针 AI 旅行规划应用程序:这是一个使用 Flutter、Genkit 和 Firebase Data Connect 从旅行计划数据库中查找理想行程的旅行演示。
- 绿拇指应用程序:Flutter Fix-in Warehouse 示例演示了如何结合使用 Flutter 和 Genkit 构建具有以下功能的生成式 AI:服务器端工具调用、服务器到客户端工具调用(也称为 Genkit 中断)、检索增强生成(也称为 RAG)
Angular + Firebase 中的 Vertex AI 路径
世界各地的 Web 开发人员都渴望构建下一代优秀的 Web 应用程序,但往往不知道该选择哪条路径或从何开始。Firebase 中的 Vertex AI 提供了一种安全的方式,让您的 Web 客户端可以与 Vertex AI 提供的模型进行交互。
如果满足以下条件,请选择此路径
- 您熟悉 JavaScript(或 TypeScript)
- 您想构建客户端代理体验
请记住,这是针对客户端应用程序的,如果您想从服务器端连接到 Gemini 等模型,请考虑使用 Genkit,例如。
以下是您使用以下入门套件可以获得的内容,您可以构建一个类似于这个电子商务商店的应用程序,其中包含一个有用的代理,它将回答问题并通过聊天为您执行一些操作。

Angular 和 Firebase 中的 Vertex AI 如何协同工作
由于 Angular 是用于构建 Web 应用程序的框架,它将充当您的用户界面 (UI)。使用 Angular 的 Firebase 库 (AngularFire),应用程序连接到 Firebase 项目。通过 Firebase 中的 Vertex AI 功能,可以连接到模型以启动聊天会话并使用工具来赋能代理执行操作。
入门
代码可在 GitHub 上获取,您只需确保您的计算机上安装了 Angular 和 node。
安装编码工具后,您需要对 Firebase 进行一些设置才能访问 Firebase 中的 Vertex AI。
- 按照 步骤 1 创建项目和 Web 应用的说明进行操作。您无需添加任何 SDK,我们已为您完成此步骤。
以下是本地入门的方法——首先通过克隆仓库获取代码
# Clone using a password-protected SSH key.
git clone git@github.com:angular/examples.git
# Clone using the web url
git clone https://github.com/angular/examples.git
将代码下载到本地机器(或在 Firebase Studio 等云 IDE 中打开)后,导航到项目目录并安装依赖项
# Navigae into the project directory
cd examples/vertex-ai-firebase-angular-example
# Install the dependecies for the example.
npm install
在启动此示例之前,您需要进行代码更改
在 src/environments.ts 中添加您从 Firebase 控制台获取的项目设置。
export const environment = {
production: false,
firebase: {
apiKey: "<api-key>",
authDomain: "<your-app-domain>",
projectId: "<insert-project-id>",
storageBucket: "<storage-bucket-id>",
messagingSenderId: "<message-sender-id>",
appId: "<app-id>",
measurementId: "<measurement-id>"
},
};
完成应用程序所需的设置步骤后,您可以从命令行启动开发服务器来运行它
ng serve
您的应用程序将在 https://:4200
上可用。
应用程序运行后,尝试向购物代理提出以下问题
- 有哪些商品有库存?
- 最贵的商品是什么?
- 有素食选择吗?
应用程序的工作原理
此示例使用了一些 Angular 功能来与 Firebase 中的 Vertex AI API 进行交互。主要地,src/ai.service.ts
文件包含对 Vertex AI 的调用
const vertexAI = getVertexAI(this.firebaseApp);
在此示例中,我们为代理提供了访问某些工具的权限,以进一步扩展其功能。它可以使用的两个工具是访问库存和将物品添加到购物车。
这些是为此示例实现并作为 getGenerativeModel
函数的 tools
属性提供给代理的函数。
主要组件位于 src/app.component.ts
中——如果您想进一步研究代码,应该查看此文件中的代码。
一些可以尝试的想法
此入门套件仅是一个起点。您可以通过实现一些附加工具来进一步完善此示例,例如
- 过滤 UI 以匹配与代理的对话(例如,只显示纯素食选项会过滤 UI 以仅显示纯素食选项)。
- 构建一个完整的结账流程,以便代理不仅可以将商品添加到购物车,还可以启动结账过程。
Angular 的 Github 页面上还有更多 Agentic 应用程序可供查看。
完成后注册您的应用程序!
我们很乐意看到您的作品,所以完成后请使用此表格注册您的应用程序。
Angular + Genkit 路径
Angular 和 Genkit 是一个强大的组合,用于创建由 Gemini 提供支持的全栈应用程序。
Genkit 是一个开源框架,旨在简化构建、部署和监控生成式 AI 应用程序的整个生命周期,特别是使用 JavaScript 和 TypeScript,尽管 Genkit 也支持 Python 和 Go。它提供了一个高级抽象,专注于开发者体验和快速迭代。
Angular 是一个 Web 框架,赋能开发人员构建快速、可靠的应用程序。
Angular 提供了一些功能,可简化与 Genkit 的集成,包括
使用下面的入门套件,您可以构建像这样简单的聊天机器人应用程序,它回答通用用户问题并提供选项来响应代理。但是,您不仅限于聊天机器人!Genkit 的输入和输出模式非常适合发送和接收结构化数据,这些数据可以根据您的需要集成到客户端应用程序中。

Angular 和 Genkit 如何协同工作
将 Angular 与 Genkit 集成的步骤
-
定义 Genkit 流:注意客户端应用程序中使用的输入和输出模式。
export const chatFlow = ai.defineFlow( { name: 'chatFlow', inputSchema: z.object({ userInput: z.string(), sessionId: z.string(), clearSession: z.boolean() }), outputSchema: z.object({ agentResponse: z.string(), options: z.optional(z.array(z.string())) }), }, async ({ userInput, sessionId, clearSession }) => { // Prompt definition and other instructions go here const { text } = await chat.send({ prompt }); return parse(maybeStripMarkdown(text)); } );
-
添加公开您的流的服务器路由:
@genkit-ai/express
库公开了一个expressHandler
工具,它简化了过程。在 Angular SSR 应用程序中公开 Genkit 流就像在server.ts
中添加以下行一样简单。app.post('/chatFlow', expressHandler(chatFlow));
-
在 Angular 客户端访问数据:将 Genkit 客户端的
runFlow
工具与 Angular 资源 API 结合使用,可以轻松调用 Genkit 流并处理响应中返回的数据。agentResource = resource({ defaultValue: { agentResponse: '', options: [] }, request: () => this.userInput(), loader: ({request}): Promise
=> { return runFlow({ url: ENDPOINT, input: { userInput: request, sessionId: this.sessionId(), clearSession: this.clearSession() }}); } });
入门
想试试吗?我们开发了一个入门套件,您可以使用它开始开发自己的由 Genkit 提供支持的 Angular 应用程序。您需要 Node.js v20+ 和 npm,然后您可以按照以下步骤开始
- 从 Google AI Studio 获取 API 密钥
- 创建 API 密钥后,使用命令将
GEMINI_API_KEY
环境变量设置为您的密钥export GEMINI_API_KEY=<your API key>
- 使用以下命令克隆入门套件仓库
git clone git@github.com:angular/examples.git
- cd 进入根文件夹(
cd genkit-angular-starter-kit
) - 使用
npm install
安装依赖项 - 使用
ng serve
启动应用程序 - 导航到开发服务器以使用应用程序
入门套件中有什么
此入门套件包含您使用 Firebase Genkit 和 Angular 创建应用程序所需的一切,以构建您的下一个出色应用程序。
现有入门套件演示了如何使用 Genkit 流创建与代理的持久聊天会话。但是,您可以使用此仓库中的相同模式来创建运行您能想到的任何任意 Genkit 流的应用程序,该应用程序可以利用完整的 Genkit API(了解更多)。
入门套件还附带了一个返回当前日期和时间的示例工具。虽然这是一个简单的示例,但它演示了在 Genkit 中使用工具的模式,您可以按照此模式执行更高级的操作,例如发出 API 请求。
探索与构建
您可以通过更新现有流程或在 src/flows.ts
中创建自己的流程,然后向 src/server.ts
中的流程添加路由来定制应用程序。然后,您可以按照 src/agent.service.ts
中所示的模式与客户端集成。
完成后注册您的应用程序!
我们很乐意看到您的作品,所以完成后请使用此表格注册您的应用程序。