ตัวเลือกการกำหนดค่าสำหรับประสบการณ์การใช้งานแบบไฮบริดในแอป 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