オンデバイス モデルとクラウドホスト モデルを使用して Apple アプリでハイブリッド エクスペリエンスを構築する

Firebase AI Logic を使用して、ハイブリッド推論で AI を活用した Apple アプリや機能を構築できます。ハイブリッド推論では、利用可能な場合はオンデバイス モデル(特に Apple の Foundation Models フレームワーク)を使用して推論を実行し、それ以外の場合はクラウドホスト型の Google モデルにシームレスにフォールバックできます(逆も同様)。

このページでは、クライアント SDK の使用を開始する方法について説明します。また、Temperature などの追加の設定オプションと機能についても説明します。

Firebase AI Logic を介したオンデバイス推論は、Firebase AI Logic SDK v12.13.0 以降を使用し、Apple Intelligence が有効になっているデバイスで実行されている Apple アプリでサポートされています。これは、Apple の Foundation Models フレームワークの利用規約に準拠しています。

おすすめのユースケース

  • 推論にデバイスモデルを使用すると、次のメリットがあります。

    • プライバシーの強化
    • 無料の推論
    • オフライン機能
  • ハイブリッド機能の特典:

    • エンドユーザーのデバイスに関係なく、すべてのユーザーに同様のアプリ エクスペリエンスを提供する
    • インターネット接続、割り当て制限、デバイスの機能に関係なく、生成 AI 機能の可用性を改善する

サポートされている機能、API、デバイス

Firebase AI Logic を使用してハイブリッド推論とオンデバイス推論を実装する前に、このセクションで Apple アプリでサポートされている内容を確認してください。

オンデバイス推論でサポートされている機能

オンデバイス推論は、テキスト生成のみをサポートします。具体的には、次のテキスト生成機能をサポートします。

このページの下部にある、まだサポートされていないハイブリッド推論またはオンデバイス推論の詳細なリストを必ずご確認ください。

サポートされている API とデバイス

  • クラウド内推論では、選択した Gemini API プロバイダ(Gemini Developer API または Vertex AI Gemini API)を使用します。

  • オンデバイス推論では、Apple の Foundation Models フレームワークを使用します。このフレームワークは、Apple Intelligence が有効になっているデバイスでのみ使用できます。オンデバイス モデルは、Apple Intelligence が有効になると自動的にダウンロードされます。

始める

サポートされている機能、API、デバイスについて説明した上記のセクションを必ず確認してください。

このスタートガイドの手順では、送信するサポート対象のプロンプト リクエストに必要な一般的な設定について説明します。

ステップ 1: Firebase プロジェクトを設定し、アプリを Firebase に接続する

  1. Firebase コンソールにログインし、Firebase プロジェクトを選択します。

  2. Firebase コンソールで、[AI サービス] > [AI ロジック] に移動します。

  3. [使ってみる] をクリックして、プロジェクトに必要な API とリソースの設定に役立つガイド付きワークフローを起動します。

  4. Gemini API」プロバイダを使用するようにプロジェクトを設定します。

    Gemini Developer API を使用して始めることをおすすめします。いつでも Vertex AI Gemini API(および請求の要件)を設定できます。

    Gemini Developer API の場合、コンソールは必要な API を有効にし、プロジェクトに Gemini API キーを作成します。
    この Gemini API キーをアプリのコードベースに追加しないでください。詳細

  5. コンソールのワークフローでプロンプトが表示されたら、画面上の指示に沿ってアプリを登録し、Firebase に接続します。

  6. このガイドの次のステップに進み、SDK をアプリに追加します。

ステップ 2: 必要な SDK を追加する

Swift Package Manager(SPM)を使用して Xcode の依存関係のインストールと管理を行います。ハイブリッド サポートは、SPM を使用している場合にのみ利用できます。

Firebase AI Logic ライブラリは、生成モデルを操作するための API へのアクセスを提供します。このライブラリは、Apple プラットフォーム用 Firebase SDK(firebase-ios-sdk)の一部として含まれています。

Firebase をすでにご利用の場合は、Firebase パッケージが v12.13.0 以降であることを確認してください。

  1. Xcode でアプリ プロジェクトを開いたまま、[File] > [Add Package Dependencies] の順に移動します。

  2. プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。

    https://github.com/firebase/firebase-ios-sdk
    
  3. 最新の SDK バージョンを選択します。

  4. FirebaseAILogic ライブラリを選択します。

上記の作業が完了すると、Xcode は依存関係の解決とバックグラウンドでのダウンロードを自動的に開始します。

