ADK, MCP টুলবক্স এবং AlloyDB এর সাথে একটি স্পোর্টস শপ এজেন্ট এআই সহকারী তৈরি করুন

১. ভূমিকা

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

এই কোডল্যাবে, আপনি একটি স্পোর্টস শপ এজেন্ট এআই অ্যাসিস্ট্যান্ট তৈরি করতে শিখবেন। ADK , MCP টুলবক্স এবং AlloyDB দ্বারা চালিত এই পরবর্তী প্রজন্মের এজেন্ট এআই অ্যাপ্লিকেশনটি ব্যবহারকারীদের বিভিন্ন কাজে সহায়তা করবে, যার মধ্যে রয়েছে:

  • স্বাভাবিক ভাষা ব্যবহার করে পণ্য অনুসন্ধান করা।
  • সুপারিশকৃত পণ্য কেনার জন্য কাছাকাছি দোকান খুঁজে বের করা।
  • নতুন অর্ডার দেওয়া হচ্ছে।
  • বিদ্যমান অর্ডারগুলোর অবস্থা যাচাই করা হচ্ছে।
  • পছন্দের ডেলিভারি পদ্ধতি দিয়ে অর্ডার আপডেট করা হচ্ছে।

7d9b5c1b10d1c654.png

আপনি যা শিখবেন

  • AlloyDB for PostgreSQL ডেটাবেস প্রোভিশনিং এবং ডেটা ডেটা দ্বারা পূর্ণ করা।
  • আপনার AlloyDB for PostgreSQL ইনস্ট্যান্সের সাথে MCP Toolbox for Databases সেট আপ করা।
  • স্পোর্টস শপের অনুসন্ধানে সহায়তা করার জন্য এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি এআই এজেন্ট ডিজাইন ও ডেভেলপ করা।
  • ক্লাউড পরিবেশে ডেটাবেসের জন্য আপনার এজেন্ট এবং এমসিপি টুলবক্স পরীক্ষা করা।
  • বুদ্ধিমান এজেন্ট প্রতিক্রিয়ার জন্য AlloyDB-এর উন্নত কোয়েরি সক্ষমতার ব্যবহার।

আপনার যা যা লাগবে

এই কোডল্যাবটি সম্পন্ন করতে আপনার প্রয়োজন হবে:

  • একটি ক্রোম ওয়েব ব্রাউজার।
  • একটি জিমেইল অ্যাকাউন্ট।
  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।

এই কোডল্যাবটি নতুনদের সহ সকল স্তরের ডেভেলপারদের জন্য ডিজাইন করা হয়েছে।

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

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

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

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. এই লিঙ্কে ক্লিক করে ক্লাউড শেল সক্রিয় করুন। ক্লাউড শেল থেকে সংশ্লিষ্ট বোতামে ক্লিক করে আপনি ক্লাউড শেল টার্মিনাল (ক্লাউড কমান্ড চালানোর জন্য) এবং এডিটর (প্রজেক্ট তৈরির জন্য) এর মধ্যে পরিবর্তন করতে পারবেন।

e44cf973ddf8b70f.png

  1. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. PROJECT_ID ভেরিয়েবলটি সেট করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
export PROJECT_ID=[YOUR_PROJECT_ID]
gcloud config set project $PROJECT_ID
  1. নিম্নলিখিত কমান্ডগুলি চালিয়ে নিম্নলিখিত API গুলি সক্রিয় করুন:
gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com

৩. AlloyDB ইনস্ট্যান্স তৈরি করুন

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

প্রথমে, AlloyDB ক্লাস্টার তৈরি করতে আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

gcloud alloydb clusters create alloydb-cluster \
    --password=alloydb\
    --network=default \
    --region=us-central1 \
    --database-version=POSTGRES_16

AlloyDB নিরাপদ এবং উচ্চ-পারফরম্যান্স অ্যাক্সেসের জন্য প্রাইভেট আইপি কানেক্টিভিটির উপর নির্ভর করে। গুগল-পরিচালিত পরিষেবা নেটওয়ার্কিং পরিকাঠামোর সাথে পরিষেবা পিয়ারিং সংযোগের জন্য আপনাকে আপনার VPC-এর মধ্যে একটি প্রাইভেট আইপি রেঞ্জ বরাদ্দ করতে হবে। নিম্নলিখিত কমান্ডটি চালান:

gcloud compute addresses create peering-range-for-alloydb \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="Automatically allocated IP range for service networking" \
    --network=default

এরপরে, VPC সার্ভিস পিয়ারিং কানেকশনটি তৈরি করুন। এটি আপনার গুগল ক্লাউড ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্ককে AlloyDB সহ গুগলের পরিচালিত পরিষেবাগুলির সাথে নিরাপদে এবং ব্যক্তিগতভাবে যোগাযোগ করতে দেয়। নিম্নলিখিত কমান্ডটি চালান:

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=peering-range-for-alloydb \
--network=default

এখন, আপনার AlloyDB ক্লাস্টারের মধ্যে প্রাইমারি ইনস্ট্যান্সটি তৈরি করুন। এটিই হলো প্রকৃত ডাটাবেস এন্ডপয়েন্ট, যার সাথে আপনার অ্যাপ্লিকেশনগুলো সংযোগ স্থাপন করবে। একটি AlloyDB ইনস্ট্যান্স তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud alloydb instances create alloydb-inst \
     --instance-type=PRIMARY \
     --cpu-count=2 \
     --region=us-central1 \
     --cluster=alloydb-cluster \
     --availability-type=ZONAL \
     --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

