ADK, এজেন্ট ইঞ্জিন এবং AlloyDB এর সাথে মাল্টি-এজেন্ট অ্যাপ, ADK এর সাথে মাল্টি-এজেন্ট অ্যাপ, এজেন্ট ইঞ্জিন এবং AlloyDB, ADK-এর সাথে মাল্টি-এজেন্ট অ্যাপ, এজেন্ট ইঞ্জিন এবং AlloyDB, ADK এর সাথে মাল্টি-এজেন্ট অ্যাপ, এজেন্ট ইঞ্জিন এবং AlloyDB

১. সংক্ষিপ্ত বিবরণ

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

যখন আপনার অ্যাপ্লিকেশনে একাধিক এজেন্ট এর বৃহত্তর উদ্দেশ্য পূরণের জন্য স্বায়ত্তশাসিতভাবে এবং প্রয়োজন অনুযায়ী একসাথে কাজ করে, এবং এর প্রতিটি এজেন্ট স্বাধীনভাবে জ্ঞানসম্পন্ন ও একটি নির্দিষ্ট কর্মক্ষেত্রের জন্য দায়িত্বশীল হয়, তখন আপনার অ্যাপ্লিকেশনটি একটি মাল্টি-এজেন্ট সিস্টেমে পরিণত হয়।

এজেন্ট ডেভেলপমেন্ট কিট (ADK)

এজেন্ট ডেভেলপমেন্ট কিট (ADK) হলো এআই এজেন্ট তৈরি ও স্থাপনের জন্য একটি নমনীয় এবং মডিউলার ফ্রেমওয়ার্ক। ADK একাধিক স্বতন্ত্র এজেন্ট ইনস্ট্যান্সকে একত্রিত করে একটি মাল্টি-এজেন্ট সিস্টেম (MAS) গঠনের মাধ্যমে অত্যাধুনিক অ্যাপ্লিকেশন তৈরিতে সহায়তা করে।

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

মাল্টি-এজেন্ট সিস্টেমের জন্য মনে রাখার মতো বিষয়সমূহ

প্রথমত , প্রতিটি এজেন্টের বিশেষীকরণের বিষয়ে সঠিক ধারণা ও যুক্তি থাকা জরুরি। — "আপনি কি জানেন কেন কোনো কিছুর জন্য একটি নির্দিষ্ট সাব-এজেন্ট প্রয়োজন", প্রথমে সেটি বের করুন।

দ্বিতীয়ত , প্রতিটি প্রতিক্রিয়াকে রাউট করতে এবং তার অর্থ বুঝতে সেগুলোকে কীভাবে একটি রুট এজেন্টের সাথে একত্রিত করা যায়।

তৃতীয়ত , এই ডকুমেন্টেশনে আপনি বিভিন্ন ধরণের এজেন্ট রাউটিং খুঁজে পাবেন। নিশ্চিত করুন কোনটি আপনার অ্যাপ্লিকেশনের ফ্লো-এর জন্য উপযুক্ত। এছাড়াও, আপনার মাল্টি-এজেন্ট সিস্টেমের ফ্লো কন্ট্রোলের জন্য কী কী বিভিন্ন কনটেক্সট এবং স্টেট প্রয়োজন, তা জেনে নিন।

আপনি যা তৈরি করবেন

চলুন রান্নাঘর সংস্কারের কাজ সামলানোর জন্য একটি মাল্টি-এজেন্ট সিস্টেম তৈরি করি। আমরা সেটাই করব। আমরা ৩ জন এজেন্ট নিয়ে একটি সিস্টেম তৈরি করব।

  1. সংস্কার প্রস্তাব এজেন্ট
  2. অনুমতিপত্র এবং সম্মতি যাচাই এজেন্ট
  3. অর্ডার স্ট্যাটাস চেক এজেন্ট

রান্নাঘর সংস্কারের প্রস্তাবনা নথি তৈরি করার জন্য সংস্কার প্রস্তাবনা এজেন্ট।

পারমিট ও কমপ্লায়েন্স এজেন্ট, পারমিট এবং কমপ্লায়েন্স সম্পর্কিত কাজগুলোর তত্ত্বাবধান করবেন।

অর্ডার স্ট্যাটাস চেক এজেন্ট, যা AlloyDB-তে আমাদের তৈরি করা অর্ডার ম্যানেজমেন্ট ডেটাবেসে কাজ করে উপকরণের অর্ডার স্ট্যাটাস পরীক্ষা করে।

আমাদের একটি রুট এজেন্ট থাকবে যা প্রয়োজন অনুযায়ী এই এজেন্টগুলোকে সমন্বয় করবে।

