1. ভূমিকা
সংক্ষিপ্ত বিবরণ
এই ল্যাবটি আপনাকে Google Agent Development Kit (Google ADK) ব্যবহার করে জটিল, বহু-এজেন্ট সিস্টেমগুলিকে কীভাবে সাজানো যায় তা শেখায়। আপনি সহজ এজেন্ট শ্রেণিবিন্যাস থেকে স্বয়ংক্রিয়, সহযোগী কর্মপ্রবাহ তৈরিতে স্থানান্তরিত হবেন।
তুমি কী তৈরি করবে
আপনি দুটি স্বতন্ত্র মাল্টি-এজেন্ট সিস্টেম তৈরি করবেন:
- একজন সাধারণ ভ্রমণ পরিকল্পনাকারী এজেন্ট যিনি একজন "মস্তিষ্কবিদ" এবং একজন "আকর্ষণ পরিকল্পনাকারী" এজেন্টের মধ্যে কথোপকথন স্থানান্তর করতে শেখেন।
- একটি আরও উন্নত মুভি পিচ জেনারেটর যা স্বয়ংক্রিয় এজেন্টদের (যেমন একজন গবেষক, চিত্রনাট্যকার এবং সমালোচক) একটি "লেখকের ঘর" ব্যবহার করে একটি পূর্ণাঙ্গ সিনেমার প্লট তৈরির জন্য একসাথে কাজ করে।
তুমি কি শিখবে
- কিভাবে অভিভাবক এবং উপ-এজেন্টের মধ্যে সম্পর্ক তৈরি করবেন।
- কিভাবে একটি টুল থেকে সেশন
stateডেটা লিখতে হয়। - কী টেমপ্লেটিং ব্যবহার করে
stateথেকে কীভাবে পড়বেন (যেমন,{my_key?})। - ধাপে ধাপে কর্মপ্রবাহের জন্য
SequentialAgentকীভাবে ব্যবহার করবেন। - পুনরাবৃত্ত পরিশোধন চক্র তৈরি করতে
LoopAgentকীভাবে ব্যবহার করবেন। - একই সাথে স্বাধীন কাজ চালানোর জন্য
ParallelAgentকীভাবে ব্যবহার করবেন।
2. মাল্টি-এজেন্ট সিস্টেম
এজেন্ট ডেভেলপমেন্ট কিট (ADK) ডেভেলপারদের জেনারেটিভ মডেল থেকে আরও নির্ভরযোগ্য, পরিশীলিত, বহু-পদক্ষেপের আচরণ পেতে সক্ষম করে। একটি জটিল প্রম্পটের পরিবর্তে, ADK আপনাকে একাধিক, সহজ এজেন্টের একটি প্রবাহ তৈরি করতে দেয় যারা কাজ ভাগ করে একটি সমস্যায় সহযোগিতা করে।
একটি একক, একচেটিয়া প্রম্পট ব্যবহারের তুলনায় এই পদ্ধতির বেশ কিছু সুবিধা রয়েছে:
- সহজ নকশা: একটি বৃহৎ, জটিল প্রম্পট তৈরি করার চেয়ে ছোট, বিশেষায়িত এজেন্টদের একটি প্রবাহ ডিজাইন এবং সংগঠিত করা সহজ।
- নির্ভরযোগ্যতা: বিশেষায়িত এজেন্টরা তাদের নির্দিষ্ট কাজে একটি বৃহৎ, জটিল এজেন্টের চেয়ে বেশি নির্ভরযোগ্য।
- রক্ষণাবেক্ষণযোগ্যতা: সিস্টেমের অন্যান্য অংশ না ভেঙে একটি ছোট, বিশেষায়িত এজেন্ট ঠিক করা বা উন্নত করা সহজ।
- মডুলারিটি: একটি কর্মপ্রবাহের জন্য তৈরি এজেন্টগুলি সহজেই অন্যগুলিতে পুনরায় ব্যবহার করা যেতে পারে।
হায়ারার্কিকাল এজেন্ট ট্রি

ADK-তে, আপনি একটি ট্রি স্ট্রাকচারে এজেন্টদের সংগঠিত করেন। এই শ্রেণিবিন্যাস কথোপকথনের প্রবাহ নিয়ন্ত্রণের মূল চাবিকাঠি, কারণ এটি কোন এজেন্ট কথোপকথনটি অন্য কোন এজেন্টের কাছে "পাস" করতে পারে তা সীমাবদ্ধ করে। এটি সিস্টেমের আচরণকে আরও অনুমানযোগ্য এবং ডিবাগ করা সহজ করে তোলে। সুবিধাগুলির মধ্যে রয়েছে:
- স্বজ্ঞাত নকশা: কাঠামোটি বাস্তব-বিশ্বের দল দ্বারা অনুপ্রাণিত, যা যুক্তি করা সহজ করে তোলে।
- নিয়ন্ত্রিত প্রবাহ: শ্রেণিবিন্যাস আপনাকে টাস্ক ডেলিগেশনের উপর সুনির্দিষ্ট নিয়ন্ত্রণ দেয়, যা ডিবাগিংয়ে সহায়তা করে। উদাহরণস্বরূপ, ট্রি স্ট্রাকচার নিশ্চিত করে যে সঠিক রিপোর্ট-রাইটিং এজেন্টকে ডাকা হচ্ছে, এমনকি যদি আপনার দুটি একই রকম বর্ণনার সাথে থাকে।
সম্পূর্ণ কাঠামোটি root_agent দিয়ে শুরু হয়। এই এজেন্টটি প্যারেন্ট হিসেবে কাজ করে এবং এর এক বা একাধিক সাব-এজেন্ট থাকতে পারে, যা পরবর্তীতে তাদের নিজস্ব সাব-এজেন্টের প্যারেন্টও হতে পারে, যা ট্রি তৈরি করে।
৩. প্রকল্প সেটআপ
গুগল অ্যাকাউন্ট
যদি আপনার ইতিমধ্যেই একটি ব্যক্তিগত Google অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি Google অ্যাকাউন্ট তৈরি করতে হবে।
কর্মক্ষেত্র বা স্কুল অ্যাকাউন্টের পরিবর্তে ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন ।
গুগল ক্লাউড কনসোলে সাইন-ইন করুন
একটি ব্যক্তিগত গুগল অ্যাকাউন্ট ব্যবহার করে গুগল ক্লাউড কনসোলে সাইন-ইন করুন।
বিলিং সক্ষম করুন
$৫ গুগল ক্লাউড ক্রেডিট রিডিম করুন (ঐচ্ছিক)
এই কর্মশালাটি পরিচালনা করার জন্য, আপনার কিছু ক্রেডিট সহ একটি বিলিং অ্যাকাউন্ট প্রয়োজন। আপনি যদি নিজের বিলিং ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।
- এই লিঙ্কে ক্লিক করুন এবং একটি ব্যক্তিগত গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন। আপনি এরকম কিছু দেখতে পাবেন:

