Wählen Sie ein Modell aus

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ünschten ModelConfig.
  • 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 Vorschaukonfiguration false zurückgibt, sollte Ihre App ordnungsgemäß zu ModelReleaseStage.STABLE und ModelPreference.FULL zurü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 candidateCount auf 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.