ক্লাউড রানে জেমিনি সিএলআই ব্যবহার করে অ্যালোয়ডিবি-র জন্য এমসিপি টুলবক্সের সাথে ত্বরিত ডেটা-চালিত বিকাশ

1. ওভারভিউ

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

সমাধান

এখানেই ত্বরান্বিত অ্যাপ্লিকেশন ডেভেলপমেন্টের শক্তি সত্যই উজ্জ্বল হয়, এবং সেই কারণেই আমি কীভাবে MCP (আধুনিক ক্লাউড প্ল্যাটফর্ম) টুলবক্স, স্বজ্ঞাত জেমিনি CLI-এর মাধ্যমে অ্যাক্সেসযোগ্য, আমার টুলকিটের একটি অপরিহার্য অংশ হয়ে উঠেছে তা ভাগ করে নেওয়ার জন্য খুবই উত্তেজিত। আপনার AlloyDB ইন্সট্যান্সের সাথে নির্বিঘ্নে ইন্টারঅ্যাক্ট করার কল্পনা করুন, প্রশ্ন লিখুন এবং আপনার ডেটাসেট বোঝা — সবই সরাসরি আপনার ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) এর মধ্যে। এটি কেবল সুবিধার জন্য নয়; এটি বিকাশের জীবনচক্রের ঘর্ষণকে মৌলিকভাবে হ্রাস করার বিষয়ে, আপনাকে বাহ্যিক সরঞ্জামগুলির সাথে কুস্তি করার পরিবর্তে উদ্ভাবনী বৈশিষ্ট্যগুলি তৈরিতে ফোকাস করার অনুমতি দেয়।

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

আপনি কি শিখবেন এবং তৈরি করবেন

Gemini CLI দ্বারা চালিত IDE-এর মধ্যে MCP টুলবক্স ব্যবহার করে একটি খুচরা অনুসন্ধান অ্যাপ্লিকেশন । আমরা কভার করব:

  1. নির্বিঘ্ন AlloyDB ইন্টারঅ্যাকশনের জন্য MCP টুলবক্সকে কীভাবে সরাসরি আপনার IDE-তে সংহত করবেন।
  2. আপনার খুচরা ডেটার বিরুদ্ধে এসকিউএল কোয়েরি লিখতে এবং চালানোর জন্য Gemini CLI ব্যবহার করার ব্যবহারিক উদাহরণ।
  3. আমাদের খুচরা ই-কমার্স ডেটাসেটের সাথে ইন্টারঅ্যাক্ট করতে জেমিনি CLI-এর সুবিধা নিন, সাধারণত আলাদা টুলের প্রয়োজন হয় এমন প্রশ্নগুলি লিখতে এবং তাৎক্ষণিকভাবে ফলাফল দেখতে পান।
  4. আমাদের IDE-এর মধ্যে পরিচিত কমান্ড-লাইন ইন্টারফেসের মাধ্যমে - টেবিল স্ট্রাকচার চেক করা থেকে দ্রুত ডেটা স্যানিটী চেক করা থেকে ডেটা অনুসন্ধান এবং বোঝার নতুন উপায় আবিষ্কার করুন।
  5. কিভাবে এই ত্বরিত ডাটাবেস ওয়ার্কফ্লো সরাসরি দ্রুত পূর্ণ-স্ট্যাক বিকাশ চক্রে অবদান রাখে, দ্রুত প্রোটোটাইপিং এবং পুনরাবৃত্তির জন্য অনুমতি দেয়।

টেকস্ট্যাক

আমরা ব্যবহার করছি:

  • ডাটাবেসের জন্য AlloyDB
  • অ্যাপ্লিকেশন থেকে ডাটাবেসের উন্নত জেনারেটিভ এবং এআই বৈশিষ্ট্যগুলিকে বিমূর্ত করার জন্য MCP টুলবক্স
  • সার্ভারহীন স্থাপনার জন্য ক্লাউড রান।
  • Gemini CLI ডেটাসেট বুঝতে এবং বিশ্লেষণ করতে এবং খুচরা ই-কমার্স অ্যাপ্লিকেশনের ডেটাবেস অংশ তৈরি করতে।

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

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

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

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