দ্রষ্টব্য: ইনস্ট্যান্স তৈরি হতে প্রায় ১০ মিনিট সময় লাগতে পারে। অনুগ্রহ করে এই প্রক্রিয়াটি শেষ হওয়া পর্যন্ত অপেক্ষা করুন এবং তারপরে পরবর্তী ধাপে যান।

ভার্টেক্স এআই ইন্টিগ্রেশন সক্ষম করুন

আপনার AlloyDB ইনস্ট্যান্সকে ভেক্টর সার্চ কোয়েরি (যা সিমান্টিক সার্চের মতো এআই কার্যকারিতার জন্য অপরিহার্য) সম্পাদন করতে এবং Vertex AI-তে ডেপ্লয় করা মডেল কল করার অনুমতি দিতে, আপনাকে AlloyDB সার্ভিস এজেন্টকে Vertex AI-এর অনুমতি প্রদান করতে হবে।

প্রথমে আপনার গুগল ক্লাউড প্রজেক্ট নম্বরটি সংগ্রহ করুন, কারণ আইএএম বাইন্ডিংয়ের জন্য এটি প্রয়োজন।

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud projects describe $PROJECT_ID --format="value(projectNumber)"

তারপর AlloyDB সার্ভিস এজেন্টের জন্য Vertex AI-কে অনুমতি দিন:

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"

পাবলিক আইপি সক্রিয় করুন

পরবর্তী ধাপগুলোর প্রস্তুতির জন্য, আমরা আমাদের AlloyDB ইনস্ট্যান্সে পাবলিক আইপি কানেক্টিভিটি চালু করব।

কনসোলে, স্ক্রিনের উপরের মাঝখানে থাকা সার্চ ফিল্ডে "alloydb" লিখুন, তারপর এডিট করে পাবলিক আইপি কানেক্টিভিটি সেকশনে যান। "Enable Public IP" চেকবক্সটি চেক করুন এবং আপনার ক্লাউড শেল মেশিনের আইপি অ্যাড্রেসটি প্রবেশ করান।

c200ee8f8b776ed4.png

আপনার ক্লাউড শেল মেশিনের আইপি পেতে, ক্লাউড শেল টার্মিনালে গিয়ে "ifconfig | grep -A 1 eth0" কমান্ডটি লিখুন। প্রাপ্ত ফলাফলের শেষের দুটি সংখ্যাকে '/16' মাস্ক সাইজের 0.0 দিয়ে প্রতিস্থাপন করুন। উদাহরণস্বরূপ, এটি দেখতে হবে "XX.XX.0.0/16" এর মতো, যেখানে XX হলো সংখ্যা।

এডিট ইনস্ট্যান্স পেজের "নেটওয়ার্কস" টেক্সটবক্সে এই আইপি-টি পেস্ট করুন।

a274101902019848.png

দ্রষ্টব্য: আপডেট হতে ৩ মিনিট পর্যন্ত সময় লাগতে পারে।

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

স্টোর ডাটাবেস তৈরি করুন

এখন আপনার স্পোর্টস শপের জন্য ডেটাবেস তৈরি করার এবং প্রাথমিক ডেটা লোড করার সময় এসেছে।

ক্লাউড শেল থেকে আপনার ব্যক্তিগত AlloyDB ইনস্ট্যান্সে psql সংযোগ করার সুযোগ দিতে, আপনাকে AlloyDB Auth Proxy ব্যবহার করতে হবে। এই ইউটিলিটিটি নিরাপদে আপনার সংযোগকে ডেটাবেসের সাথে টানেল করে। ( AlloyDB Auth Proxy দেখুন)

নিম্নলিখিত কমান্ড ব্যবহার করে AlloyDB Auth Proxy ডাউনলোড করুন:

wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy

এটিকে নির্বাহযোগ্য করুন:

chmod +x alloydb-auth-proxy

আপনার প্রথম ক্লাউড শেল টার্মিনাল উইন্ডোতে এই কমান্ডটি চালান। প্রক্সিটি ব্যাকগ্রাউন্ডে চলবে এবং সংযোগগুলো ফরওয়ার্ড করবে।

nohup ./alloydb-auth-proxy "projects/$PROJECT_ID/locations/us-central1/clusters/alloydb-cluster/instances/alloydb-inst" --public-ip &

psql ব্যবহার করে AlloyDB ইনস্ট্যান্সে সংযোগ করুন:

psql -h 127.0.0.1 -U postgres

দ্রষ্টব্য: অনুরোধ করা হলে, ক্লাস্টার তৈরির সময় postgres ব্যবহারকারীর জন্য সেট করা পাসওয়ার্ডটি লিখুন (যদি আপনি সরাসরি ডকুমেন্টেশন অনুসরণ করেন তবে পাসওয়ার্ডটি হলো alloydb )।

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

CREATE DATABASE store;
\c store
exit

উৎস কোড

এখন, কোডল্যাবের সোর্স কোড রিপোজিটরিটি ক্লোন করুন। ক্লোন করার আগে নিশ্চিত হয়ে নিন যে আপনি আপনার হোম ডিরেক্টরি বা একটি উপযুক্ত স্থানে আছেন এবং নিম্নলিখিত কমান্ডটি চালান:

git clone https://github.com/mtoscano84/sports-agent-adk-mcp-alloydb.git

ডাটাবেসটি পূরণ করুন

ডাটাবেস ডাম্প ফাইলটি অ্যাক্সেস করতে ক্লোন করা প্রজেক্টটির data ফোল্ডারে প্রবেশ করুন।

