১. সংক্ষিপ্ত বিবরণ
এমসিপি টুলবক্স ফর ডেটাবেসেস হলো গুগলের একটি ওপেন সোর্স সার্ভার যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করার জন্য জেন এআই টুল তৈরি করা সহজ করে তোলে। এটি কানেকশন পুলিং, অথেন্টিকেশন এবং আরও অনেক জটিলতা সামলানোর মাধ্যমে আপনাকে আরও সহজে, দ্রুত এবং নিরাপদে টুল তৈরি করতে সক্ষম করে। এটি আপনাকে এমন জেন এআই টুল তৈরি করতে সাহায্য করে যা আপনার এজেন্টদের আপনার ডেটাবেসের ডেটা অ্যাক্সেস করতে দেয়। টুলবক্স যা প্রদান করে:
সরলীকৃত ডেভেলপমেন্ট: ১০ লাইনেরও কম কোডে আপনার এজেন্টের সাথে টুলস ইন্টিগ্রেট করুন, একাধিক এজেন্ট বা ফ্রেমওয়ার্কের মধ্যে টুলস পুনঃব্যবহার করুন এবং টুলসের নতুন ভার্সন আরও সহজে ডেপ্লয় করুন।
উন্নততর পারফরম্যান্স: কানেকশন পুলিং, অথেন্টিকেশন এবং আরও অনেক সেরা অনুশীলন।
উন্নত নিরাপত্তা: আপনার ডেটাতে আরও সুরক্ষিত অ্যাক্সেসের জন্য সমন্বিত প্রমাণীকরণ ব্যবস্থা।
এন্ড-টু-এন্ড পর্যবেক্ষণযোগ্যতা: ওপেনটেলিমেট্রির অন্তর্নির্মিত সমর্থন সহ রেডিমেড মেট্রিক্স এবং ট্রেসিং।
টুলবক্স আপনার অ্যাপ্লিকেশনের অর্কেস্ট্রেশন ফ্রেমওয়ার্ক এবং আপনার ডেটাবেসের মধ্যে অবস্থান করে একটি কন্ট্রোল প্লেন প্রদান করে, যা টুল পরিবর্তন, বিতরণ বা চালু করার জন্য ব্যবহৃত হয়। এটি টুল সংরক্ষণ ও আপডেট করার জন্য একটি কেন্দ্রীভূত স্থান প্রদান করে আপনার টুলগুলোর ব্যবস্থাপনা সহজ করে তোলে, যার ফলে আপনি এজেন্ট ও অ্যাপ্লিকেশনগুলোর মধ্যে টুল শেয়ার করতে পারেন এবং আপনার অ্যাপ্লিকেশন পুনরায় ডেপ্লয় না করেই সেই টুলগুলো আপডেট করতে পারেন।
আপনি যা তৈরি করবেন
এই ল্যাবের অংশ হিসেবে, আপনি এমন একটি অ্যাপ্লিকেশন তৈরি করবেন যা একটি টুল ব্যবহার করে একটি সাধারণ ডাটাবেস (AlloyDB) কোয়েরি সম্পাদন করে, এবং এই কোয়েরিটি আপনার এজেন্ট বা জেনারেটিভ এআই অ্যাপ্লিকেশন থেকে আহ্বান করা যাবে। এর জন্য আপনাকে যা করতে হবে
- ডেটাবেসের জন্য এমসিপি টুলবক্স ইনস্টল করুন
- টুলবক্স সার্ভারে (AlloyDB-তে কোনো কাজ করার জন্য ডিজাইন করা) টুলটি সেট আপ করুন।
- ক্লাউড রানে ডেটাবেসের জন্য এমসিপি টুলবক্স স্থাপন করুন
- টুলটিকে এর ডেপ্লয় করা ক্লাউড রান এন্ডপয়েন্ট দিয়ে পরীক্ষা করুন।
- টুলবক্স চালু করার জন্য ক্লাউড রান ফাংশনটি তৈরি করুন।
প্রয়োজনীয়তা
- ক্রোম বা ফায়ারফক্সের মতো একটি ব্রাউজার
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট (পরবর্তী বিভাগে ধাপগুলো দেওয়া আছে)।
২. শুরু করার আগে
একটি প্রকল্প তৈরি করুন
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
- আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ। গুগল ক্লাউড কনসোলের শীর্ষে থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন।

