ตัวเลือกการกำหนดค่าสำหรับประสบการณ์การใช้งานแบบไฮบริดในแอป Android


หน้านี้อธิบายตัวเลือกการกำหนดค่าต่อไปนี้สำหรับประสบการณ์แบบไฮบริด

ตรวจสอบว่าคุณได้ทำตาม คู่มือเริ่มต้นใช้งานสำหรับการสร้างประสบการณ์แบบไฮบริดเรียบร้อยแล้ว

ตั้งค่าโหมดการอนุมาน

ตัวอย่างในคู่มือเริ่มต้นใช้งานใช้โหมด PREFER_ON_DEVICE แต่ โหมดนี้เป็นเพียง 1 ใน 4 โหมดการอนุมานที่พร้อมใช้งาน

โหมดการอนุมานที่พร้อมใช้งานมีดังนี้

  • PREFER_ON_DEVICE: พยายามใช้โมเดลในอุปกรณ์หากพร้อมใช้งานและรองรับคำขอประเภทนั้น หากไม่เป็นเช่นนั้น ให้บันทึกข้อผิดพลาดในอุปกรณ์ แล้ว กลับไปใช้โมเดลที่โฮสต์ในระบบคลาวด์โดยอัตโนมัติ

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: พยายามใช้โมเดลในอุปกรณ์หากพร้อมใช้งานและรองรับคำขอประเภทนั้น หากไม่เป็นเช่นนั้น ให้แสดงข้อยกเว้น

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: พยายามใช้โมเดลที่โฮสต์ในระบบคลาวด์หากอุปกรณ์ออนไลน์และโมเดลพร้อมใช้งาน หากอุปกรณ์ออฟไลน์ ให้กลับไปใช้โมเดลในอุปกรณ์ ในกรณีที่เกิดข้อผิดพลาดอื่นๆ ทั้งหมด ให้แสดงข้อยกเว้น

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: พยายามใช้โมเดลที่โฮสต์ในระบบคลาวด์หากอุปกรณ์ออนไลน์และโมเดลพร้อมใช้งาน หากไม่เป็นเช่นนั้น ให้แสดงข้อยกเว้น

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

กำหนดว่าใช้การอนุมานในอุปกรณ์หรือในระบบคลาวด์

หากโหมดการอนุมานเป็น PREFER_ON_DEVICE หรือ PREFER_IN_CLOUD การทราบว่าใช้โหมดใดสำหรับคำขอที่กำหนดอาจเป็นประโยชน์ ข้อมูลนี้มาจากพร็อพเพอร์ตี้ inferenceSource ของการตอบกลับแต่ละรายการ

เมื่อเข้าถึงพร็อพเพอร์ตี้นี้ ค่าที่แสดงจะเป็น ON_DEVICE หรือ IN_CLOUD

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

ระบุโมเดลที่จะใช้

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาเฉพาะของผู้ให้บริการ และโค้ดในหน้านี้

