AlloyDB এর জন্য MCP টুলবক্স সহ একটি মাল্টি-এজেন্ট অ্যাপ তৈরি করুন & এডিকে

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

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

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

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

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

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

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

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

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

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

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

চলুন AlloyDB ও ADK-এর জন্য MCP টুলবক্স ব্যবহার করে রান্নাঘরের সংস্কার কাজ পরিচালনার জন্য একটি মাল্টি-এজেন্ট সিস্টেম তৈরি করি।

  1. সংস্কার প্রস্তাব এজেন্ট
  2. অনুমতিপত্র এবং সম্মতি যাচাই এজেন্ট
  3. অর্ডারের অবস্থা যাচাই (MCP টুলবক্স ফর ডেটাবেস ব্যবহার করে টুল)

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

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

অর্ডার স্ট্যাটাস চেক এজেন্ট, যা AlloyDB-তে সেট আপ করা অর্ডার ম্যানেজমেন্ট ডেটাবেসের উপর কাজ করে মেটেরিয়ালের অর্ডার স্ট্যাটাস চেক করে। কিন্তু এই ডেটাবেস অংশের জন্য, আমরা অর্ডারের স্ট্যাটাস পুনরুদ্ধারের লজিক বাস্তবায়ন করতে AlloyDB-এর জন্য MCP টুলবক্স ব্যবহার করব।

২. এমসিপি

এমসিপি (MCP)-এর পূর্ণরূপ হলো মডেল কনটেক্সট প্রোটোকল (Model Context Protocol), যা অ্যানথ্রোপিক (Anthropic) দ্বারা বিকশিত একটি উন্মুক্ত মানক। এটি এআই এজেন্টদের বাহ্যিক সরঞ্জাম, পরিষেবা এবং ডেটার সাথে সংযোগ স্থাপনের জন্য একটি সামঞ্জস্যপূর্ণ উপায় প্রদান করে। এটি মূলত এআই অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ মানক হিসাবে কাজ করে, যা তাদের বিভিন্ন ডেটা উৎস এবং সরঞ্জামের সাথে নির্বিঘ্নে যোগাযোগ করতে সক্ষম করে।

  1. এটি একটি ক্লায়েন্ট-সার্ভার মডেল ব্যবহার করে, যেখানে এআই অ্যাপ্লিকেশনগুলো (হোস্ট) এমসিপি ক্লায়েন্ট চালায়, যা এমসিপি সার্ভারগুলোর সাথে যোগাযোগ করে।
  2. যখন কোনো এআই এজেন্টের কোনো নির্দিষ্ট টুল বা ডেটা অ্যাক্সেস করার প্রয়োজন হয়, তখন এটি এমসিপি ক্লায়েন্টের কাছে একটি কাঠামোগত অনুরোধ পাঠায়, যা সেটিকে উপযুক্ত এমসিপি সার্ভারে ফরোয়ার্ড করে দেয়।
  3. প্রতিটি ইন্টিগ্রেশনের জন্য কাস্টম কোডের প্রয়োজন ছাড়াই এআই মডেলগুলোকে বাহ্যিক ডেটা এবং টুল অ্যাক্সেস করার সুযোগ দেয়।
  4. বৃহৎ ভাষা মডেল (এলএলএম)-এর উপর ভিত্তি করে এজেন্ট এবং জটিল ওয়ার্কফ্লো তৈরির প্রক্রিয়াকে সহজ করে।

ডেটাবেসের জন্য এমসিপি টুলবক্স

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

আপনার এজেন্টদেরকে আপনার ডেটাবেসের ডেটা অ্যাক্সেস করতে দিন!!! কীভাবে?

সরলীকৃত ডেভেলপমেন্ট: ১০ লাইনেরও কম কোডে আপনার এজেন্টের সাথে টুলস ইন্টিগ্রেট করুন, একাধিক এজেন্ট বা ফ্রেমওয়ার্কের মধ্যে টুলস পুনঃব্যবহার করুন এবং টুলসের নতুন ভার্সন আরও সহজে ডেপ্লয় করুন।

উন্নততর পারফরম্যান্স: কানেকশন পুলিং, অথেন্টিকেশন এবং আরও অনেক সেরা অনুশীলন।

উন্নত নিরাপত্তা: আপনার ডেটাতে আরও সুরক্ষিত অ্যাক্সেসের জন্য সমন্বিত প্রমাণীকরণ।

এন্ড-টু-এন্ড পর্যবেক্ষণযোগ্যতা: ওপেনটেলিমেট্রির অন্তর্নির্মিত সমর্থন সহ রেডিমেড মেট্রিক্স এবং ট্রেসিং।

এই বিষয়টি উল্লেখ করতেই হচ্ছে যে এটি এমসিপি-রও আগের ঘটনা!!!

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

