Android Studio-তে এজেন্ট আপনার কোডিং কোলাবরেটর হিসেবে কাজ করে, কোড জেনারেট করে, জটিল বিষয়ের সারসংক্ষেপ তৈরি করে, নির্দিষ্ট রিসোর্স খুঁজে এবং আরও অনেক কিছু করে আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোকে ত্বরান্বিত করে। এজেন্টের সম্পূর্ণ সম্ভাবনা আনলক করার চাবিকাঠি হল কার্যকরী যোগাযোগ।
এই নির্দেশিকায় আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করার স্ট্র্যাটেজি এবং এমন প্রম্পট লেখার পদ্ধতি উল্লেখ করা হয়েছে যা উপযোগী ও নির্ভরযোগ্য উত্তর প্রদান করে। একাধিক কৌশলের জন্য, আমরা বিভিন্ন ব্যবহারের ক্ষেত্রে উদাহরণ প্রম্পট প্রদান করেছি। আরও উদাহরণ প্রম্পটের জন্য, প্রম্পট গ্যালারি দেখুন।
নির্দিষ্ট করে উত্তর দিন
স্পষ্ট, নির্দিষ্ট নির্দেশাবলী থাকলে এজেন্ট সবচেয়ে ভালো পারফর্ম করে। আপনি নির্দিষ্ট কোনও লাইব্রেরি, API বা পদ্ধতি ব্যবহার করতে চাইলে, সেগুলি আপনার প্রশ্নে অন্তর্ভুক্ত করুন—অথবা আপনার প্রোজেক্টের রুট AGENTS.md ফাইলে অন্তর্ভুক্ত করুন যাতে ইন্টার্যাকশন জুড়ে সেগুলি বজায় থাকে। এটি ত্রুটির প্রতিবেদন ফাইল করার মতো: আপনি যত বেশি তথ্য দেবেন, তত দ্রুত ও কার্যকরভাবে সমস্যার সমাধান করা যাবে।
নতুন কার্যকারিতা প্রয়োগ করা:
কী করতে হবে
করবেন না
কোড জেনারেট করা হচ্ছে:
কী করতে হবে
একটি Kotlin সাসপেন্ড ফাংশন লেখো যা প্রদত্ত URL স্ট্রিং থেকে একটি ছবি ডাউনলোড করতে Coil লাইব্রেরি ব্যবহার করে।
ফাংশনের নাম
fetchImageAsBitmap হতে হবে। এটি আর্গুমেন্ট হিসেবে একটি
Context এবং একটি String URL নেবে এবং
একটি নালেবেল Bitmap রিটার্ন করবে। কোনও নেটওয়ার্ক বা ডিকোডিং সংক্রান্ত সমস্যা হলে,
এটি ব্যতিক্রমটি ধরবে, লগ করবে এবং
null রিটার্ন করবে।
করবেন না
কোনও ধারণা ব্যাখ্যা করা:
কী করতে হবে
আমি একটি মিউজিক প্লেয়ার অ্যাপ তৈরি করছি এবং অ্যাপটি ব্যাকগ্রাউন্ডে থাকার সময় প্লেব্যাক চালিয়ে যেতে হবে।
ব্যবহারকারী ডিভাইসে অন্যান্য কাজ করার সময় আমার অ্যাপ চালু রাখার জন্য আমার কাছে কী কী বিকল্প আছে? প্রতিটি পদ্ধতির জন্য API লেভেল সংক্রান্ত প্রয়োজনীয়তা এবং ব্যাটারির আয়ুর উপর প্রভাব কী?
করবেন না
উত্তরের গঠন বর্ণনা করুন
ডিফল্ট হিসেবে, এজেন্ট কথোপকথনমূলক, প্যারাগ্রাফ-ভিত্তিক ফর্ম্যাটে উত্তর দেয়। ব্যাখ্যার জন্য এটি প্রায়ই উপযোগী হলেও, আপনি উত্তর কীভাবে সাজাতে হবে তা বলে আরও কার্যকর এবং অবিলম্বে ব্যবহারযোগ্য ফলাফল পেতে পারেন। আউটপুট ফর্ম্যাট নির্দিষ্ট করে দিলে, মডেলটি তথ্যকে একটি স্পষ্ট, অনুমানযোগ্য উপায়ে সাজাতে পারে, যার ফলে আপনাকে নিজে থেকে এটি রিফর্ম্যাট করার সময় বেঁচে যায়।
আপনি যদি এজেন্টের জেনারেট করা কোড আপনার অ্যাপে যোগ করতে চান এবং কোডটি একটি নির্দিষ্ট ফর্ম্যাটে চান যাতে আপনি এটি অবিলম্বে ব্যবহার করতে পারেন, তাহলে কোড জেনারেট এবং ফর্ম্যাট করার বিষয়ে এজেন্টকে স্পষ্ট নির্দেশাবলী দিন।
উত্তর স্ট্রাকচার করা হচ্ছে:
কী করতে হবে
ব্যবহারকারীর প্রোফাইলের জন্য রুম এন্টিটি তৈরি করুন। এতে id, userName, email এবং
memberSince ফিল্ড
থাকতে হবে। id ফিল্ডটি অটোমেটিক জেনারেট
হওয়া উচিত। memberSince ফিল্ডে টাইমস্ট্যাম্প
দেখাতে হবে।
করবেন না
আপনি যদি আরও ওপেন-এন্ডেড প্রশ্ন জিজ্ঞাসা করেন, তাহলে x সংখ্যক বিকল্পের জন্য এটি জিজ্ঞাসা করুন।
উত্তরের সংখ্যা সীমিত করা:
কী করতে হবে
করবেন না
জটিল অনুরোধকে ছোট ছোট টাস্কে ভাগ করুন
এজেন্টের উত্তর আপনার প্রত্যাশা অনুযায়ী না হলে, একবারে সব কিছু জিজ্ঞাসা করার পরিবর্তে একাধিক ছোট, ক্রমিক প্রম্পটের মাধ্যমে এজেন্টকে গাইড করলে তা সাহায্য করতে পারে। এই পদ্ধতি আপনাকে আরও বেশি নিয়ন্ত্রণ দেয় এবং পরবর্তী ধাপে যাওয়ার আগে প্রতিটি ধাপ যাচাই করার সুযোগ দেয়।
সিকোয়েন্সিয়াল প্রম্পট প্রয়োগ করা:
কী করতে হবে
প্রম্পট ১: ডেটা মডেল
প্রথমে, User নামে
একটি Kotlin ডেটা ক্লাস তৈরি করুন। এতে তিনটি প্রপার্টি থাকতে হবে: id (একটি Int), name (একটি স্ট্রিং) এবং
email (একটি স্ট্রিং)।
প্রম্পট ২: নেটওয়ার্ক
লেয়ার
এখন, ApiService নামে একটি Retrofit API ইন্টারফেস
তৈরি করুন। এটির জন্য একটি suspend fun প্রয়োজন, যাকে
getUsers() বলা হয় এবং যা
List<User> রিটার্ন করে।
প্রম্পট ৩: স্টেট
ম্যানেজমেন্ট
এরপর, একটি UsersViewModel লিখুন
যা ApiService-কে ডিপেন্ডেন্সি হিসেবে নেয়। UsersViewModel-এ
সিল করা UiState ক্লাসের
StateFlow প্রকাশ করতে হবে যা
Loading, Success(users: List এবং
Error(message: String) স্ট্যাটাস দেখাতে পারে। ব্যবহারকারীদের তথ্য ফেচ করতে এবং স্ট্যাটাস আপডেট করতে
ViewModel-এ একটি ফাংশন তৈরি করুন। নতুন কার্যকারিতার জন্য
ইউনিট টেস্ট লিখুন।
প্রম্পট ৪: UI
লেয়ার
সবশেষে, UserListScreen নামের একটি Jetpack Compose ফাংশন লিখুন যা
প্যারামিটার হিসেবে UiState গ্রহণ
করে। লোডিং স্ট্যাটাসের জন্য CircularProgressIndicator,
সফল স্ট্যাটাসের জন্য ইউজারনেমের LazyColumn এবং
সমস্যা সংক্রান্ত স্ট্যাটাসের জন্য ত্রুটি মেসেজ সহ Text এলিমেন্ট দেখাতে when স্টেটমেন্ট ব্যবহার করুন। নতুন কার্যকারিতা যাচাই করে এমন টেস্ট
যোগ করুন।
করবেন না
ViewModel
থাকতে হবে যা Retrofit ও coroutines ব্যবহার করে, ডেটা লজিক ম্যানেজ করার জন্য একটি রিপোজিটরি,
একটি User ডেটা ক্লাস এবং এটি লোডিং ও সমস্যা সংক্রান্ত স্ট্যাটাস দেখাবে।কন্টেক্সট ম্যানেজ করুন
এজেন্টের সাথে কাজ করার একটি প্রধান অংশ হল সঠিক প্রসঙ্গ প্রদান করা। সবচেয়ে সহায়ক উত্তর পেতে প্রাসঙ্গিক কোড স্নিপেট, ফাইলের কন্টেন্ট এবং প্রোজেক্ট স্ট্রাকচার সংক্রান্ত তথ্য প্রদান করুন। সঠিক ভারসাম্য বজায় রাখতে আপনাকে একাধিকবার চেষ্টা করতে হতে পারে: খুব বেশি তথ্য দিলে এজেন্ট বিভ্রান্ত হতে পারে, আবার খুব কম তথ্য দিলে এজেন্টকে সাহায্য করার জন্য পর্যাপ্ত প্রসঙ্গ প্রদান করা হবে না। এজেন্টকে প্রয়োজনীয় প্রসঙ্গ অ্যাক্সেস করার অনুমতি দিতে উপলভ্য ফিচার ব্যবহার করুন:
- আপনি যে UI কল্পনা করছেন বা যে অ্যাপ আর্কিটেকচার বোঝার চেষ্টা করছেন তার একটি ভিজ্যুয়াল প্রদান করতে ছবি অ্যাটাচ করুন।
- কোডবেসের প্রাসঙ্গিক অংশ হাইলাইট করতে ফাইল অ্যাটাচ করুন।
- এজেন্ট যাতে কোডবেসের নির্দিষ্ট কিছু অংশ উপেক্ষা করে তার জন্য
.aiexcludeফাইল ব্যবহার করুন। - প্রোজেক্ট-নির্দিষ্ট নির্দেশাবলী দিতে এবং আপনার টিম জুড়ে সেগুলি শেয়ার করতে AGENTS.md ফাইল ব্যবহার করুন। AGENTS.md ফাইল ব্যবহার করার সময়, আপনার নির্দেশাবলী স্পষ্ট করতে Markdown হেডার ও ফর্ম্যাটিং ব্যবহার করুন।
- এজেন্ট মোড ব্যবহার করার সময়, এক্সটার্নাল এনভায়রনমেন্টের সাথে এজেন্টের জ্ঞান ও ক্ষমতা বাড়াতে, MCP সার্ভার কনফিগার করুন।
ব্যাখ্যা করতে বলুন
এজেন্টের উত্তর বুঝতে না পারলে, ব্যাখ্যা করতে বলুন। এটি শেখার এবং প্রস্তাবিত সমাধান আপনার ব্যবহারের ক্ষেত্রে উপযুক্ত কিনা তা যাচাই করার একটি দুর্দান্ত উপায়। আপনি যেমন উত্তর আশা করেছিলেন, তেমন উত্তর না পেলে, এজেন্ট ভুল উত্তর দিয়েছে বলে ধরে নেওয়া যেতে পারে এবং ব্যাখ্যা চাইলে এজেন্ট নিজেকে সংশোধন করার সুযোগ পাবে।
আপনার নির্দেশাবলী পুনরাবৃত্তি করুন
সহকর্মীর সাথে কাজ করার মতোই, এজেন্টের সাথে কাজ করার সময়ও কখনও কখনও টাস্ক ও প্রত্যাশিত ফলাফল সম্পর্কে স্পষ্টতা পেতে একাধিকবার যোগাযোগ করতে হয়। এজেন্টের প্রাথমিক উত্তর পর্যাপ্ত না হলে, কীভাবে উন্নতি করা যায় সেই বিষয়ে মতামত ও সাজেশন দিয়ে উত্তর দিন। আপনার সাজেশন অনুযায়ী এর উত্তর উন্নত হলে, প্রম্পট লাইব্রেরি-তে এন্ট্রি আপডেট করে অথবা আপনার AGENTS.md ফাইল আপডেট করে আসল প্রম্পটে সেই সাজেশন যোগ করুন।