Seleziona un modello

L'API Prompt ti consente di selezionare esplicitamente la versione di Gemini Nano utilizzata dalla tua app. Configurando la fase di rilascio del modello e la preferenza di rendimento, puoi accedere in anticipo alle nuove funzionalità del modello o ottimizzare la tua app per vincoli hardware specifici.

Informazioni sulle configurazioni del modello

Per selezionare un modello specifico, devi configurare due parametri chiave all'interno della classe ModelConfig: la fase di rilascio e la preferenza del modello.

Fasi di release

La fase di rilascio ti consente di scegliere tra un modello stabile o di anteprima:

  • Stabile (ModelReleaseStage.STABLE): seleziona l'ultima versione del modello completamente testata e disponibile sui dispositivi di consumo. Questa è l'impostazione predefinita.
  • Anteprima (ModelReleaseStage.PREVIEW): seleziona la versione più recente del modello nella fase di anteprima. Questa fase ti consente di testare le funzionalità beta o le architetture dei modelli più recenti prima che vengano implementate su larga scala nella fase stabile.

Per i prerequisiti e le istruzioni di registrazione per l'anteprima per gli sviluppatori, consulta la Guida all'anteprima per gli sviluppatori AICore.

Preferenza del modello

La preferenza del modello ti consente di specificare quali caratteristiche di rendimento sono più importanti per il tuo caso d'uso.

  • Completa (ModelPreference.FULL): questa preferenza è consigliata quando l'accuratezza del modello e le funzionalità complete hanno la priorità sulla velocità.
  • Veloce (ModelPreference.FAST): questa preferenza è consigliata per le app sensibili alla latenza che richiedono tempi di risposta minimi.

Configura il modello generativo

Per utilizzare una variante specifica del modello, devi definire un ModelConfig e passarlo al tuo GenerationConfig durante l'inizializzazione del client.

L'esempio seguente mostra come configurare il client per utilizzare un modello Fast della fase Anteprima:

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);

Controllare la disponibilità del modello

Non tutti i dispositivi supportano ogni combinazione di fase di rilascio e preferenza del modello. I modelli in anteprima sono disponibili solo nell'elenco dei dispositivi supportati nella guida all'anteprima per gli sviluppatori di AICore.

L'API non fornisce un metodo per elencare in anticipo tutte le configurazioni del modello disponibili. Inizializza invece il client con la configurazione che preferisci e poi verifica il suo stato.

  • Inizializza il client:crea l'istanza GenerativeModel utilizzando il ModelConfig che preferisci.
  • Controlla lo stato:chiama il metodo checkStatus() sull'istanza per verificare che la variante del modello specifica sia disponibile sul dispositivo.

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));

Per garantire la compatibilità futura con potenziali configurazioni future, l'SDK è progettato per evitare di generare un GenAiException durante l'inizializzazione del client, basandosi esclusivamente sul metodo checkStatus() per la verifica della disponibilità.

Best practice

  • Implementa strategie di fallback: poiché non è garantita la disponibilità dei modelli di anteprima su tutti i dispositivi, implementa sempre una strategia di fallback. Se checkStatus() restituisce false per una configurazione di anteprima, la tua app deve ripristinare ModelReleaseStage.STABLE e ModelPreference.FULL.
  • Utilizza le fasi di rilascio del modello per lo sviluppo e la produzione:utilizza la fase Anteprima durante lo sviluppo e i test interni per valutare i prossimi miglioramenti del modello. Passa al canale Stabile per le release di produzione pubbliche per garantire un comportamento coerente per i tuoi utenti.

Problemi noti

  • Per alcuni dispositivi nella fase di rilascio dell'anteprima, non supportano più candidati nell'output e restituiscono un errore se candidateCount è impostato su un valore maggiore di 1. Per ulteriori dettagli, consulta il riferimento API.
  • Non sono supportati più campioni in alcune implementazioni. Le prestazioni saranno più lente rispetto alla produzione finale.
  • L'input di immagini al momento funziona solo su Pixel 10.
  • Il modello nanov4-fast potrebbe fornire risposte scadenti per determinati prompt su alcuni dispositivi.