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

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

ค้นหาชื่อโมเดลสำหรับ โมเดล Gemini ที่รองรับทั้งหมด

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

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

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

สำหรับโมเดลที่โฮสต์บนระบบคลาวด์ ให้ตั้งค่าการกำหนดค่าโดยตรงในการกำหนดค่าของโมเดล อย่างไรก็ตาม สำหรับโมเดลในอุปกรณ์ ให้ตั้งค่าภายใน onDeviceConfig

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

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

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);