Auf dieser Seite wird beschrieben, wie Sie Ihr Android-Projekt einrichten, die genai-agent-Bibliothek konfigurieren und Ihren ersten On-Device-Agenten erstellen.
Vorbereitung
Bevor Sie agentische Workflows mit Gemini Nano erstellen, müssen Sie dafür sorgen, dass Ihre Umgebung die folgenden Anforderungen erfüllt:
- Android-Version: Android 14 (API-Level 34) oder höher, registriert im AICore-Entwicklervorschauprogramm.
- Unterstützte Geräte: Eine Liste der unterstützten Geräte und ihrer Gemini Nano-Modellversionen finden Sie unter Unterstützung für benutzerdefinierte Generierung und Agenten auf Geräten.
- SDK-Mindestversion:
minSdk 26oder höher. - Kotlin: Kotlin 2.3 oder höher.
Projekt konfigurieren
Fügen Sie der Datei build.gradle.kts Ihres Moduls die Abhängigkeit genai-agent hinzu:
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")
}
Ersten KI-Agenten erstellen
Ein Agent besteht aus zwei Hauptkomponenten:
- Definition des KI-Agenten: Anweisungen und Schutzmaßnahmen, die das Verhalten des KI-Agenten konfigurieren.
- Agent Runner: Die Ausführungs-Engine, die mit AICore kommuniziert und Unterhaltungen verwaltet.
1. Agent und Runner konfigurieren
Im folgenden Codebeispiel wird gezeigt, wie Sie Ihren Agenten mit Systemanweisungen definieren und die Klasse AgentRunner initialisieren:
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. Unterhaltung führen
Bei Multi-Turn-Unterhaltungen wird der Dialogverlauf über mehrere Runden hinweg mithilfe einer AgentSession-Instanz beibehalten. Verpacken Sie den Prompt-Text in ein Content-Objekt und erfassen Sie die gestreamte Antwort:
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)
}
}
Für einmalige Abfragen, bei denen Sie den Unterhaltungsverlauf nicht beibehalten müssen, können Sie die Methode runner.runSingleTurnAsync(prompt) direkt aufrufen:
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Ressourcen bereinigen
Die Klasse AgentRunner implementiert die Schnittstelle AutoCloseable. Wenn die Komponente ViewModel oder Activity gelöscht wird, schließen Sie den Runner, um aktive Sitzungen freizugeben und Hintergrund-Coroutinen abzubrechen:
runner.close()
Nächste Schritte
- Funktionen über Tools hinzufügen: Sie können Ihrem Agenten die Möglichkeit geben, Aktionen auszuführen oder App-Daten mithilfe von Android AppFunctions abzufragen. Weitere Informationen finden Sie unter Tools definieren.
- Sitzungen bei Drehung beibehalten: Informationen zum Beibehalten der
AgentSession-Instanz in einerViewModel-Klasse bei Konfigurationsänderungen finden Sie unter Sitzungen und Lebenszyklus verwalten. - Mit Compose verbinden: Ereignisse streamen und interaktive Chat-Bubbles in Ereignisse streamen und UI-Integration rendern.