অ্যান্ড্রয়েডের জন্য ADK এজেন্ট তৈরি করুন

অ্যান্ড্রয়েডের জন্য এজেন্ট ডেভেলপমেন্ট কিট (ADK) লাইব্রেরি আপনাকে অত্যাধুনিক এআই এজেন্ট তৈরি করতে এবং সরাসরি আপনার অ্যান্ড্রয়েড অ্যাপে একীভূত করতে দেয়। ADK হলো একটি ওপেন-সোর্স ডেভেলপার ফ্রেমওয়ার্ক, যা স্থানীয়ভাবে, হোস্টেড পরিষেবাগুলিতে এবং অ্যান্ড্রয়েড মোবাইল ডিভাইসে চালিত এআই-চালিত এজেন্ট তৈরির জন্য ব্যবহৃত হয়। এই ফ্রেমওয়ার্কটি কোটলিন এবং জাভা প্রোগ্রামিং ভাষা সমর্থন করে, যা আপনাকে দ্রুত এজেন্ট তৈরি শুরু করতে এবং জটিল, একাধিক এজেন্টযুক্ত অ্যাপ্লিকেশন পর্যন্ত এর পরিধি বাড়াতে সাহায্য করে।

অ্যান্ড্রয়েডের জন্য ADK লাইব্রেরিটি মোবাইল পরিবেশের জন্য বিশেষভাবে তৈরি ডিপেন্ডেন্সি এবং রানটাইম সাপোর্ট প্রদান করে। আপনি ML Kit GenAI API ব্যবহার করে Gemini Nano-এর মাধ্যমে এমন এজেন্ট তৈরি করতে পারেন যা ডিভাইসেই AI মডেল চালায়। এর ফলে আপনি এমন প্রাইভেসি-কেন্দ্রিক ও লো-ল্যাটেন্সি AI অভিজ্ঞতা তৈরি করতে পারবেন যা নেটওয়ার্ক অ্যাক্সেস ছাড়াই কাজ করতে সক্ষম।

অ্যান্ড্রয়েড প্রজেক্টে ADK Kotlin ব্যবহার করুন

আপনি ADK Kotlin এজেন্ট API ব্যবহার করে AI এজেন্ট তৈরি করতে পারেন যা অ্যান্ড্রয়েড অ্যাপের ভিতরে চলে। আপনার লেখা এজেন্ট কোডটি ADK Kotlin Get started গাইডের মতোই। পার্থক্যগুলো হলো Gradle ডিপেন্ডেন্সি, প্রজেক্ট কনফিগারেশন এবং রানটাইমে আপনি কীভাবে এজেন্টকে কল করবেন।

পূর্বশর্ত

ADK for Android লাইব্রেরিটির উন্নয়নের জন্য নিম্নলিখিত শর্তাবলী রয়েছে:

আপনার অ্যান্ড্রয়েড প্রজেক্ট কনফিগার করুন

আপনার অ্যান্ড্রয়েড প্রজেক্টের build.gradle.kts ফাইলে ADK অ্যান্ড্রয়েড ডিপেন্ডেন্সি এবং 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 Quickstart- এর অনুরূপ। @Tool , @Param , এবং .generatedTools() সিনট্যাক্স সহ HelloTimeAgent কোড উদাহরণটি অ্যান্ড্রয়েডে কোনো পরিবর্তন ছাড়াই কাজ করে:

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(),
    )
}

আপনার অ্যান্ড্রয়েড অ্যাপ থেকে এজেন্টটি চালান।

অ্যান্ড্রয়েড-চালিত ডিভাইসগুলিতে, এজেন্টকে আহ্বান করতে এবং একটি কো-রুটিন থেকে প্রতিক্রিয়া সংগ্রহ করতে 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
        }
    }
}

জেমিনি ন্যানো সহ অন-ডিভাইস মডেলগুলি

ADK for Android আর্টিফ্যাক্টটিতে 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 ) মডেল ব্যবহার করুন।

একটি সম্পূর্ণ কার্যকরী অ্যাক্টিভিটি এবং আরও উদাহরণের জন্য, গিটহাবে থাকা ADK কোটলিন উদাহরণগুলো দেখুন।