Wybierz model

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 możliwości modelu lub zoptymalizować aplikację pod kątem konkretnych ograniczeń sprzętowych.

Konfiguracje modeli

Aby wybrać konkretny model, musisz skonfigurować 2 kluczowe parametry w klasie ModelConfig: etap wydania i preferencje dotyczące modelu.

Etapy wydania

Etap wydania pozwala wybrać model stabilny lub w wersji testowej:

  • Stabilny (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.
  • Wersja testowa (ModelReleaseStage.PREVIEW): wybiera najnowszą wersję modelu w wersji testowej. Ten etap umożliwia testowanie funkcji beta lub nowszych architektur modeli, zanim zostaną one wdrożone na etapie stabilnym.

Wymagania wstępne i instrukcje rejestracji w wersji testowej dla deweloperów znajdziesz w przewodniku Przedpremierowy AICore dla programistów.

Preferencje dotyczące modelu

Preferencje dotyczące modelu pozwalają określić, które cechy wydajności są najważniejsze w Twoim przypadku użycia.

  • Pełne (ModelPreference.FULL): te preferencje są zalecane, gdy dokładność modelu i pełne możliwości są ważniejsze niż szybkość.
  • Szybkie (ModelPreference.FAST): te preferencje są zalecane w przypadku aplikacji wrażliwych na opóźnienia, które wymagają minimalnego czasu reakcji.

Konfigurowanie modelu generatywnego

Aby używać konkretnego wariantu modelu, musisz zdefiniować ModelConfig i przekazać go do GenerationConfig podczas inicjowania klienta.

Poniższy przykład pokazuje, jak skonfigurować klienta do używania modelu szybkiego z etapu wersji testowej:

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ą wszystkie kombinacje etapu wydania i preferencji dotyczących modelu. Modele w wersji przedpremierowej są dostępne tylko na liście obsługiwanych urządzeń w przewodniku AICore w wersji przedpremierowej dla programistów.

Interfejs API nie udostępnia metody, która pozwala z góry wyświetlić listę wszystkich dostępnych konfiguracji modeli. Zamiast tego zainicjuj klienta z wybraną konfiguracją, a następnie sprawdź jego stan.

  • Zainicjuj klienta: utwórz instancję GenerativeModel, używając preferowanego ModelConfig.
  • Sprawdź stan: wywołaj metodę checkStatus() w instancji, aby sprawdzić, czy konkretny 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. Do sprawdzania dostępności używa tylko metody checkStatus().

Sprawdzone metody

  • Wdrażaj strategie rezerwowe: ponieważ nie ma gwarancji, że modele w wersji testowej będą dostępne na wszystkich urządzeniach, zawsze wdrażaj strategię rezerwową. Jeśli metoda checkStatus() zwróci wartość false w przypadku konfiguracji w wersji testowej, aplikacja powinna płynnie powrócić do ModelReleaseStage.STABLE i ModelPreference.FULL.
  • Używaj etapów wydania modelu na potrzeby programowania i produkcji: na etapie programowania i testów wewnętrznych używaj etapu wersji testowej , aby ocenić nadchodzące ulepszenia modelu. W przypadku publicznych wersji produkcyjnych przełącz się na etap stabilny , aby zapewnić użytkownikom spójne działanie.

Znane problemy

  • W przypadku niektórych urządzeń na etapie wydania w wersji testowej nie będzie obsługiwanych wielu kandydatów w danych wyjściowych. Jeśli parametr candidateCount będzie ustawiony na wartość większą niż 1, zostanie zwrócony błąd. Więcej informacji znajdziesz w dokumentacji interfejsu API.
  • W niektórych implementacjach nie jest obsługiwanych wiele próbek. Wydajność będzie niższa niż w przypadku wersji produkcyjnej.
  • Obecnie dane wejściowe obrazu działają tylko na Pixelu 10.
  • W przypadku niektórych urządzeń model nanov4-fast może dawać słabe odpowiedzi na niektóre prompty.