L'accesso diretto al modello 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 prima alle nuove funzionalità del modello o ottimizzare l'app per vincoli hardware specifici.
Informazioni sulle configurazioni dei modelli
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 rilascio
La fase di rilascio ti consente di scegliere tra un modello stabile o in anteprima:
- Stabile (
ModelReleaseStage.STABLE): seleziona l'ultima versione del modello completamente testata e sui dispositivi consumer. Questa è l'impostazione predefinita. - Anteprima (
ModelReleaseStage.PREVIEW): seleziona l'ultima versione 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 ampiamente implementate 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 prestazioni sono più importanti per il tuo caso d'uso.
- Completa (
ModelPreference.FULL): questa preferenza è consigliata quando l'accuratezza e le funzionalità complete del modello 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 di modello specifica, 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 Veloce dalla fase di 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);
Verifica 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 Anteprima per gli sviluppatori AICore.
L'API non fornisce un metodo per elencare in anticipo tutte le configurazioni dei modelli disponibili. Inizializza invece il client con la configurazione desiderata e poi verifica lo stato.
- Inizializza il client: crea l'istanza
GenerativeModelutilizzando il tuoModelConfigpreferito. 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à con le potenziali configurazioni future, l'SDK è progettato per evitare di generare un'eccezione GenAiException durante l'inizializzazione del client, basandosi esclusivamente sul metodo checkStatus() per la verifica della disponibilità.
Best practice
- Implementa strategie di riserva: poiché non è garantito che i modelli di anteprima siano disponibili su tutti i dispositivi, implementa sempre una strategia di riserva. Se
checkStatus()restituiscefalseper una configurazione di Anteprima, l'app deve tornare correttamente aModelReleaseStage.STABLEeModelPreference.FULL. - Utilizza le fasi di rilascio del modello per lo sviluppo e la produzione: utilizza la fase di anteprima durante lo sviluppo e i test interni per valutare i prossimi miglioramenti del modello. Passa a Stabile per le tue release di produzione pubbliche per garantire un comportamento coerente per i tuoi utenti.
Problemi noti
- Alcuni dispositivi in fase di versione di anteprima non supportano più candidati nell'output e restituiranno un errore se
candidateCountè impostato su un valore maggiore di 1. Per ulteriori dettagli, consulta il Riferimento API. - I campioni multipli non sono supportati in alcune implementazioni. Le prestazioni saranno più lente rispetto alla produzione finale.