প্রয়োজনীয়তা

২. শুরু করার আগে

একটি প্রকল্প তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।

এছাড়াও, আপনি যদি এটি পড়ছেন এবং গুগল ক্লাউড ও এডিকে (ADK) ব্যবহার শুরু করার জন্য কিছু ক্রেডিট পেতে চান, তাহলে ক্রেডিট রিডিম করতে এই লিঙ্কটি ব্যবহার করুন। এটি রিডিম করার জন্য আপনি এখানকার নির্দেশাবলী অনুসরণ করতে পারেন। অনুগ্রহ করে মনে রাখবেন যে, এই লিঙ্কটি রিডিম করার জন্য শুধুমাত্র মে মাসের শেষ পর্যন্ত বৈধ থাকবে।

  1. এই লিঙ্কে ক্লিক করে ক্লাউড শেল সক্রিয় করুন। ক্লাউড শেল থেকে সংশ্লিষ্ট বোতামে ক্লিক করে আপনি ক্লাউড শেল টার্মিনাল (ক্লাউড কমান্ড চালানোর জন্য) এবং এডিটর (প্রজেক্ট তৈরির জন্য) এর মধ্যে পরিবর্তন করতে পারবেন।
  2. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. আপনার পাইথন ৩.৯ বা তার পরবর্তী সংস্করণ থাকা নিশ্চিত করুন।
  2. নিম্নলিখিত কমান্ডগুলি চালিয়ে নিম্নলিখিত API গুলি সক্রিয় করুন:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. gcloud কমান্ড এবং এর ব্যবহার সম্পর্কে জানতে ডকুমেন্টেশন দেখুন।

৩. প্রোটোটাইপ

প্রকল্পটির জন্য যদি আপনি ' Gemini 2.5 Pro ' মডেলটি বেছে নেন, তাহলে এই ধাপটি বাদ দিতে পারেন।

Google AI Studio- তে যান। আপনার প্রম্পটটি টাইপ করা শুরু করুন। এই হলো আমার প্রম্পট:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

সর্বোত্তম প্রতিক্রিয়া পেতে ডানদিকের প্যারামিটারগুলো সমন্বয় ও কনফিগার করুন।

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

আমরা জেমিনি ২.৫ প্রো বেছে নিয়েছি। এটি একটি থিঙ্কিং মডেল, যার মানে হলো আমরা দীর্ঘ বিশ্লেষণ এবং বিস্তারিত ডকুমেন্টেশনের জন্য আরও বেশি আউটপুট টোকেন পাই, এক্ষেত্রে যা ৬৫ হাজার পর্যন্ত টোকেন। আপনি যখন জেমিনি ২.৫ প্রো সক্রিয় করেন, তখন জেমিনি থিঙ্কিং বক্সটি আসে, যেটির নিজস্ব রিজনিং ক্ষমতা রয়েছে এবং এটি দীর্ঘ প্রেক্ষাপটের অনুরোধ গ্রহণ করতে পারে।

নিচে উত্তরের অংশবিশেষ দেখুন:

a80d4bad4b3864f7.png

এআই স্টুডিও আমার ডেটা বিশ্লেষণ করে ক্যাবিনেট, কাউন্টারটপ, ব্যাকস্প্ল্যাশ, ফ্লোরিং, সিঙ্ক, সামঞ্জস্য, কালার প্যালেট এবং উপকরণ নির্বাচনের মতো এই সমস্ত জিনিস তৈরি করেছে। জেমিনি এমনকি উৎসও উল্লেখ করছে!

ফলাফল সন্তোষজনক না হওয়া পর্যন্ত বিভিন্ন মডেল দিয়ে এই প্রক্রিয়াটি বারবার পুনরাবৃত্তি করুন। কিন্তু আমি বলব, যখন আপনার কাছে জেমিনি ২.৫ আছে, তখন এত ঝামেলার মধ্যে দিয়ে যাওয়ার কী দরকার :)

যাইহোক, এবার ভিন্ন একটি নির্দেশনার মাধ্যমে ধারণাটিকে বাস্তবে রূপ দেওয়ার চেষ্টা করুন:

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

আপনার বর্তমান রান্নাঘরের ছবির (অথবা যেকোনো নমুনা রান্নাঘরের ছবির ) একটি লিঙ্ক সংযুক্ত করুন। মডেলটি পরিবর্তন করে "Gemini 2.0 Flash Preview Image Generation" করুন, যাতে আপনি ছবি তৈরি করার সুযোগ পান।

আমি এই আউটপুটটি পেয়েছি:

b5b1e83fcada28f5.png

এটাই মিথুন রাশির শক্তি!