9a9018b8596bd34e.png

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

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

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

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

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

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

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

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

৬. সোর্স কোড

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

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

  1. requirements.txt ফাইলে যান এবং নিম্নলিখিত বিষয়বস্তু দিয়ে এটি আপডেট করুন:
https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/requirements.txt

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

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

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

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

f76ff480c8c889aa.png

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

538dba58908162fb.png

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

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

  1. সেখান থেকে, " Use an automatically allocated IP range " নির্বাচন করুন এবং Continue নির্বাচন করুন। তথ্য পর্যালোচনা করার পর, CREATE CONNECTION নির্বাচন করুন। 768ff5210e79676f.png

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

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

  1. টুলবক্স সেট আপ করার প্রস্তুতি হিসেবে, চলুন আমাদের AlloyDB ইনস্ট্যান্সে পাবলিক আইপি কানেক্টিভিটি চালু করি , যাতে নতুন টুলটি ডাটাবেস অ্যাক্সেস করতে পারে।
  2. পাবলিক আইপি কানেক্টিভিটি সেকশনে যান, ‘Enable Public IP’ চেকবক্সটি চেক করুন এবং আপনার ক্লাউড শেল মেশিনের আইপি অ্যাড্রেসটি প্রবেশ করান।
  3. আপনার ক্লাউড শেল মেশিনের আইপি পেতে, ক্লাউড শেল টার্মিনালে গিয়ে ifconfig লিখুন। ফলাফল থেকে eth0 inet অ্যাড্রেসটি শনাক্ত করুন এবং এর শেষের দুটি সংখ্যাকে '/16' মাস্ক সাইজ সহ 0.0 দিয়ে প্রতিস্থাপন করুন। উদাহরণস্বরূপ, এটি দেখতে "XX.XX.0.0/16" এর মতো হবে, যেখানে XX হলো সংখ্যা।
  4. এডিট ইনস্ট্যান্স পেজের "নেটওয়ার্কস" টেক্সটবক্সে এই আইপি-টি পেস্ট করুন।

e4d1045e1255e40f.png

  1. আপনার নেটওয়ার্ক সেট আপ হয়ে গেলে, আপনি আপনার ক্লাস্টার তৈরি করা চালিয়ে যেতে পারেন। নিচে দেখানো অনুযায়ী ক্লাস্টার সেট আপ সম্পন্ন করতে CREATE CLUSTER-এ ক্লিক করুন:

e06623e55195e16e.png

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

ডেটা ইনজেশন

এখন স্টোর সম্পর্কিত ডেটা সহ একটি টেবিল যোগ করার সময় এসেছে। 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 কোয়েরি স্টেটমেন্টটি এডিটরে কপি করুন।

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

এখন যেহেতু ডেটাসেটটি প্রস্তুত, চলুন AlloyDB-তে আমাদের সমস্ত অর্ডার ডেটাবেস ইন্টারঅ্যাকশনের কন্ট্রোল প্লেন হিসেবে কাজ করার জন্য MCP টুলবক্স ফর ডেটাবেস সেট আপ করি!!!

৮. ডেটাবেস সেটআপের জন্য এমসিপি টুলবক্স

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

আপনি দেখতে পাচ্ছেন যে, MCP Toolbox for Databases দ্বারা সমর্থিত ডেটাবেসগুলোর মধ্যে AlloyDB অন্যতম এবং যেহেতু আমরা পূর্ববর্তী বিভাগে এটি ইতিমধ্যে প্রস্তুত করে ফেলেছি, চলুন এবার টুলবক্সটি সেট আপ করা যাক।

  1. আপনার ক্লাউড শেল টার্মিনালে যান এবং নিশ্চিত করুন যে আপনার প্রজেক্টটি নির্বাচিত আছে এবং টার্মিনালের প্রম্পটে প্রদর্শিত হচ্ছে। আপনার প্রজেক্ট ডিরেক্টরিতে প্রবেশ করতে ক্লাউড শেল টার্মিনাল থেকে নিচের কমান্ডটি চালান:
cd adk-renovation-agent
  1. আপনার নতুন ফোল্ডারে টুলবক্স ডাউনলোড ও ইনস্টল করতে নিচের কমান্ডটি চালান:
# see releases page for other versions
export VERSION=0.7.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
  1. ক্লাউড শেল এডিটর (কোড এডিট মোডের জন্য) এ যান এবং প্রজেক্টের রুট ফোল্ডারে 'tools.yaml' নামে একটি ফাইল যোগ করুন।
