このページでは、ハイブリッド エクスペリエンスとオンデバイス エクスペリエンスの次の構成オプションについて説明します。
ハイブリッド エクスペリエンスの構築に関するスタートガイドを完了していることを確認します。
「推論モード」を設定する
スタートガイドの例では、まずオンデバイス推論を試行し、次にクラウドホスト型モデルにフォールバックする方法を示しています。これは、実装できる「推論モード」の 1 つにすぎません。
ハイブリッド推論
オンデバイス推論を優先:
primaryを「システム」モデルに、secondaryをクラウドモデルに設定します。オンデバイス モデルが使用可能で、リクエストのタイプをサポートしている場合は、オンデバイス モデルを使用しようとします。それ以外の場合は、デバイスにエラーを記録し、自動的にクラウドホスト型モデルにフォールバックします。
// Imports + initialization of Gemini API backend service // ... // 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 GenerativeModelSession with a hybrid model. // Provide your preferred model as `primary` and your fallback model as `secondary` // Attempt to use the on-device model; otherwise, fall back to the cloud-hosted model. let session = ai.generativeModelSession( model: .hybridModel(primary: systemModel, secondary: cloudModel) )クラウド内推論を優先:
primaryをクラウドモデルに、secondaryを「システム」モデルに設定します。デバイスがオンラインで、モデルが利用可能な場合は、クラウドホスト型モデルを使用しようとします。デバイスがオフラインの場合は、デバイス上のモデルにフォールバックします。それ以外の失敗ケースでは、例外をスローします。
// Imports + initialization of Gemini API backend service // ... // 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 GenerativeModelSession with a hybrid model. // Provide your preferred model as `primary` and your fallback model as `secondary` // Attempt to use the cloud-hosted model; otherwise, fall back to the on-device model. let session = ai.generativeModelSession( model: .hybridModel(primary: cloudModel, secondary: systemModel) )
デバイス上の推論のみ、またはクラウド内の推論のみ
SDK は 1 つの model の設定のみをサポートします。つまり、SDK はオンデバイス推論またはクラウド推論のいずれかのみを試行します。また、このユースケースでは HybridModel を作成しません。ただし、ハイブリッド エクスペリエンスでは、HybridModel を作成し、primary モデルと secondary モデルの両方を設定する必要があります(上記を参照)。
オンデバイス推論のみ:
modelを「システム」モデルに設定します。このユースケースではHybridModelを作成しません。オンデバイス モデルが使用可能で、リクエストのタイプをサポートしている場合は、オンデバイス モデルを使用しようとします。そうでない場合は、例外をスローします。
// Imports + initialization of Gemini API backend service // ... // Initialize an on-device model that supports your use case let systemModel = FirebaseAI.SystemLanguageModel.default // Create a GenerativeModelSession with the on-device model. let session = ai.generativeModelSession( model: systemModel )クラウド推論のみ:
modelをクラウド モデルに設定します。このユースケースではHybridModelを作成しません。デバイスがオンラインで、モデルが利用可能な場合は、クラウドホスト型モデルを使用しようとします。そうでない場合は、例外をスローします。
// Imports + initialization of Gemini API backend service // ... // Initialize a cloud model that supports your use case let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME") // Create a GenerativeModelSession with a cloud model. let session = ai.generativeModelSession( model: cloudModel )
オンデバイス モデルが利用可能かどうかを確認する
デバイス上の利用可能性を手動で確認する必要があるのは、その情報をユーザーに表示する場合や、エンドユーザーにデバイス上のモデルをダウンロードするようリクエストする場合のみです。オンデバイス モデルが使用できない場合(primary をオンデバイス モデルに、secondary をクラウド モデルに設定している場合)、SDK は自動的にクラウドホスト モデルの使用にフォールバックします。
デバイスモデルが実際に使用可能かどうかを手動で確認するには、isAvailable プロパティを調べます。
if FirebaseAI.SystemLanguageModel.default.isAvailable {
// The on-device model is ready to use.
} else {
// The on-device model is unavailable.
}
特定のオンデバイス モデルの利用不可の理由を確認するには、availability プロパティを調べます。
switch FirebaseAI.SystemLanguageModel.default.availability {
case .available:
// The on-device model is ready to use.
break
case .unavailable(.deviceNotEligible):
// This device does not support Apple Intelligence.
break
case .unavailable(.appleIntelligenceNotEnabled):
// The user has not enabled Apple Intelligence in Settings.
break
case .unavailable(.modelNotReady):
// The model is still being downloaded.
break
case let .unavailable(reason):
// The model is unavailable due to the specified `reason`.
break
}
デバイス上の推論とクラウド内の推論のどちらが使用されたかを判断する
HybridModel を使用する場合(primary モデルと secondary モデルの両方を設定する場合)、特定のリクエストにどのモデルが使用されたかを知っておくと役立つことがあります。この情報は、各レスポンスの rawResponse の modelVersion プロパティによって提供されます。
このプロパティにアクセスすると、次のいずれかの値が返されます。
- 使用されたクラウドホスト型モデル: モデル名(
gemini-3.1-flash-liteなど) - 使用されたデバイスモデル:
apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...
print("You used: \(response.rawResponse.modelVersion)")
print(response.content)
モデル構成を使用してレスポンスを制御する
モデルへのリクエストごとに、モデルがどのようにレスポンスを生成するかを制御するモデル構成を送信できます。クラウドホスト型モデルとオンデバイス モデルでは、異なる構成オプション(クラウド パラメータとオンデバイス パラメータ)が提供されます。
- クラウドホスト型モデル:
GenerationConfigで構成を設定します。 - オンデバイス モデル:
FirebaseAI.GenerationOptions内で構成を設定します。
これらのオプションは、モデルへのリクエストごとに構成されます。
ハイブリッド推論のクラウドホスト型モデルとオンデバイス モデルの構成を設定する例を次に示します。
// ...
let response = try await session.respond(
to: "Why is the sky blue?",
options: .hybrid(
// Config for cloud-hosted model
gemini: GenerationConfig(
temperature: 0.8,
topP: 0.9,
thinkingConfig: ThinkingConfig(thinkingLevel: .high)
),
// Config for on-device model
foundationModels: FirebaseAI.GenerationOptions(
sampling: .random(probabilityThreshold: 0.9),
temperature: 0.8
)
)
)
// ...
Firebase AI Logic の使用感についてフィードバックを送信する