ভিডিও বোঝা থেকে শুরু করে নেটিভ ইমেজ তৈরি, এবং গুগল সার্চের মাধ্যমে বাস্তব তথ্য যাচাই করা পর্যন্ত – এমন অনেক কিছুই আছে যা শুধুমাত্র জেমিনি দিয়েই তৈরি করা সম্ভব।

এআই স্টুডিও থেকে, আপনি এই প্রোটোটাইপটি নিয়ে এপিআই কী সংগ্রহ করতে পারেন এবং ভার্টেক্স এআই এডিকে-এর শক্তি ব্যবহার করে এটিকে একটি পূর্ণাঙ্গ এজেন্টিক অ্যাপ্লিকেশনে রূপান্তর করতে পারেন।

৪. ADK সেটআপ

  1. ভার্চুয়াল পরিবেশ তৈরি ও সক্রিয় করুন (প্রস্তাবিত)

আপনার ক্লাউড শেল টার্মিনাল থেকে একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন:

python -m venv .venv

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source .venv/bin/activate
  1. ADK ইনস্টল করুন
pip install google-adk

৫. প্রকল্পের কাঠামো

  1. ক্লাউড শেল টার্মিনাল থেকে, আপনার পছন্দসই প্রজেক্ট লোকেশনে একটি ডিরেক্টরি তৈরি করুন।
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
  1. ক্লাউড শেল এডিটর- এ যান এবং নিম্নলিখিত ফাইলগুলি তৈরি করে প্রজেক্ট কাঠামোটি তৈরি করুন (শুরুতে ফাইলগুলি খালি রাখতে হবে):
renovation-agent/
        __init__.py
        agent.py
        .env
        requirements.txt

৬. সোর্স কোড

  1. ' init.py ' ফাইলে গিয়ে নিচের বিষয়বস্তু দিয়ে আপডেট করুন:
from . import agent
  1. agent.py ফাইলে যান এবং নিম্নলিখিত পাথ থেকে নিচের কন্টেন্ট দিয়ে ফাইলটি আপডেট করুন:
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

agent.py ফাইলে আমরা প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ইম্পোর্ট করি, .env ফাইল থেকে কনফিগারেশন প্যারামিটারগুলো সংগ্রহ করি এবং root_agent-কে সংজ্ঞায়িত করি, যা এই অ্যাপ্লিকেশনে আমাদের তৈরি করতে চাওয়া ৩টি সাব-এজেন্টকে পরিচালনা করে। এই সাব-এজেন্টগুলোর মূল এবং সহায়ক ফাংশনগুলোতে সাহায্য করার জন্য বেশ কিছু টুল রয়েছে।

  1. আপনার ক্লাউড স্টোরেজ বাকেট আছে কিনা তা নিশ্চিত করুন।

এটি এজেন্টের তৈরি করা প্রস্তাবনা নথিটি সংরক্ষণ করার জন্য। এটি তৈরি করুন এবং অ্যাক্সেস দিন যাতে ভার্টেক্স এআই (Vertex AI) দিয়ে তৈরি মাল্টি-এজেন্ট সিস্টেমটি এটি অ্যাক্সেস করতে পারে। আপনি যেভাবে এটি করতে পারেন তা নিচে দেওয়া হলো:

https://cloud.google.com/storage/docs/creating-buckets#console

আপনার বাকেটটির নাম দিন " next-demo-store "। যদি আপনি এর অন্য কোনো নাম দেন, তাহলে .env ফাইলের STORAGE_BUCKET-এর মানটি আপডেট করতে মনে রাখবেন (ENV Variables Setup ধাপে)।

  1. বাকেটে অ্যাক্সেস সেট আপ করতে, ক্লাউড স্টোরেজ কনসোলে এবং আপনার স্টোরেজ বাকেটে যান (আমাদের ক্ষেত্রে বাকেটের নাম 'next-demo-storage'): https://console.cloud.google.com/storage/browser/next-demo-storage

Permissions -> View Principals -> Grant Access-এ যান। Principals হিসেবে 'allUsers' এবং Role হিসেবে 'Storage Object User' নির্বাচন করুন।

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. নির্ভরতার তালিকা তৈরি করুন

requirements.txt ফাইলে সমস্ত ডিপেন্ডেন্সি তালিকাভুক্ত করুন। আপনি এটি রিপো থেকে কপি করতে পারেন।

মাল্টি-এজেন্ট সিস্টেমের সোর্স কোডের ব্যাখ্যা

agent.py ফাইলটি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে আমাদের রান্নাঘর সংস্কার মাল্টি-এজেন্ট সিস্টেমের গঠন ও আচরণ নির্ধারণ করে। চলুন এর মূল উপাদানগুলো বিশদভাবে আলোচনা করা যাক:

