跳到主內容

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 工具包的演示示例效果

AI demo app

此演示的原始碼可在 GitHub 倉庫中獲取。

開始使用

#
  1. 安裝

    將以下依賴項新增到您的 pubspec.yaml 檔案中

    yaml
    dependencies:
      flutter_ai_toolkit: ^latest_version
      firebase_ai: ^latest_version
      firebase_core: ^latest_version
    
  2. 配置

    AI 工具包同時支援 Gemini 端點(用於原型設計)和 Vertex 端點(用於生產環境)。兩者都需要一個 Firebase 專案並初始化 firebase_core 包,具體操作請參考使用 Firebase AI Logic SDK 開始使用 Gemini API 文件。

    完成後,使用 flutterfire CLI 工具將新的 Firebase 專案整合到您的 Flutter 應用中,具體說明請參閱將 Firebase 新增到您的 Flutter 應用文件。

    按照這些說明操作後,您就可以使用 Firebase 在 Flutter 應用中整合 AI 了。首先初始化 Firebase

    dart
    import '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 端點

    dart
    import '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 端點

    dart
    class 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.dartvertex.dart 示例。

  3. 設定裝置許可權

    要讓您的使用者利用語音輸入和媒體附件等功能,請確保您的應用具備必要的許可權

    • 網路訪問:要在 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 工具包在您的實際應用中儘可能穩健且實用。