Google ক্লাউড ক্রেডিটগুলির জন্য: আপনি যদি শুরু করতে সাহায্য করার জন্য Google ক্লাউড ক্রেডিট পেতে চান, তাহলে ক্রেডিট রিডিম করতে এই লিঙ্কটি ব্যবহার করুন৷ আপনি এটি রিডিম করতে এখানে নির্দেশাবলী অনুসরণ করতে পারেন

  1. আপনি Cloud Shell ব্যবহার করবেন, Google ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ। গুগল ক্লাউড কনসোলের শীর্ষে সক্রিয় ক্লাউড শেল ক্লিক করুন।

ক্লাউড শেল বোতামের ছবি সক্রিয় করুন

  1. একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি পরীক্ষা করে দেখুন যে আপনি ইতিমধ্যেই প্রমাণীকৃত হয়েছেন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. যদি আপনার প্রজেক্ট সেট করা না থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. প্রয়োজনীয় API গুলি সক্রিয় করুন: লিঙ্কটি অনুসরণ করুন এবং APIগুলি সক্ষম করুন৷

বিকল্পভাবে আপনি এর জন্য gcloud কমান্ড ব্যবহার করতে পারেন। জিক্লাউড কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন পড়ুন।

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

এই ল্যাবে আমরা ইকমার্স ডেটার ডাটাবেস হিসাবে 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

গুরুত্বপূর্ণ নোট:

  1. ইনস্ট্যান্স আইডি (যা আপনি ক্লাস্টার/ইনস্ট্যান্স কনফিগারেশনের সময় খুঁজে পেতে পারেন) ** vector-instance ** পরিবর্তন করতে ভুলবেন না। আপনি যদি এটি পরিবর্তন করতে না পারেন তবে সমস্ত আসন্ন রেফারেন্সে **আপনার ইনস্ট্যান্স আইডি ব্যবহার করতে ভুলবেন না।
  2. মনে রাখবেন ক্লাস্টার তৈরি হতে প্রায় 10 মিনিট সময় লাগবে। একবার এটি সফল হলে, আপনি একটি স্ক্রীন দেখতে পাবেন যা আপনার তৈরি করা ক্লাস্টারটির ওভারভিউ দেখায়।

4. ডেটা ইনজেশন

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

847e35f1bf8a8bd8.png

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

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

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

91a86d9469d499c4.png

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

এক্সটেনশন সক্রিয় করুন

এই অ্যাপটি তৈরি করার জন্য, আমরা pgvector এবং google_ml_integration এক্সটেনশনগুলি ব্যবহার করব। pgvector এক্সটেনশন আপনাকে ভেক্টর এম্বেডিং সংরক্ষণ এবং অনুসন্ধান করতে দেয়। google_ml_integration এক্সটেনশন এমন ফাংশন প্রদান করে যা আপনি SQL-এ ভবিষ্যদ্বাণী পেতে Vertex AI পূর্বাভাস শেষ পয়েন্ট অ্যাক্সেস করতে ব্যবহার করেন। নিম্নলিখিত ডিডিএলগুলি চালিয়ে এই এক্সটেনশনগুলিকে সক্ষম করুন :

CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;

আপনি যদি আপনার ডাটাবেসে সক্ষম করা এক্সটেনশনগুলি পরীক্ষা করতে চান তবে এই SQL কমান্ডটি চালান:

select extname, extversion from pg_extension;

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

আপনি AlloyDB স্টুডিওতে নীচের DDL স্টেটমেন্ট ব্যবহার করে একটি টেবিল তৈরি করতে পারেন:

CREATE TABLE apparels ( 
  id BIGINT, 
  category VARCHAR(100), 
  sub_category VARCHAR(50), 
  uri VARCHAR(200), 
  gsutil_uri VARCHAR(200),
  image VARCHAR(100), 
  content VARCHAR(2000), 
  pdt_desc VARCHAR(5000), 
  color VARCHAR(2000),
  gender VARCHAR(200),
  embedding vector(768),
  img_embeddings vector(1408),
  additional_specification VARCHAR(100000));

এমবেডিং কলাম পাঠ্যের ভেক্টর মানগুলির জন্য সঞ্চয়স্থানের অনুমতি দেবে।

অনুমতি দিন

"এম্বেডিং" ফাংশনে কার্যকর করার জন্য নীচের বিবৃতিটি চালান:

GRANT EXECUTE ON FUNCTION embedding TO postgres;

AlloyDB পরিষেবা অ্যাকাউন্টে Vertex AI ব্যবহারকারীর ভূমিকা মঞ্জুর করুন

Google ক্লাউড IAM কনসোল থেকে, AlloyDB পরিষেবা অ্যাকাউন্টটি মঞ্জুর করুন (যেটি এইরকম দেখাচ্ছে: service-<<PROJECT_NUMBER>>@gcp-sa-alloydb.iam.gserviceaccount.com) ভূমিকা "Vertex AI ব্যবহারকারী"-তে অ্যাক্সেস করুন৷ PROJECT_NUMBER এ আপনার প্রকল্প নম্বর থাকবে৷

বিকল্পভাবে আপনি ক্লাউড শেল টার্মিনাল থেকে নীচের কমান্ডটি চালাতে পারেন:

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"

ডাটাবেসে ডেটা লোড করুন

  1. শীটে insert scripts sql থেকে insert ক্যোয়ারী স্টেটমেন্টগুলি উপরে উল্লিখিত এডিটরের কাছে কপি করুন। আপনি এই ব্যবহারের ক্ষেত্রে একটি দ্রুত ডেমোর জন্য 10-50টি সন্নিবেশ বিবৃতি অনুলিপি করতে পারেন। এই "নির্বাচিত সন্নিবেশ 25-30 সারি" ট্যাবে এখানে সন্নিবেশগুলির একটি নির্বাচিত তালিকা রয়েছে
  2. রান এ ক্লিক করুন। আপনার প্রশ্নের ফলাফল ফলাফল সারণীতে প্রদর্শিত হবে।

গুরুত্বপূর্ণ নোট:

ঢোকানোর জন্য শুধুমাত্র 25-50টি রেকর্ড কপি করতে ভুলবেন না এবং নিশ্চিত করুন যে এটি একটি বিভাগ, উপ_বিভাগ, রঙ, লিঙ্গের ধরন থেকে এসেছে।

5. ডেটার জন্য এমবেডিং তৈরি করুন

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

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

এম্বেডিং কলামটি পণ্যের বর্ণনা পাঠ্যের ভেক্টর মানের জন্য সঞ্চয়ের অনুমতি দেবে। img_embeddings কলাম ইমেজ এম্বেডিং (মাল্টিমোডাল) সঞ্চয়ের অনুমতি দেবে। এইভাবে আপনি চিত্র দূরত্ব ভিত্তিক অনুসন্ধানের বিপরীতে পাঠ্য ব্যবহার করতে পারেন। কিন্তু আমরা এই ল্যাবে শুধুমাত্র টেক্সট এম্বেডিং ব্যবহার করব।

SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');

এটি ক্যোয়ারীতে নমুনা পাঠ্যের জন্য এমবেডিং ভেক্টর ফেরত দিতে হবে, যা ফ্লোটগুলির একটি অ্যারের মতো দেখায়। এই মত দেখায়:

25a1d7ef0e49e91e.png

বিমূর্ত_এম্বেডিং ভেক্টর ক্ষেত্র আপডেট করুন

সংশ্লিষ্ট এম্বেডিংয়ের সাথে টেবিলে বিষয়বস্তুর বিবরণ আপডেট করতে নিচের DML চালান:

UPDATE apparels SET embedding = embedding('text-embedding-005',pdt_desc)::vector 
WHERE pdt_desc IS NOT NULL;