คุณสามารถระบุโมเดลที่จะใช้เมื่อสร้างอินสแตนซ์ generativeModel (Kotlin | Java)

  • ระบุโมเดลที่โฮสต์ในระบบคลาวด์:

    • หากโหมดการอนุมานเป็น PREFER_ON_DEVICE, PREFER_IN_CLOUD หรือ ONLY_IN_CLOUD คุณ ต้อง ระบุโมเดลที่โฮสต์ในระบบคลาวด์ที่จะใช้โดยชัดแจ้ง SDK ไม่มี โมเดลที่โฮสต์ในระบบคลาวด์เริ่มต้น

    • ดูชื่อโมเดลสำหรับโมเดลที่โฮสต์ในระบบคลาวด์ทั้งหมด ที่รองรับ Gemini

  • ระบุโมเดลในอุปกรณ์:

    • หากโหมดการอนุมานเป็น PREFER_ON_DEVICE, PREFER_IN_CLOUD หรือ ONLY_ON_DEVICE คุณสามารถระบุ "หมวดหมู่" ของโมเดลในอุปกรณ์ที่จะใช้ใน onDeviceConfig โดยไม่บังคับ หมวดหมู่เป็นการผสมผสานระหว่างระยะการเปิดตัวและลักษณะการทำงาน

    • ค่าหมวดหมู่ที่รองรับแสดงอยู่ด้านล่าง
      AICore จะเลือกโมเดลในอุปกรณ์โดยอัตโนมัติซึ่งตรงตามเงื่อนไขของหมวดหมู่ที่ระบุและอุปกรณ์รองรับ ตัวอย่างเช่น หากคุณระบุ PREVIEW และอุปกรณ์เป็น Pixel 9 ระบบจะเลือก Gemini Nano 4 Full [เวอร์ชันตัวอย่าง] (nano-v4-full) โดยอัตโนมัติ

      • STABLE: โมเดลในอุปกรณ์ เวอร์ชันเสถียรล่าสุด

        • ผ่านการทดสอบอย่างเต็มรูปแบบและพร้อมใช้งานในอุปกรณ์ของผู้ใช้

        • เช่น Gemini Nano 3 (nano-v3) หรือ Gemini Nano 2 (nano-v2)

        • การตั้งค่าเริ่มต้นสำหรับโมเดลในอุปกรณ์หากไม่ได้ระบุ OnDeviceModelOption

      • PREVIEW: โมเดลในอุปกรณ์ เวอร์ชันตัวอย่างล่าสุดที่มีความสามารถด้านประสิทธิภาพ เต็มรูปแบบ

        • ออกแบบมาเพื่อการให้เหตุผลที่ซับซ้อนมากขึ้นและงานที่ซับซ้อน

        • เช่น Gemini Nano 4 Full [เวอร์ชันตัวอย่าง] (nano-v4-full ซึ่งอิงตาม Gemma 4 E4B)

      • PREVIEW_FAST: โมเดลในอุปกรณ์ เวอร์ชันตัวอย่างล่าสุดที่ รวดเร็ว

        • เพิ่มประสิทธิภาพเพื่อความเร็วสูงสุดและเวลาในการตอบสนองที่ต่ำลง

        • เช่น Gemini Nano 4 Fast [เวอร์ชันตัวอย่าง] (nano-v4-fast ซึ่งอิงตาม Gemma 4 E2B)

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

ใช้การกำหนดค่าโมเดลเพื่อควบคุมการตอบกลับ

คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาเฉพาะของผู้ให้บริการ และโค้ดในหน้านี้

ในคำขอแต่ละรายการที่ส่งไปยังโมเดล คุณสามารถส่งการกำหนดค่าโมเดลไปพร้อมกันเพื่อควบคุมวิธีที่โมเดลสร้างการตอบกลับ โมเดลที่โฮสต์ในระบบคลาวด์และโมเดลในอุปกรณ์มีการกำหนดค่าที่แตกต่างกันและมีตัวเลือกการกำหนดค่าที่แตกต่างกัน ดังนี้

  • โมเดลที่โฮสต์ในระบบคลาวด์: ตั้งค่าการกำหนดค่าโดยใช้ generationConfig (Kotlin | Java) ดูข้อมูลเกี่ยวกับ พารามิเตอร์ที่พร้อมใช้งาน

  • โมเดลในอุปกรณ์: ตั้งค่าการกำหนดค่าโดยใช้ onDeviceConfig (Kotlin | Java) ดูข้อมูลเกี่ยวกับพารามิเตอร์ที่พร้อมใช้งาน (Kotlin | Java)

ระบบจะเก็บรักษาการกำหนดค่าไว้ตลอดอายุการใช้งานของอินสแตนซ์ หากต้องการใช้การกำหนดค่าอื่น ให้สร้างอินสแตนซ์ GenerativeModel ใหม่ด้วยการกำหนดค่าดังกล่าว

ตัวอย่างต่อไปนี้แสดงการกำหนดค่าสำหรับโมเดลที่โฮสต์ในระบบคลาวด์และโมเดลในอุปกรณ์ซึ่งอาจใช้ได้หากตั้งค่าโหมดการอนุมาน PREFER_ON_DEVICE

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


แสดงความคิดเห็น เกี่ยวกับประสบการณ์การใช้งาน Firebase AI Logic