Frame Overlay
Key_Campain_Graphic_1200x628_01 1.png

概览

欢迎!

如果您是一位应用开发者,有兴趣学习如何使用 AI 构建新型应用体验,那么您来对地方了!从 4 月 23 日到 5 月 14 日,我们将发布新资源、在线答疑,并直播我们的项目开发过程——所有这些都旨在帮助您开始在您的应用中运用 AI。

注册!
steps_section.png

步骤

如何参与!

我们为不同技能水平和技术背景的开发者准备了学习路径。一旦您注册此活动

  • 选择适合您的路径。
  • 下载入门套件并确定一个想法。
  • 动手实践,并加入我们观看直播并在论坛提问。
  • 注册您完成的应用。
提交您的应用!
ang_vertex_1.png

入门套件

Angular + ViF

您是否对 JavaScript 有所了解,并想尝试构建一个使用智能体的网络应用?借助 Angular 和 Firebase 中的 Vertex AI (ViF),您可以使用 Google Gemini 模型的强大功能,完全用 JS 构建网络智能体应用。

立即试用!
flutter_vertex_1.png

入门套件

Flutter + ViF

您是否对 Flutter 有所了解,并想尝试构建一个使用智能体的多平台应用?借助 Flutter 和 Firebase 中的 Vertex AI (ViF),您可以使用 Google Gemini 模型的强大功能,完全用 Dart 构建多平台智能体应用!

立即试用!
ang_genkit_1.png

入门套件

Angular + Genkit

如果您对 Angular 有所了解,并想学习如何构建驻留在服务器上的智能体,那么 Firebase Genkit 可能是适合您的解决方案。了解如何将 Angular 客户端与用 TypeScript、Python 或 Go 编写的智能体工作流结合使用。这个技术栈对个人开发者和团队都很有趣!

立即试用!
flutter_genkit_1.png

入门套件

Flutter + Genkit

如果您对 Flutter 有所了解,并想学习如何构建驻留在服务器上的智能体,那么 Firebase Genkit 可能是适合您的解决方案。了解如何将 Flutter 客户端与用 Dart 编写的智能体工作流结合使用。

立即试用!

寻找社区!

活动日程

Event Schedule

2025 年 4 月 17 日,星期四

所有时间均为太平洋标准时间 (PST)

09:00 - 11:00

Observable Flutter 直播:使用 Flutter 构建智能体应用

Observable Flutter 回归!观看 Craig Labenz 与 Andrew Brogdon 共同讨论和探索 Flutter 中的 AI 驱动智能体应用。

演讲者

    Andrew Brogdon,开发者关系工程师

    Craig Labenz,开发者关系工程师

了解更多

2025 年 4 月 18 日,星期五

所有时间均为太平洋标准时间 (PST)

11:00 - 13:00

使用 Angular 和 Genkit 实时构建智能体应用!

加入 Angular 团队的 Devin,他将现场演示如何使用 Angular 和 Genkit 编写一个 AI 驱动的应用,该应用可交互式地创建图画小说。这将非常有趣……您一定不想错过!

演讲者

    Mark Thompson,开发者关系工程师

    Devin Chasanoff,开发者布道师

了解更多

2025 年 4 月 24 日,星期四

所有时间均为太平洋标准时间 (PST)

09:00 - 11:00

Observable Flutter 直播:使用 Flutter 构建智能体应用

观看 Andrew Brogdon 和 Craig Labenz 本次如何真正编写一些代码,以在 Flutter 中构建智能体体验。

演讲者

    Andrew Brogdon,开发者关系工程师

    Craig Labenz,开发者关系工程师

了解更多

常见问题解答

常见
问题

什么是“使用 Flutter 和 Angular 构建智能体应用”?

“使用 Flutter 和 Angular 构建智能体应用”是一个为期 3 周的在线学习系列,旨在教育、启发和赋能开发者使用 Google 工具创建下一代应用体验——智能体应用,它将大型语言模型 (LLM) 与目标和工具相结合以执行任务,对于高质量应用变得至关重要。

活动何时举行?

本学习系列的项目提交将于 2025 年 4 月 23 日至 2025 年 5 月 14 日开放。

我需要注册才能参与吗?

是的,如果您希望有机会让您的项目在本活动的宣传内容中展示,并在 Google I/O 等活动中展示,以及接收每周电子邮件,获取更多学习资源、新内容以及更多与社区联系的方式,您应该通过表格注册并提交您的项目。

我需要做什么?

  • 注册活动
  • 选择适合您的路径(例如 Flutter + Genkit,或 Angular + Firebase 中的 Vertex AI)。
  • 下载入门套件并确定一个想法。
  • 动手实践,加入我们观看直播并在论坛提问。
  • 注册您完成的应用

如何获取最新信息?

