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 você usa os modos de inferência 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());

Especifique um modelo hospedado na nuvem 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.

Se a inferência principal ou de substituição puder ser realizada por um modelo hospedado na nuvem, especifique explicitamente um modelo de nuvem para usar ao criar a instância generativeModel.

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

Encontre os nomes de todos os modelos do Gemini compatíveis.

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, é possível 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);