Modell auswählen

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ünschten ModelConfig.
  • 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 Vorschaukonfiguration false zurückgibt, sollte Ihre App automatisch zu ModelReleaseStage.STABLE und ModelPreference.FULL zurü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 candidateCount auf 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-fast kann bei bestimmten Prompts auf einigen Geräten schlechte Antworten liefern.