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โมเดลอาจให้คำตอบที่ไม่ดีสำหรับพรอมต์บางอย่างใน อุปกรณ์บางเครื่อง