- ক্লাউড শেলে সংযুক্ত হওয়ার পর, নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করুন যে আপনি ইতিমধ্যেই প্রমাণীকৃত কিনা এবং প্রজেক্টটি সঠিক প্রজেক্ট আইডিতে সেট করা আছে কিনা:
gcloud auth list
- gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
- আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডগুলি এক এক করে চালিয়ে প্রয়োজনীয় API গুলি সক্রিয় করুন:
নিচের কমান্ডগুলো চালানোর জন্য একটিমাত্র কমান্ডও রয়েছে, কিন্তু আপনি যদি ট্রায়াল অ্যাকাউন্টের ব্যবহারকারী হন, তবে একসাথে অনেকগুলো চালু করতে গেলে কোটা সংক্রান্ত সমস্যার সম্মুখীন হতে পারেন। এই কারণেই কমান্ডগুলো প্রতি লাইনে একটি করে আলাদাভাবে দেওয়া হয়েছে।
gcloud services enable alloydb.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
gcloud services enable servicenetworking.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud কমান্ডের বিকল্প হলো কনসোলের মাধ্যমে প্রতিটি পণ্য অনুসন্ধান করা অথবা এই লিঙ্কটি ব্যবহার করা।
যদি কোনো API বাদ পড়ে যায়, তাহলে আপনি বাস্তবায়ন চলাকালীন সময়েই তা সক্রিয় করে নিতে পারেন।
gcloud কমান্ড এবং এর ব্যবহার সম্পর্কে জানতে ডকুমেন্টেশন দেখুন।
৩. ডাটাবেস সেটআপ
এই ল্যাবে আমরা রিটেইল ডেটা সংরক্ষণের জন্য ডাটাবেস হিসেবে AlloyDB ব্যবহার করব। এটি ডাটাবেস এবং লগের মতো সমস্ত রিসোর্স ধারণ করার জন্য ক্লাস্টার ব্যবহার করে। প্রতিটি ক্লাস্টারে একটি প্রাইমারি ইনস্ট্যান্স থাকে যা ডেটাতে অ্যাক্সেস পয়েন্ট সরবরাহ করে। টেবিলগুলোতে প্রকৃত ডেটা থাকবে।
চলুন একটি AlloyDB ক্লাস্টার, ইনস্ট্যান্স এবং টেবিল তৈরি করি যেখানে ইকমার্স ডেটাসেটটি লোড করা হবে।
একটি ক্লাস্টার এবং ইনস্ট্যান্স তৈরি করুন
- ক্লাউড কনসোলে AlloyDB পৃষ্ঠাটিতে যান।
ক্লাউড কনসোলের বেশিরভাগ পৃষ্ঠা খুঁজে পাওয়ার একটি সহজ উপায় হলো কনসোলের সার্চ বার ব্যবহার করে সেগুলোর জন্য অনুসন্ধান করা।
- সেই পৃষ্ঠা থেকে CREATE CLUSTER নির্বাচন করুন:

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

- আপনি যখন ডিফল্ট নেটওয়ার্ক নির্বাচন করবেন, তখন নিচের ছবির মতো একটি স্ক্রিন দেখতে পাবেন। 'সেট আপ কানেকশন' (SET UP CONNECTION) নির্বাচন করুন।

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

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

ইনস্ট্যান্স আইডি পরিবর্তন করে "
vector-instance"
.
মনে রাখবেন, ক্লাস্টার তৈরি হতে প্রায় ১০ মিনিট সময় লাগবে। এটি সফল হলে, আপনি আপনার তৈরি করা ক্লাস্টারের একটি সার্বিক চিত্র দেখতে পাবেন।
৪. ডেটা গ্রহণ
এখন স্টোর সম্পর্কিত ডেটা সহ একটি টেবিল যোগ করার সময় এসেছে। AlloyDB-তে যান, প্রাইমারি ক্লাস্টার নির্বাচন করুন এবং তারপর AlloyDB Studio-তে যান:

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

