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

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

এই কোডল্যাব সম্পর্কে

subjectজুন ১৬, ২০২৫-এ শেষবার আপডেট করা হয়েছে
account_circleAuthor: Abirami Sukumaran-এর লেখা

1. ওভারভিউ

একটি এজেন্ট হল একটি স্বায়ত্তশাসিত প্রোগ্রাম যা একটি AI মডেলের সাথে কথা বলে একটি লক্ষ্য-ভিত্তিক অপারেশন করার জন্য এটির সরঞ্জাম এবং প্রসঙ্গ ব্যবহার করে এবং এটি সত্যের ভিত্তিতে স্বায়ত্তশাসিত সিদ্ধান্ত নিতে সক্ষম!

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

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

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

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

মাল্টি-এজেন্ট সিস্টেমের জন্য যে বিষয়গুলি মাথায় রাখতে হবে৷

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

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

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

আপনি কি নির্মাণ করবেন

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

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

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

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

অর্ডার স্ট্যাটাস চেক এজেন্ট, অর্ডার ম্যানেজমেন্ট ডাটাবেসে কাজ করে সামগ্রীর অর্ডার স্ট্যাটাস চেক করতে যা আমরা AlloyDB-তে সেট আপ করেছি।

আমাদের কাছে একটি রুট এজেন্ট থাকবে যা প্রয়োজনের ভিত্তিতে এই এজেন্টদের সাজায়।

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

2. আপনি শুরু করার আগে

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

  1. Google ক্লাউড কনসোলে , প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন।
  2. নিশ্চিত করুন যে আপনার ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে৷ একটি প্রকল্পে বিলিং সক্ষম কিনা তা পরীক্ষা করতে শিখুন।

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

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

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

আপনি যদি প্রকল্পের জন্য " জেমিনি 2.5 প্রো " মডেলের সাথে যাওয়ার সিদ্ধান্ত নেন তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন৷

গুগল এআই স্টুডিওতে যান। আপনার প্রম্পটে টাইপ করা শুরু করুন। এখানে আমার প্রম্পট:

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.

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

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

আমরা Gemini 2.5 Pro বেছে নিয়েছি। এটি একটি থিঙ্কিং মডেল, যার অর্থ হল আমরা আরও বেশি আউটপুট টোকেন পাই, এই ক্ষেত্রে দীর্ঘ-ফর্ম বিশ্লেষণ এবং বিস্তারিত নথির জন্য 65K টোকেন পর্যন্ত। আপনি যখন Gemini 2.5 Pro সক্ষম করেন তখন জেমিনি চিন্তার বাক্স আসে যার স্থানীয় যুক্তির ক্ষমতা রয়েছে এবং দীর্ঘ প্রসঙ্গ অনুরোধ নিতে পারে।

নীচের প্রতিক্রিয়ার স্নিপেট দেখুন:

a80d4bad4b3864f7.png

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

আপনি ফলাফলের সাথে সন্তুষ্ট না হওয়া পর্যন্ত বিভিন্ন মডেল পছন্দের সাথে ধুয়ে ফেলুন এবং পুনরাবৃত্তি করুন। তবে আমি বলব কেন আপনার মিথুন 2.5 থাকলে এই সমস্ত কিছুর মধ্য দিয়ে যাবেন :)

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

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

আপনার বর্তমান রান্নাঘরের চিত্রের সাথে একটি লিঙ্ক সংযুক্ত করুন (বা যেকোন নমুনা রান্নাঘরের চিত্র )। মডেলটিকে "জেমিনি 2.0 ফ্ল্যাশ প্রিভিউ ইমেজ জেনারেশন" এ পরিবর্তন করুন যাতে আপনার কাছে ছবি তৈরি করার অ্যাক্সেস থাকে৷

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

b5b1e83fcada28f5.png

যে মিথুনের শক্তি!

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

AI স্টুডিও থেকে, আপনি এই প্রোটোটাইপটি নিতে পারেন, API কীটি ধরতে পারেন এবং Vertex AI ADK-এর শক্তি ব্যবহার করে এটিকে একটি সম্পূর্ণ এজেন্টিক অ্যাপ্লিকেশনে স্কেল করতে পারেন।

4. ADK সেটআপ

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

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

python -m venv .venv

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

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

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

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

6. সোর্স কোড

  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 সংজ্ঞায়িত করি যা এই অ্যাপ্লিকেশনটিতে তৈরি করার জন্য 3টি সাব-এজেন্টকে অর্কেস্ট্রেট করে। এই সাব-এজেন্টগুলির মূল এবং সমর্থনকারী ফাংশনগুলিতে সহায়তা করে এমন বেশ কয়েকটি সরঞ্জাম রয়েছে।

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

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

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

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

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

অনুমতিগুলিতে নেভিগেট করুন -> প্রিন্সিপাল দেখুন -> অ্যাক্সেস মঞ্জুর করুন৷ "সমস্ত ব্যবহারকারী" হিসাবে প্রধান এবং "স্টোরেজ অবজেক্ট ব্যবহারকারী" হিসাবে ভূমিকা নির্বাচন করুন।

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. নির্ভরতা তালিকা তৈরি করুন