- আপনার ক্রেডিট অ্যাক্সেস করতে এখানে ক্লিক করুন বোতামটি ক্লিক করুন। এটি আপনাকে আপনার বিলিং প্রোফাইল সেট আপ করার জন্য একটি পৃষ্ঠায় নিয়ে যাবে।

- নিশ্চিত করুন ক্লিক করুন
আপনি এখন একটি Google ক্লাউড প্ল্যাটফর্ম ট্রায়াল বিলিং অ্যাকাউন্টের সাথে সংযুক্ত।

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করুন
আপনি যদি গুগল ক্লাউড ক্রেডিট ব্যবহার করে বিলিং সেট আপ করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।
একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করতে, ক্লাউড কনসোলে বিলিং সক্ষম করতে এখানে যান ।
কিছু নোট:
- এই ল্যাবটি সম্পূর্ণ করতে ক্লাউড রিসোর্সে $1 USD এর কম খরচ হবে।
- আরও চার্জ এড়াতে আপনি এই ল্যাবের শেষে রিসোর্স মুছে ফেলার ধাপগুলি অনুসরণ করতে পারেন।
- নতুন ব্যবহারকারীরা $300 USD বিনামূল্যে ট্রায়ালের জন্য যোগ্য।
একটি প্রকল্প তৈরি করুন (ঐচ্ছিক)
যদি আপনার কাছে এই ল্যাবের জন্য ব্যবহার করতে চান এমন কোন বর্তমান প্রকল্প না থাকে, তাহলে এখানে একটি নতুন প্রকল্প তৈরি করুন ।
৪. ক্লাউড শেল এডিটর খুলুন
- সরাসরি ক্লাউড শেল এডিটরে যেতে এই লিঙ্কে ক্লিক করুন।
- আজই যদি যেকোনো সময় অনুমোদনের অনুরোধ করা হয়, তাহলে চালিয়ে যেতে অনুমোদন করুন-এ ক্লিক করুন।

- যদি স্ক্রিনের নীচে টার্মিনালটি না দেখা যায়, তাহলে এটি খুলুন:
- ভিউ ক্লিক করুন
- টার্মিনাল ক্লিক করুন

- টার্মিনালে, এই কমান্ড দিয়ে আপনার প্রকল্পটি সেট করুন:
gcloud config set project [PROJECT_ID]- উদাহরণ:
gcloud config set project lab-project-id-example - যদি আপনি আপনার প্রজেক্ট আইডি মনে রাখতে না পারেন, তাহলে আপনি আপনার সমস্ত প্রজেক্ট আইডি তালিকাভুক্ত করতে পারেন:
gcloud projects list
- উদাহরণ:
- আপনার এই বার্তাটি দেখা উচিত:
Updated property [core/project].
৫. API গুলি সক্ষম করুন
Vertex AI API ব্যবহার করতে এবং Gemini মডেলের সাথে ইন্টারঅ্যাক্ট করতে, আপনার Google Cloud Project-এ Vertex AI API সক্ষম করতে হবে।
- টার্মিনালে, API সক্রিয় করুন:
gcloud services enable aiplatform.googleapis.com
এখানে আপডেট করা বিভাগগুলি দেওয়া হল, যেখানে ম্যানুয়াল ফাইল তৈরির পরিবর্তে GitHub রিপোজিটরি ক্লোন করার এবং নির্ভরতা ইনস্টল করার নির্দেশাবলী দেওয়া হয়েছে।
পাইথনের জন্য ভার্টেক্স এআই এসডিকে-এর ভূমিকা
আপনার পাইথন অ্যাপ্লিকেশন থেকে ভার্টেক্স এআই-তে হোস্ট করা মডেলগুলির সাথে ইন্টারঅ্যাক্ট করতে, আপনাকে পাইথনের জন্য ভার্টেক্স এআই এসডিকে ব্যবহার করতে হবে। এই এসডিকে প্রম্পট পাঠানো, মডেল প্যারামিটার নির্দিষ্ট করা এবং প্রতিক্রিয়া গ্রহণের প্রক্রিয়াটিকে সহজ করে তোলে, অন্তর্নিহিত এপিআই কলগুলির জটিলতাগুলি সরাসরি পরিচালনা করার প্রয়োজন ছাড়াই।
পাইথনের জন্য ভার্টেক্স এআই এসডিকে-র জন্য বিস্তারিত ডকুমেন্টেশন আপনি এখানে পাবেন: পাইথনের জন্য ভার্টেক্স এআই এসডিকে-র ভূমিকা | গুগল ক্লাউড ।
৬. প্রকল্পের পরিবেশ সেট আপ করুন
রেপো ক্লোন করুন
- টার্মিনালে , স্টার্টার ফাইল ধারণকারী রিপোজিটরিটি ক্লোন করুন।
git clone --depth 1 https://github.com/GoogleCloudPlatform/devrel-demos.git--depth 1পতাকাটি কেবলমাত্র সর্বশেষ সংস্করণটিকে ক্লোন করে, যা দ্রুততর। - টার্মিনালে , এই ল্যাবের জন্য সঠিক কার্যকরী ডিরেক্টরিতে নেভিগেট করুন।
cd devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems
একটি ভার্চুয়াল পরিবেশ সক্রিয় করুন
- টার্মিনালে ,
uvব্যবহার করে একটি ভার্চুয়াল পরিবেশ তৈরি এবং সক্রিয় করুন:uv venv source .venv/bin/activate - টার্মিনালে ,
requirements.txtফাইল থেকেgoogle-adkএবং অন্যান্য নির্ভরতা ইনস্টল করুন:uv pip install -r requirements.txt
আপনার ফাইলের কাঠামো পর্যালোচনা করুন
এখন আপনার সমস্ত ফাইল তৈরি হয়ে গেছে, সম্পূর্ণ কাঠামো দেখতে এক্সপ্লোরারে adk_multiagent_systems ফোল্ডারটি খুলুন।
- ক্লাউড শেল এডিটর মেনুতে, ফাইল > ফোল্ডার খুলুন... নির্বাচন করুন।

