En esta página, se describe cómo configurar tu proyecto de Android, configurar la
biblioteca de genai-agent y crear tu primer agente integrado en el dispositivo.
Requisitos previos
Antes de compilar flujos de trabajo de agentes con Gemini Nano, asegúrate de que tu entorno cumpla con los siguientes requisitos:
- Versión de Android: Android 14 (nivel de API 34) o versiones posteriores inscritas en el programa de versión preliminar para desarrolladores de AICore.
- Dispositivos compatibles: Para obtener una lista de los dispositivos compatibles y sus versiones del modelo de Gemini Nano, consulta Compatibilidad con dispositivos de agentes y generación personalizada.
- Minimum SDK:
minSdk 26o una versión posterior - Kotlin: Kotlin 2.3 o una versión posterior
Configura tu proyecto
Agrega la dependencia genai-agent al archivo build.gradle.kts de tu 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")
}
Crea tu primer agente
Un agente tiene dos componentes principales:
- Definición del agente: Instrucciones y protecciones que configuran el comportamiento del agente.
- Ejecutor de agentes: Es el motor de ejecución que se comunica con AICore y administra las conversaciones.
1. Configura el agente y el ejecutor
En la siguiente muestra de código, se indica cómo definir tu agente con instrucciones del sistema y, luego, inicializar la clase 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. Ejecuta una conversación
Las conversaciones de varios turnos conservan el historial de diálogo entre turnos con una
instancia de AgentSession. Une el texto de tu instrucción en un objeto Content y recopila
la respuesta transmitida:
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 las consultas únicas en las que no necesitas conservar el historial de conversaciones, puedes
llamar al método runner.runSingleTurnAsync(prompt) directamente:
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Limpia los recursos
La clase AgentRunner implementa la interfaz AutoCloseable. Cuando se destruya tu componente ViewModel o Activity, cierra el ejecutor para liberar las sesiones activas y cancelar las corrutinas en segundo plano:
runner.close()
Próximos pasos
- Agrega capacidades con herramientas: Dale a tu agente la capacidad de realizar acciones o consultar datos de la app con AppFunctions de Android. Consulta Define herramientas.
- Conserva las sesiones durante la rotación: Obtén información para retener la instancia de
AgentSessiondentro de una claseViewModeldurante los cambios de configuración en Administra las sesiones y el ciclo de vida. - Conéctate a Compose: Transmite eventos y renderiza burbujas de chat interactivas en Transmisión de eventos y la integración de la IU.