เลือกรุ่น

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() ในการยืนยันความพร้อมจำหน่ายสินค้า เพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับกำหนดค่าในอนาคตได้

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

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

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

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