cd sports-agent-adk-mcp-alloydb/data

এরপর, রিপোজিটরি থেকে store_backup.sql ফাইলটি ব্যবহার করে স্যাম্পল ডেটাসেটটি আপনার store ডেটাবেসে ইম্পোর্ট করুন।

psql -h 127.0.0.1 -U postgres -d store -f store_backup.sql

দ্রষ্টব্য: এই ইম্পোর্ট করার সময় আপনি কিছু WARNING এবং ERROR মেসেজ দেখতে পারেন, যা এই কোডল্যাবের জন্য নিরাপদে উপেক্ষা করা যেতে পারে। ডাম্পটিতে সম্পূর্ণ স্কিমা থাকলে, এগুলি প্রায়শই পারমিশন বা আগে থেকে বিদ্যমান অবজেক্টের সাথে সম্পর্কিত। আপনি কিছু WARNING এবং ERROR পাবেন যা উপেক্ষা করা যেতে পারে।

৫. অনুমোদন পরিষেবা সেট আপ

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

প্রথমে, আপনি আপনার store ডাটাবেসের users টেবিলে একটি নমুনা ইউজার যুক্ত করবেন। এই ইউজারটি আপনার অ্যাপ্লিকেশনে অথেনটিকেশনের জন্য ব্যবহৃত হবে।

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

a15964d53b4b15e1.png

অনুরোধ করা হলে, ক্লাস্টার সেট আপ করার সময় আপনার তৈরি করা ক্রেডেনশিয়াল ব্যবহার করে AlloyDB Studio-তে সাইন ইন করুন:

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

SQL এডিটরে, ডেটাবেসে আপনার ইউজারকে যুক্ত করতে একটি INSERT স্টেটমেন্ট এক্সিকিউট করুন। নাম, পদবি এবং ইমেল অ্যাড্রেস পরিবর্তন করুন।

গুরুত্বপূর্ণ:

  • উদাহরণে যেমন আছে, অবস্থানটি তেমনই রাখুন।
  • গুগল ক্লাউড কনসোলে নিবন্ধন করার জন্য আপনি যে ইমেল ঠিকানাটি ব্যবহার করছেন, সেটিই ব্যবহার করুন।
INSERT INTO users (user_id, first_name, last_name, Address, city, postal_code, location, email)
VALUES (10,'John', 'Doe', 'Carrer Muntaner 39', 'Barcelona', '08019', '0101000020E61000008AAE0B3F38B144401FBB0B9414780140', 'john.doe@example.com');

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

কনসোলে, 'APIs and Services' থেকে 'Google OAuth Consent'-এ যান:

cb4db28df92abcb2.png

আপনার অ্যাপ্লিকেশনের ব্র্যান্ড তৈরি করতে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • অ্যাপের নাম: "স্পোর্টস শপিং এজেন্ট এআই"
  • ব্যবহারকারী সহায়তার ইমেল: "আপনার_ইমেল"
  • দর্শক: "বাহ্যিক"
  • যোগাযোগের তথ্য: "আপনার_ইমেইল"

এখন, আপনি OAuth ক্লায়েন্ট আইডি তৈরি করবেন, যা আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনটি গুগলের কাছে ব্যবহারকারীর পরিচয় যাচাই করার জন্য ব্যবহার করবে।

প্রথমে, আপনার গুগল ক্লাউড প্রজেক্ট নম্বরটি নিশ্চিত করুন। রিডাইরেক্ট ইউআরআইগুলো সঠিকভাবে কনফিগার করার জন্য এটি প্রয়োজন। একটি ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

যদি এই ক্লাউড শেল টার্মিনাল উইন্ডোতে আপনার PROJECT_ID ভেরিয়েবলটি সেট করা না থাকে, তাহলে নিম্নলিখিত কমান্ডটি চালান:

export PROJECT_ID=[YOUR_PROJECT_ID]

তারপর, নিম্নলিখিত কমান্ডটি ব্যবহার করে PROJECT_NUMBER-টি সংগ্রহ করুন:

gcloud projects describe $PROJECT_ID --format="value(projectNumber)"

তারপর, "APIs and Services" -> "Credentials" -> "Create Credentials" -> "OAuth Client ID"-তে যান।

45623e96d417192d.png

ক্রেডেনশিয়ালটি তৈরি করতে নিম্নলিখিত তথ্য ব্যবহার করুন:

  • অ্যাপ্লিকেশনের ধরণ: "ওয়েব অ্যাপ্লিকেশন"
  • নাম: "স্পোর্টস শপিং এজেন্ট এআই অ্যাপ"

অনুমোদিত জাভাস্ক্রিপ্ট উৎসসমূহ:

  • URL1: https://finn-frontend-[আপনার_প্রকল্প_নম্বর].us-central1.run.app

অনুমোদিত পুনঃনির্দেশ ইউআরআই:

  • URL1: https://finn-frontend-[আপনার_প্রকল্প_নম্বর].us-central1.run.app

দ্রষ্টব্য: https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app ইউআরএলটি হলো আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনের প্রত্যাশিত ডেপ্লয়মেন্ট ইউআরএল, যা এই কোডল্যাবের পরবর্তী অংশে সেট আপ করা হবে। নিশ্চিত করুন যে আপনি [YOUR_PROJECT_NUMBER]-এর জায়গায় আপনার কপি করা আসল নম্বরটি বসিয়েছেন।

1873d292fd27f07c.png

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

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

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

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

26596138ffc32d98.png

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

  1. আপনার ক্লাউড শেল টার্মিনালে, আপনার ক্লোন করা প্রজেক্ট রিপোজিটরির মধ্যে অবস্থিত toolbox ফোল্ডারে যান:
