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 tuỳ chọn cấu hình sau đây cho trải nghiệm kết hợp và trên thiết bị:

Hãy đảm bảo 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 các "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.

    Thử sử dụng mô hình trên thiết bị nếu mô hình đó dùng đượ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ị, sau đó 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 trong đám mây: đặt primary thành mô hình đám mây và secondary thành 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ị trực tuyến và mô hình đó dùng được. Nếu thiết bị không kết nối mạng, hãy quay lại mô hình trên thiết bị. Trong tất cả các trường hợp lỗ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 trong đám mây

SDK hỗ trợ việc đặt chỉ một model. Điều này có nghĩa là SDK sẽ chỉ thử 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 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.

    Thử sử dụng mô hình trên thiết bị nếu mô hình đó dùng đượ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 trong đám mây: đặt model thành 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ị trực tuyến và mô hình đó dùng được. 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ó dùng được hay không

Bạn chỉ cần kiểm tra thủ công xem mô hình trên thiết bị có dùng được 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 trên thiết bị xuống. Nếu mô hình trên thiết bị không dùng được (và bạn đã đặt primary thành mô hình trên thiết bị và secondary thành mô hình đám mây), thì SDK sẽ tự động quay lại sử dụng mô hình được lưu trữ trên đám mây.

Để kiểm tra 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ể khiến mô hình trên thiết bị không dùng được, 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 trong đá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 sử dụng cho một yêu cầu nhất định. Thông tin này được cung cấp bởi thuộc tính modelVersion của rawResponse trong mỗi câu trả lời.

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

  • Mô hình được lưu trữ trên đám mây đã sử dụng: tên mô hình, ví dụ: gemini-3.1-flash-lite
  • Mô hình trên thiết bị đã sử 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ô hình, bạn có thể gửi kèm theo cấu hình mô hình để kiểm soát cách mô hình tạo câu trả lời. 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 tuỳ chọn cấu hình khác nhau (tham số đám mây so với tham số trên thiết bị ).

  • Mô hình được lưu trữ trên đám mây: đặt cấu hình của các mô hình này trong a GenerationConfig.
  • 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 tuỳ 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à ví dụ về cách đặt cấu hình cho mô hình được lưu trữ trên đám mây và mô hình 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