Questa pagina descrive come configurare il tuo progetto Android, configurare la libreria genai-agent e creare il tuo primo agente on-device.
Prerequisiti
Prima di creare agentic workflow con Gemini Nano, assicurati che il tuo ambiente soddisfi i seguenti requisiti:
- Versione di Android: Android 14 (livello API 34) o versioni successive registrate al programma Anteprima per gli sviluppatori AICore.
- Dispositivi supportati: per un elenco dei dispositivi supportati e delle relative versioni del modello Gemini Nano, consulta Supporto dei dispositivi per la generazione personalizzata e l'agente.
- SDK minimo:
minSdk 26o versioni successive. - Kotlin: Kotlin 2.3 o versioni successive.
Configura il tuo progetto
Aggiungi la dipendenza genai-agent al file build.gradle.kts del tuo modulo:
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 il tuo primo agente
Un agente ha due componenti principali:
- Definizione dell'agente: istruzioni e guardrail che configurano il comportamento dell'agente.
- Agent runner: il motore di esecuzione che comunica con AICore e gestisce le conversazioni.
1. Configura l'agente e il runner
Il seguente esempio di codice mostra come definire l'agente con le istruzioni di sistema e inizializzare la 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. Avvia una conversazione
Le conversazioni multi-turno conservano la cronologia dei dialoghi tra i turni utilizzando un'istanza AgentSession. Racchiudi il testo del prompt in un oggetto Content e raccogli la risposta in 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)
}
}
Per query una tantum in cui non è necessario conservare la cronologia delle conversazioni, puoi chiamare direttamente il metodo runner.runSingleTurnAsync(prompt):
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Esegui la pulizia delle risorse
La classe AgentRunner implementa l'interfaccia AutoCloseable. Quando il componente ViewModel o Activity viene eliminato, chiudi l'esecutore per rilasciare le sessioni attive e annullare le coroutine in background:
runner.close()
Passaggi successivi
- Aggiungi funzionalità con gli strumenti: consenti all'agente di eseguire azioni o eseguire query sui dati dell'app utilizzando Android AppFunctions. Consulta Definisci gli strumenti.
- Conserva le sessioni durante la rotazione: scopri come conservare l'istanza
AgentSessionall'interno di una classeViewModeldurante le modifiche alla configurazione in Gestisci le sessioni e il ciclo di vita. - Connettiti a Compose: trasmetti eventi in streaming ed esegui il rendering di fumetti di chat interattivi in Trasmetti eventi in streaming e integrazione della UI.