Mit der Prompt API können Sie explizit die Version von Gemini Nano auswählen, die von Ihrer App verwendet wird. Wenn Sie die Releasestufe des Modells und die Leistungseinstellung konfigurieren, können Sie früher auf neue Modellfunktionen zugreifen oder Ihre App für bestimmte Hardwareeinschränkungen optimieren.
Modellkonfigurationen
Wenn Sie ein bestimmtes Modell auswählen möchten, müssen Sie zwei wichtige Parameter in der Klasse ModelConfig konfigurieren: die Releasestufe und die Modelleinstellung.
Releasestufen
Mit der Releasestufe können Sie zwischen einem stabilen Modell und einem Vorschau-Modell wählen:
- Stabil (
ModelReleaseStage.STABLE) : Wählt die aktuelle Modellversion aus, die vollständig getestet wurde und auf Consumer-Geräten verfügbar ist. Dies ist die Standardeinstellung. - Vorschau (
ModelReleaseStage.PREVIEW) : Wählt die aktuelle Modellversion in der Vorschauphase aus. In dieser Phase können Sie Betafunktionen oder neuere Modellarchitekturen testen, bevor sie allgemein in der stabilen Phase bereitgestellt werden.
Informationen zu den Voraussetzungen und zur Registrierung für die Entwicklervorschau finden Sie im Leitfaden zur AICore-Entwicklervorschau.
Modelleinstellung
Mit der Modelleinstellung können Sie angeben, welche Leistungsmerkmale für Ihren Anwendungsfall am wichtigsten sind.
- Vollständig (
ModelPreference.FULL) : Diese Einstellung wird empfohlen, wenn die Modellgenauigkeit und die vollständigen Funktionen wichtiger als die Geschwindigkeit sind. - Schnell (
ModelPreference.FAST) : Diese Einstellung wird für latenzempfindliche Apps 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 schnelles Modell aus der Vorschauphase 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 Releasestufe und Modelleinstellung. Vorschau-Modelle sind nur auf 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 den 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 bestimmte 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 Vorwä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. Stattdessen wird nur die Methode checkStatus() zur Überprüfung der Verfügbarkeit verwendet.
Best Practices
- Fallback-Strategien implementieren:Da nicht garantiert werden kann, dass Vorschau-Modelle auf allen Geräten verfügbar sind, sollten Sie immer eine Fallback-Strategie implementieren. Wenn
checkStatus()für eine Vorschaukonfigurationfalsezurückgibt, sollte Ihre App automatisch zuModelReleaseStage.STABLEundModelPreference.FULLzurückkehren. - Modellreleasestufen für Entwicklung und Produktion verwenden:Verwenden Sie die Vorschauphase 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
- Auf einigen Geräten in der Vorschauphase werden mehrere Kandidaten in der Ausgabe nicht unterstützt. Wenn
candidateCountauf einen Wert größer als 1 festgelegt ist, wird ein Fehler zurückgegeben. Weitere Informationen finden Sie in der API-Referenz. - Mehrere Beispiele werden in einigen Implementierungen nicht unterstützt. Die Leistung ist langsamer als in der endgültigen Produktion.
- Die Bild-Eingabe funktioniert derzeit nur auf dem Pixel 10.
- Das Modell
nanov4-fastkann bei bestimmten Prompts auf einigen Geräten schlechte Antworten liefern.