Selecione um modelo

O acesso direto ao modelo permite que você selecione explicitamente a versão do Gemini Nano usada pelo app. Ao configurar o estágio de lançamento do modelo e a preferência de desempenho, você pode acessar novos recursos do modelo antes ou otimizar o app para restrições de hardware específicas.

Noções básicas sobre configurações de modelo

Para selecionar um modelo específico, configure dois parâmetros principais na classe ModelConfig: o estágio de lançamento e a preferência de modelo.

Estágios de lançamento

O estágio de lançamento permite escolher entre um modelo estável ou de pré-lançamento:

  • Estável (ModelReleaseStage.STABLE): seleciona a versão mais recente do modelo que foi totalmente testada e está em dispositivos de consumidores. Essa é a configuração padrão.
  • Pré-lançamento (ModelReleaseStage.PREVIEW): seleciona a versão mais recente do modelo na fase de pré-lançamento. Esse estágio permite testar recursos Beta ou arquiteturas de modelo mais recentes antes que sejam amplamente implantados no estágio estável.

Para saber os pré-requisitos e as instruções de inscrição na prévia para desenvolvedores, consulte o guia da prévia para desenvolvedores do AICore.

Preferência de modelo

A preferência de modelo permite especificar quais características de desempenho são mais importantes para seu caso de uso.

  • Completo (ModelPreference.FULL): essa preferência é recomendada quando a precisão do modelo e os recursos completos são priorizados em relação à velocidade.
  • Rápido (ModelPreference.FAST): essa preferência é recomendada para apps sensíveis à latência que exigem tempos de resposta mínimos.

Configurar o modelo generativo

Para usar uma variante de modelo específica, defina um ModelConfig e transmita-o para o GenerationConfig ao inicializar o cliente.

O exemplo a seguir demonstra como configurar o cliente para usar um modelo Fast da fase de pré-lançamento:

Kotlin

// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)

Java

// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
    .setModelConfig(new ModelConfig.Builder()
        .setReleaseStage(ModelReleaseStage.PREVIEW)
        .setPreference(ModelPreference.FAST)
        .build())
    .build();

// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

Verificar a disponibilidade do modelo

Nem todos os dispositivos são compatíveis com todas as combinações de estágio de lançamento e preferência de modelo. Os modelos de pré-lançamento estão disponíveis apenas na lista de dispositivos compatíveis no guia de prévia para desenvolvedores do AICore.

A API não fornece um método para listar todas as configurações de modelo disponíveis com antecedência. Em vez disso, inicialize o cliente com a configuração desejada e verifique o status dele.

  • Inicialize o cliente: crie a instância GenerativeModel usando o ModelConfig de sua preferência.
  • Verificar o status: chame o método checkStatus() na instância para verificar se a variante específica do modelo está disponível no dispositivo.

Kotlin

val generativeModel = Generation.getClient(previewFastConfig)

// Verify that the specific preview model is available
val status = generativeModel.checkStatus()

when (status) {
    FeatureStatus.UNAVAILABLE -> {
        // Specified preview model is not available on this device
    }
    FeatureStatus.DOWNLOADABLE -> {
        // Specified preview model is available for this device, but not downloaded yet.
        // Model may be downloaded through the AICore app or by calling generativeModel.download()
    }
    FeatureStatus.AVAILABLE -> {
        // Proceed with inference
    }
    FeatureStatus.DOWNLOADING -> {
        // Specified preview model is downloading
    }
}

Java

GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
    generativeModelFutures.checkStatus(),
    new FutureCallback<Integer>() {
        @Override
        public void onSuccess(Integer status) {
            if (status == FeatureStatus.AVAILABLE) {
                // Proceed with inference
            } else if (status == FeatureStatus.DOWNLOADING) {
                // Specified preview model is downloading
            } else if (status == FeatureStatus.DOWNLOADABLE) {
                // Specified preview model is available for this device, but not downloaded yet.
                // Call generativeModelFutures.download(callback) or use the AICore app.
            } else if (status == FeatureStatus.UNAVAILABLE) {
                // Specified preview model is not available on this device
            }
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle failure
        }
    },
    ContextCompat.getMainExecutor(context));

Para garantir a compatibilidade com possíveis configurações futuras, o SDK foi projetado para evitar o lançamento de uma GenAiException durante a inicialização do cliente, dependendo apenas do método checkStatus() para verificação de disponibilidade.

Práticas recomendadas

  • Implemente estratégias de fallback: como os modelos de pré-lançamento não têm garantia de disponibilidade em todos os dispositivos, sempre implemente uma estratégia de fallback. Se checkStatus() retornar false para uma configuração da Preview, o app precisará reverter para ModelReleaseStage.STABLE e ModelPreference.FULL.
  • Use as fases de lançamento do modelo para desenvolvimento e produção: use a fase de pré-lançamento durante o desenvolvimento e os testes internos para avaliar as próximas melhorias estimadas do modelo. Mude para Stable nas versões de produção públicas para garantir um comportamento consistente para os usuários.

Problemas conhecidos

  • Alguns dispositivos na fase de versão de pré-lançamento não aceitam vários candidatos na saída e retornam um erro se candidateCount for definido como maior que 1. Consulte a referência da API para mais detalhes.
  • Não é possível usar várias amostras em algumas implementações. O desempenho será mais lento do que na produção final.