概覽
歡迎!
如果您是應用程式開發人員,有興趣學習如何使用人工智慧構建新型應用程式體驗,那麼您來對地方了!從 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 和 AI 一起成長
- 探索 構建由 Gemini 提供支援的 Flutter 應用程式 程式碼實驗室。
- 查閱 Firebase 中的 Vertex AI 文件
如果您遇到困難,請線上和麵對面地與其他 Flutter 社群成員聯絡!
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中新增以下行一樣簡單。
或者,您可以使用 Genkit 的 startFlowServer() 工具建立獨立的 express 伺服器。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 中所示的模式與客戶端整合。
完成後註冊您的應用程式!
我們很樂意看到您的作品,所以完成後請使用此表格註冊您的應用程式。