Interfejs Prompt API umożliwia wyraźne wybranie wersji Gemini Nano używanej przez aplikację. Konfigurując etap wydania modelu i preferencje dotyczące wydajności, możesz wcześniej uzyskać dostęp do nowych funkcji modelu lub zoptymalizować aplikację pod kątem konkretnych ograniczeń sprzętowych.
Omówienie konfiguracji modelu
Aby wybrać konkretny model, musisz skonfigurować 2 kluczowe parametry w klasie ModelConfig: etap udostępniania i preferencje dotyczące modelu.
Etapy wydania
Etap udostępniania pozwala wybrać model stabilny lub w wersji podglądowej:
- Stabilna (
ModelReleaseStage.STABLE): wybiera najnowszą wersję modelu, która została w pełni przetestowana i jest dostępna na urządzeniach konsumenckich. Jest to ustawienie domyślne. - Podgląd (
ModelReleaseStage.PREVIEW): wybiera najnowszą wersję modelu w fazie podglądu. Na tym etapie możesz testować funkcje beta lub nowsze architektury modeli, zanim zostaną one wdrożone na etapie stabilnym.
Wymagania wstępne i instrukcje rejestracji w wersji przedpremierowej dla programistów znajdziesz w przewodniku po wersji przedpremierowej AICore dla programistów.
Preferowany model
Preferencje modelu pozwalają określić, które cechy wydajności są najważniejsze w Twoim przypadku użycia.
- Pełna (
ModelPreference.FULL): to ustawienie jest zalecane, gdy dokładność modelu i pełne możliwości są ważniejsze niż szybkość. - Szybkie (
ModelPreference.FAST): to ustawienie jest zalecane w przypadku aplikacji wrażliwych na opóźnienia, które wymagają minimalnego czasu reakcji.
Konfigurowanie modelu generatywnego
Aby użyć konkretnego wariantu modelu, musisz zdefiniować ModelConfig i przekazać go do GenerationConfig podczas inicjowania klienta.
Poniższy przykład pokazuje, jak skonfigurować klienta, aby używał modelu szybkiego z etapu wersji zapoznawczej:
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);
Sprawdzanie dostępności modelu
Nie wszystkie urządzenia obsługują każdą kombinację etapu udostępniania i preferencji modelu. Modele w wersji przedpremierowej są dostępne tylko na liście obsługiwanych urządzeń w przewodniku po przedpremierowej wersji AICore dla programistów.
Interfejs API nie udostępnia metody, która pozwala z wyprzedzeniem wyświetlić listę wszystkich dostępnych konfiguracji modelu. Zamiast tego zainicjuj klienta z wybraną konfiguracją, a następnie sprawdź jego stan.
- Zainicjuj klienta: utwórz instancję
GenerativeModel, używając wybranegoModelConfig. Sprawdź stan: wywołaj metodę
checkStatus()na instancji, aby sprawdzić, czy określony wariant modelu jest dostępny na urządzeniu.
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));
Aby zapewnić zgodność z potencjalnymi przyszłymi konfiguracjami, pakiet SDK został zaprojektowany tak, aby podczas inicjowania klienta nie zgłaszał wyjątku GenAiException. Zamiast tego polega wyłącznie na metodzie checkStatus() w celu weryfikacji dostępności.
Sprawdzone metody
- Wdrażaj strategie rezerwowe: modele w wersji testowej nie są dostępne na wszystkich urządzeniach, dlatego zawsze wdrażaj strategię rezerwową. Jeśli funkcja
checkStatus()zwrócifalsew przypadku konfiguracji podglądu, aplikacja powinna płynnie powrócić doModelReleaseStage.STABLEiModelPreference.FULL. - Korzystaj z etapów udostępniania modelu na potrzeby rozwoju i produkcji: na etapie Podgląd podczas rozwoju i testów wewnętrznych oceniaj nadchodzące ulepszenia modelu. W przypadku publicznych wersji produkcyjnych przełącz się na stabilną, aby zapewnić użytkownikom spójne działanie.
Znane problemy
- Niektóre urządzenia w wersji testowej nie obsługują wielu kandydatów w danych wyjściowych i zwracają błąd, jeśli wartość parametru
candidateCountjest większa niż 1. Więcej informacji znajdziesz w dokumentacji interfejsu API. - W niektórych implementacjach nie jest obsługiwanych wiele próbek. Działanie będzie wolniejsze niż w przypadku wersji produkcyjnej.