Các lựa chọn cấu hình cho trải nghiệm kết hợp trong các ứng dụng của Apple


Trang này mô tả các lựa chọn cấu hình sau đây cho trải nghiệm kết hợp và trên thiết bị:

Đảm bảo rằng bạn đã hoàn tất hướng dẫn bắt đầu xây dựng trải nghiệm kết hợp.

Đặt "chế độ suy luận"

Các ví dụ trong hướng dẫn bắt đầu cho thấy cách triển khai việc thử suy luận trên thiết bị trước, sau đó quay lại mô hình được lưu trữ trên đám mây. Đây chỉ là một trong những "chế độ suy luận" mà bạn có thể triển khai.

Suy luận kết hợp

  • Ưu tiên suy luận trên thiết bị: đặt primary thành mô hình "hệ thống" và secondary thành mô hình đám mây.

    Cố gắng sử dụng mô hình trên thiết bị nếu có và hỗ trợ loại yêu cầu. Nếu không, hãy ghi lại lỗi trên thiết bị rồi tự động quay lại mô hình được lưu trữ trên đám mây.

    // 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)
    )
    
  • Ưu tiên suy luận trên đám mây: đặt primary thành một mô hình đám mây và secondary thành một mô hình "hệ thống".

    Thử sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị đang trực tuyến và nếu mô hình đó có sẵn. Nếu thiết bị không kết nối mạng, hãy chuyển về mô hình trên thiết bị. Trong tất cả các trường hợp thất bại khác, hãy gửi một ngoại lệ.

    // 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)
    )
    

Chỉ suy luận trên thiết bị hoặc chỉ suy luận trên đám mây

SDK chỉ hỗ trợ việc thiết lập một model duy nhất, tức là SDK chỉ cố gắng suy luận trên thiết bị hoặc trong đám mây. Ngoài ra, bạn không tạo HybridModel cho trường hợp sử dụng này. Tuy nhiên, đối với trải nghiệm kết hợp, bạn cần tạo một HybridModel và đặt cả mô hình primarysecondary (như mô tả ở trên).

  • Chỉ suy luận trên thiết bị: đặt model thành mô hình "hệ thống". Bạn không tạo HybridModel cho trường hợp sử dụng này.

    Cố gắng sử dụng mô hình trên thiết bị nếu có và hỗ trợ loại yêu cầu. Nếu không, hãy gửi một ngoại lệ.

    // 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
    )
    
  • Chỉ suy luận trên đám mây: đặt model thành một mô hình đám mây. Bạn không tạo HybridModel cho trường hợp sử dụng này.

    Thử sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị đang trực tuyến và nếu mô hình đó có sẵn. Nếu không, hãy gửi một ngoại lệ.

    // 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
    )
    

Kiểm tra xem mô hình trên thiết bị có hoạt động hay không

Bạn chỉ cần kiểm tra theo cách thủ công xem có sẵn trên thiết bị hay không nếu muốn hiển thị thông tin đó cho người dùng hoặc yêu cầu người dùng cuối thực hiện hành động tải mô hình xuống thiết bị. Nếu không có mô hình trên thiết bị – và bạn đã đặt primary thành mô hình trên thiết bị và secondary thành mô hình trên đám mây – thì SDK sẽ tự động chuyển về sử dụng mô hình được lưu trữ trên đám mây.

Để kiểm tra theo cách thủ công xem mô hình trên thiết bị có thực sự dùng được hay không, hãy kiểm tra thuộc tính isAvailable:

if FirebaseAI.SystemLanguageModel.default.isAvailable {
  // The on-device model is ready to use.
} else {
  // The on-device model is unavailable.
}

Để kiểm tra các lý do cụ thể về phạm vi cung cấp mô hình trên thiết bị, hãy kiểm tra thuộc tính 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
}

Xác định xem bạn đã sử dụng suy luận trên thiết bị hay suy luận trên đám mây

Nếu bạn sử dụng HybridModel (và đặt cả mô hình primarysecondary), thì bạn nên biết mô hình nào đã được dùng cho một yêu cầu nhất định. Thông tin này do thuộc tính modelVersion của rawResponse cung cấp trong mỗi phản hồi.

Khi bạn truy cập vào thuộc tính này, giá trị được trả về sẽ là một trong những giá trị sau:

  • Mô hình được lưu trữ trên đám mây đã dùng: tên mô hình, ví dụ: gemini-3.1-flash-lite
  • Mô hình trên thiết bị được dùng: apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...

print("You used: \(response.rawResponse.modelVersion)")

print(response.content)

Sử dụng cấu hình mô hình để kiểm soát câu trả lời

Trong mỗi yêu cầu gửi đến một mô hình, bạn có thể gửi kèm theo một cấu hình mô hình để kiểm soát cách mô hình tạo ra phản hồi. Các mô hình được lưu trữ trên đám mây và mô hình trên thiết bị cung cấp các lựa chọn cấu hình khác nhau (các tham số đám mây so với trên thiết bị).

  • Các mô hình được lưu trữ trên đám mây: thiết lập cấu hình của các mô hình này trong một GenerationConfig.
  • Các mô hình trên thiết bị: đặt cấu hình của các mô hình này trong FirebaseAI.GenerationOptions.

Các lựa chọn này được định cấu hình cho từng yêu cầu gửi đến mô hình.

Dưới đây là một ví dụ thiết lập cấu hình cho các mô hình được lưu trữ trên đám mây và trên thiết bị để suy luận kết hợp:

// ...

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
    )
  )
)

// ...


Gửi ý kiến phản hồi về trải nghiệm của bạn với Firebase AI Logic