এজেন্ট সংজ্ঞা

সংস্কার প্রস্তাব এজেন্ট

এই এজেন্টটি রান্নাঘর সংস্কারের প্রস্তাবনা নথি তৈরির দায়িত্বে থাকে। এটি ঐচ্ছিকভাবে রান্নাঘরের আকার, পছন্দের শৈলী, বাজেট এবং গ্রাহকের পছন্দের মতো ইনপুট প্যারামিটার গ্রহণ করে। এই তথ্যের উপর ভিত্তি করে, এটি একটি লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) জেমিনি ২.৫ ব্যবহার করে একটি বিস্তারিত প্রস্তাবনা তৈরি করে। এরপর তৈরি হওয়া প্রস্তাবনাটি একটি গুগল ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করা হয়।

পারমিট এবং সম্মতি যাচাই এজেন্ট

এই এজেন্টটি সংস্কার প্রকল্পটি যেন স্থানীয় নির্মাণ বিধি ও প্রবিধান মেনে চলে, তা নিশ্চিত করার উপর মনোযোগ দেয়। এটি প্রস্তাবিত সংস্কার (যেমন, কাঠামোগত পরিবর্তন, বৈদ্যুতিক কাজ, প্লাম্বিং পরিবর্তন) সম্পর্কে তথ্য গ্রহণ করে এবং অনুমতির প্রয়োজনীয়তা ও সম্মতির নিয়মাবলী পরীক্ষা করার জন্য এলএলএম (LLM) ব্যবহার করে। এজেন্টটি একটি নলেজ বেস থেকে তথ্য ব্যবহার করে (যা আপনি প্রাসঙ্গিক প্রবিধান সংগ্রহ করার জন্য এক্সটার্নাল এপিআই (API) অ্যাক্সেস করতে কাস্টমাইজ করতে পারেন)।

অর্ডারিং এজেন্ট

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

রুট এজেন্ট (অর্কেস্ট্রেটর)

root_agent মাল্টি-এজেন্ট সিস্টেমের কেন্দ্রীয় নিয়ন্ত্রক হিসেবে কাজ করে। এটি প্রাথমিক সংস্কারের অনুরোধ গ্রহণ করে এবং অনুরোধের প্রয়োজন অনুসারে কোন সাব-এজেন্টগুলোকে আহ্বান করতে হবে তা নির্ধারণ করে। উদাহরণস্বরূপ, যদি অনুরোধে পারমিটের প্রয়োজনীয়তা যাচাই করার প্রয়োজন হয়, তবে এটি PermitsAndComplianceCheckAgent-কে কল করবে। যদি ব্যবহারকারী অর্ডারের অবস্থা যাচাই করতে চান, তবে এটি OrderingAgent-কে (যদি সক্রিয় থাকে) কল করবে।

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

ডেটা প্রবাহ এবং মূল ধারণা

ব্যবহারকারী ADK ইন্টারফেসের (টার্মিনাল অথবা ওয়েব UI) মাধ্যমে একটি অনুরোধ শুরু করেন।

  1. অনুরোধটি root_agent দ্বারা গৃহীত হয়।
  2. রুট এজেন্ট অনুরোধটি বিশ্লেষণ করে এবং সেটিকে উপযুক্ত সাব-এজেন্টদের কাছে পাঠিয়ে দেয়।
  3. উপ-এজেন্টরা অনুরোধটি প্রক্রিয়াকরণ করতে এবং প্রতিক্রিয়া তৈরি করতে এলএলএম, নলেজ বেস, এপিআই এবং ডেটাবেস ব্যবহার করে।
  4. উপ-এজেন্টরা মূল এজেন্টের কাছে তাদের প্রতিক্রিয়া ফেরত পাঠায়।
  5. root_agent প্রতিক্রিয়াগুলো একত্রিত করে ব্যবহারকারীকে একটি চূড়ান্ত আউটপুট প্রদান করে।

এলএলএম (বৃহৎ ভাষা মডেল)

এজেন্টরা টেক্সট তৈরি করতে, প্রশ্নের উত্তর দিতে এবং যুক্তিমূলক কাজ সম্পাদন করতে এলএলএম-এর উপর ব্যাপকভাবে নির্ভর করে। ব্যবহারকারীর অনুরোধ বোঝা এবং তাতে সাড়া দেওয়ার ক্ষেত্রে এজেন্টদের ক্ষমতার পেছনের 'মস্তিষ্ক' হলো এই এলএলএম-গুলো। আমরা এই অ্যাপ্লিকেশনটিতে জেমিনি ২.৫ ব্যবহার করছি।

