Tính năng truy cập trực tiếp vào mô hình 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ể sử dụng các chức năng mới của mô hình sớm hơn hoặc tối ưu hoá ứng dụng cho các quy tắc ràng buộc cụ thể về phần cứng.
Tìm hiểu về 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 hai tham số chính trong lớp ModelConfig: giai đoạn phát hành và mô hình ưu tiên.
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 xem trước:
- Ổ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 thiết bị của người dùng. Đây là cài đặt mặc định. - Bản xem trước (
ModelReleaseStage.PREVIEW): Chọn phiên bản mô hình mới nhất trong giai đoạn xem trước. Giai đoạn này cho phép bạn thử nghiệm các tính năng thử nghiệm hoặc cấu trúc mô hình mới hơn trước khi triển khai rộng rãi cho giai đoạn ổn định.
Để biết các điều kiện tiên quyết và hướng dẫn đăng ký tham gia bản dùng trước cho nhà phát triển, hãy xem Hướng dẫn về Bản dùng trước cho nhà phát triển AICore.
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 đối với trường hợp sử dụng của bạn.
- Đầy đủ (
ModelPreference.FULL): Bạn nên chọn lựa chọn ưu tiên này khi ưu tiên độ chính xác và toàn bộ chức năng của mô hình hơn tốc độ. - Nhanh (
ModelPreference.FAST): Bạn nên dùng lựa chọn ưu tiên này cho các ứng dụng nhạy cảm với độ trễ, đòi hỏi 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 một 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 trong giai đoạn Bản xem trước:
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 kiểu kết hợp giữa giai đoạn phát hành và lựa chọn ưu tiên về mô hình. Các mô hình xem trước chỉ có trong danh sách thiết bị được hỗ trợ trong hướng dẫn về Bản dùng trước cho nhà phát triển AICore.
API này không cung cấp phương thức để liệt kê trước tất cả cấu hình mô hình hiện có. Thay vào đó, hãy khởi chạy ứng dụng bằng cấu hình bạn muốn, sau đó xác minh trạng thái của ứng dụng.
- Khởi động ứ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ó sẵn 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 chuyển tiếp 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 khả năng hoạt động.
Các phương pháp hay nhất
- Triển khai chiến lược dự phòng: Vì các mô hình xem trước không được đảm bảo sẽ có trên mọi thiết bị, nên hãy luôn triển khai chiến lược dự phòng. Nếu
checkStatus()trả vềfalsecho một cấu hình xem trước, thì ứng dụng của bạn sẽ khôi phục 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à phát hành chính thức: Sử dụng giai đoạn Bản dùng trước trong quá trình phát triển và thử nghiệm nội bộ để đánh giá các điểm cải tiến sắp tới của mô hình. Chuyển sang kênh Ổn định cho các bản phát hành công khai để đảm bảo người dùng có được trải nghiệm nhất quán.
Vấn đề đã biết
- Một số thiết bị trong giai đoạn phát hành bản thử nghiệm sẽ không hỗ trợ nhiều
ứng viên trong kết quả đầu ra và sẽ trả về lỗi nếu
candidateCountđược đặt lớn hơn 1. Hãy xem Tài liệu tham khảo API để biết thêm thông tin. - Một số cách triển khai không hỗ trợ nhiều mẫu. Hiệu suất sẽ chậm hơn so với phiên bản chính thức.