- যে বাক্সটি পপ আপ হবে, সেখানে আপনার ব্যবহারকারীর নাম পরে নিম্নলিখিত ফোল্ডার তথ্য যোগ করুন:
devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems/OK এ ক্লিক করুন।
এটি দেখতে এরকম কিছু হওয়া উচিত:
- বাম দিকের এক্সপ্লোরার প্যানেলটি রিফ্রেশ হবে। এখন আপনি আপনার সম্পূর্ণ প্রকল্প কাঠামো দেখতে পাবেন,
parent_and_subagentsএবংworkflow_agentsসাব-ডিরেক্টরি সহ, পরবর্তী পদক্ষেপের জন্য প্রস্তুত।
পরিবেশ ভেরিয়েবল সেট আপ করুন
- আপনি ইতিমধ্যেই
adk_multiagent_systemsডিরেক্টরিতে আছেন। টার্মিনালে , আপনার পরিবেশ ভেরিয়েবল সংরক্ষণ করার জন্য একটি.envফাইল তৈরি করুন:cloudshell edit .env - এডিটরে খোলা
.envফাইলে নিম্নলিখিতটি পেস্ট করুন:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT="[YOUR-PROJECT-ID]" GOOGLE_CLOUD_LOCATION=global MODEL="gemini-2.5-flash" -
[YOUR-PROJECT-ID]আপনার আসল Google Cloud Project ID দিয়ে প্রতিস্থাপন করুন। (যেমনPROJECT_ID = "google-cloud-labs")
যদি আপনি আপনার প্রজেক্ট আইডি মনে করতে না পারেন, তাহলে আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান। এটি আপনাকে আপনার সমস্ত প্রজেক্ট এবং তাদের আইডিগুলির একটি তালিকা দেখাবে।gcloud projects list - টার্মিনালে , এই
.envফাইলটি সাব-এজেন্ট ডিরেক্টরিগুলিতে অনুলিপি করুন যাতে তারা ভেরিয়েবলগুলি অ্যাক্সেস করতে পারে: ফাইলের কাঠামো এখন এইরকম দেখা উচিত:cp .env parent_and_subagents/.env cp .env workflow_agents/.env
৭. অভিভাবক, উপ-এজেন্ট এবং সহকর্মী এজেন্টদের মধ্যে স্থানান্তর অন্বেষণ করুন
কথোপকথন সর্বদা root_agent দিয়ে শুরু হয়। ডিফল্টরূপে, একজন প্যারেন্ট এজেন্ট তার সাব-এজেন্টের description ব্যবহার করে কথোপকথন কখন স্থানান্তর করতে হবে তা নির্ধারণ করে। আপনি সাব-এজেন্টের name ব্যবহার করে প্যারেন্টের instruction স্পষ্টভাবে এই স্থানান্তরগুলি পরিচালনা করতে পারেন।
আসুন এটি পরীক্ষা করি।
- ক্লাউড শেল এডিটরে,
adk_multiagent_systems/parent_and_subagents/agent.pyখুলুন।agent.pyফাইলে তিনটি এজেন্ট লক্ষ্য করুন:-
root_agent(নামকরণ করা হয়েছেsteering) : কোন সাব-এজেন্টে স্থানান্তর করতে হবে তা নির্ধারণ করার জন্য ব্যবহারকারীকে একটি প্রশ্ন জিজ্ঞাসা করে। প্রাথমিকভাবে, এটি শুধুমাত্র তার সাব-এজেন্টেরdescriptionউপর নির্ভর করে। -
travel_brainstormer: ব্যবহারকারীকে গন্তব্যস্থল সম্পর্কে চিন্তাভাবনা করতে সাহায্য করে। -
attractions_planner: ব্যবহারকারীকে একটি নির্দিষ্ট দেশে করণীয় জিনিস তালিকাভুক্ত করতে সাহায্য করে।
-
-
root_agentতৈরিতে নিম্নলিখিত লাইনটি যোগ করেroot_agentএরtravel_brainstormerএবংattractions_plannerসাব-এজেন্ট তৈরি করুন:sub_agents=[travel_brainstormer, attractions_planner] - টার্মিনালে , আপনার এজেন্টের সাথে চ্যাট করুন:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk run parent_and_subagents - টার্মিনালে
[user]:প্রম্পটে, টাইপ করুন: উদাহরণ আউটপুট (আপনারটি একটু ভিন্ন হতে পারে):hello[steering]: Hi there! Do you already have a country in mind for your trip, or would you like some help deciding where to go?
- এখন, টার্মিনালে এজেন্টকে বলুন:
উদাহরণ আউটপুট (আপনারটি একটু ভিন্ন হতে পারে):I could use some help deciding.[travel_brainstormer]: Okay! To give you the best recommendations, I need to understand what you're looking for in a trip. ...
[travel_brainstormer]ট্যাগটি লক্ষ্য করুন।root_agentশুধুমাত্র সাব-এজেন্টেরdescriptionউপর ভিত্তি করে নিয়ন্ত্রণ স্থানান্তর করেছে। - টার্মিনালে
user:প্রম্পটে,exitটাইপ করুন এবং কথোপকথনটি শেষ করতে ENTER টিপুন। - এবার আরও স্পষ্ট করে বলা যাক।
agent.pyতে,root_agentএরinstructionনিম্নলিখিতটি যোগ করুন:If they need help deciding, send them to 'travel_brainstormer'. If they know what country they'd like to visit, send them to the 'attractions_planner'. - টার্মিনালে , এজেন্টটি আবার চালান:
adk run parent_and_subagents - টার্মিনালে
[user]:প্রম্পটে, টাইপ করুন:hello - এর সাথে উত্তর দিন:
উদাহরণ আউটপুট (আপনারটি একটু ভিন্ন হতে পারে):I would like to go to Japan. আপনার নতুন নির্দেশাবলী অনুসারে[attractions_planner]: Okay, I can help you with that! Here are some popular attractions in Japan: ...
attractions_plannerএ স্থানান্তর লক্ষ্য করুন। - এবার উত্তর দিন:
উদাহরণ আউটপুট (আপনারটি একটু ভিন্ন হতে পারে):Actually I don't know what country to visit. লক্ষ্য করুন যে আপনাকে[travel_brainstormer]: Okay! I can help you brainstorm some countries for travel...
attractions_plannerএর সমকক্ষtravel_brainstormerএ স্থানান্তর করা হয়েছে। এটি ডিফল্টরূপে অনুমোদিত। - ব্যবহারকারীর প্রম্পটে, সেশনটি শেষ করতে
exitটাইপ করুন।
সংক্ষিপ্তসার
এই বিভাগে, আপনি এজেন্ট শ্রেণিবিন্যাস এবং কথোপকথন প্রবাহের মৌলিক বিষয়গুলি শিখেছেন:
- কথোপকথন সর্বদা
root_agentদিয়ে শুরু হয়। - একজন প্যারেন্ট এজেন্ট তার
descriptionউপর ভিত্তি করে স্বয়ংক্রিয়ভাবে একটি সাব-এজেন্টের কাছে স্থানান্তর করতে পারে। - আপনি এই প্রবাহকে স্পষ্টভাবে নিয়ন্ত্রণ করতে পারেন প্যারেন্টকে একটি সাব-এজেন্টের
nameস্থানান্তর করারinstructionদিয়ে। - ডিফল্টরূপে, এজেন্টরা তাদের
peerএজেন্টদের (শ্রেণীবিন্যাসের ভাইবোনদের) কাছে স্থানান্তর করতে পারে।
৮. তথ্য সংরক্ষণ এবং পুনরুদ্ধারের জন্য সেশন স্টেট ব্যবহার করুন
প্রতিটি ADK কথোপকথনের একটি Session থাকে, যার মধ্যে একটি session state dictionary থাকে। এই অবস্থাটি সকল এজেন্টের কাছে অ্যাক্সেসযোগ্য, যা তাদের মধ্যে তথ্য আদান-প্রদান বা কথোপকথন জুড়ে ডেটা (যেমন একটি তালিকা) বজায় রাখার জন্য এটি একটি নিখুঁত উপায় করে তোলে।
রাজ্য থেকে যোগ করা এবং পড়া অন্বেষণ করতে:
-
adk_multiagent_systems/parent_and_subagents/agent.pyফাইলে ফিরে যান। -
# Toolsহেডারের পরে নিম্নলিখিত ফাংশনের সংজ্ঞাটি পেস্ট করুন: এই কোডে, লক্ষ্য করুন:def save_attractions_to_state( tool_context: ToolContext, attractions: List[str] ) -> dict[str, str]: """Saves the list of attractions to state["attractions"]. Args: attractions [str]: a list of strings to add to the list of attractions Returns: None """ # Load existing attractions from state. If none exist, start an empty list existing_attractions = tool_context.state.get("attractions", []) # Update the 'attractions' key with a combo of old and new lists. # When the tool is run, ADK will create an event and make # corresponding updates in the session's state. tool_context.state["attractions"] = existing_attractions + attractions # A best practice for tools is to return a status message in a return dict return {"status": "success"}- ফাংশনটি
tool_context: ToolContext। এই অবজেক্টটি আপনার সেশনের প্রবেশদ্বার। -
tool_context.state["attractions"] = ...লাইনটি সরাসরি সেশনের স্টেট ডিকশনারি থেকে পড়ে এবং লেখে। বাকিটা ADK পরিচালনা করে।
- ফাংশনটি
-
toolsপ্যারামিটার যোগ করেattractions_plannerএজেন্টে টুলটি যোগ করুন:tools=[save_attractions_to_state] -
attractions_plannerএজেন্টের বিদ্যমানinstructionনিম্নলিখিত বুলেট পয়েন্টগুলি যোগ করুন:- When they reply, use your tool to save their selected attraction and then provide more possible attractions. - If they ask to view the list, provide a bulleted list of { attractions? } and then suggest some more. - টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করে এজেন্ট ডেভেলপমেন্ট কিট ওয়েব UI চালু করুন :
আউটপুটadk webINFO: Started server process [2434] INFO: Waiting for application startup. +-------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8000. | +-------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) - ক্লাউড শেল টার্মিনালে, একটি নতুন ট্যাবে ওয়েব ইন্টারফেস দেখতে, ওয়েব প্রিভিউ বোতামে ক্লিক করুন এবং পোর্ট পরিবর্তন করুন নির্বাচন করুন।

