【文章翻譯】Announcing Genkit Dart 1.0: Build production-ready agentic apps with Dart and Flutter
【文章內容使用 Gemini 2.5 Flash 自動翻譯產生】
原文:https://flutter.dev/blog/announcing-genkit-dart-1-0
宣布 Genkit Dart 1.0:使用 Dart 和 Flutter 建構正式發行的代理應用程式
宣布 Genkit Dart 的穩定 1.0 版本發佈,這是一個用於使用 Dart 和 Flutter 建構由 AI 驅動的功能和代理工作流程的開源框架。
Dart 和 Flutter 讓您可以從單一程式碼庫為行動裝置、網頁和桌面建構高品質的應用程式。藉助 Genkit Dart,您可以將同樣的生產力帶到全端代理應用程式中。
今天,我們宣布 Genkit Dart 1.0,這是 Google 的開源框架的第一個穩定、可正式發行的版本,用於使用 Dart 建構由 AI 驅動的功能和代理。自今年稍早發佈 預覽版 以來,Dart 和 Flutter 社群的回饋幫助我們改進了 API 並擴展了用於正式發行工作負載的工具套件。
若要開始使用,請將 genkit 加入您的專案:
1 | dart pub add genkit |
您也可以安裝代理技能,為 Antigravity、Claude Code 和 Codex 等 AI 程式碼助理提供最新的 Genkit Dart API 和最佳實踐知識:
1 | npx skills add genkit-ai/skills |
為什麼選擇 Genkit Dart
Genkit 提供跨模型供應商的統一 API、伺服器和用戶端之間的端對端型別安全,以及用於測試和偵錯 AI 工作流程的本機工具。
使用一個 API 使用任何模型
Genkit 透過單一介面支援 Google Gemini、Anthropic Claude、OpenAI 和與 OpenAI 相容的模型。您可以將模型供應商註冊為 Plugin,並且可以在不重寫應用程式邏輯的情況下切換模型:
1 | final ai = Genkit(plugins: [googleAI(), anthropic()]); |
使用流程實現端對端型別安全
Genkit 讓您可以將 AI 邏輯包裝到流程中:強型別、可觀察的函數,易於測試並部署為 HTTP 端點。使用 schemantic 套件,您可以一次在 Dart 中定義資料模式,從模型生成結構化輸出,並在後端和 Flutter 應用程式之間共用這些精確的型別:
1 | // shared/lib/models.dart (used by both server and app) |
Dart 執行到哪裡,程式碼就執行到哪裡
因為您的 AI 邏輯是用標準 Dart 撰寫的,所以您可以透過熱重載快速疊代,並靈活地在適合您架構的任何地方執行程式碼:
- 直接在 Flutter 中:直接從您的應用程式呼叫模型,進行快速原型開發或自帶金鑰體驗(切勿在已發佈的用戶端應用程式中嵌入私有 API 金鑰)。
- 在 Dart 伺服器上:執行複雜的流程並將敏感的提示保留在後端,然後使用
defineRemoteAction從 Flutter 呼叫它們,如上所示。 - 在 Flutter 中使用遠端模型:將您的 AI 邏輯保留在 Flutter 應用程式中,同時透過輕量級 Genkit 後端路由模型請求,該後端保護您的 API 金鑰並強制執行授權:
1 | // server/bin/server.dart |
使用開發人員 UI 進行測試和偵錯
Genkit 包含一個本機開發人員 UI,用於測試流程、嘗試提示以及逐步檢查執行追蹤。使用 Genkit CLI 與您的 Dart 程序一起啟動它:
1 | genkit start -- dart run bin/server.dart |
專為代理工作流程而建構
自預覽版發佈以來,我們已擴展 Genkit Dart,使其具備為多步驟代理工作流程設計的功能,包括人工介入中斷、生成中介軟體、提示管理和正式發行遙測。
為模型提供人工介入工具
工具讓模型可以呼叫您的 Dart 函數來獲取資料或觸發動作,例如搜尋航班或預訂飯店。當動作需要使用者確認時,工具可以透過回傳 .interrupt(...) 而不是 .response(...) 來暫停生成循環:
1 | final bookHotel = ai.defineTool( |
將核准檢查放在工具內部可確保模型無法繞過它。當 generate 回傳 FinishReason.interrupted 時,您的 Flutter 應用程式可以提示使用者確認並從暫停的位置恢復執行。
使用中介軟體擴展生成
中介軟體直接掛鉤到 generate 循環中,以攔截模型呼叫、注入工具或修改請求和回應。使用 genkit 和 genkit_middleware,您可以將預先打包的功能(如自動重試、動態 SKILL.md 載入和工具核准規則)附加到任何 generate 呼叫:
1 | final ai = Genkit(plugins: [googleAI(), SkillsPlugin(), ToolApprovalPlugin()]); |
您也可以使用 defineGenerateMiddleware 編寫自訂中介軟體,用於記錄、快取或模型備援等跨領域邏輯。
使用 Dotprompt 管理提示
Dotprompt 讓您可以將提示範本、模型設定和輸入/輸出模式一起管理在 .prompt 檔案中。Genkit 會自動從您的 prompts/ 目錄載入提示,因此您可以在 Dart 中將它們作為可呼叫函數來調用:
1 | --- |
1 | final introPrompt = await ai.prompt('destinationIntro'); |
監控您正式發行的應用程式
當您準備部署時,genkit_otel 套件會使用 OpenTelemetry GenAI 語義約定匯出追蹤、令牌使用量和延遲指標,並直接與您現有的可觀察性後端整合:
1 | import 'package:dartastic_opentelemetry/dartastic_opentelemetry.dart'; |
接下來:有狀態代理和生成式 UI
除了穩定版 1.0 核心之外,我們正在 package:genkit/experimental.dart 導入下開發更進階的代理 API,以便您可以儘早試用並幫助設計它們。
有狀態代理將模型、工具、系統指令和狀態組合到一個 defineAgent 呼叫中。對話會使用會話儲存區在回合和應用程式重啟之間保持不變,您可以使用 remoteAgent 將任務委派給子代理,或透過 HTTP 公開代理以連接您的 Flutter 應用程式:
1 | import 'package:genkit/experimental.dart'; |
使用 A2UI 的生成式 UI 讓代理程式可以串流互動式 UI 介面,而不是純文字。藉助 genkit_a2ui,代理程式可以發出日期選擇器、表單和確認卡等組件,您的 Flutter 應用程式會將其逐步渲染為原生 Widget。請查看 A2UI 指南 以了解更多資訊。
開始使用
Genkit Dart 1.0 現已在 pub.dev 上提供。感謝 Dart 和 Flutter 社群中的每一個人,他們透過預覽版進行建構、報告問題並貢獻拉取請求,幫助 Genkit Dart 達到 1.0 版本。
- 開始使用:遵循快速入門指南。
- 探索範例:瀏覽 GitHub 上的範例應用程式。
- 加入社群:在 Discord 上與團隊聊天。
- 保持更新:在 X 和 LinkedIn 上關注 Genkit。
- 提供回饋:在 GitHub 儲存庫 上提出問題。
我們迫不及待想看到您使用 Genkit Dart 1.0 建立的成果!