要了解所有最新新闻和公告,请注册接收更新直达您的收件箱,并关注

  • 关注 Flutter:TwitterLinkedInMediumYouTube
  • 关注 Firebase 上的 Angular:X、LinkedIn 和 YouTube
  • 关注 Firebase:X、LinkedIn 和 YouTube

快速开始

入门套件

我们正在发布四个开源的 Flutter 和 Angular 入门项目,其中包含 Genkit 和 Firebase 中的 Vertex AI。它们旨在为您提供智能体体验的结构,以便您轻松理解、修改和重新利用。

选择并下载适合您的套件,确定一个想法,动手实践,然后提交您完成的应用!

Starter Kits Header Image
flutter-content-card-background

Angular + Firebase 中的 Vertex AI

flutter-content-card-background

Flutter + Firebase 中的 Vertex AI

flutter-content-card-background

Angular + Genkit

flutter-content-card-background

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。如果您尚未安装,请按照这些“开始使用”指南来安装正确的工具。

然后按照这些说明创建一个项目

一些尝试的想法

您可以扩展此代码库的几个想法

  • 调色板生成:添加一个用于生成匹配或互补颜色的函数
  • 语音输入:集成语音转文本功能以进行口头颜色描述
  • 颜色历史管理:添加用于命名、保存或删除颜色的函数
  • 导出功能:允许用户将颜色导出为不同格式
  • 高级分析:跟踪哪些颜色描述最难让 LLM 理解

完成后请注册您的应用!

我们很乐意看到您的作品,因此请在完成后使用此表格注册您的应用。

更多学习方式

我们有大量资源可帮助您开始并深入学习 Flutter 和 AI

如果您遇到困难,请在线或亲自与 Flutter 社区的其他成员联系!

Flutter + Genkit 路径

Firebase SDK 中的 Vertex AI 是使用 Flutter 开始构建智能体应用的绝佳方式。它是无服务器的,因此您无需管理自己的基础设施。您可以通过从 pub.dev 添加 firebase_vertexai 将其集成到您的 Flutter 应用中,这样您的代码就可以直接在 Flutter 项目中用 Dart 编写。它具有 AppCheck 集成功能,可防止未经授权的客户端滥用 API。如果您想快速开始在 Flutter 中构建智能体应用,Firebase 中的 Vertex AI 是您的首选。

如果是这样,那么您何时以及为何会考虑 Flutter + Genkit 项目呢?

首先,Firebase SDK 中的 Vertex AI 截至本文撰写时仅限于少数模型:Gemini 和 Imagen。您无法访问任何其他可用的大型语言模型 (LLM)。Firebase 中的 Vertex AI 与您的 Flutter 应用紧密耦合,如果您需要更改所构建的智能体体验中的数据流,您可能需要发布整个客户端应用的更新版本。

Genkit 是一个开源工具包,旨在帮助您在网络和移动应用中构建 AI 驱动的功能。其主要优势在于多功能性和灵活性。Genkit 提供了一个统一的接口,用于集成来自 Google、OpenAI、Anthropic、Ollama 等的 AI 模型,因此您可以探索并选择最适合您需求的模型。

Genkit 是一个服务器端工具包,因此您可以即时更改,只要面向客户端的 API 保持不变,最终用户就不会察觉。此外,由于 Genkit 流作为标准 HTTPS 端点部署(无论是在服务器上还是无服务器),任何可以进行网络调用的客户端都可以访问 Genkit 流。

最后,它还支持多种流行的服务器端语言:JavaScript、Python 和 Go。

无论您是构建聊天机器人、智能体、工作流自动化还是推荐系统,Genkit 都能处理 AI 集成的复杂性,让您可以专注于创造令人难以置信的用户体验。

使用下面的入门套件,您可以构建类似这样的东西

我的打包清单:更智能地打包,而不是更努力。

为打包而烦恼?忘记必需品?希望有人能为您代劳?向“我的打包清单”问好!

告诉应用

  • 目的地是哪里。
  • 停留时间有多长。
  • 任何着装要求(如“商务正装”或“沙滩休闲装”)。

我们的智能体将获取您目的地的最新天气预报并生成一份完全根据您的旅行量身定制的个性化打包清单!

等等,还有更多!

  • 互动清单:轻松跟踪您已打包的物品。可自定义的提示和工具。
  • 一键购物:缺少一些物品?点击“购买缺少物品”按钮,智能体应用会为您处理购物!(注意:此演示模拟购物功能。抱歉,构建此应用不会让您获得任何夏威夷衬衫。)

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 流(网络)调用。它还处理响应的解析。因此,除非出现错误,这些方法会返回 OrderConfirmationModelPackingListModel 等对象,应用可以立即使用。

Genkit

流程

