Google-এর Agent Development Kit (ADK) টাস্ক বা কাজ পরিচালনা করার জন্য দুটি প্রধান পদ্ধতি প্রদান করে।

ডায়নামিক মাল্টি-এজেন্ট রাউটিং (Dynamic Multi-Agent Routing)

রাউটিং মডেলে একটি কেন্দ্রীয় কোঅর্ডিনেটর (central coordinator) ব্যবহারকারীর অনুরোধ গ্রহণ করে এবং তা বিশেষজ্ঞ এজেন্টদের (specialist agents) কাছে পাঠিয়ে দেয়। কোঅর্ডিনেটর সিদ্ধান্ত নেয় কোন বিশেষজ্ঞ কাজ করবে, বিশেষজ্ঞ তার নির্দিষ্ট অংশ সম্পন্ন করে এবং এরপর নিয়ন্ত্রণ পুনরায় প্যারেন্ট এজেন্টের কাছে ফিরে আসে।

  • এটি যেভাবে কাজ করে – কোঅর্ডিনেটর একজন বিশেষজ্ঞকে বেছে নেয়, টাস্কটি ফরওয়ার্ড করে এবং পরবর্তী ধাপে যাওয়ার আগে উত্তরের জন্য অপেক্ষা করে।
  • সুবিধা (Pros) – এর নমনীয়তা বা ফ্লেক্সিবিলিটি অসাধারণ। যেহেতু LLM রানটাইমে পথটি বেছে নেয়, তাই ফ্লো বা কাজের ধারা পুনরায় না লিখেও সিস্টেমটি নতুন বা অপ্রত্যাশিত ইনপুটের সাথে মানিয়ে নিতে পারে।
  • অসুবিধা (Cons) – প্রতিটি ধাপ নেটওয়ার্ক এবং প্রসেসিং ওভারহেড বাড়িয়ে দেয়, ফলে একটি সরাসরি পাইপলাইনের তুলনায় ল্যাটেন্সি (latency) বা বিলম্ব বেড়ে যায়।

সিকোয়েন্সিয়াল ওয়ার্কফ্লো লুপস (Sequential Workflow Loops)

লুপ মডেলে কোঅর্ডিনেটরের পরিবর্তে একটি একক LoopAgent ব্যবহার করা হয়, যা একটি পূর্বনির্ধারিত ধাপের মধ্য দিয়ে অগ্রসর হয় এবং একটি মিউটেবল সেশন স্টেট (mutable session state) শেয়ার করে।

  • এটি যেভাবে কাজ করে – এজেন্টরা একটি শেয়ার্ড কী (shared key) পড়ে, সেটি আপডেট করে এবং সিকোয়েন্স শেষ না হওয়া পর্যন্ত পরবর্তী ধাপে নিয়ন্ত্রণ হস্তান্তর করে।
  • সুবিধা (Pros) – পূর্বাভাসযোগ্যতা। কাজের ক্রম কখনোই পরিবর্তিত হয় না, ফলে ডিবাগিং এবং পারফরম্যান্স টিউনিং করা সহজ হয়।
  • অসুবিধা (Cons) – অনমনীয়তা। নির্ধারিত ক্রম থেকে বিচ্যুত হওয়ার প্রয়োজন পড়লে পুরো লুপটি নতুন করে ডিজাইন করতে হয়।

হাতে-কলমে পরীক্ষা: একটি ম্যাথ এক্সপ্রেশন পার্সার (Math Expression Parser)

এই প্যাটার্নগুলো বাস্তবে দেখার জন্য, আমরা একটি সাধারণ পার্সার তৈরি করেছি যা চারটি বিশেষজ্ঞ এজেন্ট ব্যবহার করে গাণিতিক রাশিমালা মূল্যায়ন করে: adder, subtracter, multiplier, এবং divider

ওয়ার্কফ্লো লুপ থেকে প্রাপ্ত শিক্ষা

  1. ইনফিনিট লুপ প্রতিরোধ করা – আমরা প্রতিটি এজেন্টকে নির্দেশ দিয়েছি যে শেয়ার্ড স্টেট আপডেট করার সাথে সাথেই টেক্সট আউটপুট দিতে হবে এবং তাদের পালা শেষ করতে হবে। এই সুরক্ষা ব্যবস্থা না থাকলে লুপটি অনন্তকাল চলতে পারত।
  2. গাণিতিক যুক্তি বজায় রাখা – আমরা adder-কে অপারেশনের ক্রম মেনে চলার জন্য সুনির্দিষ্ট নির্দেশনা দিয়েছি, যাতে এটি বিয়োগের নিয়মগুলো লঙ্ঘন না করে।
  3. নীরব প্রস্থান এড়ানো – আমরা এজেন্টদের exit টুল ব্যবহার করার আগে চূড়ান্ত ফলাফল প্রিন্ট করতে বাধ্য করেছি, যাতে ব্যবহারকারী হঠাৎ করে কাজ বন্ধ হয়ে যাওয়ার পরিবর্তে ফলাফলটি দেখতে পান।

এরর হ্যান্ডলিং (Error Handling)

আমরা divider বিশেষজ্ঞ এজেন্টের সামনে একটি জিরো-ডিভিশন গার্ড (zero-division guard) যোগ করেছি। এই গার্ডটি প্রথমে ভাজক (divisor) পরীক্ষা করে; যদি এটি শূন্য হয়, তবে এটি প্রক্রিয়াটি থামিয়ে দেয়, যা পুরো সিস্টেমকে একটি রানটাইম এক্সেপশন (runtime exception) থেকে রক্ষা করে।

কোন প্যাটার্নটি আপনার প্রজেক্টের জন্য উপযুক্ত?

  • মাল্টি-এজেন্ট রাউটিং বেছে নিন যখন কাজগুলো তাৎক্ষণিকভাবে পরিবর্তিত হয়, ইনপুট অনেক বেশি ভিন্ন হয়, অথবা রানটাইমে সেরা বিশেষজ্ঞ কে হবে তা LLM-এর মাধ্যমে সিদ্ধান্ত নিতে চান। এর বিনিময়ে ল্যাটেন্সি কিছুটা বেশি হতে পারে, তবে কোড পরিবর্তন না করেই সিস্টেমটি অপ্রত্যাশিত পরিস্থিতি সামলাতে পারে।
  • ওয়ার্কফ্লো লুপ বেছে নিন যখন আপনার কাছে একটি সুসংজ্ঞায়িত পাইপলাইন থাকে—যেমন ডেটা ক্লিনিং, ট্রান্সফরমেশন, অ্যাগ্রিগেশন—যেখানে প্রতিটি ধাপ একটি কঠোর ক্রমে সম্পন্ন হতে হবে। এর সুবিধা হলো কম ল্যাটেন্সি এবং সহজ ডিবাগিং, তবে এর বিনিময়ে আপনি ডায়নামিকভাবে শাখা (branch) তৈরি করতে পারবেন না।