গুগল ক্লাউড স্টোরেজ

তৈরি করা সংস্কার প্রস্তাবনা নথিগুলো সংরক্ষণ করতে ব্যবহৃত হয়। আপনাকে একটি বাকেট তৈরি করতে হবে এবং এজেন্টদের এটি অ্যাক্সেস করার জন্য প্রয়োজনীয় অনুমতি প্রদান করতে হবে।

ক্লাউড রান (ঐচ্ছিক)

অর্ডারিংএজেন্ট অ্যালয়ডিবি-র সাথে ইন্টারফেস করার জন্য একটি ক্লাউড রান ফাংশন ব্যবহার করে। ক্লাউড রান এইচটিটিপি অনুরোধের জবাবে কোড কার্যকর করার জন্য একটি সার্ভারবিহীন পরিবেশ প্রদান করে।

অ্যালয়ডিবি

আপনি যদি OrderingAgent ব্যবহার করেন, তাহলে অর্ডারের তথ্য সংরক্ষণের জন্য আপনাকে একটি AlloyDB ডেটাবেস সেট আপ করতে হবে। আমরা পরবর্তী বিভাগ "ডেটাবেস সেটআপ"-এ এর বিস্তারিত আলোচনা করব।

.env ফাইল

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

৭. ডাটাবেস সেটআপ

অর্ডারিং_এজেন্ট দ্বারা ব্যবহৃত "চেক_স্ট্যাটাস" নামক একটি টুলের মাধ্যমে, আমরা অর্ডারগুলোর স্ট্যাটাস জানার জন্য AlloyDB অর্ডারস ডেটাবেস অ্যাক্সেস করি। এই অংশে, আমরা AlloyDB ডেটাবেস ক্লাস্টার এবং ইনস্ট্যান্স সেট আপ করব।

একটি ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করুন

  1. ক্লাউড কনসোলে AlloyDB পেজটিতে যান। ক্লাউড কনসোলের বেশিরভাগ পেজ খুঁজে পাওয়ার একটি সহজ উপায় হলো কনসোলের সার্চ বার ব্যবহার করে সেগুলোর জন্য অনুসন্ধান করা।
  2. সেই পৃষ্ঠা থেকে CREATE CLUSTER নির্বাচন করুন:

f76ff480c8c889aa.png

  1. আপনি নীচেরটির মতো একটি স্ক্রিন দেখতে পাবেন। নিম্নলিখিত মানগুলি দিয়ে একটি ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করুন (আপনি যদি রিপো থেকে অ্যাপ্লিকেশন কোড ক্লোন করেন তবে নিশ্চিত করুন যে মানগুলি মিলে যায়):
  • ক্লাস্টার আইডি : " vector-cluster "
  • পাসওয়ার্ড : " alloydb "
  • PostgreSQL 15 / সর্বশেষ সংস্করণ সুপারিশ করা হচ্ছে
  • অঞ্চল : " us-central1 "
  • নেটওয়ার্কিং : " default "

538dba58908162fb.png

  1. আপনি যখন ডিফল্ট নেটওয়ার্ক নির্বাচন করবেন, তখন নিচের স্ক্রিনের মতো একটি স্ক্রিন দেখতে পাবেন।

সংযোগ স্থাপন নির্বাচন করুন।
7939bbb6802a91bf.png

  1. সেখান থেকে, " Use an automatically allocated IP range " নির্বাচন করুন এবং Continue নির্বাচন করুন। তথ্য পর্যালোচনা করার পর, CREATE CONNECTION নির্বাচন করুন। 768ff5210e79676f.png
  2. আপনার নেটওয়ার্ক সেট আপ হয়ে গেলে, আপনি আপনার ক্লাস্টার তৈরি করা চালিয়ে যেতে পারেন। নিচে দেখানো অনুযায়ী ক্লাস্টার সেট আপ সম্পন্ন করতে CREATE CLUSTER-এ ক্লিক করুন:

e06623e55195e16e.png

ইনস্ট্যান্স আইডিটি (যা আপনি ক্লাস্টার / ইনস্ট্যান্স কনফিগার করার সময় খুঁজে পাবেন) পরিবর্তন করে নিন

vector-instance । যদি আপনি এটি পরিবর্তন করতে না পারেন, তাহলে পরবর্তী সমস্ত রেফারেন্সে আপনার ইনস্ট্যান্স আইডি ব্যবহার করতে মনে রাখবেন।

মনে রাখবেন, ক্লাস্টার তৈরি হতে প্রায় ১০ মিনিট সময় লাগবে। এটি সফল হলে, আপনি আপনার তৈরি করা ক্লাস্টারের একটি সার্বিক চিত্র দেখতে পাবেন।

