Параметры настройки для гибридного взаимодействия в приложениях Apple


На этой странице описаны следующие параметры конфигурации для гибридных и встроенных пользовательских интерфейсов:

Убедитесь, что вы завершили руководство по началу работы с созданием гибридных приложений .

Установите «режим вывода».

Примеры в руководстве по началу работы показывают, как реализовать попытку вывода данных сначала на устройстве, а затем вернуться к облачной модели. Это лишь один из доступных «режимов вывода данных», которые вы можете реализовать.

Гибридный вывод

  • Предпочтительнее использовать вывод данных непосредственно на устройстве : установите в качестве 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 , что означает, что 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 модели), то может быть полезно знать, какая модель использовалась для данного запроса. Эта информация предоставляется свойством 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)

Используйте конфигурацию модели для управления ответами.

В каждом запросе к модели можно передавать конфигурацию модели, чтобы управлять тем, как модель генерирует ответ. Модели, размещенные в облаке, и модели, размещенные на устройстве, предлагают разные варианты конфигурации (параметры облака и параметры, заданные на устройстве ).

  • Модели, размещенные в облаке: задайте их конфигурацию в файле 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.