sources:
    alloydb-orders:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "<<YOUR_ALLOYDB_CLUSTER>>"
        instance: "<<YOUR_ALLOYDB_INSTANCE>>"
        database: "<<YOUR_ALLOYDB_DATABASE>>"
        user: "<<YOUR_ALLOYDB_USER>>"
        password: "<<YOUR_ALLOYDB_PASSWORD>>"

tools:
  get-order-data:
    kind: postgres-sql
    source: alloydb-orders
    description: Get the status of an order based on the material description.
    parameters:
      - name: description
        type: string
        description: A description of the material to search for its order status.
    statement: |
      select order_status from material_order_status where lower(material_name) like lower($1) 
      LIMIT 1;

কোয়েরি অংশে (উপরে উল্লিখিত 'statement' প্যারামিটারটি দেখুন), আমরা শুধু তখনই 'order_status' ফিল্ডের ভ্যালুটি নিচ্ছি, যখন মেটেরিয়ালের নামটি ব্যবহারকারীর সার্চ টেক্সটের সাথে মিলে যায়।

চলুন tools.yaml বুঝি।

সোর্সগুলো আপনার বিভিন্ন ডেটা সোর্সকে প্রতিনিধিত্ব করে, যেগুলোর সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। একটি সোর্স এমন একটি ডেটা সোর্সকে বোঝায় যার সাথে একটি টুল ইন্টারঅ্যাক্ট করতে পারে। আপনি আপনার tools.yaml ফাইলের sources সেকশনে সোর্সগুলোকে একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, একটি সোর্স কনফিগারেশনে ডেটাবেসের সাথে সংযোগ স্থাপন এবং ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে।

টুলগুলো এজেন্টের বিভিন্ন কাজ নির্ধারণ করে – যেমন কোনো সোর্স থেকে ডেটা পড়া বা তাতে লেখা। একটি টুল আপনার এজেন্টের একটি কাজকে বোঝায়, যেমন একটি SQL স্টেটমেন্ট চালানো। আপনি আপনার tools.yaml ফাইলের tools সেকশনে টুলগুলোকে একটি ম্যাপ হিসেবে সংজ্ঞায়িত করতে পারেন। সাধারণত, কোনো টুলের কাজ করার জন্য একটি সোর্সের প্রয়োজন হয়।

আপনার tools.yaml কনফিগার করার বিষয়ে আরও বিস্তারিত জানতে এই ডকুমেন্টেশনটি দেখুন।

চলুন ডেটাবেস সার্ভারের জন্য এমসিপি টুলবক্সটি চালানো যাক।

সার্ভারটি চালু করতে (mcp-toolbox ফোল্ডার থেকে) নিম্নলিখিত কমান্ডটি চালান:

./toolbox --tools-file "tools.yaml"

এখন আপনি যদি ক্লাউডে ওয়েব প্রিভিউ মোডে সার্ভারটি খোলেন, তাহলে আপনি টুলবক্স সার্ভারটি চালু এবং আপনার নতুন get-order-data নামের টুলটিসহ চলতে দেখতে পাবেন।

এমসিপি টুলবক্স সার্ভারটি ডিফল্টভাবে ৫০০০ পোর্টে চলে। চলুন, ক্লাউড শেল ব্যবহার করে এটি পরীক্ষা করে দেখি।

নিচে দেখানো অনুযায়ী ক্লাউড শেল-এ ওয়েব প্রিভিউ-তে ক্লিক করুন:

f990712162e8e924.png

নিচে দেখানো অনুযায়ী Change port-এ ক্লিক করে পোর্টটি 5000 সেট করুন এবং Change and Preview-তে ক্লিক করুন।

d1b9de0c46ecef8a.png

এর ফলে যে আউটপুটটি আসবে তা হলো:

2fdcdac326034d41.png

MCP টুলকিট ফর ডাটাবেস-এ টুলগুলো যাচাই ও পরীক্ষা করার জন্য একটি পাইথন SDK-এর বর্ণনা দেওয়া আছে, যার ডকুমেন্টেশন এখানে রয়েছে। আমরা সেটি বাদ দিয়ে পরবর্তী বিভাগে সরাসরি এজেন্ট ডেভেলপমেন্ট কিট (ADK)-এ চলে যাব, যা এই টুলগুলো ব্যবহার করবে।

চলুন আমাদের টুলবক্সটি ক্লাউড রানে ডেপ্লয় করি।

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

  1. একটি নতুন ক্লাউড শেল টার্মিনাল চালু করুন অথবা একটি বিদ্যমান ক্লাউড শেল টার্মিনাল ব্যবহার করুন। প্রজেক্ট ফোল্ডারে যান যেখানে টুলবক্স বাইনারি এবং tools.yaml রয়েছে, এই ক্ষেত্রে adk-renovation-agent।
  2. PROJECT_ID ভেরিয়েবলটি আপনার গুগল ক্লাউড প্রজেক্ট আইডি নির্দেশ করার জন্য সেট করুন।
