เลือกรุ่น

Prompt API ช่วยให้คุณเลือกเวอร์ชันของ Gemini Nano ที่แอปใช้ได้อย่างชัดเจน การกำหนดค่าระยะการเผยแพร่โมเดลและการเลือกประสิทธิภาพช่วยให้คุณเข้าถึงความสามารถใหม่ๆ ของโมเดลได้เร็วขึ้น หรือเพิ่มประสิทธิภาพแอปให้เหมาะกับข้อจำกัดด้านฮาร์ดแวร์ที่เฉพาะเจาะจง

ทำความเข้าใจการกำหนดค่าโมเดล

หากต้องการเลือกโมเดลที่เฉพาะเจาะจง คุณต้องกำหนดค่าพารามิเตอร์หลัก 2 รายการภายในคลาส ModelConfig ได้แก่ ระยะการเผยแพร่ และการเลือกโมเดล

ระยะการเผยแพร่

ระยะการเผยแพร่ช่วยให้คุณเลือกระหว่างโมเดลเวอร์ชันเสถียรหรือเวอร์ชันตัวอย่างได้

  • เวอร์ชันเสถียร (ModelReleaseStage.STABLE): เลือกเวอร์ชันโมเดลล่าสุดที่ผ่านการทดสอบอย่างสมบูรณ์และพร้อมใช้งานในอุปกรณ์ของผู้ใช้ นี่คือการตั้งค่าเริ่มต้น
  • เวอร์ชันตัวอย่าง (ModelReleaseStage.PREVIEW): เลือกเวอร์ชันโมเดลล่าสุดในระยะตัวอย่าง ระยะนี้ช่วยให้คุณทดสอบฟีเจอร์เบต้าหรือสถาปัตยกรรมโมเดลใหม่กว่าได้ก่อนที่จะนำไปใช้ในระยะเวอร์ชันเสถียรอย่างกว้างขวาง

ดูข้อกำหนดเบื้องต้นและวิธีการลงทะเบียนสำหรับเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ได้ที่ คู่มือเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ของ AICore

การเลือกโมเดล

การเลือกโมเดลช่วยให้คุณระบุลักษณะประสิทธิภาพที่สำคัญที่สุดสำหรับกรณีการใช้งานของคุณได้

  • เต็มรูปแบบ (ModelPreference.FULL): เราขอแนะนำให้ใช้การเลือกนี้เมื่อให้ความสำคัญกับความแม่นยำและความสามารถเต็มรูปแบบของโมเดลมากกว่าความเร็ว
  • รวดเร็ว (ModelPreference.FAST): เราขอแนะนำให้ใช้การเลือกนี้สำหรับแอปที่ไวต่อเวลาในการตอบสนองและต้องการเวลาในการตอบสนองน้อยที่สุด

กำหนดค่าโมเดล Generative

หากต้องการใช้โมเดลเวอร์ชันที่เฉพาะเจาะจง คุณต้องกำหนด ModelConfig และส่งไปยัง GenerationConfig เมื่อเริ่มต้นไคลเอ็นต์

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าไคลเอ็นต์ให้ใช้โมเดลรวดเร็ว จากระยะตัวอย่าง

Kotlin

// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)

Java

// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
    .setModelConfig(new ModelConfig.Builder()
        .setReleaseStage(ModelReleaseStage.PREVIEW)
        .setPreference(ModelPreference.FAST)
        .build())
    .build();

// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

ตรวจสอบความพร้อมใช้งานของโมเดล

อุปกรณ์บางรุ่นไม่รองรับการผสมผสานระยะการเผยแพร่และการเลือกโมเดลทุกรูปแบบ โมเดลเวอร์ชันตัวอย่างจะพร้อมใช้งานใน รายการอุปกรณ์ที่รองรับในคู่มือเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ของ AICore เท่านั้น

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

  • เริ่มต้นไคลเอ็นต์: สร้างอินสแตนซ์ GenerativeModel โดยใช้ ModelConfig ที่ต้องการ
  • ตรวจสอบสถานะ: เรียกใช้เมธอด checkStatus() ในอินสแตนซ์เพื่อยืนยันว่าโมเดลเวอร์ชันที่เฉพาะเจาะจงพร้อมใช้งานในอุปกรณ์

