আপনার এজেন্টরা ঠিক আছে। কিন্তু তাদের মধ্যকার হ্যান্ডঅফ (handoff) ঠিক নেই।

বেশিরভাগ মাল্টি-এজেন্ট ডেমো আপনাকে একটিমাত্র এজেন্টকে একটি ছদ্মবেশে দেখায়। তারা দেখায় এজেন্ট A একটি কাজ করছে এবং তারপর এজেন্ট B অন্য একটি কাজ করছে। কিন্তু এজেন্ট A যখন এজেন্ট B-কে তার প্রয়োজনীয় তথ্য দিতে ব্যর্থ হয়, তখন কী ঘটে তা তারা দেখায় না।

আমি এই বছর প্রোডাকশনে তিনটি মাল্টি-এজেন্ট সিস্টেম রিলিজ করেছি। এজেন্টরা কঠিন অংশ ছিল না। কঠিন অংশ ছিল হ্যান্ডঅফগুলো।

একটি হ্যান্ডঅফ মানে কেবল টেক্সট পাস করা নয়। আপনাকে অবশ্যই এগুলো ম্যানেজ করতে হবে:

  • স্কিমা অ্যালাইনমেন্ট (Schema alignment): এজেন্ট B-কে প্রতিবার এজেন্ট A-এর আউটপুট পার্স (parse) করতে হবে।
  • ফেইলর প্রোপাগেশন (Failure propagation): একটি এজেন্ট ব্যর্থ হলে সিস্টেমকে তা জানতে হবে।
  • কনটেক্সট হাইজিন (Context hygiene): প্রতিটি হ্যান্ডঅফ আপনার উইন্ডোতে নয়েজ (noise) যোগ করে।

সবচেয়ে বড় ভুল হলো এজেন্টদের একটি সুতো দিয়ে যুক্ত ব্ল্যাক বক্সের মতো বিবেচনা করা। আপনি এজেন্ট A-কে প্রম্পট দেন, একটি ফলাফল পান এবং সেটি এজেন্ট B-তে ঠেলে দেন। এটি ততক্ষণ কাজ করে যতক্ষণ না এটি ভেঙে পড়ে। যখন এটি ভেঙে পড়ে, আপনি জানবেন না কেন এটি হলো।

এই তিনটি সাধারণ ফেইলর মোড (failure modes) এড়িয়ে চলুন:

  1. সাইলেন্ট ট্রাঙ্কেশন (Silent truncation): এজেন্ট A অতিরিক্ত ডেটা তৈরি করে। এজেন্ট B শেষের অংশটি কেটে ফেলে। এরপর এজেন্ট B আংশিক ডেটা প্রসেস করে এবং আপনাকে অর্থহীন ফলাফল দেয়। প্রতিটি ধাপে আপনার টোকেন কাউন্ট পরিমাপ করুন।

  2. স্কিমা ড্রিফট (Schema drift): আপনি এজেন্ট A-এর জন্য একটি প্রম্পট পরিবর্তন করেন। এখন এটি একটি ভিন্ন ফরম্যাটে ফলাফল দেয়। এজেন্ট B ভেঙে পড়ে কারণ এটি পুরনো ফরম্যাটটি আশা করছিল। প্রম্পটের ওপর নির্ভর না করে Pydantic-এর মতো স্ট্রাকচার্ড আউটপুট ব্যবহার করুন।

  3. রেস কন্ডিশন (Race conditions): আপনি একসাথে পাঁচটি ওয়ার্কার চালান। তিনটি শেষ হয়, কিন্তু দুটি এখনও চলছে। আপনার অ্যাগ্রিগেটর আংশিক ডেটা নিয়ে আগেই কাজ শুরু করে দেয়। এটি টেস্টে কাজ করলেও প্রোডাকশনে ব্যর্থ হয়। সমস্ত টাস্কের জন্য অপেক্ষা করতে একটি ব্যারিয়ার (barrier) ব্যবহার করুন।

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

আমার দ্বিতীয় সিস্টেমটি দেখতে কুৎসিত ছিল কিন্তু সঠিক ছিল। প্রতিটি হ্যান্ডঅফে একটি টাইপড কন্ট্রাক্ট (typed contract) ব্যবহার করা হতো। প্রতিটি ব্যর্থতা ছিল স্পষ্ট। প্রতিটি এজেন্ট ছিল আইসোলেটেড (isolated)।

আমার বর্তমান সিস্টেমটি উভয়টির সংমিশ্রণ। এটি দ্বিতীয় ভার্সনের শৃঙ্খলা ব্যবহার করে কিন্তু বিরক্তিকর কোডগুলোকে একটি ফ্রেমওয়ার্কের আড়ালে লুকিয়ে রাখে।

আপনি যদি মাল্টি-এজেন্ট সিস্টেম তৈরি করেন, তবে কুৎসিত কিন্তু সঠিক ভার্সনটি দিয়ে শুরু করুন। প্রথমে চতুর হওয়ার চেষ্টা করবেন না। প্রোডাকশনে এটি সঠিকভাবে কাজ করান, তারপর এটিকে মার্জিত (elegant) করে তুলুন।

হ্যান্ডঅফ সমস্যাটি সহজ হয় না। কিন্তু আপনি এটি দেখে অবাক হওয়া বন্ধ করবেন।

Source: https://dev.to/mrclaw207/your-agents-are-fine-the-handoff-between-them-isnt-2dij

Optional learning community: https://t.me/GyaanSetuAi