Membangun agen ADK untuk Android

Library Agent Development Kit (ADK) untuk Android memungkinkan Anda membangun dan mengintegrasikan agen AI canggih langsung ke dalam aplikasi Android Anda. ADK adalah framework developer open source untuk membangun agen yang didukung AI yang berjalan secara lokal, di layanan yang dihosting, dan di perangkat seluler Android. Framework ini mendukung bahasa pemrograman Kotlin dan Java, sehingga Anda dapat mulai membangun agen dengan cepat dan menskalakan hingga aplikasi multi-agen yang kompleks.

Library ADK for Android menyediakan dependensi khusus dan dukungan runtime yang disesuaikan untuk lingkungan seluler. Anda dapat membuat agen yang menjalankan model AI di perangkat menggunakan Gemini Nano dengan API GenAI ML Kit, sehingga Anda dapat menciptakan pengalaman AI yang berfokus pada privasi dan latensi rendah yang dapat berfungsi tanpa akses jaringan.

Menggunakan ADK Kotlin di project Android

Anda dapat menggunakan ADK Kotlin Agent API untuk membuat agen AI yang berjalan di dalam aplikasi Android. Kode agen yang Anda tulis identik dengan panduan Mulai ADK Kotlin. Perbedaannya adalah dependensi Gradle, konfigurasi project, dan cara Anda memanggil agen saat runtime.

Prasyarat

Library ADK untuk Android memiliki persyaratan pengembangan berikut:

  • Android Studio
  • Android SDK (compileSdk 34 atau yang lebih tinggi, minSdk 24 atau yang lebih tinggi)

Mengonfigurasi project Android Anda

Di build.gradle.kts project Android Anda, tambahkan dependensi ADK Android dan pemroses anotasi 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)
}

Tentukan agen Anda

Kode agen identik dengan Panduan Memulai Kotlin ADK. Contoh kode HelloTimeAgent dengan sintaksis @Tool, @Param, dan .generatedTools() berfungsi tanpa modifikasi di 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(),
    )
}

Menjalankan agen dari aplikasi Android Anda

Di perangkat yang didukung Android, gunakan InMemoryRunner untuk memanggil agen dan mengumpulkan respons dari coroutine, seperti yang ditunjukkan dalam contoh kode berikut:

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
        }
    }
}

Model di perangkat dengan Gemini Nano

Artefak ADK untuk Android mencakup dukungan untuk inferensi di perangkat menggunakan Gemini Nano melalui ML Kit GenAI API. Pendekatan ini memungkinkan agen berjalan tanpa akses jaringan, sehingga data tetap ada di perangkat.

Untuk menggunakan model di perangkat, buat model GenaiPrompt, bukan Gemini, seperti yang ditunjukkan dalam contoh kode berikut:

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."),
)

Anda juga dapat menggabungkan model cloud dan perangkat dalam sistem multi-agen: gunakan Gemini berbasis cloud untuk orkestrator root dan model GenaiPrompt dalam perangkat untuk sub-agen yang menangani tugas yang sensitif terhadap privasi.

Untuk mengetahui Aktivitas yang berfungsi lengkap dan contoh lainnya, lihat contoh ADK Kotlin di GitHub.