Thư viện Agent Development Kit (ADK) dành cho Android cho phép bạn tạo và tích hợp các tác nhân AI tinh vi ngay vào ứng dụng Android của mình. ADK là một khung phát triển nguồn mở để xây dựng các tác nhân dựa trên AI chạy cục bộ, trên các dịch vụ được lưu trữ và trên thiết bị di động Android. Khung này hỗ trợ ngôn ngữ lập trình Kotlin và Java, cho phép bạn nhanh chóng bắt đầu xây dựng các tác nhân và mở rộng quy mô lên các ứng dụng phức tạp có nhiều tác nhân.
Thư viện ADK cho Android cung cấp các phần phụ thuộc chuyên biệt và hỗ trợ thời gian chạy phù hợp với môi trường di động. Bạn có thể tạo các tác nhân phần mềm thực thi mô hình AI trên thiết bị bằng Gemini Nano thông qua các API GenAI của Bộ công cụ học máy, cho phép bạn tạo trải nghiệm AI tập trung vào quyền riêng tư và có độ trễ thấp, có thể hoạt động mà không cần truy cập mạng.
Sử dụng ADK Kotlin trong các dự án Android
Bạn có thể dùng ADK Kotlin Agent API để tạo các tác nhân AI chạy trong ứng dụng Android. Mã tác nhân mà bạn viết giống hệt với hướng dẫn Bắt đầu của ADK Kotlin. Điểm khác biệt là phần phụ thuộc Gradle, cấu hình dự án và cách bạn gọi tác nhân trong thời gian chạy.
Điều kiện tiên quyết
Thư viện ADK cho Android có các yêu cầu phát triển sau:
- Android Studio
- SDK Android (compileSdk 34 trở lên, minSdk 24 trở lên)
Định cấu hình dự án Android
Trong build.gradle.kts của dự án Android, hãy thêm phần phụ thuộc ADK Android và trình xử lý chú giải 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)
}
Xác định nhân viên hỗ trợ
Mã tác nhân giống hệt với Kotlin Quickstart (Hướng dẫn nhanh về Kotlin) của ADK. Ví dụ về mã HelloTimeAgent có cú pháp @Tool, @Param và .generatedTools() hoạt động mà không cần sửa đổi trên 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(),
)
}
Chạy tác nhân từ ứng dụng Android
Trên các thiết bị chạy Android, hãy dùng InMemoryRunner để gọi tác nhân và thu thập các phản hồi từ một coroutine, như minh hoạ trong ví dụ mã sau:
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
}
}
}
Các mô hình trên thiết bị có Gemini Nano
Cấu phần phần mềm ADK cho Android hỗ trợ suy luận trên thiết bị bằng Gemini Nano thông qua API GenAI của Bộ công cụ học máy. Phương pháp này cho phép các tác nhân chạy mà không cần truy cập vào mạng, giữ dữ liệu trên thiết bị.
Để sử dụng một mô hình trên thiết bị, hãy tạo mô hình GenaiPrompt thay vì Gemini, như trong ví dụ mã sau:
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."),
)
Bạn cũng có thể kết hợp các mô hình trên đám mây và trên thiết bị trong một hệ thống đa tác nhân: sử dụng Gemini dựa trên đám mây cho trình điều phối gốc và các mô hình GenaiPrompt trên thiết bị cho các tác nhân phụ xử lý các tác vụ nhạy cảm về quyền riêng tư.
Để xem một Activity hoạt động đầy đủ và nhiều ví dụ khác, hãy xem các ví dụ về ADK Kotlin trên GitHub.