পেশাদার পদ্ধতি

Android Studio-তে এজেন্ট আপনার কোডিং কোলাবরেটর হিসেবে কাজ করে, কোড জেনারেট করে, জটিল বিষয়ের সারসংক্ষেপ তৈরি করে, নির্দিষ্ট রিসোর্স খুঁজে এবং আরও অনেক কিছু করে আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোকে ত্বরান্বিত করে। এজেন্টের সম্পূর্ণ সম্ভাবনা আনলক করার চাবিকাঠি হল কার্যকরী যোগাযোগ।

এই নির্দেশিকায় আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করার স্ট্র্যাটেজি এবং এমন প্রম্পট লেখার পদ্ধতি উল্লেখ করা হয়েছে যা উপযোগী ও নির্ভরযোগ্য উত্তর প্রদান করে। একাধিক কৌশলের জন্য, আমরা বিভিন্ন ব্যবহারের ক্ষেত্রে উদাহরণ প্রম্পট প্রদান করেছি। আরও উদাহরণ প্রম্পটের জন্য, প্রম্পট গ্যালারি দেখুন।

নির্দিষ্ট করে উত্তর দিন

স্পষ্ট, নির্দিষ্ট নির্দেশাবলী থাকলে এজেন্ট সবচেয়ে ভালো পারফর্ম করে। আপনি নির্দিষ্ট কোনও লাইব্রেরি, API বা পদ্ধতি ব্যবহার করতে চাইলে, সেগুলি আপনার প্রশ্নে অন্তর্ভুক্ত করুন—অথবা আপনার প্রোজেক্টের রুট AGENTS.md ফাইলে অন্তর্ভুক্ত করুন যাতে ইন্টার‍্যাকশন জুড়ে সেগুলি বজায় থাকে। এটি ত্রুটির প্রতিবেদন ফাইল করার মতো: আপনি যত বেশি তথ্য দেবেন, তত দ্রুত ও কার্যকরভাবে সমস্যার সমাধান করা যাবে।

নতুন কার্যকারিতা প্রয়োগ করা:

CameraX ব্যবহার করে আমার অ্যাপে কীভাবে ক্যামেরা সাপোর্ট যোগ করব? লাইব্রেরি ব্যবহার করার জন্য আমার প্রয়োজনীয় যেকোনও ডিপেন্ডেন্সি ও অনুমতি অন্তর্ভুক্ত করতে ভুলবেন না।
আমার অ্যাপে কীভাবে ক্যামেরা সাপোর্ট যোগ করব?

কোড জেনারেট করা হচ্ছে:

একটি Kotlin সাসপেন্ড ফাংশন লেখো যা প্রদত্ত URL স্ট্রিং থেকে একটি ছবি ডাউনলোড করতে Coil লাইব্রেরি ব্যবহার করে।

ফাংশনের নাম fetchImageAsBitmap হতে হবে। এটি আর্গুমেন্ট হিসেবে একটি Context এবং একটি String URL নেবে এবং একটি নালেবেল Bitmap রিটার্ন করবে। কোনও নেটওয়ার্ক বা ডিকোডিং সংক্রান্ত সমস্যা হলে, এটি ব্যতিক্রমটি ধরবে, লগ করবে এবং null রিটার্ন করবে।

ছবি ডাউনলোড করার জন্য একটি ফাংশন লেখো।

কোনও ধারণা ব্যাখ্যা করা:

আমি একটি মিউজিক প্লেয়ার অ্যাপ তৈরি করছি এবং অ্যাপটি ব্যাকগ্রাউন্ডে থাকার সময় প্লেব্যাক চালিয়ে যেতে হবে।

ব্যবহারকারী ডিভাইসে অন্যান্য কাজ করার সময় আমার অ্যাপ চালু রাখার জন্য আমার কাছে কী কী বিকল্প আছে? প্রতিটি পদ্ধতির জন্য API লেভেল সংক্রান্ত প্রয়োজনীয়তা এবং ব্যাটারির আয়ুর উপর প্রভাব কী?

Android পরিষেবা সম্পর্কে ব্যাখ্যা করো।

উত্তরের গঠন বর্ণনা করুন

ডিফল্ট হিসেবে, এজেন্ট কথোপকথনমূলক, প্যারাগ্রাফ-ভিত্তিক ফর্ম্যাটে উত্তর দেয়। ব্যাখ্যার জন্য এটি প্রায়ই উপযোগী হলেও, আপনি উত্তর কীভাবে সাজাতে হবে তা বলে আরও কার্যকর এবং অবিলম্বে ব্যবহারযোগ্য ফলাফল পেতে পারেন। আউটপুট ফর্ম্যাট নির্দিষ্ট করে দিলে, মডেলটি তথ্যকে একটি স্পষ্ট, অনুমানযোগ্য উপায়ে সাজাতে পারে, যার ফলে আপনাকে নিজে থেকে এটি রিফর্ম্যাট করার সময় বেঁচে যায়।