আপনি এডিটর উইন্ডোতে AlloyDB-এর জন্য কমান্ড প্রবেশ করাতে পারেন এবং প্রয়োজন অনুযায়ী Run, Format, ও Clear অপশনগুলো ব্যবহার করতে পারেন।
এক্সটেনশনগুলি সক্ষম করুন
এই অ্যাপটি তৈরি করার জন্য, আমরা pgvector এবং google_ml_integration এক্সটেনশনগুলো ব্যবহার করব। pgvector এক্সটেনশনটি আপনাকে ভেক্টর এমবেডিং সংরক্ষণ এবং অনুসন্ধান করার সুযোগ দেয়। google_ml_integration এক্সটেনশনটি এমন সব ফাংশন সরবরাহ করে যা ব্যবহার করে আপনি Vertex AI প্রেডিকশন এন্ডপয়েন্টগুলো অ্যাক্সেস করে SQL-এ প্রেডিকশন পেতে পারেন। নিম্নলিখিত DDL-গুলো রান করে এই এক্সটেনশনগুলো সক্রিয় করুন :
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;
আপনার ডাটাবেসে কোন এক্সটেনশনগুলো সক্রিয় করা হয়েছে তা পরীক্ষা করতে চাইলে, এই SQL কমান্ডটি চালান:
select extname, extversion from pg_extension;
একটি টেবিল তৈরি করুন
নিচের DDL স্টেটমেন্টটি ব্যবহার করে একটি টেবিল তৈরি করুন:
CREATE TABLE toys ( id VARCHAR(25), name VARCHAR(25), description VARCHAR(20000), quantity INT, price FLOAT, image_url VARCHAR(200), text_embeddings vector(768)) ;
উপরের কমান্ডটি সফলভাবে কার্যকর হলে, আপনি ডাটাবেসে টেবিলটি দেখতে সক্ষম হবেন।
ডেটা গ্রহণ করুন
এই ল্যাবের জন্য, এই SQL ফাইলটিতে প্রায় ৭২টি রেকর্ডের টেস্ট ডেটা রয়েছে। এতে id, name, description, quantity, price, image_url ফিল্ডগুলো আছে। অন্যান্য ফিল্ডগুলো ল্যাবের পরবর্তী পর্যায়ে পূরণ করা হবে।
সেখান থেকে লাইনগুলো/ইনসার্ট স্টেটমেন্টগুলো কপি করুন এবং তারপর একটি খালি এডিটর ট্যাবে সেই লাইনগুলো পেস্ট করে RUN নির্বাচন করুন।
টেবিলের বিষয়বস্তু দেখতে, এক্সপ্লোরার সেকশনটি প্রসারিত করুন যতক্ষণ না আপনি apparels নামের টেবিলটি দেখতে পান। টেবিলটি কোয়েরি করার অপশনটি দেখতে ট্রাইকোলন (⋮) নির্বাচন করুন। একটি নতুন এডিটর ট্যাবে একটি SELECT স্টেটমেন্ট খুলে যাবে।