export PROJECT_ID="<<YOUR_GOOGLE_CLOUD_PROJECT_ID>>"
  1. এই Google Cloud পরিষেবাগুলি সক্রিয় করুন
gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com
  1. চলুন একটি আলাদা সার্ভিস অ্যাকাউন্ট তৈরি করি, যেটি গুগল ক্লাউড রান-এ ডেপ্লয় করা টুলবক্স সার্ভিসটির আইডেন্টিটি হিসেবে কাজ করবে।
gcloud iam service-accounts create toolbox-identity
  1. আমরা এটাও নিশ্চিত করছি যে এই সার্ভিস অ্যাকাউন্টটির সঠিক ভূমিকা (role) রয়েছে, অর্থাৎ সিক্রেট ম্যানেজার (Secret Manager) অ্যাক্সেস করার এবং অ্যালয়ডিবি (AlloyDB)-র সাথে যোগাযোগ করার ক্ষমতা।
gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/secretmanager.secretAccessor

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/alloydb.client

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/serviceusage.serviceUsageConsumer
  1. আমরা tools.yaml ফাইলটি একটি সিক্রেট হিসেবে আপলোড করব:
gcloud secrets create tools --data-file=tools.yaml

আপনার যদি আগে থেকেই একটি সিক্রেট থাকে এবং আপনি সেটির ভার্সন আপডেট করতে চান, তাহলে নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

gcloud secrets versions add tools --data-file=tools.yaml

ক্লাউড রানের জন্য আপনি যে কন্টেইনার ইমেজটি ব্যবহার করতে চান, সেটির জন্য একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
  1. ক্লাউড রান-এর পরিচিত ডেপ্লয়মেন্ট কমান্ডের শেষ ধাপ:
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--allow-unauthenticated

এর মাধ্যমে আমাদের কনফিগার করা tools.yaml সহ টুলবক্স সার্ভারটি ক্লাউড রান-এ ডেপ্লয় করার প্রক্রিয়া শুরু হবে। সফলভাবে ডেপ্লয়মেন্ট হলে, আপনি নিচের মতো একটি বার্তা দেখতে পাবেন:

Deploying container to Cloud Run service [toolbox] in project [YOUR_PROJECT_ID] region [us-central1]
OK Deploying new service... Done.                                                                                                                                                                                     
  OK Creating Revision...                                                                                                                                                                                             
  OK Routing traffic...                                                                                                                                                                                               
  OK Setting IAM Policy...                                                                                                                                                                                            
Done.                                                                                                                                                                                                                 
Service [toolbox] revision [toolbox-00001-zsk] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-<SOME_ID>.us-central1.run.app

আপনি আপনার এজেন্টিক অ্যাপ্লিকেশনে সদ্য স্থাপন করা টুলটি ব্যবহার করার জন্য এখন সম্পূর্ণ প্রস্তুত!!!

চলুন টুলবক্স টুলটিকে আমাদের এজেন্টের সাথে সংযুক্ত করি!!!

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

  1. রিপো থেকে সোর্স সহ আপনার requirements.txt ফাইলটি পর্যবেক্ষণ করুন :

আমরা requirements.txt-এ MCP Toolbox for Databases-এর নির্ভরতা অন্তর্ভুক্ত করছি।

https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/requirements.txt

  1. রিপো থেকে নেওয়া কোড দিয়ে আপনার agent.py ফাইলটি পর্যবেক্ষণ করুন :

আমরা এমন একটি টুল অন্তর্ভুক্ত করছি যা অর্ডার করা একটি নির্দিষ্ট মেটেরিয়ালের অর্ডার ডেটা আনার জন্য টুলবক্স এন্ডপয়েন্টকে কল করে।

https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/agent.py

৯. মডেল সেটআপ

ব্যবহারকারীর অনুরোধ বোঝা এবং প্রতিক্রিয়া তৈরি করার জন্য আপনার এজেন্টের ক্ষমতা একটি লার্জ ল্যাঙ্গুয়েজ মডেল (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>>

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

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

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

Hello. Check order status for Cement Bags.

১২. ফলাফল

3e74f6f757e2db2c.png

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

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

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

১৪. অভিনন্দন

অভিনন্দন! আপনি ADK এবং MCP টুলবক্স ফর ডেটাবেস ব্যবহার করে সফলভাবে একটি মাল্টি-এজেন্ট অ্যাপ্লিকেশন তৈরি করেছেন! আরও তথ্যের জন্য, প্রোডাক্ট ডকুমেন্টেশন দেখুন: এজেন্ট ডেভেলপমেন্ট কিট এবং MCP টুলবক্স ফর ডেটাবেস