cd sports-agent-adk-mcp-alloydb/src/toolbox
  1. টুলবক্স বাইনারিটি ডাউনলোড করতে এবং এটিকে চালানোর অনুমতি দিতে নিম্নলিখিত কমান্ডগুলি চালান:
# see releases page for other versions
export VERSION=0.16.0

curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox

chmod +x toolbox

দ্রষ্টব্য: এখানে সংস্করণ ০.১৬.০ উল্লেখ করা হয়েছে। প্রোডাকশন পরিবেশের জন্য, সর্বদা টুলবক্স রিলিজ পৃষ্ঠা থেকে সর্বশেষ স্থিতিশীল রিলিজটি যাচাই করে ব্যবহার করুন।

  1. ক্লাউড শেল এডিটর-এ যান (আপনি টার্মিনাল থেকে এডিটর আইকনে ক্লিক করে এটি চালু বা বন্ধ করতে পারেন)।

4000e21f50fa507e.png

একই sports-agent-adk-mcp-alloydb/src/toolbox ডিরেক্টরিতে, আপনি tools.yaml নামের একটি ফাইল পাবেন। এই ফাইলটি খুলুন এবং পূর্ববর্তী ধাপগুলো থেকে পাওয়া আপনার OAuth ক্লায়েন্ট আইডি এবং গুগল ক্লাউড প্রজেক্ট আইডি দিয়ে প্লেসহোল্ডারগুলো আপডেট করুন।

4c0008d3d0f3bcfb.png

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

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

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

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

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

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

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

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

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

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

2a5bc3fb3bc5056e.png

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

cec224667bff2293.png

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

ce4c72e5be0f44c4.png

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

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

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

ক্লাউড শেল টার্মিনালে ফিরে আসুন এবং টুলবক্স ফোল্ডারে যান:

cd sports-agent-adk-mcp-alloydb/src/toolbox

আপনার PROJECT_ID এনভায়রনমেন্ট ভেরিয়েবলটি আপনার গুগল ক্লাউড প্রজেক্ট আইডিতে সেট করা আছে কিনা, তা নিশ্চিত করুন।

export PROJECT_ID=$PROJECT_ID

এরপর, যাচাই করুন যে প্রজেক্টটিতে নিম্নলিখিত গুগল ক্লাউড পরিষেবাগুলো সক্রিয় করা আছে।

gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

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

gcloud iam service-accounts create toolbox-identity

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'

এরপর, আপনি tools.yaml ফাইলটি একটি সিক্রেট হিসেবে আপলোড করবেন এবং যেহেতু আমাদের টুলবক্সটি ক্লাউড রানে ইনস্টল করতে হবে, তাই আমরা টুলবক্সের জন্য সর্বশেষ কন্টেইনার ইমেজটি ব্যবহার করব এবং সেটি IMAGE ভেরিয়েবলে সেট করে দেব।