অনুমতি প্রদান করুন
postgres ব্যবহারকারীকে embedding ফাংশনের উপর এক্সিকিউট করার অধিকার দিতে নিচের স্টেটমেন্টটি চালান:
GRANT EXECUTE ON FUNCTION embedding TO postgres;
AlloyDB পরিষেবা অ্যাকাউন্টে Vertex AI ব্যবহারকারীর ROLE প্রদান করুন।
ক্লাউড শেল টার্মিনালে গিয়ে নিম্নলিখিত কমান্ডটি দিন:
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
৫. কনটেক্সটের জন্য এমবেডিং তৈরি করুন
কম্পিউটারের জন্য টেক্সট প্রসেস করার চেয়ে সংখ্যা প্রসেস করা অনেক বেশি সহজ। একটি এমবেডিং সিস্টেম টেক্সটকে ফ্লোটিং পয়েন্ট সংখ্যার একটি সিরিজে রূপান্তরিত করে, যাকে ভেক্টর এমবেডিং বলা হয়, যা টেক্সটটির প্রতিনিধিত্ব করে, তা যেভাবে লেখা হোক বা যে ভাষাই ব্যবহার করা হোক না কেন।
উদাহরণস্বরূপ, সমুদ্রের ধারে কোনো জায়গাকে "জলের উপর", "সৈকতের সামনে", "ঘর থেকে হেঁটে সমুদ্রে যাওয়া", "সৈকতের উপর", "সৈকতে", "না বেরেগু ওশিয়ানা" ইত্যাদি বলা হতে পারে। এই শব্দগুলো শুনতে ভিন্ন হলেও, এদের অর্থগত তাৎপর্য বা মেশিন লার্নিং-এর পরিভাষায়, এদের এমবেডিংগুলো একে অপরের খুব কাছাকাছি হওয়া উচিত।
এখন যেহেতু ডেটা এবং কনটেক্সট প্রস্তুত, আমরা প্রোডাক্ট ডেসক্রিপশনের এমবেডিংগুলো টেবিলের ' embedding ফিল্ডে যোগ করার জন্য SQL রান করব। আপনি বিভিন্ন ধরনের এমবেডিং মডেল ব্যবহার করতে পারেন। আমরা Vertex AI-এর text-embedding-005 ব্যবহার করছি। পুরো প্রোজেক্ট জুড়ে একই এমবেডিং মডেল ব্যবহার করতে ভুলবেন না!
দ্রষ্টব্য: আপনি যদি কোনো পুরোনো গুগল ক্লাউড প্রজেক্ট ব্যবহার করেন, তাহলে আপনাকে টেক্সট-এম্বেডিং-গেকোর মতো টেক্সট-এম্বেডিং মডেলের পুরোনো সংস্করণগুলো ব্যবহার করা চালিয়ে যেতে হতে পারে।
AlloyDB Studio ট্যাবে ফিরে যান এবং নিম্নলিখিত DML টাইপ করুন:
UPDATE toys set text_embeddings = embedding( 'text-embedding-005', description);
কিছু এমবেডিং দেখতে toys টেবিলটি আবার দেখুন। পরিবর্তনগুলো দেখতে SELECT স্টেটমেন্টটি অবশ্যই পুনরায় চালান।
SELECT id, name, description, price, quantity, image_url, text_embeddings FROM toys;
এটি খেলনার বিবরণের জন্য এমবেডিংস ভেক্টরটি ফেরত দেবে, যা নিচে দেখানো অনুযায়ী ফ্লোট সংখ্যার একটি অ্যারের মতো দেখতে হবে:

দ্রষ্টব্য: ফ্রি টিয়ারের অধীনে নতুন তৈরি করা গুগল ক্লাউড প্রজেক্টগুলো এমবেডিং মডেলগুলিতে প্রতি সেকেন্ডে অনুমোদিত এমবেডিং অনুরোধের সংখ্যার ক্ষেত্রে কোটা সমস্যার সম্মুখীন হতে পারে। আমরা পরামর্শ দিচ্ছি যে, এমবেডিং তৈরি করার সময় আপনি আইডি-র জন্য একটি ফিল্টার কোয়েরি ব্যবহার করুন এবং তারপর বেছে বেছে ১-৫টি রেকর্ড ইত্যাদি নির্বাচন করুন।
৬. ভেক্টর অনুসন্ধান সম্পাদন করুন
এখন যেহেতু টেবিল, ডেটা এবং এমবেডিং সবই প্রস্তুত, চলুন ব্যবহারকারীর সার্চ টেক্সটটির জন্য রিয়েল টাইম ভেক্টর সার্চটি সম্পাদন করা যাক।
ধরুন ব্যবহারকারী জিজ্ঞাসা করেন:
I want a white plush teddy bear toy with a floral pattern ।
নিচের কোয়েরিটি চালিয়ে আপনি এর সাথে মিল খুঁজে পেতে পারেন:
select * from toys
ORDER BY text_embeddings <=> CAST(embedding('text-embedding-005', 'I want a white plush teddy bear toy with a floral pattern') as vector(768))
LIMIT 5;
চলুন এই কোয়েরিটি বিস্তারিতভাবে দেখি:
এই কোয়েরিতে,
- ব্যবহারকারীর অনুসন্ধানের লেখাটি হলো: "
I want a white plush teddy bear toy with a floral pattern." - আমরা
text-embedding-005মডেলটি ব্যবহার করে `embedding()মেথডে এটিকে এমবেডিং-এ রূপান্তর করছি। গত ধাপের পর এই ধাপটি আপনার কাছে পরিচিত মনে হওয়া উচিত, যেখানে আমরা টেবিলের সমস্ত আইটেমে এমবেডিং ফাংশনটি প্রয়োগ করেছিলাম। - "
<=>" চিহ্নটি কোসাইন সিমিলারিটি ডিসট্যান্স পদ্ধতির ব্যবহার নির্দেশ করে। আপনি pgvector-এর ডকুমেন্টেশনে উপলব্ধ সমস্ত সিমিলারিটি মেজার খুঁজে পেতে পারেন। - ডাটাবেসে সংরক্ষিত ভেক্টরগুলোর সাথে সামঞ্জস্যপূর্ণ করার জন্য আমরা এমবেডিং মেথডের ফলাফলকে ভেক্টর টাইপে রূপান্তর করছি।
- LIMIT 5 এর অর্থ হলো, আমরা সার্চ টেক্সটটির জন্য ৫টি নিকটতম প্রতিবেশী ডেটা বের করতে চাই।
ফলাফলটি দেখতে এইরকম:

আপনি আপনার ফলাফলে দেখতে পাচ্ছেন যে, মিলগুলো সার্চ টেক্সটের বেশ কাছাকাছি। টেক্সটটি পরিবর্তন করে দেখুন ফলাফলে কী পরিবর্তন আসে।
৭. টুলবক্স ইন্টারঅ্যাকশনের জন্য AlloyDB প্রস্তুত করা
টুলবক্স সেট আপ করার প্রস্তুতি হিসেবে, চলুন আমাদের AlloyDB ইনস্ট্যান্সে পাবলিক আইপি কানেক্টিভিটি চালু করি, যাতে নতুন টুলটি ডাটাবেস অ্যাক্সেস করতে পারে।
- আপনার AlloyDB ইনস্ট্যান্সে যান, EDIT-এ ক্লিক করুন এবং Edit primary instance পৃষ্ঠায় যান।
- পাবলিক আইপি কানেক্টিভিটি সেকশনে যান, ‘Enable public IP’ চেকবক্সটি চেক করুন এবং আপনার ক্লাউড শেল মেশিনের আইপি অ্যাড্রেসটি প্রবেশ করান।
- আপনার ক্লাউড শেল মেশিনের আইপি পেতে, ক্লাউড শেল টার্মিনালে গিয়ে ifconfig লিখুন। ফলাফল থেকে eth0 inet অ্যাড্রেসটি শনাক্ত করুন এবং এর শেষের দুটি সংখ্যাকে '/16' মাস্ক সাইজ সহ 0.0 দিয়ে প্রতিস্থাপন করুন। উদাহরণস্বরূপ, এটি দেখতে "XX.XX.0.0/16" এর মতো হবে, যেখানে XX হলো সংখ্যা।
- এডিট ইনস্ট্যান্স পেজের "নেটওয়ার্কস" টেক্সটবক্সে এই আইপি-টি পেস্ট করুন।

- কাজ শেষ হলে UPDATE INSTANCE-এ ক্লিক করুন।
এটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে।
৮. ডেটাবেস ইনস্টলেশনের জন্য এমসিপি টুলবক্স
- টুলের বিবরণ সংরক্ষণের জন্য আপনি একটি প্রজেক্ট ফোল্ডার তৈরি করতে পারেন। এক্ষেত্রে, যেহেতু আমরা টয় স্টোরের ডেটা নিয়ে কাজ করছি, তাই 'toystore' নামে একটি ফোল্ডার তৈরি করে তার ভেতরে প্রবেশ করা যাক। ক্লাউড শেল টার্মিনালে যান এবং নিশ্চিত করুন যে আপনার প্রজেক্টটি নির্বাচিত আছে এবং টার্মিনালের প্রম্পটে দেখানো হচ্ছে। আপনার ক্লাউড শেল টার্মিনাল থেকে নিচের কমান্ডটি চালান:
mkdir toystore
cd toystore
- আপনার নতুন ফোল্ডারে টুলবক্স ডাউনলোড ও ইনস্টল করতে নিচের কমান্ডটি চালান:
# see releases page for other versions
export VERSION=0.1.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
- ক্লাউড শেল এডিটর-এ যান। নতুন তৈরি করা 'toystore' ফোল্ডারটি এক্সপ্যান্ড করুন এবং tools.yaml নামে একটি নতুন ফাইল তৈরি করুন। নিচের কন্টেন্টটি কপি করুন। YOUR_PROJECT_ID প্রতিস্থাপন করুন এবং অন্যান্য সমস্ত সংযোগের বিবরণ সঠিক আছে কিনা তা পরীক্ষা করুন।
sources:
alloydb-toys:
kind: "alloydb-postgres"
project: "YOUR_PROJECT_ID"
region: "us-central1"
cluster: "vector-cluster"
instance: "vector-instance"
database: "postgres"
user: "postgres"
password: "alloydb"
tools:
get-toy-price:
kind: postgres-sql
source: alloydb-toys
description: Get the price of a toy based on a description.
parameters:
- name: description
type: string
description: A description of the toy to search for.
statement: |
SELECT price FROM toys
ORDER BY text_embeddings <=> CAST(embedding('text-embedding-005', $1) AS vector(768))
LIMIT 1;
এই টুলে, আমরা ব্যবহারকারীর সার্চ টেক্সটের (কাস্টম খেলনার বিবরণ) সবচেয়ে কাছাকাছি মিল খুঁজে বের করছি এবং তার দাম দেখাচ্ছি। আপনি এটিকে পরিবর্তন করে সবচেয়ে কাছাকাছি মিল থাকা সেরা ৫টি খেলনার গড় দামও বের করতে পারেন:
select avg(price) from ( SELECT price FROM toys ORDER BY text_embeddings <=> CAST(embedding('text-embedding-005', $1) AS vector(768)) LIMIT 5 ) as price;
টুল সংজ্ঞাটি এখন সম্পূর্ণ প্রস্তুত!
আপনার tools.yaml কনফিগার করার বিষয়ে আরও বিস্তারিত জানতে এই ডকুমেন্টেশনটি দেখুন।
- ক্লাউড শেল টার্মিনালে যান এবং আপনার টুলস কনফিগারেশন সহ টুলবক্স সার্ভারটি শুরু করতে নিম্নলিখিত কমান্ডটি প্রবেশ করান:
./toolbox --tools_file "tools.yaml"
- এখন আপনি যদি ক্লাউডে ওয়েব প্রিভিউ মোডে সার্ভারটি খোলেন, তাহলে আপনি টুলবক্স সার্ভারটি চালু এবং আপনার নতুন টুল
get-toy-price.
৯. ডেটাবেসের জন্য এমসিপি টুলবক্সের ক্লাউড রান ডেপ্লয়মেন্ট
চলুন এটি ক্লাউড রান-এ ডেপ্লয় করি, যাতে আপনি এই টুলটি বাস্তবে ব্যবহার করতে পারেন।
- এই পৃষ্ঠার নির্দেশাবলী এক এক করে অনুসরণ করুন যতক্ষণ না আপনি "Deploy to Cloud Run" বিভাগের অধীনে ৩য় পয়েন্টে থাকা
gcloud run deploy toolboxকমান্ডটিতে পৌঁছান। আপনার প্রথম বিকল্পটি প্রয়োজন, দ্বিতীয়টি নয়, যা VPC নেটওয়ার্ক পদ্ধতি ব্যবহারের জন্য। - সফলভাবে ডেপ্লয় করা হয়ে গেলে, আপনি আপনার টুলবক্স সার্ভারের একটি ক্লাউড রান ডেপ্লয়েড এন্ডপয়েন্ট পাবেন। একটি CURL কমান্ড দিয়ে এটি পরীক্ষা করুন।
পরামর্শ:
পৃষ্ঠার নির্দেশাবলী মনোযোগ সহকারে অনুসরণ করুন এবং কোনো কিছু বাদ দেবেন না।
আপনি আপনার এজেন্টিক অ্যাপ্লিকেশনে সদ্য স্থাপন করা টুলটি ব্যবহার করার জন্য এখন সম্পূর্ণ প্রস্তুত!!!
১০. আপনার অ্যাপটিকে MCP টুলবক্স ফর ডেটাবেস-এর সাথে সংযুক্ত করুন
এই অংশে, আমরা আপনার টুলটি পরীক্ষা করার জন্য একটি ছোট অ্যাপ্লিকেশন তৈরি করব, যা অ্যাপ্লিকেশনটির চাহিদা অনুযায়ী কাজ করবে এবং প্রতিক্রিয়া সংগ্রহ করবে।
- গুগল কোলাবে যান এবং একটি নতুন নোটবুক খুলুন।
- আপনার নোটবুকে নিম্নলিখিতটি চালান।
!pip install toolbox-core
from toolbox_core import ToolboxClient
# Replace with your Toolbox service's URL
toolbox = ToolboxClient("https://toolbox-*****-uc.a.run.app")
# This tool can be passed to your application!
tool = toolbox.load_tool("get-toy-price")
# If there are multiple tools
# These tools can be passed to your application!
# tools = await client.load_toolset("<<toolset_name>>")
# Invoke the tool with a search text to pass as the parameter
result = tool.invoke({"description": "white plush toy"})
# Print result
print(result)
- আপনার ফলাফলটি এইরকম হওয়া উচিত:

এটি সেই টুল যা টুলবক্স toolbox-langchain ) টুলকিট ব্যবহারকারী একটি পাইথন অ্যাপ্লিকেশনে স্পষ্টভাবে আহ্বান করা হচ্ছে .
- যদি আপনি এই টুলটি ব্যবহার করতে এবং এটিকে একটি LangGraph সমন্বিত অ্যাপ্লিকেশনের মধ্যে কোনো এজেন্টের সাথে যুক্ত করতে চান, তাহলে আপনি
langgraphটুলকিটের সাহায্যে তা সহজেই করতে পারেন। - এর জন্য কোড স্নিপেটগুলো দেখুন।
১১. এটাকে ক্লাউডে নিয়ে যান!!!
চলুন এই পাইথন কোড স্নিপেটটিকে ক্লাউড রান ফাংশনের মধ্যে রেখে সার্ভারলেস করে ফেলি!
- এটি ক্লাউড ফাংশনে ব্যবহার করার জন্য কোড রিপো ফোল্ডার থেকে সোর্সটি কপি করুন।
- Cloud Run Functions কনসোলে যান এবং CREATE FUNCTION-এ ক্লিক করুন।
- ডেমো অ্যাপ্লিকেশনটির জন্য প্রমাণীকরণবিহীন রাখুন এবং পরবর্তী পৃষ্ঠায় পাইথন ৩.১১ রানটাইম নির্বাচন করুন।
- ধাপ ১-এ শেয়ার করা সোর্স রিপো থেকে
main.pyএবংrequirements.txtফাইল দুটি কপি করে নিজ নিজ জায়গায় পেস্ট করুন। - main.py ফাইলে থাকা সার্ভার ইউআরএলটি আপনার সার্ভার ইউআরএল দিয়ে প্রতিস্থাপন করুন।
- ফাংশনটি ডিপ্লয় করলেই টয়স্টোর ওয়েব অ্যাপ্লিকেশনে মূল্য পূর্বাভাস টুলটি অ্যাক্সেস করার জন্য একটি REST এন্ডপয়েন্ট তৈরি হয়ে যাবে।
- আপনার এন্ডপয়েন্টটি দেখতে এইরকম হওয়া উচিত:
https://us-central1-*****.cloudfunctions.net/toolbox-toys
- আপনি ক্লাউড ফাংশন কনসোলে সরাসরি TESTING ট্যাবে গিয়ে এবং অনুরোধ ইনপুট হিসাবে নিম্নলিখিতটি প্রবেশ করিয়ে এটি পরীক্ষা করতে পারেন:
{
"search": "White plush toy"
}
- ‘TEST THE FUNCTION’-এ ক্লিক করুন অথবা ক্লাউড শেল টার্মিনালে আপনার পছন্দমতো যেকোনো কিছু চালান। ডানদিকে ‘Output’ শিরোনামের নিচে আপনি ফলাফলটি দেখতে পাবেন:

১২. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে একটি শক্তিশালী এবং সত্যিকারের মডিউলার টুল তৈরি করেছেন যা আপনার এজেন্টিক অ্যাপ্লিকেশন তৈরিতে সাহায্য করার জন্য ডেটাবেস, প্ল্যাটফর্ম এবং জেনারেটিভ এআই অর্কেস্ট্রেশন ফ্রেমওয়ার্ক জুড়ে কাজ করতে পারে।