Nesta página, descrevemos como configurar seu projeto do Android, configurar a
biblioteca genai-agent e criar seu primeiro agente no dispositivo.
Pré-requisitos
Antes de criar Agentic Workflows com o Gemini Nano, verifique se o ambiente atende aos seguintes requisitos:
- Versão do Android: Android 14 (nível 34 da API) ou mais recente inscrito no programa de prévia para desenvolvedores do AICore.
- Dispositivos compatíveis: para ver uma lista de dispositivos compatíveis e as versões do modelo Gemini Nano, consulte Suporte a dispositivos de geração personalizada e agentes.
- SDK mínimo:
minSdk 26ou mais recente. - Kotlin: Kotlin 2.3 ou mais recente.
Configurar seu projeto
Adicione a dependência genai-agent ao arquivo build.gradle.kts do módulo:
dependencies {
// Gemini Nano agentic workflows
implementation("com.google.mlkit:genai-agent:1.0.0-alpha1")
// Optional: Only required when defining tools using Android AppFunctions
implementation("androidx.appfunctions:appfunctions:1.0.0-alpha13")
ksp("androidx.appfunctions:appfunctions-compiler:1.0.0-alpha13")
}
Criar seu primeiro agente
Um agente tem dois componentes principais:
- Definição do agente: instruções e proteções que configuram o comportamento do agente.
- Executor de agente: o mecanismo de execução que se comunica com o AICore e gerencia conversas.
1. Configurar o agente e o executor
O exemplo de código a seguir mostra como definir seu agente com instruções do sistema e inicializar a classe AgentRunner:
import com.google.mlkit.genai.agent.Agent
import com.google.mlkit.genai.agent.AgentRunner
// 1. Build the agent configuration
val agent = Agent.builder()
.setName("Assistant")
.setInstructions("You are a helpful on-device assistant.")
.build()
// 2. Initialize the runner
val runner = AgentRunner(agent)
2. Iniciar uma conversa
As conversas multiturno mantêm o histórico de diálogo entre os turnos usando uma
instância AgentSession. Coloque o texto do comando em um objeto Content e colete
a resposta de streaming:
import android.util.Log
import androidx.lifecycle.lifecycleScope
import com.google.mlkit.genai.agent.textTokens
import com.google.mlkit.genai.prompt.Content
import kotlinx.coroutines.launch
// Create or retrieve a conversation session
val session = runner.getOrCreateSession("chat_session")
val prompt = Content.builder()
.text("Hello! Can you help me organize my day?")
.build()
// Collect streamed tokens in a coroutine
lifecycleScope.launch {
session.runAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
Para consultas únicas em que você não precisa reter o histórico de conversas, chame o método runner.runSingleTurnAsync(prompt) diretamente:
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Limpar recursos
A classe AgentRunner implementa a interface AutoCloseable. Quando o
componente ViewModel ou Activity for destruído, feche o executor para liberar
sessões ativas e cancelar corrotinas em segundo plano:
runner.close()
Próximas etapas
- Adicionar recursos com ferramentas: dê ao agente a capacidade de realizar ações ou consultar dados do app usando as AppFunctions do Android. Consulte Definir ferramentas.
- Preservar sessões durante a rotação: saiba como reter a instância
AgentSessionem uma classeViewModeldurante mudanças de configuração em Gerenciar sessões e ciclo de vida. - Conectar ao Compose: transmita eventos e renderize balões de diálogo interativos na integração de eventos de transmissão e interface.