Opções de configuração para experiências híbridas em apps Android


Nesta página, descrevemos as seguintes opções de configuração para experiências híbridas:

Confira se você concluiu o guia para iniciantes sobre como criar experiências híbridas.

Definir um modo de inferência

Os exemplos no guia de início rápido usam o modo PREFER_ON_DEVICE, mas esse é apenas um dos quatro modos de inferência disponíveis.

Estes são os modos de inferência disponíveis:

  • PREFER_ON_DEVICE: tente usar o modelo no dispositivo se ele estiver disponível e for compatível com o tipo de solicitação. Caso contrário, registre um erro no dispositivo e reverta automaticamente para o modelo hospedado na nuvem.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: tente usar o modelo no dispositivo se ele estiver disponível e for compatível com o tipo de solicitação. Caso contrário, gere uma exceção.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: tente usar o modelo hospedado na nuvem se o dispositivo estiver on-line e se o modelo estiver disponível. Se o dispositivo estiver off-line, use o modelo no dispositivo. Em todos os outros casos de falha, gere uma exceção.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: tente usar o modelo hospedado na nuvem se o dispositivo estiver on-line e se o modelo estiver disponível. Caso contrário, gere uma exceção.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

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

Determinar se a inferência no dispositivo ou na nuvem foi usada

Se o modo de inferência for PREFER_ON_DEVICE ou PREFER_IN_CLOUD, pode ser útil saber qual modo foi usado para determinadas solicitações. Essas informações são fornecidas pela propriedade inferenceSource de cada resposta.

Ao acessar essa propriedade, o valor retornado será ON_DEVICE ou 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());

Especificar um modelo para usar

Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página.

É possível especificar um modelo para usar ao criar a instância generativeModel (Kotlin | Java).

  • Especifique um modelo hospedado na nuvem:

    • Se o modo de inferência for PREFER_ON_DEVICE, PREFER_IN_CLOUD ou ONLY_IN_CLOUD, você precisa especificar explicitamente um modelo hospedado na nuvem para usar. O SDK não tem um modelo padrão hospedado na nuvem.

    • Encontre os nomes de modelos para todos os modelos Gemini compatíveis hospedados na nuvem.

  • Especificar um modelo no dispositivo:

    • Se o modo de inferência for PREFER_ON_DEVICE, PREFER_IN_CLOUD ou ONLY_ON_DEVICE, você poderá especificar na onDeviceConfig uma "categoria" de modelo no dispositivo a ser usado. As categorias são uma combinação de estágio de lançamento e características de desempenho.

    • Confira abaixo os valores de categoria aceitos.
      O AICore seleciona automaticamente o modelo no dispositivo que atende às condições da categoria especificada e é compatível com o dispositivo. Por exemplo, se você especificar PREVIEW e o dispositivo for um Pixel 9, provavelmente Gemini Nano 4 Full [Preview] (nano-v4-full) será selecionado automaticamente.

      • STABLE: o estável mais recente no dispositivo.

        • Totalmente testado e em dispositivos do consumidor.

        • Por exemplo, Gemini Nano 3 (nano-v3) ou Gemini Nano 2 (nano-v2).

        • Configuração padrão para o modelo no dispositivo se nenhum OnDeviceModelOption for especificado.

      • PREVIEW: a prévia mais recente do modelo no dispositivo com recursos de desempenho completos.

        • Projetado para maior capacidade de raciocínio e tarefas complexas.

        • Por exemplo, Gemini Nano 4 Full [pré-lançamento] (nano-v4-full, que é baseado no Gemma 4 E4B).

      • PREVIEW_FAST: o mais recente modelo de prévia no dispositivo que é rápido.

        • Otimizado para velocidade máxima e menor latência.

        • Por exemplo, Gemini Nano 4 Fast [Pré-lançamento] (nano-v4-fast, que é baseado no 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);

Usar a configuração do modelo para controlar as respostas

Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página.

Em cada solicitação a um modelo, você pode enviar uma configuração para controlar como ele gera uma resposta. Os modelos hospedados na nuvem e no dispositivo oferecem diferentes opções de configuração (parâmetros cloud x on-device).

Para modelos hospedados na nuvem, defina a configuração diretamente na configuração do modelo. No entanto, para os modelos no dispositivo, defina a configuração deles em um onDeviceConfig.

A configuração é mantida durante toda a vida útil da instância. Se você quiser usar uma configuração diferente, crie uma nova instância GenerativeModel com essa configuração.

Confira um exemplo que define as configurações para os modelos hospedados na nuvem e no dispositivo que podem ser usados se o modo de inferência PREFER_ON_DEVICE for definido:

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