- পোর্ট নম্বর 8000 লিখুন এবং Change and Preview এ ক্লিক করুন। ADK Dev UI সহ একটি নতুন ব্রাউজার ট্যাব খুলবে।

- বাম দিকের Select an agent ড্রপডাউন থেকে,
parent_and_subagentsনির্বাচন করুন। - কথোপকথন শুরু করুন:
hello - এজেন্ট আপনাকে অভ্যর্থনা জানানোর পর, উত্তর দিন:
আপনাকেI'd like to go to Egypt.attractions_plannerস্থানান্তরিত করা উচিত এবং আকর্ষণগুলির একটি তালিকা প্রদান করা উচিত। - একটি আকর্ষণ বেছে নিন, উদাহরণস্বরূপ:
I'll go to the Sphinx - তোমার উত্তরটা এরকম হওয়া উচিত: ঠিক আছে, আমি তোমার তালিকায় দ্য স্ফিংস সংরক্ষণ করেছি...
- টুলের রেসপন্স থেকে তৈরি ইভেন্টটি দেখতে রেসপন্স টুল বক্সে (টিক চিহ্ন দিয়ে চিহ্নিত) ক্লিক করুন।
লক্ষ্য করুন যে এটিতে একটি অ্যাকশন ফিল্ড রয়েছে যার মধ্যেstateDeltaরয়েছে যা state-এর পরিবর্তনগুলি বর্ণনা করে। - এজেন্টের তালিকা থেকে অন্য একটি আকর্ষণের উত্তর দিন।
- বাম দিকের নেভিগেশন মেনুতে, আপনি আগে যে ইভেন্টটি পরিদর্শন করেছেন তার ফোকাস থেকে বেরিয়ে আসতে "X" এ ক্লিক করুন।
- বাম দিকের সাইডবারে, State ট্যাবে ক্লিক করুন। আপনি এখন সেশনের স্টেটে
attractionsঅ্যারে দেখতে পাবেন, যেখানে আপনার নির্বাচিত উভয় আইটেমই থাকা উচিত।
- এজেন্টকে এই বার্তাটি পাঠান:
এজেন্টের এখন রাজ্য থেকে পড়া উচিত এবং আপনার তালিকাটি ফেরত দেওয়া উচিত।What is on my list? - এজেন্টের সাথে পরীক্ষা-নিরীক্ষা শেষ হলে, ওয়েব ব্রাউজার ট্যাবটি বন্ধ করুন এবং সার্ভারটি বন্ধ করতে ক্লাউড শেল টার্মিনালে CTRL + C টিপুন।
বিভাগের সংক্ষিপ্তসার
এই বিভাগে, আপনি ডেটা ভাগ করে নেওয়ার জন্য Session স্টেট ব্যবহার করতে শিখেছেন:
- state লেখার জন্য : আপনি
tool_context.stateঅবজেক্ট (যেমন,tool_context.state["my_list"] = [...]) ব্যবহার করে একটি টুলের মধ্যে থেকে state অভিধানে লিখতে পারেন। - অবস্থা পড়ার জন্য : আপনি কী টেমপ্লেটিং ব্যবহার করে এজেন্টের
instructionসরাসরি অবস্থা তথ্য প্রবেশ করান (যেমন,Here is your list: {my_list?})। - অবস্থা পরিদর্শন করতে : আপনি স্টেট ট্যাব ব্যবহার করে ADK Dev UI-তে সেশন অবস্থা সরাসরি পর্যবেক্ষণ করতে পারেন।
9. কর্মপ্রবাহ এজেন্ট
এখন পর্যন্ত, আপনি দেখেছেন কিভাবে একজন প্যারেন্ট এজেন্ট একটি সাব-এজেন্টের কাছে স্থানান্তর করে এবং তারপর ব্যবহারকারীর জন্য অপেক্ষা করে। ওয়ার্কফ্লো এজেন্টগুলি আলাদা: তারা ব্যবহারকারীর ইনপুটের জন্য অপেক্ষা না করেই একটি স্বয়ংক্রিয় প্রবাহে একের পর এক তাদের সাব-এজেন্টগুলি কার্যকর করে ।
এটি "পরিকল্পনা এবং সম্পাদন" বা "খসড়া এবং সংশোধন" পাইপলাইনের মতো স্বয়ংক্রিয়, বহু-পদক্ষেপের কাজের জন্য উপযুক্ত। এটি পরিচালনা করার জন্য ADK তিনটি অন্তর্নির্মিত ওয়ার্কফ্লো এজেন্ট সরবরাহ করে:
-
SequentialAgent -
LoopAgent -
ParallelAgent
এই ল্যাবের বাকি অংশ এই তিনটি ওয়ার্কফ্লো এজেন্ট ব্যবহার করে একটি মাল্টি-এজেন্ট সিস্টেম তৈরির উপর দৃষ্টি নিবদ্ধ করবে।
তুমি এমন একজন এজেন্ট তৈরি করবে যে ঐতিহাসিক চরিত্রের উপর ভিত্তি করে একটি নতুন সিনেমার জন্য একটি পিচ ডকুমেন্ট তৈরি করবে। তোমার এজেন্টরা গবেষণা, পুনরাবৃত্তিমূলক লেখা এবং প্রতিবেদন তৈরির কাজ করবে।
শেষ পর্যন্ত, আপনার সিস্টেমটি এইরকম দেখাবে:

আপনি এই সিস্টেমটি এক ধাপে এক ধাপে তৈরি করবেন, সহজতম কর্মপ্রবাহ দিয়ে শুরু করবেন।
১০. একটি সিকোয়েন্সিয়াল এজেন্ট দিয়ে একটি মাল্টি-এজেন্ট সিস্টেম তৈরি করুন
SequentialAgent হলো একটি ওয়ার্কফ্লো এজেন্ট যা তার সাব-এজেন্টগুলিকে একটি সরল, রৈখিক ক্রমানুসারে কার্যকর করে। এর sub_agents -এজেন্ট তালিকার প্রতিটি এজেন্ট একের পর এক ক্রমানুসারে পরিচালিত হয়। এটি এমন পাইপলাইনের জন্য উপযুক্ত যেখানে কাজগুলি একটি নির্দিষ্ট ক্রমে সম্পাদন করতে হবে, যেমন আপনি এখন যে মুভি-পিচিং এজেন্ট তৈরি করবেন।
এই প্রথম সংস্করণটি এইভাবে গঠন করা হবে:

- একটি
root_agent(greeter) ব্যবহারকারীকে স্বাগত জানাবে এবং সিনেমার বিষয় পাবে। - এরপর এটি
film_concept_teamনামক একটিSequentialAgentএ স্থানান্তরিত হবে, যা করবে:- উইকিপিডিয়া থেকে তথ্য সংগ্রহের জন্য একজন
researcherএজেন্ট নিয়োগ করুন। - সেই তথ্যগুলো ব্যবহার করে একটি প্লট লেখার জন্য একজন
screenwriterএজেন্টকে চালান। - একটি ফাইলে চূড়ান্ত প্লট সংরক্ষণ করতে একটি
file_writerএজেন্ট চালান।
- উইকিপিডিয়া থেকে তথ্য সংগ্রহের জন্য একজন
চলো এটা চালাই।
- ক্লাউড শেল এডিটরে ,
adk_multiagent_systems/workflow_agents/agent.pyখুলুন।
এই এজেন্ট ডেফিনিশন ফাইলটি পড়ুন। যেহেতু সাব-এজেন্টগুলিকে অভিভাবককে বরাদ্দ করার আগে সংজ্ঞায়িত করতে হবে, তাই কথোপকথনের প্রবাহের ক্রম অনুসারে ফাইলটি পড়ার জন্য, আপনি ফাইলের নীচে থেকে উপরে পর্যন্ত এজেন্টগুলি পড়তে পারেন। -
append_to_stateটুলটি লক্ষ্য করুন। এই সহায়ক ফাংশনটি এজেন্টদের সেশন স্টেটের একটি তালিকায় ডেটা যুক্ত করতে দেয়, এইভাবেresearcherএবংscreenwriterতাদের কাজটি পাস করবেন। - এজেন্টটি ব্যবহার করে দেখুন। টার্মিনালে , লাইভ-রিলোডিং সক্ষম করে ওয়েব ইন্টারফেসটি চালু করুন:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk web --reload_agents - ক্লাউড শেল টার্মিনালে, একটি নতুন ট্যাবে ওয়েব ইন্টারফেস দেখতে, ওয়েব প্রিভিউ বোতামে ক্লিক করুন এবং পোর্ট পরিবর্তন করুন নির্বাচন করুন।

- পোর্ট নম্বর 8000 লিখুন এবং Change and Preview এ ক্লিক করুন। ADK Dev UI সহ একটি নতুন ব্রাউজার ট্যাব খুলবে।