আপনি যদি Google ক্লাউডের জন্য একটি ট্রায়াল ক্রেডিট বিলিং অ্যাকাউন্ট ব্যবহার করেন তবে কয়েকটি এম্বেডিং (সর্বোচ্চ বলুন 20-25) তৈরি করতে আপনার সমস্যা হতে পারে। তাই সন্নিবেশ স্ক্রিপ্টে সারির সংখ্যা সীমিত করুন।

আপনি যদি ইমেজ এম্বেডিং তৈরি করতে চান (মাল্টিমোডাল প্রাসঙ্গিক অনুসন্ধান করার জন্য) নীচের আপডেটটিও চালান:

update apparels set img_embeddings = ai.image_embedding(
  model_id => 'multimodalembedding@001',
  image => gsutil_uri,
  mimetype => 'image/jpg')       
where gsutil_uri is not null

6. ডাটাবেসের জন্য MCP টুলবক্স (AlloyDB)

পর্দার আড়ালে, শক্তিশালী টুলিং এবং একটি সুগঠিত অ্যাপ্লিকেশন মসৃণ অপারেশন নিশ্চিত করে।

ডাটাবেসের জন্য MCP (মডেল কনটেক্সট প্রোটোকল) টুলবক্স AlloyDB-এর সাথে জেনারেটিভ এআই এবং এজেন্টিক টুলের একীকরণকে সহজ করে। এটি একটি ওপেন-সোর্স সার্ভার হিসাবে কাজ করে যা সংযোগ পুলিং, প্রমাণীকরণ, এবং AI এজেন্ট বা অন্যান্য অ্যাপ্লিকেশনগুলিতে ডেটাবেস কার্যকারিতাগুলির নিরাপদ এক্সপোজারকে স্ট্রীমলাইন করে।

আমাদের অ্যাপ্লিকেশনে আমরা ডাটাবেসের জন্য MCP টুলবক্স ব্যবহার করেছি আমাদের সমস্ত বুদ্ধিমান হাইব্রিড অনুসন্ধান প্রশ্নের জন্য একটি বিমূর্ত স্তর হিসাবে।

সেট আপ করতে নীচের পদক্ষেপগুলি অনুসরণ করুন, আমাদের ব্যবহারের ক্ষেত্রে টুলবক্স স্থাপন করুন:

আপনি দেখতে পাচ্ছেন যে ডাটাবেসের জন্য MCP টুলবক্স দ্বারা সমর্থিত ডেটাবেসগুলির মধ্যে একটি হল AlloyDB এবং যেহেতু আমরা ইতিমধ্যেই পূর্ববর্তী বিভাগে এটির ব্যবস্থা করেছি, আসুন এগিয়ে যান এবং টুলবক্স সেট আপ করি৷

  1. আপনার ক্লাউড শেল টার্মিনালে নেভিগেট করুন এবং নিশ্চিত করুন যে আপনার প্রকল্পটি নির্বাচিত হয়েছে এবং টার্মিনালের প্রম্পটে দেখানো হয়েছে। আপনার প্রকল্প ডিরেক্টরিতে নেভিগেট করতে আপনার ক্লাউড শেল টার্মিনাল থেকে নীচের কমান্ডটি চালান:
mkdir gemini-cli-project

cd gemini-cli-project
  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. ক্লাউড শেল এডিটরে নেভিগেট করুন (কোড এডিট মোডের জন্য) এবং প্রোজেক্ট রুট ফোল্ডার "gemini-cli-project" এ "tools.yaml" নামে একটি ফাইল যোগ করুন।
sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"


tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

আসুন tools.yaml বুঝুন:

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

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

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

আপনি উপরের Tools.yaml ফাইলে দেখতে পাচ্ছেন, টুল "get-apparels" ডাটাবেস থেকে সমস্ত পোশাকের বিবরণ তালিকাভুক্ত করে।

7. Gemini CLI সেট আপ করুন