ডেটা ইনজেশন

এখন স্টোর সম্পর্কিত ডেটা সহ একটি টেবিল যোগ করার সময় এসেছে। AlloyDB-তে যান, প্রাইমারি ক্লাস্টার নির্বাচন করুন এবং তারপর AlloyDB Studio-তে যান:

847e35f1bf8a8bd8.png

আপনার ইনস্ট্যান্সটি তৈরি হওয়া শেষ না হওয়া পর্যন্ত আপনাকে অপেক্ষা করতে হতে পারে। এটি তৈরি হয়ে গেলে, ক্লাস্টার তৈরির সময় আপনি যে ক্রেডেনশিয়ালগুলো তৈরি করেছিলেন, সেগুলো ব্যবহার করে AlloyDB-তে সাইন ইন করুন। PostgreSQL-এ প্রমাণীকরণের জন্য নিম্নলিখিত ডেটা ব্যবহার করুন:

  • ব্যবহারকারীর নাম : " postgres "
  • ডাটাবেস : " postgres "
  • পাসওয়ার্ড : " alloydb "

AlloyDB Studio-তে সফলভাবে প্রমাণীকরণের পর, এডিটর-এ SQL কমান্ডগুলো প্রবেশ করানো হয়। শেষ উইন্ডোটির ডানদিকে থাকা প্লাস চিহ্নটি ব্যবহার করে আপনি একাধিক এডিটর উইন্ডো যোগ করতে পারেন।

91a86d9469d499c4.png

আপনি এডিটর উইন্ডোতে AlloyDB-এর জন্য কমান্ড লিখবেন এবং প্রয়োজন অনুযায়ী Run, Format ও Clear অপশনগুলো ব্যবহার করবেন।

একটি টেবিল তৈরি করুন

আপনি AlloyDB Studio-তে নিচের DDL স্টেটমেন্টটি ব্যবহার করে একটি টেবিল তৈরি করতে পারেন:

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

রেকর্ড সন্নিবেশ করুন

উপরে উল্লিখিত database_script.sql স্ক্রিপ্ট থেকে insert কোয়েরি স্টেটমেন্টটি এডিটরে কপি করুন।

রান-এ ক্লিক করুন।

এখন যেহেতু ডেটাসেটটি প্রস্তুত, চলুন স্ট্যাটাস বের করার জন্য একটি জাভা ক্লাউড রান ফাংশনস অ্যাপ্লিকেশন তৈরি করি।

অর্ডারের স্থিতির তথ্য বের করার জন্য জাভাতে একটি ক্লাউড রান ফাংশন তৈরি করুন।

  1. এখান থেকে ক্লাউড রান ফাংশন তৈরি করুন: https://console.cloud.google.com/run/create?deploymentType=function
  2. ফাংশনের নাম " check-status " এ সেট করুন এবং রানটাইম হিসেবে " Java 17 " নির্বাচন করুন।
  3. যেহেতু এটি একটি ডেমো অ্যাপ্লিকেশন, আপনি অথেনটিকেশন " অনুমোদনবিহীন ইনভোকেশনের অনুমতি দিন " এ সেট করতে পারেন।
  4. রানটাইম হিসেবে জাভা ১৭ এবং সোর্স কোডের জন্য ইনলাইন এডিটর নির্বাচন করুন।
  5. এই পর্যায়ে, প্লেসহোল্ডার কোডটি এডিটরে লোড হবে।

প্লেসহোল্ডার কোডটি প্রতিস্থাপন করুন

  1. জাভা ফাইলের নাম পরিবর্তন করে ' ProposalOrdersTool.java ' এবং ক্লাসের নাম পরিবর্তন করে ' ProposalOrdersTool ' করুন।
  2. এই রিপোজিটরির "Cloud Run Function" ফোল্ডারে থাকা সংশ্লিষ্ট ফাইলগুলোর কোড দিয়ে ProposalOrdersTool.java ও pom.xml ফাইলের প্লেসহোল্ডার কোডগুলো প্রতিস্থাপন করুন।
  3. ProposalOrdersTool.java ফাইলে নিম্নলিখিত কোড লাইনটি খুঁজুন এবং প্লেসহোল্ডার মানগুলি আপনার কনফিগারেশনের মান দিয়ে প্রতিস্থাপন করুন:
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. তৈরি করুন-এ ক্লিক করুন।
  2. ক্লাউড রান ফাংশনটি তৈরি ও স্থাপন করা হবে।

গুরুত্বপূর্ণ পদক্ষেপ:

