A Mudança para a Inteligência On-Device
A IA móvel está indo além de simples conversas de chat. Com modelos como o Gemini Nano agora disponíveis em mais de 140 milhões de dispositivos, há uma oportunidade crescente de construir apps inteligentes que sejam privados, responsivos e econômicos. No entanto, orquestrar fluxos de trabalho de IA complexos—especialmente aqueles que precisam equilibrar o raciocínio na nuvem com dados no dispositivo—tem sido um desafio de engenharia significativo.
A resposta do Google é o Agent Development Kit (ADK) para Kotlin. Este novo framework open-source (versão 0.1.0) é projetado para simplificar a criação de agentes de IA que podem rodar diretamente no hardware Android. A principal inovação é sua natureza híbrida: você pode construir um sistema de agente único que usa um modelo de nuvem poderoso para raciocínio, enquanto delega tarefas que exigem acesso a dados locais sensíveis para subagentes on-device.
Este guia vai te acompanhar pelos conceitos e códigos essenciais para começar a construir seus próprios agentes híbridos. Vamos cobrir a configuração, criação de ferramentas e orquestração, fornecendo uma base prática para o seu próximo projeto.

Configurando Seu Projeto
Para começar, você precisa adicionar a dependência do ADK para Android no seu arquivo build.gradle.kts. Esta biblioteca inclui todos os componentes essenciais para construir e rodar agentes no dispositivo.
// build.gradle.kts
implementation("com.google.adk:google-adk-kotlin-core-android:0.1.0")
Agora, vamos explorar como construir um agente simples. O exemplo a seguir cria um agente orquestrador que usa um modelo de nuvem para entender as necessidades de viagem do usuário e, em seguida, delega a verificação de documentos a um subagente on-device para privacidade.
import com.google.adk.agents.LlmAgent
import com.google.adk.models.Gemini
// Suponha que esta ferramenta recupere detalhes da viagem de um banco de dados local
class GetTripDetailsTool(private val tripId: String) {
fun execute(): String {
// Simula a busca de detalhes
return "Voo às 10:00, Hotel: Grand Plaza"
}
}
suspend fun main() {
val apiKey = "SUA_CHAVE_DA_API_GEMINI"
val MODEL_NAME = "gemini-2.5-flash"
// 1. Defina um subagente que roda no dispositivo (ex: usando Gemini Nano)
val onDeviceVerifier = LlmAgent(
name = "DocumentVerifier",
description = "Verifica confirmações de reserva usando documentos locais.",
model = Gemini(apiKey = apiKey, name = "gemini-nano"), // Modelo on-device
instruction = Instruction(
"""
Você é um agente de verificação. Você tem acesso aos documentos locais do usuário.
Quando solicitado a verificar uma reserva, extraia o código de confirmação e retorne-o.
""".trimIndent()
),
tools = listOf(LocalDocumentSearchTool()) // Ferramenta hipotética
)
// 2. Defina o orquestrador principal na nuvem
val orchestrator = LlmAgent(
name = "TravelAssistant",
model = Gemini(apiKey = apiKey, name = MODEL_NAME),
instruction = Instruction(
"""
Você é um assistente de viagem prestativo.
Primeiro, use `get_trip_details` para entender o itinerário do usuário.
Se o usuário precisar verificar uma reserva, transfira a tarefa para `DocumentVerifier`.
""".trimIndent()
),
tools = listOf(GetTripDetailsTool("trip-123")), // Exemplo de ferramenta
subAgents = listOf(onDeviceVerifier)
)
// 3. Execute uma consulta
val response = orchestrator.execute("Preciso verificar minha reserva de hotel para esta noite.")
println(response)
}
Este código demonstra o padrão central: um agente baseado na nuvem (TravelAssistant) gerencia a conversa, mas para uma tarefa específica (verificação), ele transfere o controle para um subagente on-device (DocumentVerifier). Isso mantém dados sensíveis, como confirmações de reserva, no dispositivo.

Definindo Ferramentas com Anotações
O ADK para Kotlin simplifica a criação de ferramentas com uma abordagem limpa baseada em anotações. Você pode transformar qualquer classe Kotlin em um conjunto de ferramentas para seu agente usando as anotações @Tool e @Param, que fornecem ao LLM os metadados necessários para invocar suas funções.
Aqui está um exemplo inspirado em O Guia do Mochileiro das Galáxias:
import com.google.adk.tools.Tool
import com.google.adk.tools.Param
class ImprobabilityDriveService {
/** Calcula a improbabilidade de um determinado evento. */
@Tool
fun calculateImprobability(
@Param("O evento para calcular a improbabilidade, ex: 'Um copo de chá se materializando'")
event: String
): String {
return "A improbabilidade de '$event' é de aproximadamente 42 para 1 contra."
}
}
// Na configuração do seu agente:
val heartOfGoldAgent = LlmAgent(
name = "HeartOfGold",
model = Gemini(apiKey = apiKey, name = "gemini-2.5-flash"),
instruction = Instruction("Você é o computador da nave. Seja espirituoso e prestativo."),
tools = ImprobabilityDriveService().generatedTools() // Gera as definições de ferramentas
)
Essa abordagem mantém seu código limpo e type-safe. A função generatedTools() converte automaticamente seus métodos anotados em um formato que o LLM pode entender e chamar.

Conclusão: O Futuro da IA In-App
O ADK para Kotlin é um passo significativo para os desenvolvedores Android. Ele abstrai a orquestração complexa, o gerenciamento de contexto e o tratamento de erros necessários para construir sistemas agênticos robustos. Ao permitir uma comunicação perfeita entre modelos de nuvem e on-device, você pode criar experiências que são inteligentes e privadas.
Principais Lições e Limitações:
- Privacidade: O modelo híbrido é um divisor de águas para apps que lidam com dados sensíveis. Você pode manter informações pessoais no dispositivo enquanto ainda aproveita o raciocínio da nuvem.
- Experimental: Como uma versão 0.1.0, esta é uma API experimental. Espere mudanças e possíveis atualizações que quebrem o código à medida que a biblioteca evolui.
- Disponibilidade do Modelo: O desempenho dos agentes on-device depende do hardware e da disponibilidade do modelo específico (ex: Gemini Nano) no dispositivo do usuário final.
Próximos Passos para Aprender:
- Explore os Demos: Confira os demos oficiais do ADK para Android no GitHub para ver configurações de agentes mais complexas, incluindo roteamento multi-agente e integrações de ferramentas.
- Aprofunde seu Conhecimento sobre Agentes: Para uma visão mais ampla sobre a construção de agentes de nível de produção, explore como modelos avançados estão empurrando os limites de desempenho. Esta análise de um modelo SSM híbrido oferece insights sobre como maximizar o throughput.
- Otimize sua Stack: Agentes eficientes muitas vezes dependem de escolhas inteligentes de dados e modelos. Aprenda com outros times de engenharia, como a Meta usa otimização bayesiana para tarefas complexas de design, para inspirar sua própria resolução de problemas.
Comece a experimentar com o ADK para Kotlin hoje. A capacidade de construir agentes de IA poderosos, privados e responsivos está agora em suas mãos.