Cloud Shell Editor থেকে, gemini-cli-project ফোল্ডারের ভিতরে .gemini নামে একটি নতুন ফোল্ডার তৈরি করুন এবং সেটিতে settings.json নামে একটি নতুন ফাইল তৈরি করুন।

{
  "mcpServers": {
"AlloyDBServer": {
  "command": "/home/user/gemini-cli-project/toolbox",
  "args": ["--tools-file", "tools.yaml", "--stdio"]
}
  }
}

উপরের স্নিপেটের কমান্ড বিভাগে, টুলবক্সে আপনার পথের সাথে " /home/user/gemini-cli-project/toolbox " প্রতিস্থাপন করুন।

Gemini CLI ইনস্টল করুন

অবশেষে ক্লাউড শেল টার্মিনাল থেকে, কমান্ডটি চালানোর মাধ্যমে একই ডিরেক্টরি gemini-cli-project- এ Gemini CLI ইনস্টল করা যাক:

sudo npm install -g @google/gemini-cli

আপনার প্রজেক্ট আইডি সেট করুন

নিশ্চিত করুন যে আপনার পরিবেশে সক্রিয় প্রকল্প আইডি সেট আছে:

export GOOGLE_CLOUD_PROJECT=<<YOUR_PROJECT_ID>>

Gemini CLI দিয়ে শুরু করুন

কমান্ড লাইন থেকে, কমান্ড লিখুন:

gemini

আপনি নীচের মত একটি প্রতিক্রিয়া দেখতে সক্ষম হওয়া উচিত:

94f16dd7b5e2ca77.png

প্রমাণীকরণ করুন এবং পরবর্তী ধাপে চালিয়ে যান।

8. মিথুন CLI এর সাথে আলাপচারিতা শুরু করুন

কনফিগার করা MCP সার্ভারের তালিকা করতে /mcp কমান্ডটি ব্যবহার করুন।

83e1c54ec68add5c.png

আপনি আমাদের কনফিগার করা 2টি MCP সার্ভার দেখতে সক্ষম হবেন: GitHub এবং MCP টুলবক্স ডেটাবেসের জন্য তাদের টুলের সাথে তালিকাভুক্ত।

84b59c3027d370e2.png

আমার ক্ষেত্রে আমার আরও সরঞ্জাম আছে। তাই আপাতত উপেক্ষা করুন। আপনি আপনার AlloyDB MCP সার্ভারে get-apparels টুল দেখতে হবে।

MCP টুলবক্সের মাধ্যমে ডাটাবেস অনুসন্ধান করা শুরু করুন

এখন আমরা যে ডেটাসেটের সাথে কাজ করছি তার উত্তর এবং ক্যোয়ারী আনতে প্রাকৃতিক ভাষার প্রশ্ন জিজ্ঞাসা করার চেষ্টা করুন:

> How many types of genders the apparel dataset has?

ae24caa625ef871b.png

> Give me the SQL that I can use to find the number of apparels that are footwear 

b75da65679031c7.png

> What are the unique sub categories that are there?
that I can use to find the number of apparels that are footwear 

c04fd9e113a4ed95.png

এখন আমার অন্তর্দৃষ্টি এবং এই ধরনের অনেক প্রশ্নের উপর ভিত্তি করে বলা যাক আমি একটি বিস্তারিত প্রশ্ন নিয়ে এসেছি এবং এটি পরীক্ষা করতে চাই। অথবা ধরা যাক ডাটাবেস ইঞ্জিনিয়াররা ইতিমধ্যেই নীচের মত আপনার জন্য Tools.yaml তৈরি করেছে:

sources:
    alloydb:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "vector-cluster"
        instance: "vector-instance"
        database: "postgres"
        user: "postgres"
        password: "alloydb"

