Flutter AI 工具包
瞭解如何將 AI 工具包聊天機器人新增到您的 Flutter 應用中。
您好,歡迎使用 Flutter AI 工具包!
AI 工具包是一組與 AI 聊天相關的小部件,可讓您輕鬆地將 AI 聊天視窗新增到 Flutter 應用中。AI 工具包圍繞抽象的 LLM(大語言模型)提供程式 API 進行組織,以便您可以輕鬆切換聊天提供程式所使用的 LLM 提供程式。它開箱即用,支援 Firebase AI Logic。
主要功能
#- 多輪對話:在多次互動中保持上下文。
- 流式響應:在生成 AI 響應時即時顯示。
- 富文字顯示:支援聊天訊息中的格式化文字。
- 語音輸入:允許使用者使用語音輸入提示詞。
- 多媒體附件:支援傳送和接收各種媒體型別。
- 函式呼叫:支援向 LLM 提供程式進行工具呼叫。
- 自定義樣式:提供豐富的自定義功能,以匹配您的應用設計。
- 聊天序列化/反序列化:在應用會話之間儲存和檢索對話。
- 自定義響應小部件:引入專門的 UI 元件來呈現 LLM 響應。
- 可插拔的 LLM 支援:實現一個簡單的介面即可接入您自己的 LLM。
- 跨平臺支援:相容 Android、iOS、Web 和 macOS 平臺。
演示
#以下是託管 AI 工具包的演示示例效果
此演示的原始碼可在 GitHub 倉庫中獲取。
開始使用
#- 安裝
將以下依賴項新增到您的
pubspec.yaml檔案中yamldependencies: flutter_ai_toolkit: ^latest_version firebase_ai: ^latest_version firebase_core: ^latest_version - 配置
AI 工具包同時支援 Gemini 端點(用於原型設計)和 Vertex 端點(用於生產環境)。兩者都需要一個 Firebase 專案並初始化
firebase_core包,具體操作請參考使用 Firebase AI Logic SDK 開始使用 Gemini API 文件。完成後,使用
flutterfire CLI工具將新的 Firebase 專案整合到您的 Flutter 應用中,具體說明請參閱將 Firebase 新增到您的 Flutter 應用文件。按照這些說明操作後,您就可以使用 Firebase 在 Flutter 應用中整合 AI 了。首先初始化 Firebase
dartimport 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'package:flutter_ai_toolkit/flutter_ai_toolkit.dart'; // ... other imports import 'firebase_options.dart'; // from `flutterfire config` void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); runApp(const App()); } // ...app stuff here在 Flutter 應用中正確初始化 Firebase 後,您現在可以建立一個 Firebase 提供程式例項。您有兩種方式可以做到這一點。對於原型設計,可以考慮 Gemini AI 端點
dartimport 'package:firebase_ai/firebase_ai.dart'; import 'package:flutter_ai_toolkit/flutter_ai_toolkit.dart'; // ... app stuff here class ChatPage extends StatelessWidget { const ChatPage({super.key}); @override Widget build(BuildContext context) => Scaffold( appBar: AppBar(title: const Text(App.title)), // create the chat view, passing in the Firebase provider body: LlmChatView( provider: FirebaseProvider( // Use the Google AI endpoint model: FirebaseAI.googleAI().generativeModel( model: 'gemini-2.5-flash', ), ), ), ); }FirebaseProvider類向LlmChatView公開了 Firebase AI Logic SDK。請注意,您需要提供一個模型名稱(有多種選擇),但不需要提供 API 金鑰。所有這些都作為 Firebase 專案的一部分進行處理。對於生產工作負載,可以輕鬆切換為 Firebase Logic AI 端點
dartclass ChatPage extends StatelessWidget { const ChatPage({super.key}); @override Widget build(BuildContext context) => Scaffold( appBar: AppBar(title: const Text(App.title)), body: LlmChatView( provider: FirebaseProvider( // Use the Vertex AI endpoint model: FirebaseAI.vertexAI().generativeModel( model: 'gemini-2.5-flash', ), ), ), ); }有關完整示例,請檢視 gemini.dart 和 vertex.dart 示例。
- 設定裝置許可權
要讓您的使用者利用語音輸入和媒體附件等功能,請確保您的應用具備必要的許可權
網路訪問:要在 macOS 上啟用網路訪問,請將以下內容新增到您的
*.entitlements檔案中xml<plist version="1.0"> <dict> ... <key>com.apple.security.network.client</key> <true/> </dict> </plist>要在 Android 上啟用網路訪問,請確保您的
AndroidManifest.xml檔案包含以下內容xml<manifest xmlns:android="http://schemas.android.com/apk/res/android"> ... <uses-permission android:name="android.permission.INTERNET"/> </manifest>麥克風訪問:根據 record 包的許可權設定說明進行配置。
檔案選擇:遵循 file_selector 外掛的說明。
圖片選擇:要在裝置上拍照或從裝置中選擇圖片,請參考 image_picker 外掛的安裝說明。
Web 照片:要在 Web 上拍照,請按照 camera 外掛的設定說明配置應用。
示例
#firebase_options.dart
要使用 Vertex AI 示例應用,請將您的 Firebase 配置詳情放入 example/lib/firebase_options.dart 檔案中。您可以在 example 目錄下使用 將 Firebase 新增到您的 Flutter 應用 文件中所述的 flutterfire CLI 工具來完成此操作。
反饋
#在使用此包的過程中,歡迎您提交問題和功能請求,以及提交您希望貢獻的程式碼。我們期待您的反饋和貢獻,以確保 AI 工具包在您的實際應用中儘可能穩健且實用。