入门套件中包含两个流程。您可以添加额外的流程,或调整每个流程中已有的提示。

  • PackingHelperFlow: 此流程从 Flutter 应用接收包含用户输入(目的地、持续时间、偏好)的 JSON。它使用各种工具(见下文)获取用户提供位置的天气预报。它根据用户输入生成服装清单,将其列出,使用另一个工具获取该位置的封面图片,然后将所有内容打包并发送回 Flutter 应用。
  • PurchaseFlow: 此流程接收用户想要购买的物品列表。对于每个物品,“智能体”使用 ShoppingTool 从热门品牌中查找物品并代表用户购买。它发回一个 JSON 确认,包括总价和每个订购物品的详细信息(名称、数量、单价、该物品的总价)。Flutter 应用使用此信息显示订单确认屏幕。

工具

Genkit 和 Flutter 入门套件中包含 4 个工具。每个工具都是完全模块化的,您可以根据每个用例的需求随意修改它们

  • GetLatLong: 获取位置字符串,例如“檀香山”,并调用地理编码 API 以获取精确的纬度和经度
  • GetWeather: 获取位置坐标(来自 GetLatLong)并调用天气 API 以获取天气预报(“多云转晴…70-80 度”)
  • GetImage: 使用位置名称在图像 API 中搜索相关照片。
  • ShoppingTool: 调用一个假设的电子商务/购物 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

          
        

机器设置说明链接

克隆入门套件后,您的机器上只需安装 Flutter 和 Firebase。如果您尚未安装,请按照这些“开始使用”指南来安装正确的工具。

您需要 3 个不同的 API 密钥才能启动并运行此入门套件

一些尝试的想法

准备好构建您的智能体 Flutter + Genkit 应用了吗?这里有一些想法
小改动

  • 调整一些现有提示以获得不同的输出和行为
  • 修改流程:您能否让其中一个流程返回一些它尚未提供的额外信息?
  • 修改其中一个工具以获取不同数据或执行不同操作。

中等改动

  • 添加另一个流程。在用户收到订单确认后,第三个流程可能会做什么?
  • 添加另一个对智能体有用的工具
  • shoppingTool 与真实的购物 API 集成
  • Genkit 允许您灵活访问不同的 LLM,因此可以尝试不同的模型。

大改动,完全重构应用

  • 一款旅行规划应用,根据用户偏好、天气和当地旅游景点生成旅行行程。该应用如何查找和预订当地景点?
  • 一款烹饪助手应用,根据用户偏好和现有食材生成食谱。该应用如何确定有哪些可用食材,用户可以直接拍冰箱照片吗?该应用如何帮助用户获取额外食材?
  • shoppingTool 与真实的购物 API 集成
  • 思考可以用智能体应用解决的日常问题。

请记住,一旦您更新了 Genkit 后端……也要更新您的 Flutter 应用!入门套件版本有点像旅行影响者与 Flutter 应用开发者的结合。因此,尽管加载一些新数据,修复小部件,给它涂上新油漆,做任何您想做的事情,但最重要的是,让它成为您自己的!

完成后请注册您的应用!

我们很乐意看到您的作品,因此请在完成后使用此表格注册您的应用。

更多学习方式

此入门套件仅触及了您可以使用 Flutter 和 Genkit 构建的冰山一角。还有更强大的功能,包括

准备好深入了解更多 Flutter + Genkit 项目了吗?查看这些其他项目

  • 指南针 AI 旅行规划应用:这是一个使用 Flutter、Genkit 和 Firebase Data Connect 从旅行计划数据库中查找理想行程的旅行演示。
  • 绿拇指应用:Flutter Fix-in Warehouse 示例展示了如何结合使用 Flutter 和 Genkit 构建一个生成式 AI,它具有以下功能:服务器端工具调用、服务器到客户端工具调用(即 Genkit 中断)、检索增强生成(即 RAG)

Angular + Firebase 中的 Vertex AI 路径

世界各地的网络开发者都热衷于构建下一个出色的网络应用,但往往不知道选择哪条路径或从何开始。Firebase 中的 Vertex AI 提供了一种安全的方式,让您的网络客户端可以与 Vertex AI 提供的模型进行交互。

如果满足以下条件,请选择此路径:

  • 您熟悉 JavaScript(或 TypeScript)
  • 您想构建客户端智能体体验

请记住,这是针对客户端应用的,如果您想从服务器端连接到 Gemini 等模型,可以考虑使用 Genkit。

以下是您使用此入门套件可以构建的内容,您可以构建一个包含有用智能体的电子商务商店,该智能体可以通过聊天回答问题并为您执行一些操作。

Angular 和 Firebase 中的 Vertex AI 如何协同工作

由于 Angular 是一个用于构建网络应用的框架,它将作为您的用户界面 (UI)。应用使用 Angular 的 Firebase 库 (AngularFire) 连接到 Firebase 项目。借助 Firebase 中的 Vertex AI 功能,可以连接到模型以开始聊天会话并使用工具赋能智能体执行操作。