tools:
   get-apparels:
    kind: postgres-sql
    source: alloydb
    description: Get all apparel data.
    statement: |
      select id, content, uri, category, sub_category,color,gender from apparels;

   filtered-vector-search:
    kind: postgres-sql
    source: alloydb
    description: Get the list of facet filter values from the retail dataset.
    parameters:
      - name: categories
        type: array
        description: List of categories preferred by the user.
        items:
          name: category 
          type: string
          description: Category value. 
      - name: subCategories
        type: array
        description: List of sub-categories preferred by the user.
        items:
          name: subCategory 
          type: string
          description: Sub-Category value.
      - name: colors
        type: array
        description: List of colors preferred by the user.
        items:
          name: color 
          type: string
          description: Color value.
      - name: genders
        type: array
        description: List of genders preferred by the user for apparel fitting.
        items:
          name: gender 
          type: string
          description: Gender name.
      - name: searchtext
        type: string
        description: Description of the product that the user wants to find database matches for.    
    statement: |
      SELECT id, content, uri, category, sub_category,color,gender FROM apparels 
      where category = ANY($1) and sub_Category = ANY($2) and color = ANY($3) and gender = ANY($4)
      order by embedding <=> embedding('text-embedding-005',$5)::vector limit 10

এখন একটি প্রাকৃতিক ভাষা অনুসন্ধান চেষ্টা করা যাক:

> How many yellow shirts are there for boys?

5c3890cf69e3dacb.png

4ec79f49b2eaebbd.png

খুব সুন্দর তাই না? এখন আমি প্রশ্নে আরও অগ্রগতির জন্য yaml ফাইলটি ঠিক করতে পারি যখন আমি একটি ত্বরান্বিত টাইমলাইনে আমার অ্যাপ্লিকেশনে নতুন কার্যকারিতা সরবরাহ করতে থাকি।

9. অ্যাকসেলারেটেড অ্যাপ ডেভেলপমেন্ট

Gemini CLI এবং MCP টুলবক্সের মাধ্যমে সরাসরি আপনার IDE-এ ডাটাবেস ক্ষমতা আনার সৌন্দর্য শুধুমাত্র তাত্ত্বিক নয়। এটি বিশেষত আমাদের হাইব্রিড খুচরা অভিজ্ঞতার মতো জটিল অ্যাপ্লিকেশনের জন্য বাস্তব, গতি-বর্ধক কর্মপ্রবাহে অনুবাদ করে। আসুন কয়েকটি দৃশ্যকল্প দেখি:

1. পণ্য ফিল্টারিং যুক্তিতে দ্রুত পুনরাবৃত্ত

কল্পনা করুন আমরা এইমাত্র "গ্রীষ্মকালীন সক্রিয় পরিধান" এর জন্য একটি নতুন প্রচার চালু করেছি। আমরা পরীক্ষা করতে চাই কিভাবে আমাদের ফেসেড ফিল্টারগুলি (যেমন, ব্র্যান্ড, আকার, রঙ, দামের পরিসর অনুসারে) এই নতুন বিভাগের সাথে ইন্টারঅ্যাক্ট করে।

IDE ইন্টিগ্রেশন ছাড়া:

আমি সম্ভবত একটি পৃথক SQL ক্লায়েন্টে স্যুইচ করব, আমার ক্যোয়ারী লিখব, এটি কার্যকর করব, ফলাফলগুলি বিশ্লেষণ করব, অ্যাপ্লিকেশন কোড সামঞ্জস্য করতে আমার IDE-এ ফিরে যাব, ক্লায়েন্টে ফিরে যেতে এবং পুনরাবৃত্তি করব৷ এই কনটেক্সট-স্যুইচিং একটি বড় ড্র্যাগ।

জেমিনি CLI এবং MCP সহ:

আমি আমার IDE এবং আরও অনেক কিছুতে থাকতে পারি:

  • প্রশ্ন করা: আমি (অনুমানিক ডেটাসেট) "SELECT DISTINCT brand FROM products WHERE category = 'activewear' AND season = 'summer'" দিয়ে yaml-এ ক্যোয়ারীটি দ্রুত আপডেট করতে পারি এবং আমার টার্মিনালে এটি চেষ্টা করে দেখতে পারি।
  • ডেটা এক্সপ্লোরেশন: তাৎক্ষণিকভাবে ফিরে আসা ব্র্যান্ডগুলি দেখুন। আমি যদি একটি নির্দিষ্ট ব্র্যান্ড এবং আকারের জন্য পণ্যের প্রাপ্যতা দেখতে চাই, তবে এটি আরেকটি দ্রুত প্রশ্ন: "নির্বাচন করুন COUNT(*) FROM পণ্য যেখানে ব্র্যান্ড = 'SummitGear' এবং আকার = 'M' এবং বিভাগ = 'activewear' এবং ঋতু = 'গ্রীষ্ম'"
  • কোড ইন্টিগ্রেশন: আমি তখন অবিলম্বে এই দ্রুত, ইন-আইডিই ডেটা অন্তর্দৃষ্টিগুলির উপর ভিত্তি করে ফ্রন্ট-এন্ড ফিল্টারিং লজিক বা ব্যাকএন্ড API কলগুলিকে সামঞ্জস্য করতে পারি, উল্লেখযোগ্যভাবে প্রতিক্রিয়া লুপকে হ্রাস করে৷

2. পণ্যের সুপারিশের জন্য ফাইন-টিউনিং ভেক্টর অনুসন্ধান

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

IDE ইন্টিগ্রেশন ছাড়া:

প্রস্তাবিত জুতাগুলির সাদৃশ্য স্কোরগুলি বিশ্লেষণ করতে, ব্যবহারকারীর ইন্টারঅ্যাকশন ডেটার সাথে তাদের তুলনা করতে এবং যে কোনও নিদর্শনগুলির সাথে সম্পর্কযুক্ত করার চেষ্টা করতে আমি একটি ডাটাবেস টুলে কাস্টম স্ক্রিপ্ট বা প্রশ্নগুলি চালাচ্ছি৷

জেমিনি CLI এবং MCP সহ:

  • এমবেডিংগুলি বিশ্লেষণ করা: আমি সরাসরি পণ্য এম্বেডিং এবং তাদের সম্পর্কিত মেটাডেটাগুলির জন্য জিজ্ঞাসা করতে পারি: "নির্বাচন পণ্য_আইডি, নাম, ভেক্টর_এম্বেডিং পণ্য থেকে যেখানে বিভাগ = 'চলমান জুতো' এবং লিঙ্গ = 'পুরুষ' সীমা 10"
  • ক্রস-রেফারেন্সিং: আমি ঠিক সেখানে একটি নির্বাচিত পণ্য এবং এর সুপারিশগুলির মধ্যে প্রকৃত ভেক্টর মিলের একটি দ্রুত পরীক্ষা করতে পারি। উদাহরণস্বরূপ, যদি পণ্য A ব্যবহারকারীদের কাছে সুপারিশ করা হয় যারা পণ্য B দেখেছেন, আমি তাদের ভেক্টর এম্বেডিংগুলি পুনরুদ্ধার এবং তুলনা করার জন্য একটি ক্যোয়ারী চালাতে পারি।
  • ডিবাগিং: এটি দ্রুত ডিবাগিং এবং হাইপোথিসিস পরীক্ষার জন্য অনুমতি দেয়। এমবেডিং মডেল কি প্রত্যাশিত আচরণ করছে? সুপারিশের গুণমানকে প্রভাবিত করে এমন ডেটাতে কি অসঙ্গতি আছে? আমি আমার কোডিং পরিবেশ ছাড়াই প্রাথমিক উত্তর পেতে পারি।

3. নতুন বৈশিষ্ট্যগুলির জন্য স্কিমা এবং ডেটা বিতরণ বোঝা

ধরা যাক আমরা একটি "গ্রাহক পর্যালোচনা" বৈশিষ্ট্য যোগ করার পরিকল্পনা করছি৷ আমরা ব্যাকএন্ড API লেখার আগে, আমাদের বিদ্যমান গ্রাহক ডেটা এবং পর্যালোচনাগুলি কীভাবে কাঠামোগত হতে পারে তা বুঝতে হবে।