একবার ডেপ্লয় করা হয়ে গেলে, ক্লাউড ফাংশনকে আমাদের AlloyDB ডাটাবেস ইনস্ট্যান্স অ্যাক্সেস করার অনুমতি দেওয়ার জন্য, আমরা VPC কানেক্টরটি তৈরি করব।

একবার ডেপ্লয়মেন্টের জন্য প্রস্তুত হয়ে গেলে, আপনি Google Cloud Run Functions কনসোলে ফাংশনগুলো দেখতে পাবেন। নতুন তৈরি করা ফাংশনটি খুঁজুন ( স্ট্যাটাস চেক করুন ), সেটির উপর ক্লিক করুন, তারপর EDIT AND DEPLOY NEW REVISIONS-এ ক্লিক করুন (যা Cloud Run Functions কনসোলের উপরে থাকা EDIT আইকন (কলম) দ্বারা চিহ্নিত) এবং নিম্নলিখিতগুলি পরিবর্তন করুন:

  1. নেটওয়ার্কিং ট্যাবে যান:

828cd861864d99ea.png

  1. " আউটবাউন্ড ট্র্যাফিকের জন্য একটি VPC-তে সংযোগ করুন " নির্বাচন করুন এবং তারপরে " সার্ভারলেস VPC অ্যাক্সেস সংযোগকারী ব্যবহার করুন " নির্বাচন করুন।
  2. নেটওয়ার্ক ড্রপডাউনের সেটিংসে, নেটওয়ার্ক ড্রপডাউনে ক্লিক করুন এবং " নতুন ভিপিসি কানেক্টর যোগ করুন " বিকল্পটি নির্বাচন করুন (যদি আপনি আগে থেকে ডিফল্টটি কনফিগার না করে থাকেন) এবং পপ-আপ হওয়া ডায়ালগ বক্সে প্রদর্শিত নির্দেশাবলী অনুসরণ করুন:

6559ccfd10e597f2.png

  1. VPC কানেক্টরের জন্য একটি নাম দিন এবং নিশ্চিত করুন যে এর অঞ্চলটি আপনার ইনস্ট্যান্সের মতোই। নেটওয়ার্ক ভ্যালুটি ডিফল্ট রাখুন এবং সাবনেট হিসেবে কাস্টম আইপি রেঞ্জ সেট করুন, যেখানে আইপি রেঞ্জ হবে 10.8.0.0 অথবা এর মতো সহজলভ্য কোনো আইপি।
  2. ‘শো স্কেলিং সেটিংস’ প্রসারিত করুন এবং নিশ্চিত করুন যে আপনার কনফিগারেশনটি হুবহু নিম্নলিখিতভাবে সেট করা আছে:

199b0ccd80215004.png

  1. CREATE-এ ক্লিক করুন এবং এই কানেক্টরটি এখন বহির্গমন সেটিংসে তালিকাভুক্ত হওয়া উচিত।
  2. নতুন তৈরি করা কানেক্টরটি নির্বাচন করুন।
  3. সমস্ত ট্র্যাফিক এই VPC কানেক্টরের মাধ্যমে রাউট করার বিকল্পটি বেছে নিন।
  4. NEXT-এ ক্লিক করুন এবং তারপর DEPLOY-তে ক্লিক করুন।
  5. আপডেট করা ক্লাউড ফাংশনটি ডেপ্লয় করা হয়ে গেলে, আপনি তৈরি হওয়া এন্ডপয়েন্টটি দেখতে পাবেন।
  6. আপনি ক্লাউড রান ফাংশনস কনসোলের উপরের TEST বোতামে ক্লিক করে এবং প্রাপ্ত কমান্ডটি ক্লাউড শেল টার্মিনালে চালিয়ে এটি পরীক্ষা করতে পারবেন।
  7. ডেপ্লয় করা এন্ডপয়েন্টটি হলো সেই URL, যা আপনাকে .env ভেরিয়েবল CHECK_ORDER_STATUS_ENDPOINT এ আপডেট করতে হবে।

৮. মডেল সেটআপ

ব্যবহারকারীর অনুরোধ বোঝা এবং প্রতিক্রিয়া তৈরি করার জন্য আপনার এজেন্টের ক্ষমতা একটি লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) দ্বারা চালিত হয়। আপনার এজেন্টকে এই বাহ্যিক LLM পরিষেবাতে সুরক্ষিত কল করতে হয়, যার জন্য প্রমাণীকরণ ক্রেডেনশিয়াল প্রয়োজন। বৈধ প্রমাণীকরণ ছাড়া, LLM পরিষেবাটি এজেন্টের অনুরোধ প্রত্যাখ্যান করবে এবং এজেন্ট কাজ করতে পারবে না।

  1. গুগল এআই স্টুডিও থেকে একটি এপিআই কী সংগ্রহ করুন।
  2. পরবর্তী ধাপে .env ফাইলটি সেট আপ করার সময়, <<your API KEY>> এর জায়গায় আপনার আসল API KEY-এর মানটি বসান।