开始使用

代码可在 GitHub 上获取,您只需确保您的计算机上安装了 AngularNode.js

  1. 如果您尚未安装,请安装 Node.js
  2. 按照这些说明安装 Angular

安装编码工具后,您需要对 Firebase 进行一些设置才能访问 Firebase 中的 Vertex AI。

  1. 按照步骤 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 中 - 如果您想进一步研究代码,应该查看此文件中的代码。

一些尝试的想法

此入门套件只是一个起点。您可以通过实现一些额外的工具来进一步扩展此示例,例如

  • 过滤用户界面以匹配与智能体的对话(例如,“只显示素食选项”会过滤用户界面以仅显示素食选项)。
  • 构建一个完整的结账流程,以便智能体不仅可以将物品添加到购物车,还可以启动结账过程。

Angular 的 GitHub 页面上还有更多智能体应用可供查看。

完成后请注册您的应用!

我们很乐意看到您的作品,因此请在完成后使用此表格注册您的应用

更多学习方式

我们有大量资源可帮助您开始并深入学习 Angular 和 AI

如果您遇到困难,请在线或亲自与 Angular 社区的其他成员联系!

Angular + Genkit 路径

Angular 和 Genkit 是一个强大的组合,可用于创建由 Gemini 提供支持的全栈应用。

Genkit 是一个开源框架,旨在简化生成式 AI 应用的整个构建、部署和监控生命周期,尤其适用于 JavaScript 和 TypeScript,Genkit 也支持 Python 和 Go。它提供了一个高层次的抽象,侧重于开发者体验和快速迭代。

Angular 是一个网络框架,赋能开发者构建快速、可靠的应用。
Angular 提供了一些简化与 Genkit 集成的功能,包括

  • 用于响应式消费异步数据的API
  • 服务器路由可轻松将 Genkit 流程暴露给客户端应用

使用下面的入门套件,您可以构建类似这个简单的聊天机器人应用,它可以回答用户的通用问题并提供响应智能体的选项。但是,您不限于聊天机器人!Genkit 的输入和输出模式非常适合发送和接收结构化数据,这些数据可以根据您的需要整合到客户端应用中。

Angular 和 Genkit 如何协同工作

将 Angular 与 Genkit 集成的步骤

  1. 定义 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));
                      }
                    );
    
                    
                  
  2. 添加暴露您流程的服务器路由:@genkit-ai/express 库暴露了一个 expressHandler 工具函数,它简化了该过程。在 Angular SSR 应用中暴露 Genkit 流程就像在 server.ts 中添加以下行一样简单。
                    
                      app.post('/chatFlow', expressHandler(chatFlow));
                    
                  
    或者,您可以使用 Genkit 的 startFlowServer() 工具函数创建独立的 Express 服务器。
  3. 在 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,然后可以按照以下步骤开始使用

  1. 从 Google AI Studio 获取 API 密钥
  2. 创建 API 密钥后,使用以下命令将 GEMINI_API_KEY 环境变量设置为您的密钥
                    
                      export GEMINI_API_KEY=<your API key>
                    
                  
  3. 使用以下命令克隆入门套件仓库
                    
                      git clone git@github.com:angular/examples.git
                    
                  
  4. cd 进入根文件夹(cd genkit-angular-starter-kit
  5. 使用 npm install 安装依赖项
  6. 使用 ng serve 启动应用
  7. 导航到开发服务器以使用该应用

入门套件中包含什么

此入门套件包含您使用 Firebase Genkit 和 Angular 构建下一个出色应用所需的一切。

现有入门套件演示了如何使用 Genkit 流程创建与智能体的持久聊天会话。但是,您可以使用此仓库中的相同模式来创建运行您能想象到的任何任意Genkit 流程的应用,这些流程可以利用完整的 Genkit API(了解更多)。

入门套件还附带了一个示例工具,可以返回当前日期和时间。虽然这是一个简单的示例,但它演示了在 Genkit 中使用工具的模式,您可以遵循此模式来执行更高级的操作,例如发出 API 请求。

探索与构建

您可以通过更新现有流程或在 src/flows.ts 中创建自己的流程来定制应用,然后在 src/server.ts 中添加暴露您流程的路由。然后,您可以按照 src/agent.service.ts 中所示的模式与客户端集成。

机器设置说明链接

克隆入门套件后,您的机器上只需安装 Angular。如果您尚未安装,请按照这些“开始使用”指南来安装正确的工具。

完成后请注册您的应用!

我们很乐意看到您的作品,因此请在完成后使用此表格注册您的应用。

更多学习方式

我们有大量资源可帮助您开始并深入学习 Angular 和 AI

如果您遇到困难,请在线或亲自与 Angular 社区的其他成员联系!