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 sử dụng để 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 sử dụng cho thấy cách triển khai 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 mô hình đó có sẵn 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ô hình đám mây và secondary thành mô hình "hệ thống".

    Cố gắng sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị đang kết nối mạng và nếu mô hình đó có sẵn. Nếu thiết bị không có 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 không thành công 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 đặt duy nhất một model, tức là SDK sẽ chỉ thử suy luận trên thiết bị hoặc trên đá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 primary và secondary (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 cần 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 mô hình đó có sẵn 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.

    Cố gắng sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị đang kết nối mạng 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 mô hình 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 trên thiết bị xuống. Nếu mô hình trên thiết bị không hoạt động 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 quay lại 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ự 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 lý do cụ thể khiến mô hình trên thiết bị không hoạt động, 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 suy luận trên thiết bị hay trên đám mây đã được sử dụng

Nếu bạn sử dụng HybridModel (và đặt cả mô hình primary và secondary), 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 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: tên mô hình, ví dụ: gemini-3.1-flash-lite
  • Mô hình trên thiết bị được 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ột mô hình, bạn có thể gửi kèm một 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 lựa chọn cấu hình khác nhau (tham số trên đám mây so với trên thiết bị).

Các tuỳ chọn này được định cấu hình cho mỗi yêu cầu gửi đến mô hình.

Dưới đây là ví dụ về cách thiết lập 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