На этой странице описаны следующие варианты конфигурации для гибридных и встроенных функций:
Определить, использовался ли вывод на устройстве или в облаке.
Используйте конфигурацию модели, чтобы управлять ответами (например, температурой).
Убедитесь, что вы выполнили все инструкции из руководства по созданию гибридных приложений.
Как задать режим вывода
В примерах из руководства по началу работы показано, как сначала попытаться выполнить вывод на устройстве, а затем перейти к модели, размещенной в облаке. Это лишь один из доступных режимов вывода, который вы можете реализовать.
Гибридный вывод
Предпочитать вывод на устройстве. Установите для параметра
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 поддерживает настройку только одного значения model, а значит, будет только пытаться выполнить вывод на устройстве или в облаке. Кроме того, в этом случае не нужно создавать HybridModel. Однако для гибридного подхода вам нужно создать HybridModel и задать модели primary и secondary (как описано выше).
Только вывод на устройстве. Установите для параметра
modelмодель "system". В этом случае создавать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), вам может быть полезно узнать, какая модель была использована для определенного запроса.
Эта информация предоставляется в свойстве modelVersion объекта rawResponse в каждом ответе.
При обращении к этому свойству возвращается одно из следующих значений:
- Название модели, размещенной в облаке, например
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)
Как управлять ответами с помощью конфигурации модели
В каждом запросе к модели можно отправлять конфигурацию модели, чтобы контролировать, как она генерирует ответ. Модели, размещенные в облаке, и модели на устройстве предлагают разные варианты конфигурации (параметры cloud и on-device).
- Модели, размещенные в облаке: настройте их конфигурацию в файле
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