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 - การใช้งานบางอย่างไม่รองรับตัวอย่างหลายรายการ ประสิทธิภาพจะช้ากว่าเวอร์ชันที่ใช้งานจริง