gcloud secrets create tools --data-file=tools.yaml

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest

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

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 [sports-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [toolbox] revision [toolbox-00002-dn2] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-[YOUR_PROJECT_NUMBER].us-central1.run.app

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

https://toolbox-[YOUR_PROJECT_NUMBER].us-central1.run.app/api/toolset

আপনি গুগল ক্লাউড কনসোল থেকেও ক্লাউড রান-এ যেতে পারেন এবং সেখানে থাকা পরিষেবাগুলোর তালিকায় টুলবক্স পরিষেবাটি দেখতে পাবেন।

৭. ADK-এর উপর নির্মিত এজেন্ট

এই অংশে, আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে তৈরি আপনার এআই এজেন্টটিকে ক্লাউড রান-এ স্থাপন করবেন।

প্রথমে, ক্লাউড রানে আপনার এজেন্ট বিল্ড ও ডেপ্লয় করার জন্য এবং আর্টিফ্যাক্ট রেজিস্ট্রি ও ক্লাউড স্টোরেজের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার প্রোজেক্টে প্রয়োজনীয় এপিআই (API) সক্রিয় করুন। আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       storage.googleapis.com

এরপর, আমরা আমাদের প্রোজেক্টের ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্টে প্রয়োজনীয় অনুমতিগুলো বরাদ্দ করব। প্রথমে, PROJECT_NUMBER পেতে আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্টে অনুমতিসমূহ নির্ধারণ করুন:

# Grant Cloud Run service account access to GCS
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.writer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
--role="roles/artifactregistry.repoAdmin"

# Grant Vertex AI User role to the service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"

# Grant Vertex AI Model User role to the service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.modelUser"

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

আমরা আমাদের এজেন্টকে টুলের সাথে সংযুক্ত করতে যাচ্ছি। ADK-এর প্রেক্ষাপটে, একটি টুল হলো একটি AI এজেন্টকে প্রদত্ত একটি নির্দিষ্ট সক্ষমতা, যা এটিকে তার মূল টেক্সট তৈরি এবং যুক্তিনির্ভর ক্ষমতার বাইরেও বিভিন্ন কাজ সম্পাদন করতে এবং বাস্তব জগতের সাথে যোগাযোগ স্থাপন করতে সক্ষম করে।

আমাদের ক্ষেত্রে, আমরা এখন আমাদের এজেন্টকে সেই টুলগুলো দিয়ে সজ্জিত করতে যাচ্ছি যা আমরা ডেটাবেসের জন্য এমসিপি টুলবক্সে কনফিগার করেছি।

ক্লাউড শেল এডিটর ব্যবহার করে sports-agent-adk-mcp-alloydb/src/backend/ ফোল্ডারে যান এবং নিম্নলিখিত কোড দিয়ে 'finn_agent.py' ফাইলটি সম্পাদনা করুন। লক্ষ্য করুন যে আমরা পূর্ববর্তী ধাপে ডেপ্লয় করা MCP টুলবক্স সার্ভারের ক্লাউড রান সার্ভিস ইউআরএল ব্যবহার করছি:

14cdb7fdcb9f6176.png

ক্লাউড রানে আমাদের এজেন্ট স্থাপন করুন

অবশেষে, আপনি আপনার কনফিগার করা এআই এজেন্টটিকে ক্লাউড রান-এ স্থাপন করবেন, যা একটি HTTP এন্ডপয়েন্টের মাধ্যমে অ্যাক্সেসযোগ্য হবে।

প্রথমে, আপনার এজেন্টের কন্টেইনার ইমেজগুলো সংরক্ষণের জন্য আর্টিফ্যাক্ট রেজিস্ট্রি-তে একটি ডকার রিপোজিটরি তৈরি করুন। ক্লাউড শেল-এ নিম্নলিখিত কমান্ডটি চালান:

gcloud artifacts repositories create finn-agent-images \
    --repository-format=docker \
    --location=us-central1 \
    --project=$PROJECT_ID \
    --description="Repository for finn-agent images"

এরপর, ক্লাউড বিল্ড ব্যবহার করে আপনার এজেন্টের জন্য ডকার ইমেজ তৈরি করুন। আপনার ক্লোন করা প্রজেক্টের রুট ডিরেক্টরি ( sports-agent-adk-mcp-alloydb/ ) থেকে এই কমান্ডটি চালান:

gcloud builds submit src/backend/ --tag us-central1-docker.pkg.dev/$PROJECT_ID/finn-agent-images/finn-agent

এখন, এজেন্ট সার্ভিসটি ডেপ্লয় করুন। এই কমান্ডটি একটি ক্লাউড রান সার্ভিস তৈরি করবে, আর্টিফ্যাক্ট রেজিস্ট্রি থেকে ইমেজটি পুল করবে এবং এনভায়রনমেন্ট ভেরিয়েবল কনফিগার করবে।

gcloud run deploy finn-agent \
    --image us-central1-docker.pkg.dev/$PROJECT_ID/finn-agent-images/finn-agent \
    --platform managed \
    --allow-unauthenticated \
    --region us-central1 \
    --project $PROJECT_ID --set-env-vars="GOOGLE_CLOUD_PROJECT=$PROJECT_ID,GOOGLE_CLOUD_LOCATION=us-central1,GOOGLE_GENAI_USE_VERTEXAI=TRUE"

দ্রষ্টব্য: আমরা $PROJECT_ID শেল ভেরিয়েবলটি ব্যবহার করে GOOGLE_CLOUD_PROJECT সহ এনভায়রনমেন্ট ভেরিয়েবলগুলো ডায়নামিকভাবে সেট করছি।

আপনি এর অনুরূপ একটি আউটপুট পাবেন, যা আপনার এজেন্টের সফল ডেপ্লয়মেন্ট নির্দেশ করে:

Deploying container to Cloud Run service [finn-agent] in project [sports-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [finn-agent] revision [finn-agent-00005-476] has been deployed and is serving 100 percent of traffic.
Service URL: https://finn-agent-359225437509.us-central1.run.app

অবশেষে, আপনার ক্লাউড শেল টার্মিনাল থেকে এই curl কমান্ডটি চালিয়ে আপনার এজেন্ট পরীক্ষা করুন:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"message":"Hello"}' \
  https://finn-agent-[YOUR_PROJECT_NUMBER].us-central1.run.app/chat

আপনি এর মতো একটি আউটপুট পাবেন:

হ্যালো! আমি ফিন, আপনার এআই স্পোর্টস শপিং সহকারী। আমি আপনাকে খেলাধুলার পণ্য, সরঞ্জাম ও উপকরণ খুঁজে পেতে সাহায্য করতে পারি। আজ আমি আপনাকে কীভাবে সহায়তা করতে পারি?

এই পর্যায়ে, আপনি সফলভাবে AlloyDB, MCP টুলবক্স এবং ADK ব্যবহার করে নির্মিত আপনার এজেন্টের ডেপ্লয়মেন্ট যাচাই করেছেন।

৮. ফ্রন্টএন্ড স্থাপন করুন

এই অংশে, আপনি ক্লাউড রান-এ আপনার এআই অ্যাসিস্ট্যান্টের জন্য কথোপকথনমূলক ইউজার ইন্টারফেসটি স্থাপন করবেন। এই ফ্রন্টএন্ডটি রিয়্যাক্ট এবং জাভাস্ক্রিপ্ট ব্যবহার করে তৈরি করা হয়েছে।

ডিপ্লয় করার আগে, আপনাকে আপনার ডিপ্লয় করা এজেন্টের URL এবং আপনার OAuth ক্লায়েন্ট আইডি দিয়ে ফ্রন্টএন্ডের সোর্স কোড আপডেট করতে হবে।

ক্লাউড শেল এডিটর ব্যবহার করে sports-agent-adk-mcp-alloydb/src/frontend/src/pages/ যান এবং Home.jsx ফাইলটি খুলুন। আপনাকে আপনার এজেন্টের ক্লাউড রান সার্ভিস ইউআরএল-এর জন্য প্লেসহোল্ডারটি আপডেট করতে হবে। তারপর, পূর্ববর্তী ধাপ থেকে পাওয়া আপনার এজেন্টের ক্লাউড রান সার্ভিস ইউআরএল দিয়ে এটি প্রতিস্থাপন করুন (যেমন, https://finn-agent-[YOUR_PROJECT_NUMBER].us-central1.run.app )।

dac45857844de929.png

এখন, sports-agent-adk-mcp-alloydb/src/frontend/src/components/ যান এবং GoogleSignInButton.jsx ফাইলটি খুলুন। "Authorization Service Setup" সেকশন থেকে পাওয়া OAuth ক্লায়েন্ট আইডি দিয়ে এই ফাইলটি আপডেট করতে হবে:

82db1e66c439a9cb.png

ক্লাউড রানে ফ্রন্টএন্ড ডিপ্লয় করুন

আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনটি এখন কনফিগার করা হয়ে গেছে, আপনি এটি ক্লাউড রান-এ ডেপ্লয় করার জন্য প্রস্তুত।

আপনার ফ্রন্টএন্ড ইমেজগুলির জন্য আর্টিফ্যাক্ট রেজিস্ট্রি-তে একটি ডকার রিপোজিটরি তৈরি করতে, রুট ডিরেক্টরি ( sports-agent-adk-mcp-alloydb/ ) থেকে একটি ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান।

gcloud artifacts repositories create finn-frontend-images \
    --repository-format=docker \
    --location=us-central1 \
    --project=$PROJECT_ID \
    --description="Repository for finn-frontend images"

এরপর, ক্লাউড বিল্ড ব্যবহার করে আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনের জন্য ডকার ইমেজ তৈরি করুন। আপনার প্রোজেক্টের রুট ডিরেক্টরি থেকে এই কমান্ডটি চালান:

gcloud builds submit src/frontend/ --tag us-central1-docker.pkg.dev/$PROJECT_ID/finn-frontend-images/finn-frontend

অবশেষে, আমরা নিম্নলিখিত কমান্ডটি ব্যবহার করে ক্লাউড রান-এ ফ্রন্টএন্ডটি ডেপ্লয় করব:

gcloud run deploy finn-frontend \
    --image us-central1-docker.pkg.dev/$PROJECT_ID/finn-frontend-images/finn-frontend \
    --platform managed \
    --allow-unauthenticated \
    --region us-central1 \
    --project $PROJECT_ID

আপনি এর অনুরূপ একটি আউটপুট পাবেন, যা আপনার ফ্রন্টএন্ডের সফল ডেপ্লয়মেন্ট নির্দেশ করে:

Deploying container to Cloud Run service [finn-frontend] in project [sport-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [finn-frontend] revision [finn-frontend-00002-mwc] has been deployed and is serving 100 percent of traffic.
Service URL: https://finn-frontend-535807247199.us-central1.run.app

আপনার ওয়েব ব্রাউজারটি খুলুন এবং পূর্ববর্তী ধাপের সার্ভিস ইউআরএলটি ব্যবহার করে আপনার এআই এজেন্ট দ্বারা চালিত সদ্য ডেপ্লয় করা অ্যাপ্লিকেশনটি খুলুন!

15bdc2dfd6e47c69.png

৯. আমাদের এজেন্ট চালান

আপনার স্পোর্টস স্টোর এজেন্ট এআই সহকারী, ফিন, এখন সম্পূর্ণরূপে মোতায়েন করা হয়েছে এবং কেনাকাটায় সাহায্য করার জন্য প্রস্তুত!

আপনার ওয়েব ব্রাউজারটি খুলুন এবং পূর্ববর্তী ধাপ থেকে আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনের সার্ভিস ইউআরএল-এ যান। ইউআরএল-টি এই ফরম্যাট অনুসরণ করে: https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app

ফ্রন্টএন্ড লোড হয়ে গেলে, আপনার গুগল ক্রেডেনশিয়াল ব্যবহার করে প্রমাণীকরণের জন্য উপরের ডানদিকের বোতামে (যেটিতে সাধারণত "সাইন ইন" বা এই ধরনের কোনো লেখা থাকে) ক্লিক করুন। এই কাজটি আপনার পূর্বে সেট আপ করা OAuth কনফিগারেশনটি ব্যবহার করবে।

সফলভাবে প্রমাণীকরণের পর, আপনি ফিনের সাথে আলাপচারিতার জন্য প্রস্তুত! আপনার আলাপচারিতামূলক কেনাকাটার অভিজ্ঞতা শুরু করতে 'এখনই কিনুন' বোতামে ক্লিক করুন।

2b22ae486cebff1b.png

আপনার এআই এজেন্টের বিভিন্ন কার্যকারিতা পরীক্ষা করতে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করুন। এই নির্দেশাবলী এক এক করে চ্যাট ইন্টারফেসে কপি ও পেস্ট করুন:

  1. হ্যালো ফিন!
  2. আমি আল্ট্রা-ট্রেইলের জন্য দৌড়ানোর জুতো খুঁজছি।
  3. আল্ট্রা গ্লাইড সম্পর্কে আমাকে আরও বিস্তারিত বলুন।
  4. আমার কেনাকাটার তালিকায় আল্ট্রা গ্লাইড, সাইজ ৪০, লাল/ধূসর রঙটি যোগ করুন।
  5. আমার কেনাকাটার তালিকা দেখান
  6. আমার কাছাকাছি দোকান খুঁজুন
  7. অনুগ্রহ করে, স্পোর্টস ডায়াগোনাল মার স্টোরের জন্য আমার কেনাকাটার তালিকাটি ব্যবহার করে অর্ডার দিন।
  8. আমার অর্ডারগুলোর স্ট্যাটাস চেক করুন
  9. স্পোর্টস ডায়াগোনাল মার স্টোরের জন্য ডেলিভারি পদ্ধতিগুলো তালিকাভুক্ত করুন।
  10. আমার অর্ডার [YOUR_OR_NUMBER]-এর জন্য ডেলিভারি পদ্ধতি এক্সপ্রেস ডেলিভারিতে আপডেট করুন।
  11. আমার অর্ডারগুলোর স্ট্যাটাস চেক করুন
  12. ধন্যবাদ ফিন!

স্থাপনকৃত ফিন এজেন্ট এবং এর সক্ষমতাগুলো চাক্ষুষভাবে দেখতে নিচের ভিডিওটি দেখুন:

AlloyDB দ্বারা চালিত একটি স্পোর্টস এজেন্ট এআই অ্যাসিস্ট্যান্টের ডেমো

১০. ফলাফল

পূর্ববর্তী স্ক্রিপ্টটি কার্যকর করার মাধ্যমে, আপনি আপনার ADK এজেন্টের সম্পূর্ণ ইন্টিগ্রেশন, AlloyDB-এর সাথে এর সংযোগ এবং MCP টুলবক্সের ব্যবহার সফলভাবে যাচাই করেছেন। এই বিভাগে আপনার বাস্তবায়িত মূল সক্ষমতাগুলো তুলে ধরা হয়েছে।

  1. অনুমোদন পরিষেবা

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

এই শক্তিশালী প্রমাণীকরণ ব্যবস্থাটি আপনার এজেন্টিক অ্যাপ্লিকেশনকে প্রম্পট ইনজেকশন থেকে সুরক্ষিত রাখার জন্য একটি চমৎকার সমাধান প্রদান করে। প্রম্পট ইনজেকশন হলো এক ধরনের আক্রমণ, যেখানে ক্ষতিকারক ইনপুট এজেন্টের উদ্দিষ্ট আচরণকে পাশ কাটিয়ে বা পরিবর্তন করার চেষ্টা করে। আরও বিস্তারিত জানতে, আপনি প্রম্পট ইনজেকশন সম্পর্কিত উইকিপিডিয়া নিবন্ধটি দেখতে পারেন।

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

27b03aa215c454a.png

  1. ভেক্টর অনুসন্ধান

আপনার এজেন্টিক অ্যাপ্লিকেশনটি উন্নত কোয়েরি সক্ষমতা প্রদানের জন্য, বিশেষত ভেক্টর সার্চের মাধ্যমে, AlloyDB for PostgreSQL ব্যবহার করে। AlloyDB সরাসরি ডেটাবেসের ভিতরে SQL ফাংশন ব্যবহার করে অনলাইন এমবেডিং জেনারেশন সমর্থন করে।

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

আপনার আবেদনে, আপনি এই কৌশলটির অভিজ্ঞতা লাভ করেন যখন আপনি ফিনকে জিজ্ঞাসা করেন: "আমি একটি আল্ট্রা-ট্রেইলের জন্য দৌড়ানোর জুতো খুঁজছি"।

1a9172b827077bde.png

  1. ভূ-স্থানিক সক্ষমতা (পোস্টজিআইএস)

AlloyDB for PostgreSQL স্ট্যান্ডার্ড PostgreSQL ফিচারগুলোর সাথে শতভাগ সামঞ্জস্য বজায় রাখে। এই অ্যাপ্লিকেশনটিতে, আমরা এজেন্টকে ভূ-স্থানিক অবস্থান নির্ণয়ের সক্ষমতা প্রদানের জন্য জনপ্রিয় PostgreSQL এক্সটেনশন PostGIS ব্যবহার করি।

যখন আপনি এজেন্টকে জিজ্ঞাসা করেন: "আমার কাছাকাছি দোকান খুঁজুন", তখন এজেন্ট এমন একটি টুল চালু করে যা ডেটাবেসের মধ্যে থাকা PostGIS ইনডেক্স ব্যবহার করে ব্যবহারকারীর নির্দিষ্ট বা অনুমান করা অবস্থানের সবচেয়ে কাছের দোকানগুলো দক্ষতার সাথে খুঁজে বের করে।

fa491f214521371.png

১১. (ঐচ্ছিক) AlloyDB AI ন্যাচারাল ল্যাঙ্গুয়েজ থেকে SQL পরীক্ষা করুন

এই বিভাগে AlloyDB for PostgreSQL-এর একটি উন্নত, প্রি-জিএ (Pre-GA) ফিচার— ন্যাচারাল ল্যাঙ্গুয়েজ টু এসকিউএল (Natural Language to SQL) —পরিচয় করিয়ে দেওয়া হয়েছে। এই ফিচারটি আপনাকে আপনার ডাটাবেসের মধ্যে থাকা এআই (AI)-এর শক্তিকে কাজে লাগিয়ে, স্বাভাবিক ভাষার নির্দেশনা থেকে সরাসরি এসকিউএল (SQL) কোয়েরি তৈরি করার সুযোগ দেয়।

গুরুত্বপূর্ণ: যেহেতু এটি একটি প্রি-জিএ ফিচার, তাই এর জন্য আপনাকে সাইন আপ করতে হবে এবং আপনার গুগল ক্লাউড প্রজেক্ট, অ্যালয়ডিবি ক্লাস্টার ও ডেটাবেসের অ্যাক্সেস সক্রিয় করে নিতে হবে।

  • অ্যাক্সেসের জন্য নিবন্ধন করুন: আপনার প্রকল্পের জন্য অ্যাক্সেস অনুরোধ করতে অনুগ্রহ করে এই ফর্মটি পূরণ করুন।
  • ডকুমেন্টেশন: অফিসিয়াল ডকুমেন্টেশনে আপনি AlloyDB AI ন্যাচারাল ল্যাঙ্গুয়েজ টু SQL ব্যবহারের বিষয়ে আরও জানতে পারবেন।

সাইন আপ করে আপনার প্রোজেক্টের জন্য অ্যাক্সেস নিশ্চিত করার পর, AlloyDB Studio-তে নিম্নলিখিত ধাপগুলো অনুসরণ করুন।

a15964d53b4b15e1.png

ক্লাস্টার তৈরির সময় আমাদের তৈরি করা ক্রেডেনশিয়াল ব্যবহার করে AlloyDB-তে সাইন ইন করুন:

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

১- alloydb_ai_nl এক্সটেনশনটি তৈরি করুন। এই এক্সটেনশনটি AlloyDB AI-এর প্রাকৃতিক ভাষা সক্ষমতার জন্য প্রয়োজনীয় ফাংশনগুলো প্রদান করে।

CREATE EXTENSION alloydb_ai_nl cascade;

২- আপনার অ্যাপ্লিকেশনের জন্য একটি কনফিগারেশন তৈরি করুন। একটি কনফিগারেশন সেই স্কিমা কনটেক্সটকে সংজ্ঞায়িত করে, যা এআই মডেল আপনার ডাটাবেস বোঝার জন্য ব্যবহার করবে।

SELECT
 alloydb_ai_nl.g_create_configuration(
   'finn_app_config'        -- configuration_id
 );

৩- কনফিগারেশনের সাথে স্কিমা / টেবিলগুলো নিবন্ধন করুন। আপনার অ্যাপ্লিকেশনের এজেন্ট যেসব নির্দিষ্ট টেবিল এবং স্কিমার সাথে কাজ করবে, সেগুলো কনফিগারেশনে যোগ করুন।

SELECT alloydb_ai_nl.g_manage_configuration(
   operation => 'register_table_view',
   configuration_id_in => 'finn_app_config',
   table_views_in=>'{public.products, public.products_variants, public.orders, public.orders_items, public.users, public.inventory, public.stores}'
);

৪- স্কিমা / টেবিলের জন্য কনটেক্সট তৈরি করুন। এই ধাপে এআই মডেলের জন্য প্রয়োজনীয় কনটেক্সট তৈরি করতে রেজিস্টার্ড টেবিলগুলো প্রসেস করা হয়। এই প্রক্রিয়াটিতে প্রায় ২-৩ মিনিট সময় লাগতে পারে।

SELECT alloydb_ai_nl.generate_schema_context(
 'finn_app_config',
 TRUE
);

৫- নির্দিষ্ট টেবিল এবং কলামের জন্য স্বয়ংক্রিয়ভাবে তৈরি হওয়া কনটেক্সট পরীক্ষা করুন (ঐচ্ছিক)। এআই মডেল আপনার স্কিমাটিকে কীভাবে ব্যাখ্যা করে, তা বোঝার জন্য আপনি তৈরি হওয়া কনটেক্সটটি খতিয়ে দেখতে পারেন।

SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.inventory';


SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.products.name';


SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.products.popularity_score';

আপনি আমাদের এজেন্টের 'tools.yaml' ফাইলে 'check-inventory-by-store-brand-category' নামের একটি টুল পাবেন। এই টুলটি AlloyDB ন্যাচারাল ল্যাঙ্গুয়েজ টু SQL ব্যবহার করে:

2cd70da8caefe2f5.png

একটি ওয়েব ব্রাউজার খুলুন এবং এই সার্ভিস ইউআরএলটি ব্যবহার করে অ্যাপ্লিকেশনটি খুলুন: "https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app"

তারপর, এই নতুন সক্ষমতাটি পরীক্ষা করার জন্য চ্যাট ইন্টারফেসে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করুন:

  • হ্যালো ফিন!
  • "স্পোর্টস ডায়াগোনাল মার" স্টোরে সালোমন-এর রানিং ক্যাটাগরির পণ্যের মোট পরিমাণ কত?

আপনার স্বাভাবিক ভাষার ইনপুট থেকে AlloyDB AI দ্বারা তৈরি প্রকৃত SQL কোয়েরিটি দেখতে, AlloyDB Studio- তে ফিরে যান এবং নিম্নলিখিত কোয়েরিটি চালান:

SELECT
   alloydb_ai_nl.get_sql(
       'finn_app_config',
       'What is the total quantity of category Running products of Salomon in stock at the "Sports Diagonal Mar" store?'
   ) ->> 'sql';

এটি AlloyDB AI দ্বারা তৈরি SQL স্টেটমেন্টটি প্রদর্শন করবে।

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

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

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

১৩. অভিনন্দন

অভিনন্দন! আপনি ADK, MCP টুলবক্স ফর ডেটাবেস এবং AlloyDB ফর PostgreSQL ব্যবহার করে সফলভাবে একটি ডেটা-ড্রাইভেন এজেন্টিক এআই অ্যাপ্লিকেশন তৈরি করেছেন।

আরও তথ্যের জন্য, প্রোডাক্ট ডক্স দেখুন: এজেন্ট ডেভেলপমেন্ট কিট , এমসিপি টুলবক্স ফর ডেটাবেস এবং অ্যালয়ডিবি ফর পোস্টগ্রেসকিউএল।