Kotlin

val generativeModel = Generation.getClient(previewFastConfig)

// Verify that the specific preview model is available
val status = generativeModel.checkStatus()

when (status) {
    FeatureStatus.UNAVAILABLE -> {
        // Specified preview model is not available on this device
    }
    FeatureStatus.DOWNLOADABLE -> {
        // Specified preview model is available for this device, but not downloaded yet.
        // Model may be downloaded through the AICore app or by calling generativeModel.download()
    }
    FeatureStatus.AVAILABLE -> {
        // Proceed with inference
    }
    FeatureStatus.DOWNLOADING -> {
        // Specified preview model is downloading
    }
}

Java

GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
    generativeModelFutures.checkStatus(),
    new FutureCallback<Integer>() {
        @Override
        public void onSuccess(Integer status) {
            if (status == FeatureStatus.AVAILABLE) {
                // Proceed with inference
            } else if (status == FeatureStatus.DOWNLOADING) {
                // Specified preview model is downloading
            } else if (status == FeatureStatus.DOWNLOADABLE) {
                // Specified preview model is available for this device, but not downloaded yet.
                // Call generativeModelFutures.download(callback) or use the AICore app.
            } else if (status == FeatureStatus.UNAVAILABLE) {
                // Specified preview model is not available on this device
            }
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle failure
        }
    },
    ContextCompat.getMainExecutor(context));

SDK ได้รับการออกแบบมาเพื่อหลีกเลี่ยงการแสดง GenAiException ระหว่างการเริ่มต้นไคลเอ็นต์ โดยอาศัยเมธอด checkStatus() เพียงอย่างเดียวในการยืนยันความพร้อมใช้งาน เพื่อให้มั่นใจว่า SDK จะเข้ากันได้กับอุปกรณ์ในอนาคต

แนวทางปฏิบัติแนะนำ

  • ใช้กลยุทธ์การทำงานสำรอง: เนื่องจากระบบไม่รับประกันว่าโมเดลเวอร์ชันตัวอย่างจะพร้อมใช้งานในอุปกรณ์ทุกเครื่อง คุณจึงควรใช้กลยุทธ์การทำงานสำรองเสมอ หาก checkStatus() แสดงผลเป็น false สำหรับการกำหนดค่าเวอร์ชันตัวอย่าง แอปควรกลับไปใช้ ModelReleaseStage.STABLE และ ModelPreference.FULL อย่างราบรื่น
  • ใช้ระยะการเผยแพร่โมเดลสำหรับการพัฒนาและการใช้งานจริง: ใช้ระยะตัวอย่าง ระหว่างการพัฒนาและการทดสอบภายในเพื่อประเมินการปรับปรุงโมเดลที่จะเกิดขึ้น เปลี่ยนไปใช้ระยะเวอร์ชันเสถียร สำหรับการเผยแพร่เวอร์ชันที่ใช้งานจริงแบบสาธารณะเพื่อให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานที่สอดคล้องกัน

ปัญหาที่ทราบ

  • อุปกรณ์บางรุ่นในระยะการเผยแพร่เวอร์ชันตัวอย่างจะไม่รองรับตัวเลือกหลายรายการในเอาต์พุต และจะแสดงข้อผิดพลาดหากตั้งค่า candidateCount มากกว่า 1 ดูรายละเอียดเพิ่มเติมได้ที่เอกสารอ้างอิง API
  • การใช้งานบางอย่างไม่รองรับตัวอย่างหลายรายการ ประสิทธิภาพจะช้ากว่าเวอร์ชันที่ใช้งานจริง