Konfigurationsoptionen für hybride Funktionen in Android-Apps


Auf dieser Seite werden die folgenden Konfigurationsoptionen für hybride Anwendungen beschrieben:

Achten Sie darauf, dass Sie den Startleitfaden zum Erstellen hybrider Anwendungendurchgearbeitet haben.

Inferenzmodus festlegen

In den Beispielen im Startleitfaden wird der PREFER_ON_DEVICE Modus verwendet. Dies ist jedoch nur einer der vier verfügbaren Inferenzmodi.

Folgende Inferenzmodi sind verfügbar:

  • PREFER_ON_DEVICE: Versuchen Sie, das Modell auf dem Gerät zu verwenden, wenn es verfügbar ist und den Anfragetyp unterstützt. Andernfalls wird ein Fehler auf dem Gerät protokolliert und dann automatisch auf das in der Cloud gehostete Modell zurückgegriffen.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: Versuchen Sie, das Modell auf dem Gerät zu verwenden, wenn es verfügbar ist und den Anfragetyp unterstützt. Andernfalls wird eine Ausnahme ausgelöst.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: Versuchen Sie, das in der Cloud gehostete Modell zu verwenden, wenn das Gerät online und das Modell verfügbar ist. Wenn das Gerät offline ist, wird auf das Modell auf dem Gerät zurückgegriffen. In allen anderen Fehlerfällen wird eine Ausnahme ausgelöst.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: Versuchen Sie, das in der Cloud gehostete Modell zu verwenden, wenn das Gerät online und das Modell verfügbar ist. Andernfalls wird eine Ausnahme ausgelöst.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

Festlegen, ob die Inferenz auf dem Gerät oder in der Cloud verwendet wurde

Wenn Ihr Inferenzmodus PREFER_ON_DEVICE oder PREFER_IN_CLOUD ist, kann es hilfreich sein zu wissen, welcher Modus für bestimmte Anfragen verwendet wurde. Diese Informationen werden durch die Eigenschaft inferenceSource jeder Antwort bereitgestellt.

Wenn Sie auf diese Eigenschaft zugreifen, ist der zurückgegebene Wert entweder ON_DEVICE oder IN_CLOUD.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

Zu verwendendes Modell angeben

Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

Sie können ein zu verwendendes Modell angeben, wenn Sie die generativeModel Instanz (Kotlin | Java) erstellen.

  • In der Cloud gehostetes Modell angeben:

    • Wenn Ihr Inferenzmodus PREFER_ON_DEVICE, PREFER_IN_CLOUD oder ONLY_IN_CLOUD ist, müssen Sie explizit ein in der Cloud gehostetes Modell angeben. Das SDK hat kein standardmäßiges in der Cloud gehostetes Modell.

    • Modellnamen für alle unterstützten in der Cloud gehosteten Gemini Modelle finden

  • Modell auf dem Gerät angeben:

    • Wenn Ihr Inferenzmodus PREFER_ON_DEVICE, PREFER_IN_CLOUD oder ONLY_ON_DEVICE ist, können Sie optional in der onDeviceConfig eine „Kategorie“ des zu verwendenden Modells auf dem Gerät angeben. Kategorien sind eine Kombination aus Release-Phase und Leistungsmerkmalen.

    • Unterstützte Kategoriewerte sind unten aufgeführt.
      AICore wählt automatisch das Modell auf dem Gerät aus, das die Bedingungen der angegebenen Kategorie erfüllt und vom Gerät unterstützt wird. Wenn Sie beispielsweise PREVIEW angeben und das Gerät ein Pixel 9 ist, wird wahrscheinlich Gemini Nano 4 Full [Preview] (nano-v4-full) automatisch ausgewählt.

      • STABLE: Das neueste stabile Modell auf dem Gerät.

        • Vollständig getestet und auf Consumer-Geräten verfügbar.

        • Beispielsweise Gemini Nano 3 (nano-v3) oder Gemini Nano 2 (nano-v2).

        • Standardeinstellung für das Modell auf dem Gerät, wenn keine OnDeviceModelOption angegeben ist.

      • PREVIEW: Das neueste Vorschaumodell auf dem Gerät mit voller Leistung.

        • Für höhere Schlussfolgerungsfähigkeit und komplexe Aufgaben entwickelt.

        • Beispielsweise Gemini Nano 4 Full [Preview] (nano-v4-full, das auf Gemma 4 E4B basiert).

      • PREVIEW_FAST: Das neueste Vorschaumodell auf dem Gerät, das schnell ist.

        • Für maximale Geschwindigkeit und geringere Latenz optimiert.

        • Beispielsweise Gemini Nano 4 Fast [Preview] (nano-v4-fast, das auf Gemma 4 E2B basiert).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_HOSTED_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_HOSTED_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Modellkonfiguration verwenden, um Antworten zu steuern

Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

In jeder Anfrage an ein Modell können Sie eine Modellkonfiguration senden, um zu steuern, wie das Modell eine Antwort generiert. In der Cloud gehostete Modelle und Modelle auf dem Gerät bieten unterschiedliche Konfigurationsoptionen (Parameter für die Cloud im Vergleich zu Parametern auf dem Gerät ).

Für in der Cloud gehostete Modelle legen Sie die Konfiguration direkt in der Modellkonfiguration fest. Für die Modelle auf dem Gerät legen Sie die Konfiguration jedoch in einer onDeviceConfig fest.

Die Konfiguration bleibt für die Lebensdauer der Instanz erhalten. Wenn Sie eine andere Konfiguration verwenden möchten, erstellen Sie eine neue GenerativeModel-Instanz mit dieser Konfiguration.

Hier ist ein Beispiel, in dem die Konfigurationen für die in der Cloud gehosteten Modelle und die Modelle auf dem Gerät festgelegt werden, die verwendet werden könnten, wenn der Inferenzmodus PREFER_ON_DEVICE festgelegt ist:

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);