Começar a usar o acesso experimental ao Gemini Nano

O acesso experimental ao Gemini Nano foi criado para desenvolvedores que querem testar o aprimoramento dos apps com recursos de IA no dispositivo de última geração. Este guia fornece detalhes sobre como testar o Gemini Nano usando o SDK AI Edge do Google no seu próprio app.

Baixar o app de exemplo

Se quiser acompanhar uma demonstração preparada, confira nosso app de exemplo no GitHub.

Pré-requisitos

Para testar o Gemini Nano, você precisa de um dispositivo da série Pixel 9. Verifique se você tem um em mãos antes de continuar e se fez login apenas com a conta que pretende usar para testes.

  1. Participe do grupo do Google aicore-experimental.
  2. Participe do programa de testes do Android AICore.

Depois de concluir essas etapas, o nome do app na Play Store (em "Gerenciar apps e dispositivos") vai mudar de "Android AICore" para "Android AICore (Beta)".

Atualizar APKs e baixar binários

  1. Atualize o APK do AICore:
    1. No canto superior direito, toque no ícone do perfil.
    2. Toque em Gerenciar apps e dispositivos > Gerenciar
    3. Toque em Android AICore.
    4. Toque em Atualizar se houver uma atualização disponível.
  2. Atualize o APK do Private Compute Service:
    1. No canto superior direito, toque no ícone do perfil.
    2. Toque em Gerenciar apps e dispositivos > Gerenciar
    3. Toque em Private Compute Services.
    4. Toque em Atualizar se houver uma atualização disponível.
    5. Verifique a versão na guia Sobre este app e confirme se ela é 1.0.release.658389993 ou mais recente.
  3. Reinicie o dispositivo e aguarde alguns minutos para que o teste de inscrição entre em vigor.
  4. Confira a versão do APK do AICore na Play Store (na guia "Sobre este app") para confirmar se ela começa com 0.thirdpartyeap

Configurar o Gradle

Adicione o seguinte ao bloco de dependências na configuração do build.gradle:


implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")

Na configuração build.gradle, defina o SDK de destino mínimo como 31:

defaultConfig {
    ...
    minSdk = 31
    ...
}

Receber o AICore e executar inferências

Crie um objeto GenerationConfig, que tem parâmetros para personalizar propriedades de como o modelo deve executar a inferência.

Os parâmetros incluem:

  • Temperatura: controla a aleatoriedade. Valores mais altos aumentam a diversidade.
  • Top K: quantos tokens dos mais bem classificados devem ser considerados
  • Contagem de candidatos: número máximo de respostas a serem retornadas
  • Máximo de tokens de saída: tamanho da resposta
  • Executor de worker: o ExecutorService em que as tarefas em segundo plano devem ser executadas
  • Executor de callback: o Executor em que os callbacks precisam ser invocados.

Kotlin

val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext() // required
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}

Java

GenerationConfig.Builder configBuilder = GenerationConfig.Companion.builder();
    configBuilder.setContext(context);
    configBuilder.setTemperature(0.2f);
    configBuilder.setTopK(16);
    configBuilder.setMaxOutputTokens(256);

Crie um downloadCallback opcional. Essa é uma função de callback usada para o download do modelo. As mensagens retornadas são para fins de depuração.

Crie o objeto GenerativeModel com as configurações de geração e download opcional que você criou antes.

Kotlin

val downloadConfig = DownloadConfig(downloadCallback)
val generativeModel = GenerativeModel(
   generationConfig = generationConfig,
   downloadConfig = downloadConfig // optional
)

Java

GenerativeModel generativeModel = new GenerativeModel(
   generationConfig,
   downloadConfig = DownloadConfig(downloadCallback) // optional
);

Execute a inferência com o modelo e transmita seu comando. Como GenerativeModel.generateContent() é uma função de suspensão, precisamos garantir que ela esteja no escopo de corrotina correto para ser iniciada.

Kotlin

scope.launch {
  // Single string input prompt
  val input = "I want you to act as an English proofreader. I will provide you
    texts, and I would like you to review them for any spelling, grammar, or
    punctuation errors. Once you have finished reviewing the text, provide me
    with any necessary corrections or suggestions for improving the text: These
    arent the droids your looking for."
  val response = generativeModel.generateContent(input)
  print(response.text)

  // Or multiple strings as input
  val response = generativeModel.generateContent(
  content {
    text("I want you to act as an English proofreader. I will provide you texts
      and I would like you to review them for any spelling, grammar, or
      punctuation errors.")
    text("Once you have finished reviewing the text, provide me with any
      necessary corrections or suggestions for improving the text:")
    text("These arent the droids your looking for.")
    }
  )
  print(response.text)
}

Java

Futures.addCallback(
    String input = "I want you to act as an English proofreader. I will
    provide you texts, and I would like you to review them for any
    spelling, grammar, or punctuation errors. Once you have finished
    reviewing the text, provide me with any necessary corrections or
    suggestions for improving the text:
    These aren't the droids you're looking for."
    generativeModelFutures.generateContent(input),
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        // generation successful
      }

      @Override
      public void onFailure(Throwable t) {
        // generation failed
      }
    },
    ContextCompat.getMainExecutor(this));

Se você tiver feedback sobre o SDK do Google AI Edge ou qualquer outro feedback para nossa equipe, envie um tíquete.

Dicas de comandos

O design de comandos é o processo de criar comandos que extraem uma resposta ideal dos modelos de linguagem. Escrever solicitações bem estruturadas é uma parte essencial para garantir respostas precisas e de alta qualidade de um modelo de linguagem. Incluímos alguns exemplos para você começar a usar o Gemini Nano em casos de uso comuns. Confira as estratégias de comandos do Gemini para mais informações.

Para substituições:

I want you to act as an English proofreader. I will provide you texts, and I
would like you to review them for any spelling, grammar, or punctuation errors.
Once you have finished reviewing the text, provide me with any necessary
corrections or suggestions for improving the text: These arent the droids your
looking for

Para casos de uso da Resposta inteligente:

Prompt: Predict up to 5 emojis as a response to a text chat message. The output
should only include emojis.

input: The new visual design is blowing my mind 🤯
output: ➕,💘, ❤‍🔥

input: Well that looks great regardless
output: 💗,🪄

input: Unfortunately this won't work
output: 💔,😔

input: sounds good, I'll look into that
output: 🙏,👍

input: 10hr cut of jeff goldblum laughing URL
output: 😂,💀,⚰️

input: Woo! Launch time!
Output:

Para resumo:

Summarize this text as bullet points of key information.
Text: A quantum computer exploits quantum mechanical phenomena to perform
  calculations exponentially faster than any modern traditional computer. At
  very tiny scales, physical matter acts as both particles and as waves, and
  quantum computing uses specialized hardware to leverage this behavior. The
  operating principles of quantum devices are beyond the scope of classical
  physics. When deployed at scale, quantum computers could be used in a wide
  variety of applications such as: in cybersecurity to break existing encryption
  methods while helping researchers create new ones, in meteorology to develop
  better weather forecasting etc. However, the current state-of-the-art quantum
  computers are still largely experimental and impractical.