আপনি যদি এজেন্টের জেনারেট করা কোড আপনার অ্যাপে যোগ করতে চান এবং কোডটি একটি নির্দিষ্ট ফর্ম্যাটে চান যাতে আপনি এটি অবিলম্বে ব্যবহার করতে পারেন, তাহলে কোড জেনারেট এবং ফর্ম্যাট করার বিষয়ে এজেন্টকে স্পষ্ট নির্দেশাবলী দিন।

উত্তর স্ট্রাকচার করা হচ্ছে:

ব্যবহারকারীর প্রোফাইলের জন্য রুম এন্টিটি তৈরি করুন। এতে 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 স্টেটমেন্ট ব্যবহার করুন। নতুন কার্যকারিতা যাচাই করে এমন টেস্ট যোগ করুন।

একটি Jetpack Compose স্ক্রিন তৈরি করুন যা JSON API থেকে ব্যবহারকারীদের একটি তালিকা নিয়ে আসে এবং তাদের একটি তালিকায় প্রদর্শন করে। এতে একটি ViewModel থাকতে হবে যা Retrofit ও coroutines ব্যবহার করে, ডেটা লজিক ম্যানেজ করার জন্য একটি রিপোজিটরি, একটি User ডেটা ক্লাস এবং এটি লোডিং ও সমস্যা সংক্রান্ত স্ট্যাটাস দেখাবে।

কন্টেক্সট ম্যানেজ করুন

এজেন্টের সাথে কাজ করার একটি প্রধান অংশ হল সঠিক প্রসঙ্গ প্রদান করা। সবচেয়ে সহায়ক উত্তর পেতে প্রাসঙ্গিক কোড স্নিপেট, ফাইলের কন্টেন্ট এবং প্রোজেক্ট স্ট্রাকচার সংক্রান্ত তথ্য প্রদান করুন। সঠিক ভারসাম্য বজায় রাখতে আপনাকে একাধিকবার চেষ্টা করতে হতে পারে: খুব বেশি তথ্য দিলে এজেন্ট বিভ্রান্ত হতে পারে, আবার খুব কম তথ্য দিলে এজেন্টকে সাহায্য করার জন্য পর্যাপ্ত প্রসঙ্গ প্রদান করা হবে না। এজেন্টকে প্রয়োজনীয় প্রসঙ্গ অ্যাক্সেস করার অনুমতি দিতে উপলভ্য ফিচার ব্যবহার করুন:

  • আপনি যে UI কল্পনা করছেন বা যে অ্যাপ আর্কিটেকচার বোঝার চেষ্টা করছেন তার একটি ভিজ্যুয়াল প্রদান করতে ছবি অ্যাটাচ করুন।
  • কোডবেসের প্রাসঙ্গিক অংশ হাইলাইট করতে ফাইল অ্যাটাচ করুন।
  • এজেন্ট যাতে কোডবেসের নির্দিষ্ট কিছু অংশ উপেক্ষা করে তার জন্য .aiexclude ফাইল ব্যবহার করুন।
  • প্রোজেক্ট-নির্দিষ্ট নির্দেশাবলী দিতে এবং আপনার টিম জুড়ে সেগুলি শেয়ার করতে AGENTS.md ফাইল ব্যবহার করুন। AGENTS.md ফাইল ব্যবহার করার সময়, আপনার নির্দেশাবলী স্পষ্ট করতে Markdown হেডার ও ফর্ম্যাটিং ব্যবহার করুন।
  • এজেন্ট মোড ব্যবহার করার সময়, এক্সটার্নাল এনভায়রনমেন্টের সাথে এজেন্টের জ্ঞান ও ক্ষমতা বাড়াতে, MCP সার্ভার কনফিগার করুন।

ব্যাখ্যা করতে বলুন

এজেন্টের উত্তর বুঝতে না পারলে, ব্যাখ্যা করতে বলুন। এটি শেখার এবং প্রস্তাবিত সমাধান আপনার ব্যবহারের ক্ষেত্রে উপযুক্ত কিনা তা যাচাই করার একটি দুর্দান্ত উপায়। আপনি যেমন উত্তর আশা করেছিলেন, তেমন উত্তর না পেলে, এজেন্ট ভুল উত্তর দিয়েছে বলে ধরে নেওয়া যেতে পারে এবং ব্যাখ্যা চাইলে এজেন্ট নিজেকে সংশোধন করার সুযোগ পাবে।

আপনার নির্দেশাবলী পুনরাবৃত্তি করুন

সহকর্মীর সাথে কাজ করার মতোই, এজেন্টের সাথে কাজ করার সময়ও কখনও কখনও টাস্ক ও প্রত্যাশিত ফলাফল সম্পর্কে স্পষ্টতা পেতে একাধিকবার যোগাযোগ করতে হয়। এজেন্টের প্রাথমিক উত্তর পর্যাপ্ত না হলে, কীভাবে উন্নতি করা যায় সেই বিষয়ে মতামত ও সাজেশন দিয়ে উত্তর দিন। আপনার সাজেশন অনুযায়ী এর উত্তর উন্নত হলে, প্রম্পট লাইব্রেরি-তে এন্ট্রি আপডেট করে অথবা আপনার AGENTS.md ফাইল আপডেট করে আসল প্রম্পটে সেই সাজেশন যোগ করুন।