Android용 에이전트 개발 키트 (ADK) 라이브러리를 사용하면 정교한 AI 에이전트를 Android 앱에 직접 빌드하고 통합할 수 있습니다. ADK는 호스팅 서비스와 Android 모바일 기기에서 로컬로 실행되는 AI 기반 에이전트를 빌드하기 위한 오픈소스 개발자 프레임워크입니다. 이 프레임워크는 Kotlin 및 Java 프로그래밍 언어를 지원하므로 에이전트를 빠르게 빌드하고 복잡한 멀티 에이전트 애플리케이션으로 확장할 수 있습니다.
Android용 ADK 라이브러리는 모바일 환경에 맞게 조정된 전문 종속 항목과 런타임 지원을 제공합니다. ML Kit GenAI API를 사용하여 Gemini Nano를 사용하는 기기에서 AI 모델을 실행하는 에이전트를 빌드하여 네트워크 액세스 없이 작동할 수 있는 개인 정보 보호 중심의 지연 시간이 짧은 AI 환경을 만들 수 있습니다.
Android 프로젝트에서 ADK Kotlin 사용
ADK Kotlin 에이전트 API를 사용하여 Android 앱 내에서 실행되는 AI 에이전트를 빌드할 수 있습니다. 작성하는 에이전트 코드는 ADK Kotlin 시작하기 가이드와 동일합니다. 차이점은 Gradle 종속 항목, 프로젝트 구성, 런타임에 에이전트를 호출하는 방법입니다.
기본 요건
Android용 ADK 라이브러리에는 다음과 같은 개발 요구사항이 있습니다.
- Android 스튜디오
- Android SDK (compileSdk 34 이상, minSdk 24 이상)
Android 프로젝트 구성
Android 프로젝트의 build.gradle.kts에 ADK Android 종속 항목과 KSP 주석 프로세서를 추가합니다.
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)
}
에이전트 정의
에이전트 코드는 ADK Kotlin 빠른 시작과 동일합니다. @Tool, @Param, .generatedTools() 구문이 있는 HelloTimeAgent 코드 예시는 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(),
)
}
Android 앱에서 에이전트 실행
Android 기반 기기에서는 다음 코드 예시와 같이 InMemoryRunner를 사용하여 에이전트를 호출하고 코루틴에서 응답을 수집합니다.
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
}
}
}
Gemini Nano가 탑재된 온디바이스 모델
Android용 ADK 아티팩트에는 ML Kit GenAI API를 통해 Gemini Nano를 사용하는 기기 내 추론 지원이 포함되어 있습니다. 이 접근 방식을 사용하면 에이전트가 네트워크 액세스 없이 실행되어 기기에 데이터를 유지할 수 있습니다.
온디바이스 모델을 사용하려면 다음 코드 예와 같이 Gemini 대신 GenaiPrompt 모델을 만드세요.
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."),
)
다중 에이전트 시스템에서 클라우드 모델과 온디바이스 모델을 결합할 수도 있습니다. 루트 오케스트레이터에는 클라우드 기반 Gemini를 사용하고 개인 정보 보호에 민감한 작업을 처리하는 하위 에이전트에는 온디바이스 GenaiPrompt 모델을 사용합니다.
완전히 작동하는 활동과 더 많은 예시는 GitHub의 ADK Kotlin 예시를 참고하세요.