Android kitaplığı için Agent Development Kit (ADK), gelişmiş yapay zeka ajanlarını doğrudan Android uygulamalarınıza oluşturup entegre etmenize olanak tanır. ADK, yerel olarak, barındırılan hizmetlerde ve Android mobil cihazlarda çalışan yapay zeka destekli müşteri temsilcileri oluşturmaya yönelik açık kaynaklı bir geliştirici çerçevesidir. Kotlin ve Java programlama dillerini destekleyen bu çerçeve sayesinde hızlıca aracı oluşturmaya başlayabilir ve karmaşık, çok aracılı uygulamalara ölçeklendirebilirsiniz.
Android için ADK kitaplığı, mobil ortamlar için özel olarak tasarlanmış bağımlılıklar ve çalışma zamanı desteği sağlar. ML Kit GenAI API'lerini kullanarak Gemini Nano ile cihaz üzerinde yapay zeka modellerini çalıştıran aracıları oluşturabilirsiniz. Bu sayede, ağ erişimi olmadan çalışabilen, gizliliğe odaklı ve düşük gecikmeli yapay zeka deneyimleri oluşturabilirsiniz.
Android projelerinde ADK Kotlin'i kullanma
Android uygulamalarında çalışan yapay zeka temsilcileri oluşturmak için ADK Kotlin Agent API'yi kullanabilirsiniz. Yazdığınız aracı kodu, ADK Kotlin Başlangıç kılavuzuyla aynıdır. Farklılıklar; Gradle bağımlılığı, proje yapılandırması ve aracıyı çalışma zamanında çağırma şeklinizdir.
Ön koşullar
Android için ADK kitaplığının aşağıdaki geliştirme şartları vardır:
- Android Studio
- Android SDK (compileSdk 34 veya üstü, minSdk 24 veya üstü)
Android projenizi yapılandırma
Android projenizin build.gradle.kts bölümüne ADK Android bağımlılığını ve KSP ek açıklama işleyicisini ekleyin:
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)
}
Ajanınızı tanımlayın
Aracı kodu, ADK Kotlin Hızlı Başlangıç ile aynıdır. HelloTimeAgent, @Param ve .generatedTools() söz dizimini içeren @Tool kod örneği, Android'de değişiklik yapılmadan çalışır:
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 uygulamanızdan aracıyı çalıştırma
Android destekli cihazlarda, aşağıdaki kod örneğinde gösterildiği gibi, aracıyı çağırmak ve bir eş yordamdan yanıt toplamak için InMemoryRunner kullanın:
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
}
}
}
Kullanıcı arayüzü oluşturmak için aracıları kullanma
Ajanınızın düz metin yerine kartlar, formlar veya listeler gibi yapılandırılmış, etkileşimli kullanıcı arayüzleri döndürmesi gerektiğinde agent-to-UI (A2UI) protokolünü kullanın.
Jetpack Compose A2UI Oluşturucu'yu kullanarak A2UI yanıtlarını uygulamanızın kullanıcı arayüzü hiyerarşisinde yerel Jetpack Compose ve Material 3 bileşenleri olarak otomatik şekilde oluşturabilirsiniz. Başlamak için Jetpack Compose A2UI kılavuzuna bakın.
Gemini Nano ile cihaz üzerinde modeller
Android için ADK yapısı, ML Kit GenAI API aracılığıyla Gemini Nano kullanılarak cihaz üzerinde çıkarım yapılmasını destekler. Bu yaklaşım, ajanların ağ erişimi olmadan çalışmasına ve verilerin cihazda kalmasına olanak tanır.
Cihaz üzerinde modeli kullanmak için aşağıdaki kod örneğinde gösterildiği gibi Gemini yerine GenaiPrompt modeli oluşturun:
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."),
)
Ayrıca, çoklu ajan sisteminde bulut ve cihaz üzerinde modelleri birleştirebilirsiniz: Kök düzenleyici için bulut tabanlı Gemini, gizliliğe duyarlı görevleri işleyen alt ajanlar için ise cihaz üzerinde GenaiPrompt modellerini kullanın. Bu kalıp hakkında daha fazla bilgi için Kotlin ve Android için ADK blog yayınını inceleyin.
Tamamen çalışan bir etkinlik ve daha fazla örnek için GitHub'daki ADK Kotlin örneklerine bakın.