Mit der Agent Development Kit (ADK) for Android-Bibliothek können Sie anspruchsvolle KI-Agenten direkt in Ihre Android-Apps einbinden. Das ADK ist ein Open-Source-Entwickler-Framework zum Erstellen von KI-gestützten Agenten, die lokal, auf gehosteten Diensten und auf Android-Mobilgeräten ausgeführt werden. Das Framework unterstützt die Programmiersprachen Kotlin und Java, sodass Sie schnell Agenten erstellen und zu komplexen Anwendungen mit mehreren Agenten skalieren können.
Die ADK for Android-Bibliothek bietet spezielle Abhängigkeiten und Laufzeitunterstützung, die auf mobile Umgebungen zugeschnitten sind. Sie können Agenten erstellen, die KI-Modelle auf dem Gerät mit Gemini Nano und den ML Kit GenAI APIs ausführen. So lassen sich datenschutzorientierte KI-Erlebnisse mit geringer Latenz erstellen, die ohne Netzwerkzugriff funktionieren.
ADK Kotlin in Android-Projekten verwenden
Mit der ADK Kotlin-Agent API können Sie KI-Agenten erstellen, die in Android-Apps ausgeführt werden. Der von Ihnen geschriebene Agent-Code ist mit dem ADK Kotlin Leitfaden Erste Schritte identisch. Die Unterschiede liegen in der Gradle-Abhängigkeit, der Projektkonfiguration und der Art und Weise, wie Sie den Agenten zur Laufzeit aufrufen.
Vorbereitung
Für die ADK for Android-Bibliothek gelten die folgenden Entwicklungsanforderungen:
- Android Studio
- Android SDK (compileSdk 34 oder höher, minSdk 24 oder höher)
Android-Projekt konfigurieren
Fügen Sie in der Datei build.gradle.kts Ihres Android-Projekts die ADK Android-Abhängigkeit und den KSP-Annotation Processor hinzu:
plugins {
id("com.android.application")
kotlin("android")
id("com.google.devtools.ksp") version "2.1.20-2.0.1"
}
android {
namespace = "com.example.agent"
compileSdk = 34
defaultConfig {
applicationId = "com.example.agent"
minSdk = 24
targetSdk = 34
}
}
dependencies {
implementation("com.google.adk:google-adk-kotlin-core-android:0.1.0")
ksp("com.google.adk:google-adk-kotlin-processor:0.1.0")
}
kotlin {
jvmToolchain(17)
}
KI-Agenten definieren
Der Agent-Code ist mit dem ADK Kotlin-Schnellstart identisch. Das Codebeispiel HelloTimeAgent mit der Syntax @Tool, @Param und .generatedTools() funktioniert ohne Änderungen unter Android:
package com.example.agent
import com.google.adk.kt.agents.Instruction
import com.google.adk.kt.agents.LlmAgent
import com.google.adk.kt.annotations.Param
import com.google.adk.kt.annotations.Tool
import com.google.adk.kt.models.Gemini
class TimeService {
/** Mock tool implementation */
@Tool
fun getCurrentTime(
@Param("Name of the city to get the time for") city: String
): Map<String, String> {
return mapOf("city" to city, "time" to "The time is 10:30am.")
}
}
object HelloTimeAgent {
@JvmField
val rootAgent = LlmAgent(
name = "hello_time_agent",
description = "Tells the current time in a specified city.",
model = Gemini(
name = "gemini-flash-latest",
apiKey = System.getenv("GOOGLE_API_KEY")
?: error("GOOGLE_API_KEY environment variable not set."),
),
instruction = Instruction(
"You are a helpful assistant that tells the current time in a city. "
+ "Use the 'getCurrentTime' tool for this purpose."
),
tools = TimeService().generatedTools(),
)
}
Agent über Ihre Android-App ausführen
Verwenden Sie auf Android-Geräten InMemoryRunner, um den Agenten aufzurufen und Antworten aus einer Coroutine zu erfassen, wie im folgenden Codebeispiel gezeigt:
import com.google.adk.kt.runners.InMemoryRunner
import com.google.adk.kt.sessions.InMemorySessionService
import com.google.adk.kt.types.Content
import com.google.adk.kt.types.Part
import com.google.adk.kt.types.Role
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
// Create a runner and session service
val sessionService = InMemorySessionService()
val runner = InMemoryRunner(
agent = HelloTimeAgent.rootAgent,
sessionService = sessionService,
)
// Call the agent from a coroutine (e.g. in a ViewModel or Activity)
scope.launch {
runner.runAsync(
userId = "user-123",
sessionId = "session-123",
newMessage = Content(
role = Role.USER,
parts = listOf(Part(text = "What time is it in New York?")),
),
).collect { event ->
val text = event.content?.parts?.firstOrNull()?.text
if (!text.isNullOrBlank()) {
// Update your UI with the agent's response
}
}
}
On-Device-Modelle mit Gemini Nano
Das ADK for Android-Artefakt unterstützt die On-Device-Inferenz mit Gemini Nano über die ML Kit GenAI API. Mit diesem Ansatz können Agenten ohne Netzwerkzugriff ausgeführt werden und Daten bleiben auf dem Gerät.
Wenn Sie ein On-Device-Modell verwenden möchten, erstellen Sie ein GenaiPrompt-Modell anstelle von Gemini, wie im folgenden Codebeispiel gezeigt:
import com.google.adk.kt.models.mlkit.GenaiPrompt
import com.google.mlkit.genai.prompt.GenerativeModel
// Create an ML Kit GenerativeModel for on-device inference
val generativeModel: GenerativeModel = // ... initialize using ML Kit
val onDeviceModel = GenaiPrompt.create(
generativeModel = generativeModel,
name = "gemini-nano",
)
val agent = LlmAgent(
name = "on_device_agent",
model = onDeviceModel,
instruction = Instruction("You are a helpful assistant."),
)
Sie können auch Cloud- und On-Device-Modelle in einem Multi-Agenten-System kombinieren: Verwenden Sie ein cloudbasiertes Gemini-Modell für den Root-Orchestrator und GenaiPrompt-Modelle auf dem Gerät für Sub-Agenten, die datenschutzrelevante Aufgaben übernehmen.
Eine vollständige funktionierende Aktivität und weitere Beispiele finden Sie in den ADK Kotlin-Beispielen auf GitHub.