Opcje konfiguracji środowisk hybrydowych w aplikacjach na Androida


Ta strona zawiera opis tych opcji konfiguracji hybrydowych rozwiązań:

Upewnij się, że masz za sobą przewodnik dla początkujących dotyczący tworzenia hybrydowych rozwiązań.

Ustaw tryb wnioskowania

Przykłady w przewodniku dla początkujących używają trybu PREFER_ON_DEVICE, ale jest to tylko jeden z 4 dostępnych trybów wnioskowania.

Oto dostępne tryby wnioskowania:

  • PREFER_ON_DEVICE: spróbuj użyć modelu na urządzeniu, jeśli jest dostępny i obsługuje typ żądania. W przeciwnym razie zaloguj błąd na urządzeniu, a następnie automatycznie przejdź na model hostowany w chmurze.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: spróbuj użyć modelu na urządzeniu, jeśli jest dostępny i obsługuje typ żądania. W przeciwnym razie zgłoś wyjątek.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: spróbuj użyć modelu hostowanego w chmurze, jeśli urządzenie jest online i model jest dostępny. Jeśli urządzenie jest offline, przejdź na model na urządzeniu. We wszystkich innych przypadkach niepowodzenia zgłoś wyjątek.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: spróbuj użyć modelu hostowanego w chmurze, jeśli urządzenie jest online i model jest dostępny. W przeciwnym razie zgłoś wyjątek.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

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

Określ, czy użyto wnioskowania na urządzeniu czy w chmurze

Jeśli tryb wnioskowania to PREFER_ON_DEVICE lub PREFER_IN_CLOUD, warto wiedzieć, który tryb został użyty w przypadku danego żądania. Te informacje są dostępne w przypadku każdej odpowiedzi w postaci właściwości inferenceSource.

Gdy uzyskasz dostęp do tej właściwości, zwrócona wartość będzie ON_DEVICE lub 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());

Określ model, którego chcesz użyć

Kliknij swojego dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy.

Możesz określić model, którego chcesz użyć, podczas tworzenia instancji generativeModel (Kotlin | Java).

  • Określ model hostowany w chmurze:

    • Jeśli tryb wnioskowania to PREFER_ON_DEVICE, PREFER_IN_CLOUD lub ONLY_IN_CLOUD, musisz wyraźnie określić model hostowany w chmurze, którego chcesz użyć. Pakiet SDK nie ma domyślnego modelu hostowanego w chmurze.

    • Znajdź nazwy modeli wszystkich obsługiwanych modeli hostowanych w chmurze Geminimodels.

  • Określ model na urządzeniu:

    • Jeśli tryb wnioskowania to PREFER_ON_DEVICE, PREFER_IN_CLOUD lub ONLY_ON_DEVICE, możesz opcjonalnie określić w onDeviceConfig „kategorię” modelu na urządzeniu, którego chcesz użyć. Kategorie to połączenie etapu wydania i charakterystyki wydajności.

    • Obsługiwane wartości kategorii są wymienione poniżej.
      AICore automatycznie wybiera model na urządzeniu, który spełnia warunki określonej kategorii i jest obsługiwany przez urządzenie. Jeśli na przykład określisz PREVIEW i urządzenie to Pixel 9, prawdopodobnie zostanie automatycznie wybrany model Gemini Nano 4 Full [Preview] (nano-v4-full).

      • STABLE: najnowszy stabilny model na urządzeniu.

        • W pełni przetestowany na urządzeniach konsumenckich.

        • Na przykład Gemini Nano 3 (nano-v3) lub Gemini Nano 2 (nano-v2).

        • Domyślne ustawienie modelu na urządzeniu, jeśli nie określono OnDeviceModelOption.

      • PREVIEW: najnowszy model w wersji przedpremierowej na urządzeniu z pełnymi możliwościami.

        • Zaprojektowany z myślą o większej mocy rozumowania i złożonych zadaniach.

        • Na przykład Gemini Nano 4 Full [Preview] (nano-v4-full, który jest oparty na Gemma 4 E4B).

      • PREVIEW_FAST: najnowszy model w wersji przedpremierowej na urządzeniu, który jest szybki.

        • Zoptymalizowany pod kątem maksymalnej szybkości i mniejszych opóźnień.

        • Na przykład Gemini Nano 4 Fast [Preview] (nano-v4-fast, który jest oparty na Gemma 4 E2B).

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);

Użyj konfiguracji modelu, aby kontrolować odpowiedzi

Kliknij swojego dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy.

W każdym żądaniu wysyłanym do modelu możesz wysłać konfigurację modelu, aby kontrolować sposób generowania odpowiedzi przez model. Modele hostowane w chmurze i modele na urządzeniu oferują różne opcje konfiguracji (parametry chmury i urządzenia ).

W przypadku modeli hostowanych w chmurze skonfiguruj je bezpośrednio w konfiguracji modelu. W przypadku modeli na urządzeniu skonfiguruj je w an onDeviceConfig.

Konfiguracja jest zachowywana przez cały okres istnienia instancji. Jeśli chcesz użyć innej konfiguracji, utwórz nową instancję GenerativeModel z tą konfiguracją.

Oto przykład, który ustawia konfiguracje modeli hostowanych w chmurze i na urządzeniu, które mogą być używane, jeśli ustawiony jest tryb wnioskowania PREFER_ON_DEVICE:

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);