Konfigurationsoptionen für hybride Funktionen in Android-Apps


Auf dieser Seite werden die folgenden Konfigurationsoptionen für Hybrid-Erlebnisse beschrieben:

Startleitfaden für die Entwicklung hybrider Apps

Inferenzmodus festlegen

In den Beispielen im Leitfaden für den Einstieg 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 On-Device-Modell 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 On-Device-Modell zu verwenden, wenn es verfügbar ist und den Anfragetyp unterstützt. Andernfalls wird eine Ausnahme ausgegeben.

    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 On-Device-Modell 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 ausgegeben.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

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

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

Wenn Sie die Inferenzmodi PREFER_ON_DEVICE oder PREFER_IN_CLOUD verwenden, kann es hilfreich sein, zu wissen, welcher Modus für bestimmte Anfragen verwendet wurde. Diese Informationen werden durch das Attribut 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());

In der Cloud gehostetes Modell angeben

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

Wenn die primäre oder Fallback-Inferenz von einem in der Cloud gehosteten Modell ausgeführt werden soll, müssen Sie beim Erstellen der generativeModel-Instanz explizit ein zu verwendendes Cloud-Modell angeben.

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Hier finden Sie die Modellnamen für alle unterstützten Gemini-Modelle.

Antworten mit der Modellkonfiguration 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. Cloudbasierte und geräteinterne Modelle bieten unterschiedliche Konfigurationsoptionen (Cloud- im Vergleich zu Geräteintern-Parametern).

Bei in der Cloud gehosteten Modellen legen Sie die Konfiguration direkt in der Konfiguration des Modells fest. Bei On-Device-Modellen legen Sie die Konfiguration jedoch in einem onDeviceConfig fest.

Die Konfiguration wird für die gesamte Lebensdauer der Instanz beibehalten. 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 cloudgehosteten und geräteinternen Modelle festgelegt werden, die verwendet werden könnten, wenn der PREFER_ON_DEVICE-Inferenzmodus 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);