৯. ENV ভেরিয়েবল সেটআপ

  1. এই রিপোজিটরিতে থাকা টেমপ্লেট .env ফাইলে প্যারামিটারগুলোর জন্য আপনার মানগুলো সেট করুন। আমার ক্ষেত্রে, .env ফাইলটিতে এই ভেরিয়েবলগুলো রয়েছে:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

প্লেসহোল্ডারগুলো আপনার মান দিয়ে প্রতিস্থাপন করুন।

১০. আপনার এজেন্ট চালান

  1. টার্মিনাল ব্যবহার করে আপনার এজেন্ট প্রজেক্টের প্যারেন্ট ডিরেক্টরিতে যান:
cd renovation-agent
  1. সমস্ত নির্ভরতা ইনস্টল করুন
pip install -r requirements.txt
  1. এজেন্টটি চালু করার জন্য আপনি আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালাতে পারেন:
adk run .
  1. ADK দ্বারা সরবরাহকৃত ওয়েব UI-তে এটি চালানোর জন্য আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:
adk web
  1. নিম্নলিখিত নির্দেশাবলী দিয়ে পরীক্ষা করুন:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

১১. ফলাফল

রান্নাঘর সংস্কারের কাজের জন্য মাল্টি-এজেন্ট সিস্টেম

623fa35fce53b51b.png

১২. এজেন্ট ইঞ্জিনে স্থাপন

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

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

প্রজেক্ট ফোল্ডারের ভেতর থেকে নিম্নলিখিত কমান্ডটি ব্যবহার করে agent.py ফাইলটি আবার চালান:

>> cd adk-renovation-agent

>> python agent.py

এই কোডটি সম্পূর্ণ হতে কয়েক মিনিট সময় লাগবে। এটি সম্পন্ন হলে, আপনি এইরকম দেখতে একটি এন্ডপয়েন্ট পাবেন:

'projects/123456789/locations/us-central1/reasoningEngines/123456'

' test.py ' নামে একটি নতুন ফাইল যোগ করে আপনি নিম্নলিখিত কোড ব্যবহার করে আপনার ডেপ্লয় করা এজেন্টটি পরীক্ষা করতে পারেন।

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv() 


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25" 
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
    user_id="test_user",
    message="I want you to check order status.",
):
    print(event)

উপরের কোডে, প্লেসহোল্ডার " <<YOUR_DEPLOYED_ENGINE_ID>> " এর মানটি প্রতিস্থাপন করুন এবং " python test.py " কমান্ডটি চালান। তাহলেই আপনি একটি মাল্টি-এজেন্ট সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য এটি এক্সিকিউট করতে পারবেন, যেটিতে এজেন্ট ইঞ্জিন ডেপ্লয় করা আছে এবং আপনার রান্নাঘর সংস্কার করার জন্য আপনি সম্পূর্ণ প্রস্তুত!!!

১৩. এক-লাইনে স্থাপনের বিকল্পসমূহ

এখন যেহেতু আপনি ডেপ্লয় করা মাল্টি-এজেন্ট সিস্টেমটি পরীক্ষা করেছেন, চলুন আরও সহজ কিছু পদ্ধতি শিখে নিই যা আগের ধাপে করা ডেপ্লয়মেন্ট প্রক্রিয়াটিকে সহজ করে তোলে: এক লাইনের ডেপ্লয়মেন্ট অপশন:

  1. ক্লাউড রান-এ:

সিনট্যাক্স:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

এক্ষেত্রে:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

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

  1. এজেন্ট ইঞ্জিনে:

সিনট্যাক্স:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

এক্ষেত্রে:

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

আপনি গুগল ক্লাউড কনসোলের মধ্যে এজেন্ট ইঞ্জিন UI- তে একটি নতুন এজেন্ট দেখতে পাবেন। আরও বিস্তারিত জানতে এই ব্লগটি দেখুন।

১৪. পরিষ্কার করা

এই পোস্টে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলো অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
  2. প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট বোতামে ক্লিক করুন।
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।

১৫. অভিনন্দন

অভিনন্দন! আপনি ADK ব্যবহার করে সফলভাবে আপনার প্রথম এজেন্ট তৈরি করেছেন এবং এর সাথে যোগাযোগ স্থাপন করেছেন!