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


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

Conclua o guia para iniciantes sobre como criar experiências híbridas.

Definir um modo de inferência

Os exemplos no guia para iniciantes usam o modo PREFER_ON_DEVICE, mas esse é apenas um dos quatro modos de inferência disponíveis .

Confira os modos de inferência disponíveis:

  • PREFER_ON_DEVICE: tenta usar o modelo no dispositivo se ele estiver disponível e oferecer suporte ao 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: tenta usar o modelo no dispositivo se ele estiver disponível e oferecer suporte ao 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: tenta usar o modelo hospedado na nuvem se o dispositivo estiver on-line e o modelo estiver disponível. Se o dispositivo estiver off-line, reverta para 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: tenta usar o modelo hospedado na nuvem se o dispositivo estiver on-line e 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 a ser usado

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

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

  • Especificar 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 hospedado na nuvem padrão.

    • Encontre nomes de modelos para todos os modelos hospedados na nuvem com suporte Gemini.

  • Especificar um modelo no dispositivo:

    • Se o modo de inferência for PREFER_ON_DEVICE, PREFER_IN_CLOUD ou ONLY_ON_DEVICE, você poderá opcionalmente 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.

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

      • STABLE: o modelo 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 nenhuma OnDeviceModelOption for especificada.

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

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

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

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

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

        • Por exemplo, Gemini Nano 4 Fast [Preview] (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 respostas

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

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

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 em uma onDeviceConfig.

A configuração é mantida durante o ciclo de vida 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 estiver 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);