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
GenerativeModelutilizzando ilModelConfigche 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()restituiscefalseper una configurazione di anteprima, la tua app deve ripristinareModelReleaseStage.STABLEeModelPreference.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-fastpotrebbe fornire risposte scadenti per determinati prompt su alcuni dispositivi.