Mit dem direkten Modellzugriff können Sie die von Ihrer App verwendete Version von Gemini Nano explizit auswählen. Durch die Konfiguration der Modell-Release-Phase und der Leistungseinstellung können Sie früher auf neue Modellfunktionen zugreifen oder Ihre App für bestimmte Hardwareeinschränkungen optimieren.
Modellkonfigurationen verstehen
Wenn Sie ein bestimmtes Modell auswählen möchten, müssen Sie zwei wichtige Parameter in der Klasse ModelConfig konfigurieren: die Release-Phase und die Modellpräferenz.
Release-Phasen
In der Release-Phase können Sie zwischen einem stabilen Modell und einem Vorschaumodell wählen:
- Stabil (
ModelReleaseStage.STABLE): Wählt die neueste Modellversion aus, die vollständig getestet wurde und auf Verbrauchergeräten verfügbar ist. Dies ist die Standardeinstellung. - Vorschau (
ModelReleaseStage.PREVIEW): Wählt die neueste Modellversion in der Vorschauphase aus. In dieser Phase können Sie Betafunktionen oder neuere Modellarchitekturen testen, bevor sie in der stabilen Phase allgemein bereitgestellt werden.
Voraussetzungen und eine Anleitung zur Registrierung für die Entwicklervorschau finden Sie im Leitfaden zur AICore-Entwicklervorschau.
Modellpräferenz
Mit der Modellpräferenz können Sie angeben, welche Leistungsmerkmale für Ihren Anwendungsfall am wichtigsten sind.
- Vollständig (
ModelPreference.FULL): Diese Einstellung wird empfohlen, wenn Modellgenauigkeit und vollständige Funktionen wichtiger sind als Geschwindigkeit. - Schnell (
ModelPreference.FAST): Diese Einstellung wird für latenzempfindliche Anwendungen empfohlen, die minimale Antwortzeiten erfordern.
Generatives Modell konfigurieren
Wenn Sie eine bestimmte Modellvariante verwenden möchten, müssen Sie eine ModelConfig definieren und sie beim Initialisieren des Clients an Ihre GenerationConfig übergeben.
Im folgenden Beispiel wird gezeigt, wie Sie den Client so konfigurieren, dass er ein Fast-Modell aus der Vorabversion verwendet:
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);
Modellverfügbarkeit prüfen
Nicht alle Geräte unterstützen jede Kombination aus Release-Phase und Modellpräferenz. Modelle in der Vorabversion sind nur auf den Geräten in der Liste der unterstützten Geräte im Leitfaden zur AICore-Entwicklervorschau verfügbar.
Die API bietet keine Methode, um alle verfügbaren Modellkonfigurationen im Voraus aufzulisten. Initialisieren Sie stattdessen den Client mit der gewünschten Konfiguration und prüfen Sie dann seinen Status.
- Client initialisieren: Erstellen Sie die
GenerativeModel-Instanz mit der gewünschtenModelConfig. Status prüfen: Rufen Sie die Methode
checkStatus()für die Instanz auf, um zu prüfen, ob die jeweilige Modellvariante auf dem Gerät verfügbar ist.
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));
Um die Aufwärtskompatibilität mit potenziellen zukünftigen Konfigurationen zu gewährleisten, ist das SDK so konzipiert, dass während der Clientinitialisierung keine GenAiException ausgelöst wird. Die Verfügbarkeitsprüfung erfolgt ausschließlich über die Methode checkStatus().
Best Practices
- Fallback-Strategien implementieren: Da Vorschaumodelle nicht auf allen Geräten verfügbar sind, sollten Sie immer eine Fallback-Strategie implementieren. Wenn
checkStatus()für eine Vorschaukonfigurationfalsezurückgibt, sollte Ihre App ordnungsgemäß zuModelReleaseStage.STABLEundModelPreference.FULLzurückkehren. - Modell-Release-Phasen für Entwicklung und Produktion verwenden: Verwenden Sie die Phase Vorschau während der Entwicklung und interner Tests, um anstehende Modellverbesserungen zu bewerten. Wechseln Sie für Ihre öffentlichen Produktionsreleases zu Stabil, um ein einheitliches Verhalten für Ihre Nutzer zu gewährleisten.
Bekannte Probleme
- Einige Geräte in der Vorabversion unterstützen nicht mehrere Kandidaten in der Ausgabe und geben einen Fehler zurück, wenn
candidateCountauf einen Wert größer als 1 festgelegt ist. Weitere Informationen finden Sie in der API-Referenz. - Mehrere Samples werden bei einigen Implementierungen nicht unterstützt. Die Leistung ist langsamer als in der endgültigen Produktion.