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 identisch mit dem ADK Kotlin Leitfaden für den Einstieg. 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 identisch mit dem ADK Kotlin-Schnellstart. 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 für den Root-Orchestrator und On-Device-GenaiPrompt-Modelle für Sub-Agenten, die datenschutzrelevante Aufgaben übernehmen. Weitere Informationen zu diesem
Muster finden Sie im ADK for Kotlin and Android Blogpost.
Eine vollständige funktionierende Aktivität und weitere Beispiele finden Sie in den ADK Kotlin-Beispielen auf GitHub.