ステップ 3: サービスを初期化してモデル セッション インスタンスを作成する

Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

モデルにプロンプト リクエストを送信する前に、次の設定を行います。

  1. 選択した Gemini API プロバイダのサービスを初期化します。

  2. HybridModel を使用して GenerativeModelSession インスタンスを作成します。

  3. 必要に応じて、primary モデルと secondary モデルを設定します。試行された推論の順序を設定できます。

    • まずデバイス上の推論を試み、クラウドへのフォールバックを許可する: primary を「システム」モデルに、secondary をクラウドモデルに設定します。

    • クラウドでの推論を最初に試みるが、デバイス上へのフォールバックを許可する: primary をクラウドモデルに、secondary を「システム」モデルに設定します。

    SDK は 1 つの model の設定のみをサポートします。つまり、SDK はオンデバイス推論またはクラウド推論のいずれかのみを試行します。ただし、ハイブリッド エクスペリエンスでは、HybridModel を作成し、primary モデルと secondary モデルの両方を設定する必要があります。

    「推論モード」(推論の試行順序)の動作については、構成オプションをご覧ください。

次の例は、まずオンデバイス推論を試行し、クラウドホスト型モデルへのフォールバックを許可する方法を示しています。

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Initialize a cloud model that supports your use case
let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
// Initialize an on-device model that supports your use case
let systemModel = FirebaseAI.SystemLanguageModel.default

// Create a Hybrid Model
// Provide your preferred model as `primary` and your fallback model as `secondary`
// In this example, attempt to use on-device model; otherwise, fall back to cloud.
let hybridModel = HybridModel(
  primary: systemModel,
  secondary: cloudModel
)

// Create a GenerativeModelSession with the HybridModel created earlier.
let session = firebaseAI.generativeModelSession(
  model: hybridModel,
)

ステップ 4: モデルにプロンプト リクエストを送信する

このセクションでは、次の操作を行う方法について説明します。

テキストのみの入力からテキストを生成する

このサンプルを試す前に、このガイドのスタートガイド セクションを完了していることを確認してください。

テキストを含むプロンプトからテキストを生成するには、次のように respond(to:) を使用します。

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To generate text output, call `respond(to:)` with the text input
let response = try await session.respond(to: prompt)
print(response.content)

テキストのみの入力からテキストをストリーミングする

このサンプルを試す前に、このガイドのスタートガイド セクションを完了していることを確認してください。

モデル生成からの結果全体を待つのではなく、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。テキストを含むプロンプトから生成されたテキストをストリーミングするには、次のように streamResponse(to:) を使用します。

// Imports + initialization of Gemini API backend service + creation of model session

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To stream generated text output, call `streamResponse(to:)` with the text input
let stream = session.streamResponse(to: prompt)
for try await snapshot in stream {
  print(snapshot.content)
}

Google アシスタントの機能

ハイブリッド エクスペリエンスには、さまざまな追加の構成オプションと機能を使用できます。

ハイブリッドまたはオンデバイス推論でまだサポートされていない機能

試験運用版としてリリースされているため、Firebase AI Logic またはクラウドホスト型モデルのすべての機能がサポートされているわけではありません。

  • Imagen モデル、Gemini Live API、プロンプト テンプレートは、ハイブリッド実装またはデバイス上実装では対象外です。また、クラウドホスト型モデルとオンデバイス モデルではトークン数が異なるため、トークン数に依存することは避ける必要があります。直感的なフォールバックは存在しません。

  • 次の機能は、オンデバイス推論ではまだサポートされていません。これらの機能を使用する場合は、より一貫したエクスペリエンスを実現するために、クラウドホスト型モデルのみを使用することをおすすめします。

    • 画像、音声、動画、ドキュメント(PDF)などのマルチモーダル入力からテキストを生成する

    • 画像、音声、動画などのメディアを生成する

    • 4,096 トークン(約 3,000 ワード(英語))を超えるリクエストを送信する。

    • オンデバイス モデルに組み込みツールを提供して、レスポンスの生成を支援する(コード実行、URL コンテキスト、Google 検索によるグラウンディングなど)

  • Firebase コンソールの AI モニタリングには、オンデバイス推論(オンデバイスログを含む)のデータは表示されません。ただし、クラウドホスト型モデルを使用する推論は、Firebase AI Logic を介して他の推論と同様にモニタリングできます。

その他の制限

上記に加えて、オンデバイス推論には次の制限があります。


Firebase AI Logic の使用感についてフィードバックを送信する