Requiments.txt- এ সমস্ত নির্ভরতা তালিকাভুক্ত করুন। আপনি রেপো থেকে এটি অনুলিপি করতে পারেন।

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

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

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

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

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

পারমিট এবং কমপ্লায়েন্স চেকএজেন্ট

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

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

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

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

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

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

ডেটা ফ্লো এবং মূল ধারণা

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

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

এলএলএম (বড় ভাষার মডেল)

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

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

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

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

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

AlloyDB

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

.env ফাইল

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

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

অর্ডারিং_এজেন্ট দ্বারা ব্যবহৃত সরঞ্জামগুলির একটিতে, যাকে বলা হয় "চেক_স্ট্যাটাস", আমরা অর্ডারের স্থিতি পেতে AlloyDB অর্ডার ডেটাবেস অ্যাক্সেস করি। এই বিভাগে, আমরা AlloyDB ডাটাবেস ক্লাস্টার এবং উদাহরণ সেট আপ করব।

একটি ক্লাস্টার এবং উদাহরণ তৈরি করুন

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

f76ff480c8c889aa.png

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

538dba58908162fb.png

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

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

  1. সেখান থেকে, " একটি স্বয়ংক্রিয়ভাবে বরাদ্দকৃত IP পরিসর ব্যবহার করুন " নির্বাচন করুন এবং চালিয়ে যান। তথ্য পর্যালোচনা করার পরে, সংযোগ তৈরি করুন নির্বাচন করুন। 768ff5210e79676f.png
  2. আপনার নেটওয়ার্ক সেট আপ হয়ে গেলে, আপনি আপনার ক্লাস্টার তৈরি করা চালিয়ে যেতে পারেন। নীচে দেখানো হিসাবে ক্লাস্টার সেট আপ সম্পূর্ণ করতে CLUSTER তৈরি করুন ক্লিক করুন:

e06623e55195e16e.png

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

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

মনে রাখবেন ক্লাস্টার তৈরি হতে প্রায় 10 মিনিট সময় লাগবে। একবার এটি সফল হলে, আপনি একটি স্ক্রীন দেখতে পাবেন যা আপনার তৈরি করা ক্লাস্টারটির ওভারভিউ দেখায়।

ডেটা ইনজেশন

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

847e35f1bf8a8bd8.png

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

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

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

91a86d9469d499c4.png

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

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

আপনি AlloyDB স্টুডিওতে নীচের 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. ফাংশনের নাম " চেক-স্ট্যাটাস " সেট করুন এবং রানটাইম হিসাবে " জাভা 17 " বেছে নিন।
  3. আপনি প্রমাণীকরণ সেট করতে পারেন " অপ্রমাণিত আহ্বানের অনুমতি দিন " যেহেতু এটি একটি ডেমো অ্যাপ্লিকেশন।
  4. সোর্স কোডের জন্য রানটাইম এবং ইনলাইন এডিটর হিসেবে Java 17 বেছে নিন।
  5. এই সময়ে, স্থানধারক কোডটি সম্পাদকে লোড হবে।

স্থানধারক কোড প্রতিস্থাপন

  1. জাভা ফাইলের নাম " ProposalOrdersTool.java " এবং ক্লাসের নাম " ProposalOrdersTool " এ পরিবর্তন করুন।
  2. এই রেপোতে "ক্লাউড রান ফাংশন" ফোল্ডারে সংশ্লিষ্ট ফাইলের কোড দিয়ে 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 ক্লাউড রান ফাংশন কনসোলে ফাংশনগুলি দেখতে সক্ষম হবেন৷ নতুন তৈরি ফাংশন ( চেক-স্ট্যাটাস ) অনুসন্ধান করুন, এটিতে ক্লিক করুন, তারপরে সম্পাদনা করুন এবং নতুন পুনর্বিবেচনা করুন (ক্লাউড রান ফাংশন কনসোলের উপরে সম্পাদনা আইকন (পেন) দ্বারা চিহ্নিত) ক্লিক করুন এবং নিম্নলিখিতগুলি পরিবর্তন করুন:

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

828cd861864d99ea.png

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

6559ccfd10e597f2.png

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

199b0ccd80215004.png

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

8. মডেল সেটআপ

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

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

9. 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>>

আপনার মান দিয়ে স্থানধারক প্রতিস্থাপন করুন.

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

  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.

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

এখন আপনি মাল্টি-এজেন্ট সিস্টেমটি ভালভাবে কাজ করার জন্য পরীক্ষা করেছেন, আসুন এটিকে সার্ভারহীন করে ক্লাউডে উপলব্ধ করি যে কেউ / যেকোনো অ্যাপ্লিকেশন এটি ব্যবহার করতে পারে। তাদের রেপো থেকে 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 " কমান্ডটি চালান এবং আপনি একটি মাল্টি-এজেন্ট সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য এটি কার্যকর করতে প্রস্তুত যেটি এজেন্ট ইঞ্জিন স্থাপন করা হয়েছে এবং আপনার রান্নাঘর সংস্কার করার জন্য সম্পূর্ণ প্রস্তুত!!!

13. এক-লাইন স্থাপনার বিকল্প

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

  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

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

14. পরিষ্কার করুন

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

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

15. অভিনন্দন

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