- ADK-তে মাল্টি-এজেন্ট সিস্টেমগুলি মডুলার, সহযোগী এজেন্ট দিয়ে মনোলিথিক প্রম্পটগুলিকে প্রতিস্থাপন করে।
- ওয়ার্কফ্লো এজেন্ট (সিকোয়েন্সিয়াল, লুপ, প্যারালাল) শেয়ার্ড সেশন স্টেটের মাধ্যমে LLM এবং কাস্টম এজেন্টদের অর্কেস্ট্রেট করে।
- গুগল ক্লাউড ADK MAS স্থাপনের জন্য একটি রেফারেন্স আর্কিটেকচার, নিরাপত্তা এবং পর্যবেক্ষণযোগ্যতা স্ট্যাক প্রদান করে।
- সমন্বয়কারী, পাইপলাইন, ফ্যান-আউট/গ্যাদার এবং পুনরাবৃত্তিমূলক পরিশোধনের মতো ধরণগুলি স্বাভাবিকভাবেই ADK প্রিমিটিভ থেকে উদ্ভূত হয়।
এজেন্টিক অ্যাপ্লিকেশনগুলি দ্রুত ক্লাসিক "একক মেগা-প্রম্পট" প্যাটার্নকে ছাড়িয়ে যাচ্ছে, এবং বিশৃঙ্খলার মধ্যে না পড়ে একাধিক এজেন্ট গঠনের জন্য ডেভেলপারদের একটি দৃঢ় মানসিক মডেলের প্রয়োজন। গুগলের এজেন্ট ডেভেলপমেন্ট কিট (ADK) ঠিক এই উদ্দেশ্যেই তৈরি করা হয়েছে: এটি আপনাকে নির্ভরযোগ্য মাল্টি-এজেন্ট সিস্টেম তৈরি করতে, সরঞ্জাম এবং মেমোরি সংযুক্ত করতে এবং উৎপাদন-গ্রেড পর্যবেক্ষণযোগ্যতা, নিরাপত্তা এবং খরচ নিয়ন্ত্রণের মাধ্যমে গুগল ক্লাউডে সবকিছু স্থাপন করতে দেয়।
এই নির্দেশিকাটি আপনাকে ADK দ্বারা সমর্থিত প্রধান মাল্টি-এজেন্ট প্যাটার্নগুলি - সাধারণ পিতামাতা/শিশু শ্রেণিবিন্যাস থেকে শুরু করে সিকোয়েন্সিয়াল, লুপ এবং প্যারালাল ওয়ার্কফ্লো এজেন্ট - সম্পর্কে নিয়ে যাবে এবং দেখায় যে কীভাবে তারা গুগল ক্লাউডে একটি বৃহত্তর রেফারেন্স আর্কিটেকচারে ফিট করে। আমরা শেয়ার্ড সেশন স্টেট, ডেলিগেশন মেকানিজম, সাধারণ মাল্টি-এজেন্ট ব্লুপ্রিন্ট এবং বাস্তব পরিবেশে এই সিস্টেমগুলি স্থাপন, সুরক্ষিত এবং পরিচালনার ব্যবহারিক দিকগুলিও কভার করব।
ADK-তে মাল্টি-এজেন্ট সিস্টেম কেন?
যখন কোনও অ্যাপ্লিকেশন একটি একক, একচেটিয়া এজেন্ট প্রম্পট দ্বারা চালিত হয়, তখন এটি সম্পর্কে যুক্তি করা, পরীক্ষা করা এবং বিকশিত করা দ্রুত কঠিন হয়ে পড়ে। বিশাল প্রম্পটগুলি ভঙ্গুর, ডিবাগ করা কঠিন এবং প্রয়োজনীয়তা বৃদ্ধির সাথে সাথে বজায় রাখা বেদনাদায়ক। ADK আপনাকে একটি তৈরির দিকে ঠেলে দেয় মাল্টি-এজেন্ট সিস্টেম (এমএএস) যেখানে প্রতিটি এজেন্টের একটি নির্দিষ্ট দায়িত্ব থাকে এবং অর্কেস্ট্রেশন স্পষ্ট।
আপনার অ্যাপটিকে একাধিক সহযোগী এজেন্ট হিসেবে গঠন করলে মডুলারালিটি, বিশেষীকরণ এবং পুনঃব্যবহারযোগ্যতা আসে। আপনি একজন গবেষণা এজেন্ট, একজন সমালোচক, একজন ফাইল-রাইটার, একজন রাউটার, একজন ডেটা-অ্যাক্সেস এজেন্ট রাখতে পারেন এবং একই যুক্তিকে একটি জাম্বো প্রম্পটে পুনরায় এম্বেড করার পরিবর্তে প্রকল্প বা কর্মপ্রবাহ জুড়ে সেগুলি পুনরায় ব্যবহার করতে পারেন।
এটি বাস্তবায়নের জন্য ADK আপনাকে কংক্রিট বিল্ডিং ব্লক দেয়: LLM-কেন্দ্রিক এজেন্ট, ওয়ার্কফ্লো এজেন্ট (সিকোয়েন্সিয়াল, প্যারালাল, লুপ) এবং কাস্টম এজেন্ট যা নন-LLM লজিককে ধারণ করে। তাদের সকলেই একটি সাধারণ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত BaseAgent, তাই তারা একই অর্কেস্ট্রেশন মডেল, লগিং, স্টেট হ্যান্ডলিং এবং টুল সিস্টেমে প্লাগ ইন করে।
সিস্টেমগুলি বৃদ্ধির সাথে সাথে, এই কম্পোজিশন মডেলটি অ্যাড-হক অর্কেস্ট্রেশন কোড বা একটি একক মডেলের চারপাশে ফাংশন কলের গভীরভাবে নেস্টেড চেইনের চেয়ে ভালভাবে স্কেল করে। আপনি জ্ঞানীয় বোঝা পরিচালনাযোগ্য রাখেন: প্রতিটি এজেন্টের একটি স্পষ্ট আদেশ এবং অন্যদের সাথে একটি সুনির্দিষ্ট মিথস্ক্রিয়া পৃষ্ঠ থাকে।
কম্পোজিং এজেন্টের জন্য ADK প্রিমিটিভ
ADK আদিম বস্তুর একটি ছোট সেট প্রকাশ করে যা আপনি আশ্চর্যজনকভাবে সমৃদ্ধ মাল্টি-এজেন্ট স্থাপত্য প্রকাশ করতে একত্রিত করতে পারেন। এই মূল ধারণাগুলি বোঝার ফলে পরবর্তীতে উচ্চ-স্তরের ধরণগুলি সম্পর্কে যুক্তি করা অনেক সহজ হয়ে যায়।
প্রথম আদিম হল এজেন্ট শ্রেণিবিন্যাস: প্রতিটি এজেন্ট একটি তালিকা ঘোষণা করতে পারে sub_agents, একটি একক দিয়ে একটি গাছ তৈরি করা root_agent উপরে. যখন তুমি বাচ্চাদের মধ্যে প্রবেশ করাও sub_agents, ADK স্বয়ংক্রিয়ভাবে তাদের তারের parent_agent উল্লেখ করে এবং জোর দেয় যে একটি প্রদত্ত উদাহরণের শুধুমাত্র একজন অভিভাবক আছে (অন্যথায় a ValueError উত্থিত হয়)।
এই শ্রেণিবিন্যাস কেবল সাজসজ্জার চেয়েও বেশি কিছু: এটি সংজ্ঞায়িত করে যে কোন এজেন্টদের কোনটিতে অর্পণ করার অনুমতি রয়েছে এবং এটি ওয়ার্কফ্লো এজেন্ট এবং LLM-চালিত স্থানান্তর দ্বারা ব্যবহৃত সুযোগ। যেকোনো এজেন্ট থেকে, আপনি উপরের দিকে যেতে পারেন agent.parent_agent অথবা বংশধরদের খুঁজে বের করুন যার সাথে agent.find_agent(name), যা ডিবাগিংয়ের জন্য অত্যন্ত কার্যকর।
বেসিক এলএলএম এজেন্টদের পাশাপাশি, এডিকে ডেডিকেটেড ওয়ার্কফ্লো এজেন্টদের সাথে পরিচয় করিয়ে দেয় - SequentialAgent, ParallelAgent এবং LoopAgent - যার কাজ "চিন্তা করা" নয় বরং উপ-এজেন্টদের পরিচালনা করা। তারা সকলেই একই ইন্টারফেস ভাগ করে কিন্তু ভিন্ন ভিন্ন এক্সিকিউশন কৌশল বাস্তবায়ন করে: ক্রমানুসারে রান করা, সমান্তরালে ফ্যান-আউট করা, অথবা স্পষ্ট সমাপ্তি নিয়ম সহ একটি লুপে পুনরাবৃত্তি করা।
তৃতীয় অপরিহার্য আদিম হল যোগাযোগ স্তর, যা ভাগ করা Session এবং তার state অভিধান। সেশন স্টেট একটি সাধারণ হোয়াইটবোর্ডের মতো কাজ করে: যেকোনো এজেন্ট বা টুল মধ্যবর্তী ফলাফল বা পতাকা লিখতে পারে, এবং একই ইনভোকেশনের অন্যান্য এজেন্টরা সেগুলি পড়তে পারে, প্রায়শই তাদের নির্দেশাবলীর ভিতরে কী-টেমপ্লেটিংয়ের মাধ্যমে (উদাহরণস্বরূপ) {PLOT_OUTLINE?}).
ADK-তে এজেন্টরা কীভাবে একে অপরের সাথে কথা বলে
ADK এজেন্টদের মধ্যে তিনটি পরিপূরক যোগাযোগ মোড সমর্থন করে: শেয়ার্ড সেশন স্টেট, LLM-চালিত স্থানান্তর, এবং স্পষ্ট আহ্বানের মাধ্যমে AgentTool. প্রতিটি মিথস্ক্রিয়ার জন্য সঠিকটি নির্বাচন করা আপনার সিস্টেমকে অভিব্যক্তিপূর্ণ এবং অনুমানযোগ্য উভয়ই রাখে।
শেয়ার করা সেশনের অবস্থা (session.state) হল সবচেয়ে সহজ এবং সবচেয়ে বিস্তৃত প্রক্রিয়া। একটি একক আহ্বানের মধ্যে, সমস্ত এজেন্ট একই দেখতে পান Session এর মাধ্যমে বস্তু InvocationContext। একটি টুল বা কলব্যাক করতে পারে context.state = value, এবং পরবর্তী এজেন্ট এটি দিয়ে পুনরুদ্ধার করতে পারে context.state.get("data_key"). এলএলএম এজেন্টদের জন্য, সেটিং output_key স্বয়ংক্রিয়ভাবে সেই কী-এর অধীনে তাদের চূড়ান্ত উত্তর ধরে রাখে।
এলএলএম-চালিত প্রতিনিধিদল, যাকে কখনও কখনও "এজেন্ট ট্রান্সফার" বলা হয়, নির্দেশাবলী এবং এজেন্টের বর্ণনার ভিত্তিতে একজন এলএলএমকে অন্য এজেন্টের কাছে কখন হস্তান্তর করতে হবে তা নির্ধারণ করতে দেয়। অভ্যন্তরীণভাবে, মডেলটি একটি বিশেষ ফাংশন কল ইস্যু করে যেমন transfer_to_agent(agent_name="screenwriter"). ADK এর AutoFlow এই কলটি আটকায় এবং অনুমোদিত সুযোগের মধ্যে নির্বাচিত এজেন্টের কাছে এক্সিকিউশন পুনঃরায় পাঠায় (কনফিগারেশনের উপর নির্ভর করে পিতামাতা, সন্তান, ভাইবোন)।
স্পষ্ট আহ্বান সহ AgentTool আপনাকে এক এজেন্ট থেকে অন্য এজেন্টকে কল করার জন্য আরও নিয়ন্ত্রিত, ফাংশনের মতো উপায় দেয়। আপনি একটি টার্গেট এজেন্ট ইনস্ট্যান্স মোড়ানো AgentTool, এটি কলারের সাথে যোগ করুন tools তালিকা তৈরি করে, এবং LLM তারপর অন্য যেকোনো ফাংশনের মতো সেই টুলটি নির্বাচন করতে পারে। যখন আহ্বান করা হয়, AgentTool.run_async সাব-এজেন্ট এক্সিকিউট করে, স্টেট এবং আর্টিফ্যাক্টগুলিকে আবার মার্জ করে, এবং টুল ফলাফল হিসেবে সাব-এজেন্টের প্রতিক্রিয়া ফেরত দেয়।
এই তিনটি চ্যানেল বেশিরভাগ মাল্টি-এজেন্টের চাহিদা পূরণ করে: অ্যাসিনক্রোনাস ডেটা স্টেটের মধ্য দিয়ে যাওয়া, ট্রান্সফারের মাধ্যমে নমনীয় রাউটিং এবং টুলের মাধ্যমে টাইট সিঙ্ক্রোনাস কল। আরও জটিল ডিজাইনে, আপনি প্রায়শই এগুলিকে একটি একক গাছের ভিতরে মিশ্রিত করেন: একটি রাউটার যা শিশুদের কাছে স্থানান্তর করে, বিশেষজ্ঞরা যারা যোগাযোগের জন্য রাষ্ট্র ব্যবহার করেন, এবং অ্যাড-হক ডেলিগেশনের জন্য সরঞ্জাম হিসাবে উপলব্ধ এক বা দুটি এজেন্ট।
বিল্ডিং ব্লক: এলএলএম এজেন্ট, ওয়ার্কফ্লো এজেন্ট এবং কাস্টম এজেন্ট
ADK-তে বেশিরভাগ MAS টপোলজি তিনটি ধরণের এজেন্টের সমন্বয়ে তৈরি: LLM-ভিত্তিক, ওয়ার্কফ্লো এবং কাস্টম এজেন্ট। প্রতিটি বিভাগ অর্কেস্ট্রেশন সমস্যার একটি ভিন্ন অংশ সমাধান করে।
এলএলএম এজেন্টরা একটি বৃহৎ ভাষা মডেল এবং ঐচ্ছিক সরঞ্জাম, কলব্যাক এবং আউটপুট রাউটিংকে এতে অন্তর্ভুক্ত করে BaseAgent. এগুলোকে তোমার "চিন্তা"র উপাদান হিসেবে ভাবো: এগুলো ব্যবহারকারীর ইনপুট ব্যাখ্যা করে, টুল কল করে, আপডেট অবস্থা প্রদান করে এবং হয় ব্যবহারকারীর উত্তর দেয় অথবা অন্য এজেন্টের হাতে তুলে দেয়।
কর্মপ্রবাহ এজেন্টরা কর্মীদের পরিবর্তে ব্যবস্থাপক হিসেবে কাজ করে: তারা নিজেদের যুক্তি দেয় না, তবে তারা সাব-এজেন্ট সম্পাদনের ক্রম, সমান্তরালতা এবং পুনরাবৃত্তি নিয়ন্ত্রণ করে। SequentialAgent একই জিনিস ভাগ করে নেওয়ার সময় একের পর এক তার বাচ্চাদের চালায় InvocationContext, ParallelAgent একাধিক শাখা জুড়ে ভক্ত রয়েছে যারা রাজ্য ভাগ করে নেয় কিন্তু স্বতন্ত্র ইতিহাস শাখা রয়েছে, এবং LoopAgent একটি স্টপ শর্ত পূরণ না হওয়া পর্যন্ত বারবার একটি ক্রম কার্যকর করে।
কাস্টম এজেন্টরা প্রসারিত করে BaseAgent যখন অন্তর্নির্মিত অর্কেস্ট্রেশন কৌশলগুলি যথেষ্ট নয় তখন স্বেচ্ছাচারী নন-এলএলএম যুক্তি দিয়ে। উদাহরণস্বরূপ, আপনি একটি কাস্টম শিডিউলার বাস্তবায়ন করতে পারেন যা মেট্রিক্সের উপর ভিত্তি করে শর্তসাপেক্ষে এজেন্টগুলিকে কার্যকর করে, অথবা একটি ব্যবসায়িক নিয়ম ইঞ্জিন সংহত করে যা নিয়ন্ত্রক সীমাবদ্ধতার উপর নির্ভর করে কোন সাব-ফ্লো চালানো হবে তা নির্ধারণ করে।
জেনেরিক অর্কেস্ট্রেশন প্রিমিটিভ এবং প্লাগেবল লজিকের এই মিশ্রণই ADK কে কেবল ডেমো নয়, গুরুতর এন্টারপ্রাইজ ওয়ার্কলোডের জন্য উপযুক্ত করে তোলে। আপনি স্ট্যান্ডার্ড ওয়ার্কফ্লো এজেন্ট দিয়ে শুরু করতে পারেন, এবং যখন প্রয়োজনীয়তাগুলি অদ্ভুত হয়ে ওঠে তখনই আপনি CustomAgent.
সেশন অবস্থা এবং মেমরি প্যাটার্ন
ADK-তে সেশন স্টেট স্বল্পমেয়াদী কথোপকথনমূলক স্মৃতি এবং এজেন্টদের মধ্যে কাঠামোগত ডেটা স্থানান্তর উভয়কেই সমর্থন করে। প্রতিটি কথোপকথন ব্যবহার করে একটি Session বার্তার ইতিহাস এবং একটি পরিবর্তনযোগ্য বস্তু ধারণ করে state সেই আহ্বানের সকল এজেন্টের জন্য উপলব্ধ অভিধান।
স্টেটে লেখা সাধারণত টুল বা কলব্যাকের ভিতরে করা হয়, ব্যবহার করে ToolContext or CallbackContext অবজেক্ট। উদাহরণস্বরূপ, একটি টুল যেমন save_attractions_to_state(tool_context, attractions: List) নতুন আকর্ষণগুলিকে ইতিমধ্যেই সংরক্ষিত আকর্ষণগুলির সাথে একত্রিত করতে পারে state, এজেন্টকে একটি সাধারণ স্ট্যাটাস বার্তা ফেরত দেয় যখন ADK সেশনে স্টেট ডেল্টা বজায় রাখে।
নির্দেশাবলীতে এমবেড করা মূল টেমপ্লেটের মাধ্যমে স্টেট থেকে পড়াকে এর্গোনমিক করা হয়। যখন একটি নির্দেশে থাকে {my_key?}, ADK ইনজেকশন দেবে state যদি এটি বিদ্যমান থাকে; প্রশ্নবোধক চিহ্ন এটিকে ঐচ্ছিক করে তোলে যাতে কীটি অনুপস্থিত থাকলে এজেন্ট ব্যর্থ না হয়। "গবেষণা → লেখা → পর্যালোচনা" এর মতো কর্মপ্রবাহে এটি অত্যন্ত গুরুত্বপূর্ণ যেখানে প্রতিটি ধাপে পূর্ববর্তী ধাপে কী সংরক্ষণ করা হয়েছিল তা পড়া হয়।
বাঁক জুড়ে কথোপকথনমূলক স্মৃতির জন্য, মূল ধারণা হল একই জিনিস পুনরায় ব্যবহার করা Session প্রতিবার নতুন বার্তা তৈরি করার পরিবর্তে পরবর্তী ব্যবহারকারীর বার্তাগুলির জন্য। একটি ভাগ করা সেশনের মাধ্যমে, এজেন্ট পূর্ববর্তী পালাগুলি দেখে এবং ফলো-আপ প্রশ্ন, সংশোধন এবং বহু-পদক্ষেপ পরিকল্পনা পরিচালনা করতে পারে। যদি আপনি ভুলবশত প্রতি পালা একটি নতুন সেশন তৈরি করেন, তাহলে এজেন্ট এমন আচরণ করবে যেন তার স্মৃতিভ্রংশ হয়েছে: এটি ফলো-আপগুলিকে পূর্ববর্তী প্রসঙ্গের সাথে সংযুক্ত করতে পারে না।
রাজ্য কর্মপ্রবাহ এজেন্টদের ক্ষেত্রেও একটি বড় ভূমিকা পালন করে যেমন LoopAgent, যা আরও পুনরাবৃত্তি প্রয়োজন কিনা তা নির্ধারণের জন্য কাউন্টার, প্রতিক্রিয়া তালিকা বা পতাকার মতো স্থায়ী কীগুলির উপর নির্ভর করে। একজন সমালোচক এজেন্ট মন্তব্য যুক্ত করতে পারেন CRITICAL_FEEDBACK প্রতিটি পাসে, যখন একজন পরিকল্পনাকারী বা পরিশোধক পরবর্তী পুনরাবৃত্তিতে পরিকল্পনাটি উন্নত করার জন্য সেই কীটি পড়েন।
সিকোয়েন্সিয়াল এজেন্ট: রৈখিক কর্মপ্রবাহ স্পষ্ট করা হয়েছে
SequentialAgent যখন আপনার ধাপগুলির একটি সিরিজ থাকে যা একটি নির্দিষ্ট ক্রমে ঘটতে হবে তখন এটি আপনার পছন্দের প্যাটার্ন। "বিশ্লেষণ অনুরোধ → গবেষণা → খসড়া → ফাইলে সংরক্ষণ করুন" বা "গন্তব্য সনাক্ত করুন → রুট পরিকল্পনা করুন → পরিবহন বুক করুন" এর মতো পাইপলাইনগুলির কথা ভাবুন।
ADK-তে, একটি SequentialAgent একটি তালিকা ধারণ করে sub_agents এবং একে একে চালায়, একই পাশ দিয়ে InvocationContext পুরো শৃঙ্খলের মধ্য দিয়ে। কারন Session এবং state ভাগ করা হয়, আপনি প্রথম এজেন্টকে তার ফলাফল সংরক্ষণ করতে পারেন output_key="destination" এবং পরবর্তী এজেন্ট এটি পড়ে শোনালেন {destination} কোনও আঠালো কোড ছাড়াই এর নির্দেশে।
একটি ক্লাসিক উদাহরণ হল একটি ফিল্ম পিচ জেনারেটর: একজন গ্রিটার রুট এজেন্ট ব্যবহারকারীর সাথে কথা বলে, তারপর হাতে কাজ করে একটি SequentialAgent যা একজন গবেষককে ডাকে, তারপর একজন চিত্রনাট্যকারকে, তারপর একজন ফাইল-রাইটারকে। ব্যবহারকারী কেবল চূড়ান্ত ফলাফল দেখতে পান, কিন্তু ADK ওয়েবের ইভেন্ট গ্রাফটি অভ্যন্তরীণ ট্রিটি প্রকাশ করে: greeter → film_concept_team → ।
স্পষ্ট সহ ম্যানুয়াল অর্কেস্ট্রেশনের তুলনায় if/elif ব্লক এবং ফাংশন কল, SequentialAgent নিয়ন্ত্রণ-প্রবাহ ঘোষণামূলক রাখে এবং বয়লারপ্লেটকে ন্যূনতম করে। আপনি একবার সিকোয়েন্সটি ঘোষণা করেন এবং আপনার রানার বা UI তে এটিকে একটি একক কলযোগ্য এজেন্ট হিসাবে বিবেচনা করেন, একই সাথে ধাপগুলির মধ্যে ডেটা পাস করার জন্য সেশন স্টেট ব্যবহার করেন।
ক্রমিক কর্মপ্রবাহগুলি অন্যান্য কর্মপ্রবাহ এজেন্টগুলির সাথেও সুন্দরভাবে একত্রিত হয়: আপনি একটি দীর্ঘ শৃঙ্খলের ধাপগুলির মধ্যে একটি হিসাবে একটি লুপ বা একটি সমান্তরাল ফ্যান-আউট এম্বেড করতে পারেন। এভাবেই "গল্পের মান নিয়ে পুনরাবৃত্তি করা, তারপর বক্স-অফিস এবং কাস্টিং বিশ্লেষণ চালানো, তারপর একটি সমন্বিত প্রতিবেদন লেখা" এর মতো আরও উন্নত প্রবাহ তৈরি করা হয়।
লুপএজেন্ট: পুনরাবৃত্তিমূলক পরিমার্জন এবং লেখক কক্ষ
LoopAgent এমন কাজের জন্য ডিজাইন করা হয়েছে যেখানে কাজের গুণমানের সীমা পূরণ না হওয়া পর্যন্ত বেশ কয়েকটি পাসের সুবিধা পাওয়া যায়। "একবার তৈরি করুন এবং সর্বোত্তমটির আশা করুন" এই একক পদ্ধতির পরিবর্তে, আপনি প্রস্তাব, সমালোচনা এবং পরিমার্জনের একটি প্রক্রিয়া এনকোড করতে পারেন।
একটি সাধারণ লুপ কনফিগারেশনে একজন গবেষক, একজন জেনারেটর (যেমন চিত্রনাট্যকার) এবং একজন সমালোচকের মতো এজেন্ট থাকে যারা একাধিক রাউন্ডে সহযোগিতা করে। প্রতিটি পুনরাবৃত্তিতে, গবেষক পটভূমির তথ্য আপডেট করতে পারেন, চিত্রনাট্যকার রূপরেখা বা পরিকল্পনা সামঞ্জস্য করেন এবং সমালোচক স্পষ্ট নির্দেশিকা অনুসারে এটি মূল্যায়ন করেন, আরও পুনরাবৃত্তি প্রয়োজন কিনা তা নির্ধারণ করেন।
লুপ দুটি শর্তে থামে: পৌঁছানো max_iterations অথবা একটি সাব-এজেন্ট যা ইঙ্গিত দেয় যে কাজটি সম্পন্ন হয়েছে। ADK একটি অন্তর্নির্মিত টুল প্রকাশ করে যেমন exit_loop যখন কোনও পরিকল্পনা, রূপরেখা বা নকশা তার অভ্যন্তরীণ চেকলিস্ট অতিক্রম করে তখন সমালোচক এটিকে আহ্বান করতে পারেন। LoopAgent সম্মান করে একটি escalate=True পতাকা Event কর্মকাণ্ড, আপনাকে তাড়াতাড়ি বেরিয়ে আসার আরেকটি উপায় দেয়।
স্থায়ী সেশন অবস্থা এখানে গুরুত্বপূর্ণ: এজেন্টরা কীগুলি পড়ে যেমন PLOT_OUTLINE, research or CRITICAL_FEEDBACK এবং প্রতিটি পাসে উন্নত সংস্করণ বা অতিরিক্ত মন্তব্য লিখুন। এই প্যাটার্নটি কার্যকরভাবে একটি "লেখকদের ঘর" অনুকরণ করে যেখানে বিশেষজ্ঞরা চিন্তাভাবনা করেন, সমালোচনা করেন এবং পোলিশ করেন যতক্ষণ না কেউ কাজটি প্রস্তুত বলে ঘোষণা করেন।
মিশ্রন দ্বারা LoopAgent সঙ্গে SequentialAgent, আপনি পুরো পুনরাবৃত্ত লুপটিকে একটি বৃহত্তর এন্ড-টু-এন্ড ওয়ার্কফ্লোতে মাত্র এক ধাপ হিসাবে রাখতে পারেন। উদাহরণ স্বরূপ, writers_room (লুপএজেন্ট) প্রথমে দৌড়ে একটি শক্ত প্লটের রূপরেখা তৈরি করতে পারে, তারপরে একটি file_writer এজেন্ট ফলাফল সংরক্ষণ করে এবং অন্যান্য প্রতিবেদন সংযুক্ত করে।
প্যারালাল এজেন্ট: স্বাধীন কাজের জন্য ফ্যান-আউট এবং জড়ো করা
ParallelAgent স্বাধীন কিন্তু প্রেক্ষাপট ভাগ করে নেওয়া কাজের জন্য ক্লাসিক "ফ্যান-আউট / গ্যাদার" প্যাটার্ন প্রয়োগ করে। ধারাবাহিকভাবে N গবেষণা ধাপগুলি চালানোর পরিবর্তে, আপনি সেগুলি একবারে চালান এবং সবগুলি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন, তারপর তাদের আউটপুটগুলিকে একত্রিত করুন।
অভ্যন্তরীণভাবে, ParallelAgent প্রতিটি সাব-এজেন্টকে একটি স্বতন্ত্র InvocationContext.branch - মত ParentBranch.ChildName - একই জিনিস শেয়ার করার সময়ও session.state. এর মানে হল তারা সকলেই প্রাথমিক প্রসঙ্গটি পড়তে পারে যেমন PLOT_OUTLINE, কিন্তু স্বতন্ত্র স্টেট কীগুলিতে আউটপুট লেখা উচিত (উদাহরণস্বরূপ box_office_report, casting_report) দ্বন্দ্ব এড়াতে।
একটি সাধারণ উদাহরণ হল একটি সিনেমার পিচের জন্য একটি "প্রি-প্রোডাকশন টিম": একজন এজেন্ট তুলনামূলক চলচ্চিত্রের উপর ভিত্তি করে বক্স-অফিস সম্ভাবনার মূল্যায়ন করেন, অন্যজন কাস্টিং বিকল্পের প্রস্তাব করেন, উভয়ই সমান্তরালভাবে চলমান। একটি পরবর্তী file_writer তারপর প্রতিটি উপ-ফলাফলের জন্য মূল টেমপ্লেট ব্যবহার করে একটি প্রতিবেদন তৈরি করে এবং এটি ডিস্কে সংরক্ষণ করে।
সমান্তরাল কর্মপ্রবাহ ব্যাপক প্রশ্নের জন্য এবং পরিস্থিতির ক্ষেত্রে বিলম্বিতা উল্লেখযোগ্যভাবে হ্রাস করে রিয়েল-টাইম ডেটা বিশ্লেষণ: যদি আপনার সপ্তাহান্তে জাদুঘরের পরামর্শ, কনসার্টের বিকল্প এবং রেস্তোরাঁর ধারণার প্রয়োজন হয়, তাহলে তিনজন বিশেষজ্ঞ এজেন্টকে পর্যায়ক্রমে জিজ্ঞাসা করার চেয়ে সমান্তরালভাবে চালানো দ্রুত। ফ্যান-আউটের পর, একটি সংশ্লেষণ এজেন্ট অবস্থা থেকে সমস্ত ফলাফল পড়ে এবং ব্যবহারকারীর জন্য একটি সমন্বিত প্রতিক্রিয়া তৈরি করে।
সমান্তরাল ধাপগুলি প্রায় সবসময় একটির ভিতরে এমবেড করা থাকে SequentialAgent যা প্রথমে প্রসঙ্গ প্রস্তুত করে, তারপর চালায় ParallelAgent, তারপর একত্রিতকরণ এবং প্রতিবেদনের সাথে চলতে থাকে। ADK এর ওয়ার্কফ্লো এজেন্টগুলির সাথে স্বাচ্ছন্দ্য বোধ করলে এই প্যাটার্নটি সনাক্ত করা এবং পুনরায় ব্যবহার করা সহজ।
ADK প্রিমিটিভ সহ অর্কেস্ট্রেশন প্যাটার্ন
একবার আপনি অনুক্রম, কর্মপ্রবাহ এজেন্ট এবং অবস্থা বুঝতে পারলে, আপনি সরাসরি ADK-তে বেশ কয়েকটি ক্লাসিক মাল্টি-এজেন্ট প্যাটার্ন বাস্তবায়ন করতে পারবেন। এই নিদর্শনগুলি হার্ড-কোডেড আদিম নয় বরং একই মৌলিক বিল্ডিং ব্লক দিয়ে তৈরি রচনা।
সমন্বয়কারী/প্রেরক প্যাটার্ন ব্যবহারকারীর প্রশ্নের জন্য "রাউটার" হিসেবে একটি কেন্দ্রীয় LLM এজেন্ট ব্যবহার করে, যা একাধিক বিশেষায়িত সাব-এজেন্ট দ্বারা সমর্থিত। সমন্বয়কারী অনুরোধটি পড়েন, তারপর হয় LLM-চালিত প্রতিনিধিদলের মাধ্যমে একটি সাব-এজেন্টের কাছে নিয়ন্ত্রণ হস্তান্তর করেন অথবা স্পষ্টভাবে বিশেষজ্ঞদের ডাকেন AgentTool. খাদ্যরসিক, পরিবহন বা সপ্তাহান্তে গাইড এজেন্টরা এর সাধারণ উদাহরণ।
ক্রমিক পাইপলাইন প্যাটার্নটি কেবল একটি SequentialAgent যার প্রতিটি শিশু একটি প্রক্রিয়ার একটি সুপরিকল্পিত ধাপ বাস্তবায়ন করে। জেনারেটর-এবং-সমালোচনামূলক প্রবাহ একটি ক্লাসিক রূপ: প্রথম এজেন্ট একটি খসড়া লেখে এবং এটি একটি অধীনে সংরক্ষণ করে output_key, দ্বিতীয় এজেন্ট এটি বিশ্লেষণ করে এবং প্রতিক্রিয়া সংরক্ষণ করে, এবং সম্ভবত তৃতীয় এজেন্ট সেই প্রতিক্রিয়ার উপর ভিত্তি করে ফলাফলটি পরিমার্জন করে।
সমান্তরাল ফ্যান-আউট/গ্যাদার প্যাটার্নটি একটি হিসাবে প্রকাশ করা হয় ParallelAgent একটি ধারাবাহিক কর্মপ্রবাহের ভিতরে নেস্টেড। সমান্তরাল শিশুরা ফলাফলগুলিকে পৃথক স্টেট কীতে লেখে; পরবর্তী একজন সিন্থ এজেন্ট সেগুলি আবার পড়ে এবং একটি সম্মিলিত উত্তর উপস্থাপন করে।
শ্রেণিবদ্ধ কাজের পচন স্বাভাবিকভাবেই পিতামাতা/শিশু বৃক্ষ থেকে উদ্ভূত হয়। উচ্চ-স্তরের এজেন্টরা লক্ষ্যগুলিকে উপ-লক্ষ্যে বিভক্ত করে এবং শিশুদের কাছে (হয় প্রতিনিধিত্ব বা সরঞ্জামের মাধ্যমে) অর্পণ করে, যার ফলাফলগুলি ক্রমশ উপরে উঠে আসে। এটি বিশেষ করে গবেষণা সহকারী, সরবরাহ-শৃঙ্খলা অপ্টিমাইজার বা আর্থিক উপদেষ্টা সিস্টেমের ক্ষেত্রে কার্যকর যেখানে প্রতিটি উপ-ডোমেনের নিজস্ব বিশেষজ্ঞ এজেন্ট থাকে।
পুনরাবৃত্তিমূলক পরিমার্জন সহ LoopAgent জেনারেটর-ক্রিটিক লুপকে একটি পুনর্ব্যবহারযোগ্য প্যাটার্নে আনুষ্ঠানিক করে তোলে। লুপটি প্ল্যানার, ক্রিটিক এবং রিফাইনার এজেন্টদের একাধিকবার কার্যকর করে, সর্বশেষ পরিকল্পনা এবং সংশ্লিষ্ট প্রতিক্রিয়া বজায় রাখার জন্য স্টেট কী ব্যবহার করে, যখন একটি মানের মানদণ্ড বা পুনরাবৃত্তির সীমা পৌঁছে যায় তখন এটি বন্ধ হয়ে যায়।
গুগল ক্লাউডে মাল্টি-এজেন্ট সিস্টেমের জন্য রেফারেন্স আর্কিটেকচার
এজেন্ট লজিকের বাইরেও, আপনাকে এখনও কোথাও আপনার সিস্টেম চালাতে হবে, এবং গুগল ক্লাউড প্রোডাকশন-গ্রেড মাল্টি-এজেন্ট স্থাপনের জন্য একটি সুনির্দিষ্ট রেফারেন্স আর্কিটেকচার অফার করে। উচ্চ স্তরে, সমাধানটি একটি ফ্রন্টএন্ড, এজেন্ট রানটাইম, ভার্টেক্স এআই মডেল, নিরাপত্তা পরিষেবা এবং MCP এর মতো ঐচ্ছিক টুল ফ্রেমওয়ার্কগুলিকে একত্রিত করে।
সাধারণ সেটআপটি ক্লাউড রানে চলমান একটি ফ্রন্টএন্ড - প্রায়শই একটি চ্যাট ইন্টারফেস - দিয়ে শুরু হয়। ব্যবহারকারীরা এই UI-তে কথা বলেন, যা পরিষেবা হিসেবে প্রকাশিত সমন্বয়কারী এজেন্টের কাছে অনুরোধগুলি ফরোয়ার্ড করে। এই সমন্বয়কারী তারপর ব্যবহারকারীর অভিপ্রায়ের উপর ভিত্তি করে বিভিন্ন এজেন্ট ওয়ার্কফ্লোগুলির মধ্যে একটি বেছে নেন, যার মধ্যে ঐচ্ছিক হিউম্যান-ইন-দ্য-লুপ পাথ অন্তর্ভুক্ত থাকে যেখানে লোকেরা এজেন্টের সিদ্ধান্তগুলিকে বৈধতা দিতে বা ওভাররাইড করতে পারে।
এজেন্টরা নিজেরাই বিভিন্ন পরিবেশে চলতে পারে: ক্লাউড রান পরিষেবা, গুগল কুবারনেটস ইঞ্জিন (GKE) অথবা ভার্টেক্স এআই এজেন্ট ইঞ্জিন। ADK এই বিকল্পগুলি বিস্তৃত করে, রানটাইমের কিছু বিবরণ বাদ দেয় যাতে ডেভেলপাররা অবকাঠামোগত প্লাম্বিংয়ের পরিবর্তে এজেন্ট লজিকের উপর মনোযোগ দেয়।
সমস্ত এজেন্ট কল অনুমানের জন্য Vertex AI বা অন্যান্য মডেল রানটাইমের উপর নির্ভর করে, প্রায়শই প্রম্পট এবং প্রতিক্রিয়া জীবাণুমুক্ত করার জন্য মডেল আর্মার দিয়ে মোড়ানো হয়। মডেল আর্মার মডেল কলের আগে বা পরে তাৎক্ষণিক ইনজেকশন প্রচেষ্টা, সংবেদনশীল ডেটা ফাঁস বা ক্ষতিকারক বিষয়বস্তু ফিল্টার করতে সাহায্য করে, যা জেনারেটিভ উপাদানগুলির চারপাশে সুরক্ষা রেলিং হিসেবে কাজ করে।
MCP (মডেল কনটেক্সট প্রোটোকল) টুল এবং সার্ভারগুলি তখনই গুরুত্বপূর্ণ ভূমিকা পালন করে যখন এজেন্টদের বাহ্যিক সিস্টেম - ডাটাবেস, ফাইল সিস্টেম, অথবা SaaS API - এর সাথে একটি প্রমিত উপায়ে কথা বলতে হয়। MCP এজেন্ট এবং টুল সার্ভারের মধ্যে একটি সাধারণ চুক্তি সংজ্ঞায়িত করে, তাই আপনার এজেন্টের একটি একক MCP ক্লায়েন্ট বিভিন্ন দল দ্বারা নির্মিত অনেক সরঞ্জাম শক্ত সংযোগ ছাড়াই অ্যাক্সেস করতে পারে; এতে আরও বিবেচনা অন্তর্ভুক্ত রয়েছে ডেটা স্টোরেজ সিস্টেম y cómo exponerlos de forma segura.
এজেন্টিক অ্যাপ্লিকেশনের জন্য নিরাপত্তা এবং শাসনব্যবস্থা
এজেন্টিক সিস্টেমগুলি এমন নিরাপত্তা চ্যালেঞ্জের সম্মুখীন হয় যা ঐতিহ্যবাহী মাইক্রোসার্ভিসেসের বাইরেও বিস্তৃত, কারণ আপনি যদি সতর্ক না থাকেন তবে LLM গুলিকে সরঞ্জামের অপব্যবহার বা ডেটা ফাঁস করার জন্য প্রতারিত করা যেতে পারে। গুগলের প্রস্তাবিত পদ্ধতিতে LLM-সচেতন, নীতি-চালিত প্রতিরক্ষার সাথে নির্ধারক নিরাপত্তা নিয়ন্ত্রণ স্তরিত করা হয়েছে; এছাড়াও, এটি একটি গুরুত্বপূর্ণ বিষয় যা সীমা, সীমাবদ্ধতা এবং ঝুঁকি de los modelos al diseñar estas defensas.
মানব তত্ত্বাবধান অত্যন্ত গুরুত্বপূর্ণ: উচ্চ-প্রভাব প্রবাহে অনুমোদনের পদক্ষেপগুলি অন্তর্ভুক্ত করা উচিত যেখানে একজন ব্যক্তি এজেন্টের প্রস্তাবিত পদক্ষেপকে থামাতে, পর্যালোচনা করতে বা ভেটো দিতে পারেন। এটিকে একটি নিবেদিতপ্রাণ "মানব-নিশ্চিতকরণ" টুল হিসেবে মডেল করা যেতে পারে যা একটি UI-তে অনুরোধগুলি উপস্থাপন করে এবং শুধুমাত্র একজন মানুষ সাড়া দিলেই এটি পুনরায় কার্যকর করা শুরু করে।
এজেন্টদের অ্যাক্সেস নিয়ন্ত্রণ IAM এর মাধ্যমে পরিচালিত হয়: প্রতিটি এজেন্ট বা পরিষেবা অ্যাকাউন্টের দায়িত্ব পালনের জন্য প্রয়োজনীয় ন্যূনতম অনুমতি থাকা উচিত। যদি কোনও প্রদত্ত এজেন্টের সাথে আপোস করা হয় বা অপব্যবহার করা হয়, তাহলে ব্লাস্ট ব্যাসার্ধ সীমিত থাকে কারণ এর পরিষেবা অ্যাকাউন্ট সম্পর্কহীন সংস্থান বা সরঞ্জামগুলিতে অ্যাক্সেস করতে পারে না।
নীতি-চালিত টুল গেটিং, যেমন উপাদানগুলির সাথে বাস্তবায়িত SecurityPlugin প্লাস একটি PolicyEngine, নির্দিষ্ট কিছু টুল চালানোর আগে আপনাকে ব্যবহারকারীর নিশ্চিতকরণ দাবি করতে দেয়। যখন কোনও নীতিমালা কোনও সংবেদনশীল কলকে চিহ্নিত করে, তখন প্লাগইনটি এটিকে আটকায়, একটি বিশেষ "নিশ্চিতকরণের জন্য জিজ্ঞাসা করুন" ফাংশন কল নির্গত করে এবং আপনার অ্যাপ্লিকেশনের রায় ফেরত দেওয়ার জন্য অপেক্ষা করে, কার্যকরভাবে উচ্চ-ঝুঁকিপূর্ণ ক্রিয়াকলাপের জন্য একটি মানব-ইন-দ্য-লুপ স্থাপন করে।
স্ট্যান্ডার্ড গুগল ক্লাউড সুরক্ষা বৈশিষ্ট্যগুলি ছবিটি সম্পূর্ণ করে: ডেটা এক্সফিল্ট্রেশন ঝুঁকি কমাতে VPC পরিষেবা নিয়ন্ত্রণ, গ্রাহক-পরিচালিত এনক্রিপশন কীগুলির জন্য CMEK, WAF এবং DDoS সুরক্ষার জন্য ক্লাউড আর্মার, ব্যবহারকারীদের প্রমাণীকরণের জন্য IAP বা পরিচয় প্ল্যাটফর্ম এবং রিসোর্স অ্যাক্সেসের জন্য গ্রানুলার IAM। A2A এর মাধ্যমে এজেন্ট-থেকে-এজেন্ট যোগাযোগের জন্য, উৎপাদনে TLS 1.2+ এবং OAuth-ভিত্তিক প্রমাণীকরণ প্রয়োজন বা সুপারিশ করা হয়।
নির্ভরযোগ্যতা, পর্যবেক্ষণযোগ্যতা এবং খরচ অপ্টিমাইজেশন
উৎপাদন MAS স্থাপনা অবশ্যই নির্ভরযোগ্য, পর্যবেক্ষণযোগ্য এবং সাশ্রয়ী হতে হবে; এটি সম্ভব করার জন্য ADK গুগল ক্লাউডের অপারেশনাল টুলিংয়ের সাথে ভালভাবে সংহত হয়। আপনি এজেন্ট, সেশন এবং টুলগুলিকে ইন্সট্রুমেন্ট করতে পারেন যাতে তাদের লগ এবং ট্রেস ক্লাউড লগিং এবং ক্লাউড ট্রেসে দেখা যায়।
নির্ভরযোগ্যতার দৃষ্টিকোণ থেকে, আপনার এজেন্ট গ্রাফটি এমনভাবে ডিজাইন করুন যাতে পৃথক উপাদানগুলিতে ব্যর্থতা সহ্য করা যায়। যেখানে সম্ভব, একটি একক, অপরিবর্তনীয় কেন্দ্রীয় মস্তিষ্ক এড়িয়ে চলুন; স্বাধীন এজেন্টদের স্থানীয় কাজ সম্পাদন করতে দিন যাতে এক পথে বিভ্রাট পুরো অ্যাপ্লিকেশনটিকে বিপর্যস্ত না করে; এছাড়াও, emplea técnicas como ব্যালেন্স ডি carga en búsqueda distribuida প্যারা ডিস্ট্রিবিউয়ার কার্গা এবং রিডুসির পান্টস ডি ফলো। চাপের মধ্যে সমন্বয় আচরণ বৈধ করার জন্য মঞ্চায়নে ব্যর্থতা অনুকরণ করুন।
মডেল কলের জন্য, ভার্টেক্স এআই গতিশীল ভাগ করা কোটা এবং প্রভিশনড থ্রুপুট সমর্থন করে। ভাগ করা কোটা প্রতি প্রকল্পের জন্য কঠিন সীমা এড়ায়, যেমন আপনি যেতে পারেন, উচ্চ-QPS, লেটেন্সি-সংবেদনশীল কাজের চাপের জন্য প্রভিশনড থ্রুপুট অপরিহার্য যা থ্রোটল করা উচিত নয়। অনুরোধের হার এবং টোকেন ব্যবহার পর্যবেক্ষণ আপনাকে কখন অন-ডিমান্ড থেকে প্রভিশনড ক্যাপাসিটিতে স্থানান্তরিত হবে তা সিদ্ধান্ত নিতে সহায়তা করে।
খরচ নিয়ন্ত্রণ মূলত স্মার্ট মডেল নির্বাচন, সতর্কতার সাথে তাৎক্ষণিক নকশা এবং অপ্রয়োজনীয় টোকেন এড়িয়ে চলার উপর নির্ভর করে। সাশ্রয়ী মডেল দিয়ে শুরু করুন যেখানে আপনি পারেন, প্রম্পটগুলিকে সংক্ষিপ্ত কিন্তু তথ্যবহুল রাখুন, সম্ভব হলে স্পষ্টভাবে সংক্ষিপ্ত আউটপুট জিজ্ঞাসা করুন, বারবার বড় প্রম্পটের জন্য প্রসঙ্গ ক্যাশিং ব্যবহার করুন এবং যখন কাজের চাপ অনুমতি দেয় তখন ব্যাচ পূর্বাভাস বিবেচনা করুন।
ক্লাউড রান রিসোর্স টিউনিং এবং দীর্ঘমেয়াদী ছাড় রানটাইম খরচকে আরও উন্নত করে। ডিফল্ট CPU/মেমরি দিয়ে শুরু করুন, প্রকৃত ব্যবহার পর্যবেক্ষণ করুন এবং সামঞ্জস্য করুন। পূর্বাভাসযোগ্য কাজের চাপের জন্য, প্রতিশ্রুতিবদ্ধ ব্যবহারের ছাড় ব্যয় উল্লেখযোগ্যভাবে হ্রাস করে।
পর্যবেক্ষণের দিক থেকে, আপনার পর্যবেক্ষণ কৌশলে এজেন্টদের প্রথম শ্রেণীর সত্তা হিসেবে বিবেচনা করা উচিত। তাদের ইনপুট, সিদ্ধান্ত (যেমন তারা কোন টুল কল করে, কোন এজেন্টকে অর্পণ করে) এবং পরিবর্তনগুলি বর্ণনা করে তা লগ করুন। পৃথক সেশন ডিবাগ করার জন্য ওয়েব UI-তে ADK-এর ইভেন্ট গ্রাফ এবং ফ্লিট-ওয়াইড ট্রেন্ডের জন্য ক্লাউড লগিং এবং কাস্টম ড্যাশবোর্ড ব্যবহার করুন।
ভালোভাবে সম্পন্ন হলে, এই অনুশীলনগুলি আপনাকে আপনার MAS সম্পর্কে একটি স্বচ্ছ ধারণা দেয়: আপনি দেখতে পাবেন কোন এজেন্টগুলি ধীর, কোন সরঞ্জামগুলি অতিরিক্ত ব্যবহৃত হচ্ছে, কোথায় প্রম্পটগুলি খুব দীর্ঘ, এবং কোথায় মান নিয়ন্ত্রণের লুপগুলি যেমন LoopAgent প্রত্যাশার চেয়ে বেশি পুনরাবৃত্তি। সময়ের সাথে সাথে মান এবং খরচ উভয়ই ঠিক করার জন্য এই প্রতিক্রিয়া লুপটি অত্যন্ত গুরুত্বপূর্ণ।
ADK-এর এজেন্ট প্রিমিটিভ, ওয়ার্কফ্লো প্যাটার্ন এবং স্টেট মেকানিজমকে গুগল ক্লাউডের রেফারেন্স আর্কিটেকচার, সিকিউরিটি স্ট্যাক এবং অপারেশনাল টুলিংয়ের সাথে একত্রিত করে, আপনি মাল্টি-এজেন্ট সিস্টেম ডিজাইন করতে পারেন যা কেবল কাগজে-কলমেই চতুর নয় বরং উৎপাদনে স্থাপনযোগ্য, পরিচালনাযোগ্য এবং অর্থনৈতিকভাবে কার্যকর। সাধারণ অভিভাবক/শিশু এজেন্ট থেকে শুরু করে এবং সিকোয়েন্সিয়াল, লুপ এবং প্যারালাল অর্কেস্ট্রেশনের মাধ্যমে অগ্রগতির মাধ্যমে, আপনি এজেন্টিক ধারণাগুলিকে শক্তিশালী, রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশনে রূপান্তর করার জন্য একটি টুলকিট পাবেন যা প্রকৃতপক্ষে ব্যবসায়িক মূল্য প্রদান করে।