- Select an agent ড্রপডাউন থেকে,
workflow_agentsনির্বাচন করুন। - কথোপকথন শুরু করুন:
hello।greeterএজেন্ট উত্তর দেবেন। - অনুরোধ করা হলে, একটি ঐতিহাসিক ব্যক্তিত্ব লিখুন। আপনি এইগুলির মধ্যে একটি বা আপনার নিজস্ব ব্যবহার করতে পারেন:
- ঝাং ঝংজিং
- অ্যাডা লাভলেস
- মার্কাস অরেলিয়াস
-
SequentialAgentএখন দায়িত্ব নেবে। আপনি কোনও মধ্যবর্তী বার্তা দেখতে পাবেন না।researcher,screenwriterএবংfile_writerএকের পর এক কাজ করবে। পুরো সিকোয়েন্সটি সম্পূর্ণ হলেই এজেন্ট কেবল প্রতিক্রিয়া জানাবে।
যদি এটি ব্যর্থ হয়, আপনি উপরের ডানদিকে + নতুন সেশন ক্লিক করে আবার চেষ্টা করতে পারেন। - এজেন্ট ফাইলটি লেখা হয়েছে কিনা তা নিশ্চিত করার পর, আউটপুট দেখতে আপনার ক্লাউড শেল এডিটরের
movie_pitchesডিরেক্টরিতে নতুন.txtফাইলটি খুঁজুন এবং খুলুন। - ADK Dev UI-তে, ইভেন্ট ভিউ খুলতে চ্যাট ইতিহাসের শেষ এজেন্ট আইকনে ক্লিক করুন ।
- ইভেন্ট ভিউতে এজেন্ট ট্রির একটি ভিজ্যুয়াল গ্রাফ দেখানো হয়েছে। আপনি দেখতে পাচ্ছেন কিভাবে
greeterfilm_concept_teamকে কল করেছে, যা তার প্রতিটি সাব-এজেন্টকে ক্রমানুসারে ডাকে।
- সেশন স্টেট সহ পাস করা সঠিক ডেটা পরীক্ষা করার জন্য আপনি গ্রাফের যেকোনো এজেন্টের জন্য অনুরোধ এবং প্রতিক্রিয়া ট্যাবে ক্লিক করতে পারেন।
বিভাগের সংক্ষিপ্তসার
এই বিভাগে, আপনি শিখেছেন কিভাবে একটি ওয়ার্কফ্লো এজেন্ট ব্যবহার করতে হয়:
- একটি
SequentialAgentতার সাব-এজেন্টগুলিকে একের পর এক কার্যকর করে, ধাপগুলির মধ্যে ব্যবহারকারীর ইনপুটের জন্য অপেক্ষা না করেই। - এটি একটি "ওয়ার্কফ্লো" কারণ ব্যবহারকারী
root_agentএর সাথে কথা বলে, যা তারপর কাজটি সম্পন্ন করার জন্যSequentialAgentকে হস্তান্তর করে। - ক্রমের সাব-এজেন্টগুলি পূর্ববর্তী এজেন্টদের কাজ অ্যাক্সেস করার জন্য সেশন স্টেট (যেমন,
{ PLOT_OUTLINE? }) ব্যবহার করে। - সম্পূর্ণ এজেন্ট-টু-এজেন্ট ওয়ার্কফ্লো ভিজ্যুয়ালাইজ এবং ডিবাগ করতে আপনি ডেভ UI-তে ইভেন্ট গ্রাফ ব্যবহার করতে পারেন।
১১. পুনরাবৃত্তিমূলক কাজের জন্য একটি LoopAgent যোগ করুন
LoopAgent হল একটি ওয়ার্কফ্লো এজেন্ট যা তার সাব-এজেন্টগুলিকে একটি ক্রমানুসারে চালায় এবং তারপর শুরু থেকে পুনরাবৃত্তি করে। এই "লুপ" চলতে থাকে যতক্ষণ না একটি শর্ত পূরণ হয়, যেমন একটি max_iterations গণনায় পৌঁছানো বা একটি সাব-এজেন্ট বিল্ট-ইন exit_loop টুল কল করা।
এটি এমন কাজের জন্য কার্যকর যেগুলিতে পুনরাবৃত্তিমূলক পরিমার্জন প্রয়োজন। আপনার মুভি পিচ এজেন্টের জন্য একটি "লেখকের ঘর" তৈরি করতে আপনি এই LoopAgent যোগ করবেন। এটি একজন researcher , screenwriter এবং একজন নতুন critic এজেন্টকে একটি লুপে কাজ করার অনুমতি দেয়, প্রতিটি পাসের সাথে প্লট উন্নত করে যতক্ষণ না critic সিদ্ধান্ত নেন যে এটি প্রস্তুত। এটি এজেন্টকে অস্পষ্ট ব্যবহারকারীর ইনপুট (যেমন "একজন প্রাচীন ডাক্তার") পরিচালনা করতে সহায়তা করে, এটি একটি ধারণা গবেষণা এবং পরিমার্জন করতে দেয়।

