Prompt API cho phép bạn chọn rõ ràng phiên bản Gemini Nano mà ứng dụng của bạn sử dụng. Bằng cách định cấu hình giai đoạn phát hành mô hình và lựa chọn ưu tiên về hiệu suất, bạn có thể truy cập sớm vào các chức năng mới của mô hình hoặc tối ưu hoá ứng dụng cho các hạn chế về phần cứng cụ thể.
Tìm hiểu cấu hình mô hình
Để chọn một mô hình cụ thể, bạn phải định cấu hình 2 tham số chính trong lớp ModelConfig: giai đoạn phát hành và lựa chọn ưu tiên về mô hình.
Giai đoạn phát hành
Giai đoạn phát hành cho phép bạn chọn giữa mô hình ổn định hoặc mô hình dùng thử:
- Ổn định (
ModelReleaseStage.STABLE): Chọn phiên bản mô hình mới nhất đã được kiểm thử đầy đủ và có trên các thiết bị tiêu dùng. Đây là cài đặt mặc định. - Dùng thử (
ModelReleaseStage.PREVIEW): Chọn phiên bản mô hình mới nhất trong giai đoạn dùng thử. Giai đoạn này cho phép bạn kiểm thử các tính năng beta hoặc kiến trúc mô hình mới hơn trước khi được triển khai rộng rãi sang giai đoạn ổn định.
Để biết các điều kiện tiên quyết và hướng dẫn đăng ký Bản dùng trước cho nhà phát triển, hãy xem hướng dẫn Bản dùng trước AICore cho nhà phát triển.
Lựa chọn ưu tiên về mô hình
Lựa chọn ưu tiên về mô hình cho phép bạn chỉ định những đặc điểm hiệu suất quan trọng nhất cho trường hợp sử dụng của mình.
- Đầy đủ (
ModelPreference.FULL): Bạn nên chọn lựa chọn ưu tiên này khi độ chính xác của mô hình và các chức năng đầy đủ được ưu tiên hơn tốc độ. - Nhanh (
ModelPreference.FAST): Bạn nên chọn lựa chọn ưu tiên này cho các ứng dụng nhạy cảm với độ trễ và yêu cầu thời gian phản hồi tối thiểu.
Định cấu hình mô hình tạo sinh
Để sử dụng một biến thể mô hình cụ thể, bạn phải xác định ModelConfig và truyền biến thể đó đến GenerationConfig khi khởi chạy ứng dụng.
Ví dụ sau đây minh hoạ cách định cấu hình ứng dụng để sử dụng mô hình Nhanh từ giai đoạn Dùng thử:
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);
Kiểm tra phạm vi cung cấp của mô hình
Không phải thiết bị nào cũng hỗ trợ mọi tổ hợp giai đoạn phát hành và lựa chọn ưu tiên về mô hình. Các mô hình dùng thử chỉ có trong danh sách thiết bị được hỗ trợ trong hướng dẫn Bản dùng thử AICore cho nhà phát triển.
API này không cung cấp phương thức để liệt kê trước tất cả các cấu hình mô hình có sẵn. Thay vào đó, hãy khởi chạy ứng dụng bằng cấu hình mong muốn rồi xác minh trạng thái của cấu hình đó.
- Khởi chạy ứng dụng: Tạo thực thể
GenerativeModelbằngModelConfigmà bạn muốn. Kiểm tra trạng thái: Gọi phương thức
checkStatus()trên thực thể để xác minh rằng biến thể mô hình cụ thể có trên thiết bị.
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));
Để đảm bảo khả năng tương thích với các cấu hình tiềm năng trong tương lai, SDK được thiết kế để tránh gửi GenAiException trong quá trình khởi chạy ứng dụng, chỉ dựa vào phương thức checkStatus() để xác minh phạm vi cung cấp.
Các phương pháp hay nhất
- Triển khai các chiến lược dự phòng: Vì không có gì đảm bảo rằng các mô hình xem trước sẽ có trên tất cả các thiết bị, nên bạn phải luôn triển khai chiến lược dự phòng. Nếu
checkStatus()trả vềfalsecho cấu hình dùng thử, thì ứng dụng của bạn sẽ tự động chuyển vềModelReleaseStage.STABLEvàModelPreference.FULL. - Sử dụng các giai đoạn phát hành mô hình để phát triển và sản xuất: Sử dụng giai đoạn Dùng thử trong quá trình phát triển và kiểm thử nội bộ để đánh giá các cải tiến sắp tới của mô hình. Chuyển sang giai đoạn Ổn định cho các bản phát hành công khai để đảm bảo hành vi nhất quán cho người dùng.
Vấn đề đã biết
- Đối với một số thiết bị trong giai đoạn phát hành dùng thử, các thiết bị này sẽ không hỗ trợ nhiều ứng viên trong đầu ra và sẽ trả về lỗi nếu
candidateCountđược đặt lớn hơn 1. Xem tài liệu tham khảo API để biết thêm thông tin. - Một số mẫu không được hỗ trợ trên một số cách triển khai. Hiệu suất sẽ chậm hơn so với bản phát hành cuối cùng.
- Tính năng nhập hình ảnh hiện chỉ hoạt động trên Pixel 10.
- Mô hình
nanov4-fastcó thể đưa ra câu trả lời kém chất lượng cho một số câu lệnh trên một số thiết bị.