Conheça o Gemini Nano: a versão do Gemini que funciona localmente no Android

Quando o assunto é inteligência artificial, quanto mais dados temos, melhores são os resultados.
Isso é especialmente verdade quando falamos de IA generativa e dos Modelos de Linguagem Grande (LLMs).
Nesse contexto, nossos smartphones, que são verdadeiros conjuntos de sensores ambulantes, são dispositivos perfeitos para a coleta e geração de informações.
Isso porque podemos capturar e enviar dados de texto, áudio, vídeo, imagem, localização e muitos outros tipos para modelos que processam essas informações e devolvem resultados relevantes.
Os problemas
Aqui na Alura, por exemplo, temos alguns cursos como Gemini com Android e Integrando DALL-E, Whisper e GPT ao Android, que usam APIs para enviar imagens, áudios e textos do celular para que sejam processados nos servidores da Google ou da OpenAI.
Isso funciona muito bem na maioria dos casos, porém, existem pontos que devem ser levados em consideração dependendo do tipo de app que estamos desenvolvendo:
- Informações sensíveis: em apps de mensagens ou de saúde, por exemplo, é preciso tomar muito cuidado com o tipo de dado enviado para fora do aparelho, por questões de segurança.
- Acesso online: ao adicionar funções como essa em nossos apps, elas passam a depender de conexão com a internet para funcionar corretamente, o que em alguns casos pode fazer o app não funcionar corretamente.
- Custos: geralmente, quanto mais usuários nossos apps têm, maior é o custo das APIs que estamos consumindo, já que será necessário mais poder de processamento e mais solicitações.

Gemini API vs Gemini Nano
Desde o momento em que a Google oficializou o Gemini como sua principal inteligência artificial voltada para o público, ela o dividiu em três tamanhos principais:

- Gemini Ultra: é o modelo mais robusto, com maior capacidade de processamento, indicado para tarefas de grande escala ou que exijam alto desempenho, como pesquisa científica e análise de dados complexos.
- Gemini Pro/Flash: oferece um equilíbrio entre desempenho e consumo, sendo ideal para aplicações de médio porte que ainda exigem boa capacidade de processamento. Essas versões costumam ser as mais utilizadas em APIs, por combinarem baixo custo com respostas ágeis e consistentes.
- Gemini Nano: é a versão mais compacta, voltada para rodar em dispositivos ou cenários com recursos limitados, priorizando leveza e rapidez de implantação, mas ainda oferecendo resultados relevantes, o que a torna ideal para funcionar no Android.
Como o Gemini Nano funciona?
O Gemini Nano vem com a proposta justamente de permitir que aplicativos utilizem o poder de processamento local de dispositivos, como celulares Android ou navegaores web, para realizar tarefas.
Por ser uma tecnologia relativamente nova, ainda possui algumas restrições de funcionamento, como a exigência do Android 14 no mínimo para operar.
No lançamento, esteve limitado a dispositivos topo de linha, como o Google Pixel 8 e os smartphones da linha Samsung S24, embora atualmente já esteja disponível para um número maior de aparelhos.
Essa limitação existe porque o Gemini Nano utiliza o Android AICore, um conjunto de ferramentas de IA pré-instalado no Android.
Ele permite acessar modelos de inteligência artificial já presentes no sistema, oferecendo esses recursos a outros apps sem a necessidade de incluir os modelos na instalação ou baixá-los posteriormente.
Basicamente, podemos usar dentro dos nossos apps uma biblioteca que faz parte do conjunto “Google AI Edge”, que fornece uma espécie de interface de acesso aos modelos já instalados no Android. Todos esses sistemas garantem vantagens de uso para o nosso app e segurança para o sistema:
Para quê o Gemini Nano serve?
Segundo a documentação, o Gemini Nano pode ser usado para tarefas como reformular textos, gerar respostas inteligentes, resumir áudios, revisar a escrita dos usuários, dentre outras funcionalidades. Alguns apps da Google já fazem uso do Gemini Nano:
- Gravador de voz do Pixel: A equipe de desenvolvedores adotou o modelo Gemini Nano mais recente para oferecer suporte a gravações mais longas e resumos de maior qualidade.
- Talkback: O app de acessibilidade do Android, TalkBack, aproveita os recursos de entrada multimodal (texto e imagens) do Gemini Nano para melhorar as descrições de imagens para usuários com deficiência visual.
- Teclado Gboard: Gera respostas mais inteligentes e precisas com base nas entradas do usuário.
Como usar o Gemini Nano em seus aplicativos
Certo, mas como integrar isso nas nossas aplicações?
A primeira coisa a saber é que é possível desenvolver para o Gemini Nano usando diretamente no Android Studio, já que sua estrutura é muito semelhante à API tradicional do Gemini.
No entanto, há alguns requisitos importantes para conseguir testar essa funcionalidade.
É sempre bom consultar a documentação oficial para informações atualizadas, mas, no momento, os pré-requisitos são:
- Utilizar um dispositivo da série Pixel 9.
- Ter o app Android AICore Beta atualizado.
- Ter o app Private Compute Services na versão “1.0.release.658389993” ou superior.
- Fazer parte do grupo experimental do Google AIcore.
Instalando a API do Gemini Nano
1 – Adicione a dependência do AI Core no arquivo build.gradle
do módulo app:
implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp02")
2 – Ainda no build.gradle
, aumente a versão mínima do SDK para 31:
defaultConfig {
...
minSdk = 31
...
}
3 – Prepare a configuração do modelo:
val generationConfig = generationConfig {
context = applicationContext
temperature = 0.2f
topK = 16
maxOutputTokens = 1000 // O máximo suportado pelo Gemini Nano é 12.000 tokens
}
4 – Crie o objeto que irá receber os prompts e retornar os resultados:
val generativeModel = GenerativeModel(
generationConfig = generationConfig
)
5 – Para obter respostas do modelo, há duas formas principais:
a) Passando um texto simples:
lifecycleScope.launch {
val prompt = "Resuma o seguinte texto: Texto para ser resumido"
generativeModel.generateContent(prompt)
}
b) Passando uma lista de mensagens:
lifecycleScope.launch {
val content = content {
text("Bom dia, como vai?")
text("Bem, e você?")
text("Estou bem, obrigado por perguntar. Você vai vir aqui hoje?")
text("Escreva um texto educado para dizer que não.")
}
val response = generativeModel.generateContent(content)
}
6 – Em ambos os casos, também é possível consumir as respostas de forma parcial com Flow, o que é especialmente útil em dispositivos móveis para exibir os resultados enquanto eles são gerados:
generativeModel.generateContentStream(prompt).collect { result ->
// Exibir os resultados parciais
}
Para mais informações consulte o Guia de inferência do AI Core.
Alternativas e limitações do Gemini Nano
Apesar dos requisitos relativamente elevados para experimentar e desenvolver com o Gemini Nano, sua implementação segue um padrão semelhante ao de outras APIs do Google. Isso torna o processo mais familiar para desenvolvedores e pode facilitar sua adoção ao longo do tempo.
Dito isso, a equipe do Android e da Google disponibiliza outras bibliotecas para o uso de IA de maneira nativa no Android, como o Google ML Kit que é muito mais acessível e rodam em uma gama muito maior de aparelhos.
Ele permite utilizar modelos de machine learning capazes de gerar respostas inteligentes, identificar movimentos pela câmera do celular, classificar imagens, realizar traduções e muito mais, tudo sem precisar de conexão com a internet.
E, claro, temos uma formação inteira de cursos aqui na Alura que explicam como usar essas funcionalidades.