এই পরিবর্তনগুলি করতে:
-
adk_multiagent_systems/workflow_agents/agent.pyতে,exit_loopএর জন্য আমদানি যোগ করুন (অন্যান্যgoogle.adkআমদানির কাছাকাছি):from google.adk.tools import exit_loop - নতুন
criticএজেন্ট যোগ করুন। এই এজেন্ট প্লটটি পর্যালোচনা করবে। যদি এটি ভালো হয়, তাহলে এটিexit_loopকল করে। যদি না হয়, তাহলে এটি পরবর্তী লুপের জন্য স্টেটে প্রতিক্রিয়া যোগ করে।
# Agentsবিভাগের অধীনে নিম্নলিখিত এজেন্টের সংজ্ঞাটি পেস্ট করুন:critic = Agent( name="critic", model=model_name, description="Reviews the outline so that it can be improved.", instruction=""" INSTRUCTIONS: Consider these questions about the PLOT_OUTLINE: - Does it meet a satisfying three-act cinematic structure? - Do the characters' struggles seem engaging? - Does it feel grounded in a real time period in history? - Does it sufficiently incorporate historical details from the RESEARCH? If the PLOT_OUTLINE does a good job with these questions, exit the writing loop with your 'exit_loop' tool. If significant improvements can be made, use the 'append_to_state' tool to add your feedback to the field 'CRITICAL_FEEDBACK'. Explain your decision and briefly summarize the feedback you have provided. PLOT_OUTLINE: { PLOT_OUTLINE? } RESEARCH: { research? } """, before_model_callback=log_query_to_model, after_model_callback=log_model_response, tools=[append_to_state, exit_loop] ) -
writers_roomLoopAgentতৈরি করুন। এতে লুপে কাজ করবে এমন তিনটি এজেন্ট থাকবে।
film_concept_teamএজেন্ট সংজ্ঞার উপরে নিম্নলিখিত কোডটি পেস্ট করুন:writers_room = LoopAgent( name="writers_room", description="Iterates through research and writing to improve a movie plot outline.", sub_agents=[ researcher, screenwriter, critic ], max_iterations=5, ) - নতুন
writers_roomলুপ ব্যবহার করতেfilm_concept_teamSequentialAgentআপডেট করুন।researcherএবংscreenwriterপরিবর্তে singlewriters_roomএজেন্ট ব্যবহার করুন। আপনার বিদ্যমানfilm_concept_teamসংজ্ঞাটি এটি দিয়ে প্রতিস্থাপন করুন:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, file_writer ], ) - ADK Dev UI ট্যাবে ফিরে যান এবং উপরের ডানদিকে + New Session এ ক্লিক করুন।
- নতুন কথোপকথন শুরু করুন:
hello - অনুরোধ করা হলে, এবার এজেন্টকে একটি বিস্তৃত বিষয় বলুন। কিছু ধারণা:
- একজন শিল্প ডিজাইনার যিনি জনসাধারণের জন্য পণ্য তৈরি করেছিলেন
- একজন মানচিত্রকার (মানচিত্র নির্মাতা)
- যে লোকটি ফসলের উৎপাদন বেশি করেছিল, সে
- লুপটি সম্পূর্ণ হলে, এজেন্ট ফাইলটি লিখবে।
adk_multiagent_systems/movie_pitchesডিরেক্টরিতে জেনারেট করা ফাইলটি পর্যালোচনা করুন। - লুপ স্ট্রাকচার দেখতে ডেভ UI-তে ইভেন্ট গ্রাফটি পরীক্ষা করুন।
বিভাগের সংক্ষিপ্তসার
এই বিভাগে, আপনি LoopAgent ব্যবহার করতে শিখেছেন:
-
LoopAgentহলো একটি ওয়ার্কফ্লো এজেন্ট যা তার সাব-এজেন্টের ক্রম পুনরাবৃত্তি করে, পুনরাবৃত্ত কাজের জন্য একটি "ইনার লুপ" তৈরি করে। - লুপের ভিতরে থাকা এজেন্টরা পরবর্তী পাসগুলিতে একে অপরের কাছে কাজ (যেমন,
PLOT_OUTLINE) এবং প্রতিক্রিয়া (যেমন,CRITICAL_FEEDBACK) প্রেরণের জন্য সেশন অবস্থা ব্যবহার করে। - লুপটি
max_iterationsসীমা অতিক্রম করে অথবাexit_loopটুলটি কল করে কোনও এজেন্ট দ্বারা বন্ধ করা যেতে পারে।
১২. "ফ্যান আউট অ্যান্ড জড়ো" এর জন্য একটি প্যারালাল এজেন্ট ব্যবহার করুন।
ParallelAgent হল একটি ওয়ার্কফ্লো এজেন্ট যা একই সময়ে (একযোগে) তার সমস্ত সাব-এজেন্ট কার্যকর করে। এটি এমন কাজের জন্য মূল্যবান যেগুলিকে স্বাধীন সাব-টাস্কে ভাগ করা যেতে পারে, যেমন দুটি ভিন্ন গবেষণা কাজ চালানো।
আপনি একটি ParallelAgent ব্যবহার করে একটি "প্রি-প্রোডাকশন টিম" তৈরি করবেন যা সমান্তরালভাবে কাজ করবে। একজন এজেন্ট বক্স অফিসের সম্ভাবনা নিয়ে গবেষণা করবে এবং অন্য একজন এজেন্ট একই সাথে কাস্টিং আইডিয়া নিয়ে আলোচনা করবে। এটিকে প্রায়শই "ফ্যান আউট অ্যান্ড গ্যাদার" প্যাটার্ন বলা হয়: ParallelAgent কাজটি "ফ্যান আউট" করে এবং পরবর্তী একজন এজেন্ট (আমাদের file_writer ) ফলাফল "জড়ো" করে।

