এজেন্টিক ওয়ার্কফ্লো ব্যবহার শুরু করা

এই পৃষ্ঠায় আপনার Android প্রোজেক্ট সেট-আপ, genai-agent লাইব্রেরি কনফিগার এবং আপনার প্রথম অন-ডিভাইস এজেন্ট তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে।

পূর্বশর্ত

Gemini Nano-র সাথে এজেন্টিক ওয়ার্কফ্লো তৈরি করার আগে, আপনার এনভায়রনমেন্ট নিম্নলিখিত প্রয়োজনীয়তা পূরণ করছে কিনা তা নিশ্চিত করুন:

আপনার প্রোজেক্ট কনফিগার করুন

আপনার মডিউলের build.gradle.kts ফাইলে genai-agent ডিপেন্ডেন্সি যোগ করুন:

dependencies {
    // Gemini Nano agentic workflows
    implementation("com.google.mlkit:genai-agent:1.0.0-alpha1")

    // Optional: Only required when defining tools using Android AppFunctions
    implementation("androidx.appfunctions:appfunctions:1.0.0-alpha13")
    ksp("androidx.appfunctions:appfunctions-compiler:1.0.0-alpha13")
}

আপনার প্রথম এজেন্ট তৈরি করুন

এজেন্টের দুটি প্রাথমিক কম্পোনেন্ট আছে:

  • এজেন্টের সংজ্ঞা: এজেন্টের আচরণ কনফিগার করার জন্য নির্দেশাবলী এবং গার্ডরেল।
  • এজেন্ট রানার: এক্সিকিউশন ইঞ্জিন যা AICore-এর সাথে যোগাযোগ করে এবং কথোপকথন ম্যানেজ করে।

১. এজেন্ট ও রানার কনফিগার করুন

নিচের কোড স্যাম্পেল থেকে জানতে পারবেন যে কীভাবে সিস্টেম নির্দেশাবলী সহ আপনার এজেন্টকে সংজ্ঞায়িত করতে হয় এবং AgentRunner ক্লাস শুরু করতে হয়:

import com.google.mlkit.genai.agent.Agent
import com.google.mlkit.genai.agent.AgentRunner

// 1. Build the agent configuration
val agent = Agent.builder()
    .setName("Assistant")
    .setInstructions("You are a helpful on-device assistant.")
    .build()

// 2. Initialize the runner
val runner = AgentRunner(agent)

২. কথোপকথন চালানো

মাল্টি-টার্ন কথোপকথন AgentSession ইনস্ট্যান্স ব্যবহার করে টার্ন জুড়ে ডায়ালগের ইতিহাস ধরে রাখে। আপনার প্রম্পট টেক্সটকে Content অবজেক্টে র‍্যাপ করুন এবং স্ট্রিম করা উত্তর সংগ্রহ করুন:

import android.util.Log
import androidx.lifecycle.lifecycleScope
import com.google.mlkit.genai.agent.textTokens
import com.google.mlkit.genai.prompt.Content
import kotlinx.coroutines.launch

// Create or retrieve a conversation session
val session = runner.getOrCreateSession("chat_session")

val prompt = Content.builder()
    .text("Hello! Can you help me organize my day?")
    .build()

// Collect streamed tokens in a coroutine
lifecycleScope.launch {
    session.runAsync(prompt)
        .textTokens()
        .collect { token ->
            Log.d("Agent", token)
        }
}

একবারই করা কোয়েরির ক্ষেত্রে, যেখানে আপনাকে কথোপকথনের ইতিহাস রাখতে হবে না, সেখানে আপনি সরাসরি runner.runSingleTurnAsync(prompt) মেথড কল করতে পারেন:

lifecycleScope.launch {
    runner.runSingleTurnAsync(prompt)
        .textTokens()
        .collect { token ->
            Log.d("Agent", token)
        }
}

৩. রিসোর্স ক্লিন-আপ করা

AgentRunner ক্লাস AutoCloseable ইন্টারফেস প্রয়োগ করে। আপনার ViewModel বা Activity কম্পোনেন্ট নষ্ট হয়ে গেলে, অ্যাক্টিভ সেশন রিলিজ করতে রানার বন্ধ করুন এবং ব্যাকগ্রাউন্ড কোরুটিন বাতিল করুন:

runner.close()

পরবর্তী ধাপ

  • টুলের মাধ্যমে ক্ষমতা যোগ করুন: আপনার এজেন্টকে অ্যাকশন নেওয়ার ক্ষমতা দিন অথবা Android AppFunctions ব্যবহার করে অ্যাপ ডেটা কোয়েরি করুন। টুল সংজ্ঞায়িত করুন দেখুন।
  • রোটেশন জুড়ে সেশন বজায় রাখা: সেশন ও লাইফসাইকেল ম্যানেজ করুন-এ কনফিগারেশন পরিবর্তন জুড়ে ViewModel ক্লাসের মধ্যে AgentSession ইনস্ট্যান্স কীভাবে বজায় রাখবেন তা জানুন।
  • Compose-এর সাথে কানেক্ট করুন: ইভেন্ট স্ট্রিম করুন এবং ইভেন্ট স্ট্রিম ও UI ইন্টিগ্রেশন-এ ইন্টার‍্যাক্টিভ চ্যাট বাবল রেন্ডার করুন।