IDE ইন্টিগ্রেশন ছাড়া:

আমাকে একটি ডাটাবেস ক্লায়েন্টের সাথে সংযোগ করতে হবে, গ্রাহকদের এবং অর্ডারগুলির মতো টেবিলে DESCRIBE কমান্ড চালাতে হবে এবং তারপর সম্পর্ক এবং ডেটা প্রকারগুলি বোঝার জন্য নমুনা ডেটার জন্য অনুসন্ধান করতে হবে৷

জেমিনি CLI এবং MCP সহ:

  • স্কিমা এক্সপ্লোরেশন: আমি কেবল yaml ফাইলে টেবিলটি জিজ্ঞাসা করতে পারি এবং সরাসরি টার্মিনালে এটি চালাতে পারি।
  • ডেটা স্যাম্পলিং: আমি তারপরে গ্রাহকের জনসংখ্যা এবং ক্রয়ের ইতিহাস বোঝার জন্য নমুনা ডেটা টেনে আনতে পারি: "নির্বাচন করুন গ্রাহক_আইডি, নাম, সাইনআপ_তারিখ, গ্রাহকদের কাছ থেকে মোট_অর্ডার অর্ডার করুন সাইনআপ_তারিখ DESC সীমা 5"
  • পরিকল্পনা: স্কিমা এবং ডেটা বিতরণে এই দ্রুত অ্যাক্সেস আমাদের নতুন বৈশিষ্ট্যের জন্য অ্যাপ্লিকেশন কোডের একক লাইন লেখার আগে কীভাবে নতুন পর্যালোচনা টেবিল ডিজাইন করতে হবে, কোন বিদেশী কীগুলি স্থাপন করতে হবে এবং কীভাবে গ্রাহকদের এবং পণ্যগুলির সাথে পর্যালোচনাগুলিকে দক্ষতার সাথে লিঙ্ক করতে হবে সে সম্পর্কে সচেতন সিদ্ধান্ত নিতে সাহায্য করে৷

এগুলি মাত্র কয়েকটি উদাহরণ, তবে তারা মূল সুবিধা তুলে ধরে: ঘর্ষণ হ্রাস করা এবং বিকাশকারীর বেগ বৃদ্ধি করা। AlloyDB ইন্টারঅ্যাকশন সরাসরি IDE-তে নিয়ে আসার মাধ্যমে, Gemini CLI এবং MCP টুলবক্স আমাদের আরও ভাল, আরও প্রতিক্রিয়াশীল অ্যাপ্লিকেশনগুলিকে দ্রুত তৈরি করতে সক্ষম করে।

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

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

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

11. অভিনন্দন

অভিনন্দন! আপনি নিরবিচ্ছিন্ন AlloyDB ইন্টারঅ্যাকশনের জন্য সরাসরি আপনার IDE-তে MCP টুলবক্সকে সফলভাবে একীভূত করেছেন এবং আমাদের খুচরা ই-কমার্স ডেটাসেটের সাথে ইন্টারঅ্যাক্ট করার জন্য জেমিনি CLI লিভারেজ করেছেন যাতে সাধারণত আলাদা টুলের প্রয়োজন হয়। আপনি আমাদের IDE-এর মধ্যে পরিচিত কমান্ড-লাইন ইন্টারফেসের মাধ্যমে - টেবিলের কাঠামো পরীক্ষা করা থেকে দ্রুত ডেটা স্যানিটী চেকগুলি সম্পাদন করার জন্য ডেটা অনুসন্ধান এবং বোঝার নতুন উপায় শিখেছেন।

এগিয়ে যান এবং রেপো ক্লোন করুন, বিশ্লেষণ করুন এবং আমাকে জানান যে আপনি ডেটাবেসের জন্য Gemini CLI এবং MCP টুলবক্স ব্যবহার করে অ্যাপ্লিকেশনটি উন্নত করেছেন কিনা।

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