আপনার চূড়ান্ত এজেন্ট প্রবাহ হবে:
-
greeter(রুট) চ্যাট শুরু করেন। - এটি
film_concept_team(SequentialAgent) তে স্থানান্তরিত হয়, যা চালায়:- প্লট তৈরি করার জন্য
writers_room(LoopAgent)। - নতুন
preproduction_team(ParallelAgent) একই সাথে বক্স অফিস এবং কাস্টিং নিয়ে গবেষণা করবে। -
file_writerসমস্ত ফলাফল সংগ্রহ করে ফাইলটি সংরক্ষণ করবে।
- প্লট তৈরি করার জন্য
এই পরিবর্তনগুলি করতে:
-
adk_multiagent_systems/workflow_agents/agent.pyতে, নতুনParallelAgentএবং এর সাব-এজেন্টগুলিকে# Agentsহেডারের নীচে পেস্ট করুন।box_office_researcher = Agent( name="box_office_researcher", model=model_name, description="Considers the box office potential of this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Write a report on the box office potential of a movie like that described in PLOT_OUTLINE based on the reported box office performance of other recent films. """, output_key="box_office_report" ) casting_agent = Agent( name="casting_agent", model=model_name, description="Generates casting ideas for this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Generate ideas for casting for the characters described in PLOT_OUTLINE by suggesting actors who have received positive feedback from critics and/or fans when they have played similar roles. """, output_key="casting_report" ) preproduction_team = ParallelAgent( name="preproduction_team", sub_agents=[ box_office_researcher, casting_agent ] ) - নতুন
preproduction_team(writers_roomএবংfile_writerএর মধ্যে) অন্তর্ভুক্ত করার জন্যfilm_concept_teamSequentialAgentএরsub_agentsতালিকা আপডেট করুন। আপনার বিদ্যমানfilm_concept_teamসংজ্ঞাটি এটি দিয়ে প্রতিস্থাপন করুন:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, preproduction_team, file_writer ], ) -
file_writerএজেন্টেরinstructionআপডেট করুন যাতে এটি রাজ্য থেকে নতুন প্রতিবেদনগুলি "সংগ্রহ" করে এবং ফাইলে যোগ করে।
file_writerজন্যinstructionস্ট্রিংটি এটি দিয়ে প্রতিস্থাপন করুন:instruction=""" INSTRUCTIONS: - Create a marketable, contemporary movie title suggestion for the movie described in the PLOT_OUTLINE. If a title has been suggested in PLOT_OUTLINE, you can use it, or replace it with a better one. - Use your 'write_file' tool to create a new txt file with the following arguments: - for a filename, use the movie title - Write to the 'movie_pitches' directory. - For the 'content' to write, include: - The PLOT_OUTLINE - The BOX_OFFICE_REPORT - The CASTING_REPORT PLOT_OUTLINE: { PLOT_OUTLINE? } BOX_OFFICE_REPORT: { box_office_report? } CASTING_REPORT: { casting_report? } """, - ADK Dev UI ট্যাবে ফিরে যান এবং + New Session এ ক্লিক করুন।
- কথোপকথন শুরু করতে
helloলিখুন। - অনুরোধ করা হলে, একটি নতুন চরিত্রের ধারণা লিখুন। কিছু ধারণা:
- ওয়াইফাই প্রযুক্তি আবিষ্কারকারী সেই অভিনেত্রী
- একজন রোমাঞ্চকর রাঁধুনি
- বিশ্ব মেলা প্রদর্শনীর মূল খেলোয়াড়রা
- এজেন্ট যখন তার কাজ সম্পন্ন করবে, তখন
adk_multiagent_systems/movie_pitchesডিরেক্টরিতে চূড়ান্ত ফাইলটি পরীক্ষা করুন। এতে এখন গল্প, বক্স অফিস রিপোর্ট এবং কাস্টিং রিপোর্ট সবই একটি নথিতে থাকা উচিত।
বিভাগের সংক্ষিপ্তসার
এই বিভাগে, আপনি ParallelAgent ব্যবহার করতে শিখেছেন:
- একটি
ParallelAgent"ফ্যান আউট" কাজ করে, তার সমস্ত সাব-এজেন্ট একই সময়ে চালায়, একটি ক্রমানুসারে নয়। - এটি এমন কাজের জন্য অত্যন্ত দক্ষ যা একে অপরের উপর নির্ভর করে না (যেমন দুটি ভিন্ন বিষয় নিয়ে গবেষণা করা)।
- সমান্তরাল এজেন্টের ফলাফল পরবর্তী এজেন্ট দ্বারা "সংগৃহীত" হয়। এটি সমান্তরাল এজেন্টদের তাদের কাজ সেশন স্টেটে সংরক্ষণ করে (
output_keyব্যবহার করে), এবং একটি চূড়ান্ত এজেন্ট (যেমনfile_writer) দিয়ে সেই কীগুলি পড়ার মাধ্যমে করা হয়।
১৩. কাস্টম ওয়ার্কফ্লো এজেন্ট
যখন SequentialAgent , LoopAgent এবং ParallelAgent এর পূর্ব-নির্ধারিত ওয়ার্কফ্লো এজেন্টগুলি আপনার প্রয়োজনের জন্য অপর্যাপ্ত হয়, তখন CustomAgent নতুন ওয়ার্কফ্লো লজিক বাস্তবায়নের নমনীয়তা প্রদান করে।
আপনি সাব-এজেন্টগুলির মধ্যে প্রবাহ নিয়ন্ত্রণ, শর্তসাপেক্ষ সম্পাদন, অথবা অবস্থা ব্যবস্থাপনার জন্য প্যাটার্ন নির্ধারণ করতে পারেন। এটি জটিল কর্মপ্রবাহ, স্টেটফুল অর্কেস্ট্রেশন, অথবা ফ্রেমওয়ার্কের অর্কেস্ট্রেশন স্তরে কাস্টম ব্যবসায়িক যুক্তি সংহত করার জন্য কার্যকর।
CustomAgent তৈরি করা এই ল্যাবের আওতার বাইরে, তবে আপনার যদি প্রয়োজন হয় তবে এটি বিদ্যমান তা জেনে রাখা ভালো!
১৪. অভিনন্দন!
আপনি গুগল এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি অত্যাধুনিক মাল্টি-এজেন্ট সিস্টেম সফলভাবে তৈরি করেছেন। আপনি একটি সাধারণ পিতামাতা-সন্তানের এজেন্ট সম্পর্ক থেকে জটিল, স্বয়ংক্রিয় কর্মপ্রবাহ পরিচালনার দিকে এগিয়ে গেছেন যা একটি সৃজনশীল প্রকল্প গবেষণা, লেখা এবং পরিমার্জন করতে পারে।
সংক্ষিপ্তসার
এই ল্যাবে, আপনি নিম্নলিখিত কাজগুলি করেছেন:
- অভিভাবক এবং উপ-এজেন্ট সম্পর্কের সাথে একটি শ্রেণিবদ্ধ বৃক্ষে সংগঠিত এজেন্ট।
- নিয়ন্ত্রিত এজেন্ট থেকে এজেন্ট স্থানান্তর , স্বয়ংক্রিয়ভাবে (
descriptionব্যবহার করে) এবং স্পষ্টভাবে (instructionব্যবহার করে)। -
tool_context.stateঅভিধানে ডেটা লেখার জন্য একটি টুল ব্যবহার করা হয়েছে। - সেশন অবস্থা থেকে পড়ার জন্য এবং এজেন্টের প্রম্পট নির্দেশ করার জন্য কী টেমপ্লেটিং (যেমন,
{ PLOT_OUTLINE? }) ব্যবহার করা হয়েছে। - একটি সহজ, ধাপে ধাপে কর্মপ্রবাহ (গবেষণা -> লিখুন -> সংরক্ষণ করুন) তৈরি করতে একটি
SequentialAgentবাস্তবায়ন করা হয়েছে। - একটি পুনরাবৃত্ত পরিশোধন চক্র তৈরি করতে একটি
criticএজেন্টের সাথে একটিLoopAgentএবংexit_loopটুল ব্যবহার করা হয়েছে। - স্বাধীন কাজগুলি (যেমন কাস্টিং এবং বক্স অফিস গবেষণা) একসাথে চালানোর জন্য "ফ্যান আউট" করার জন্য একটি
ParallelAgentব্যবহার করা হয়েছিল।
অব্যাহত পরীক্ষা-নিরীক্ষা
আপনি যা শিখেছেন তার উপর ভিত্তি করে গড়ে তোলার অনেক উপায় আছে। এখানে কিছু ধারণা দেওয়া হল:
- আরও এজেন্ট যোগ করুন: আপনার
preproduction_teamParallelAgentএ একটি নতুন এজেন্ট যোগ করার চেষ্টা করুন। উদাহরণস্বরূপ, আপনি একটিmarketing_agentতৈরি করতে পারেন যাPLOT_OUTLINEউপর ভিত্তি করে সিনেমার জন্য একটি ট্যাগলাইন লেখে। - আরও টুল যোগ করুন: আপনার
researcherএজেন্টকে আরও টুল দিন। আপনি এমন একটি টুল তৈরি করতে পারেন যা উইকিপিডিয়ায় নেই এমন তথ্য খুঁজে পেতে Google Search API ব্যবহার করে। -
CustomAgentঅন্বেষণ করুন : ল্যাবটি এমন ওয়ার্কফ্লোগুলির জন্যCustomAgentউল্লেখ করেছে যা স্ট্যান্ডার্ড টেমপ্লেটের সাথে খাপ খায় না। এমন একটি তৈরি করার চেষ্টা করুন যা, উদাহরণস্বরূপ, শর্তসাপেক্ষে একটি এজেন্ট চালায় যদি সেশন স্টেটে একটি নির্দিষ্ট কী বিদ্যমান থাকে।