Vertex AI এবং Svelte Kit সহ Text Summarizer অ্যাপ

১. ভূমিকা

এই কোডল্যাবে, আমি একটি ওয়েব অ্যাপ তৈরির ধাপগুলো তালিকাভুক্ত করেছি যা আপনাকে Svelte Kit ফ্রেমওয়ার্কে Vertex AI Large Language Model for text generation ( text-bison ) API ব্যবহার করে টেক্সট সামারাইজেশন করতে দেয়। ব্যবহৃত সার্ভিস এবং টেক স্ট্যাকের তালিকা নিচে দেওয়া হলো:

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

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

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

  • পাম এপিআই (Palm API) আহ্বান করার জন্য একটি পাইথন ক্লাউড ফাংশন (Python Cloud Function) ব্যবহার করা হয়।
  • ক্লাউড ফাংশনের মাধ্যমে ভার্টেক্স এআই এপিআই-এর সাথে ইন্টারঅ্যাক্ট করার জন্য ইউজার ইন্টারফেসের একটি স্ভেল্ট ওয়েব অ্যাপ্লিকেশন।
  • উপরে তৈরি করা অ্যাপটি সার্ভারবিহীনভাবে ডেপ্লয় করার জন্য একটি ক্লাউড রান সার্ভিস।

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

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

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন তা জানুন।
  3. গুগল ক্লাউড পরিষেবাগুলির সাথে সংযোগ স্থাপনের জন্য আপনি ক্লাউড শেল (Cloud Shell) ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ। gcloud কমান্ড এবং এর ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন। ক্লাউড কনসোল থেকে, উপরের ডান কোণায় থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন:

51622c00acec2fa.png

আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud config set project <YOUR_PROJECT_ID>
  1. ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে সমস্ত প্রয়োজনীয় API সক্রিয় করা আছে কিনা তা নিশ্চিত করুন:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে REGION এবং PROJECT_ID-এর জন্য এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন:
export PROJECT_ID=<your project id>

export REGION=asia-south1

৪. ভার্টেক্স এআই এপিআই আহ্বান করার জন্য ক্লাউড ফাংশন

আমরা একটি পাইথন ক্লাউড ফাংশন তৈরি করব এবং এই ফাংশনের মধ্যে ভার্টেক্স এআই এপিআই কল করব।

একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করা

ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন।

gcloud iam service-accounts create vertex-service-acc

আপনার প্রজেক্ট ও রিসোর্সসমূহে অ্যাক্সেস দেওয়ার জন্য, সার্ভিস অ্যাকাউন্টটিকে একটি রোল প্রদান করুন।

gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer

আপনার গুগল অ্যাকাউন্টকে এমন একটি ভূমিকা (role) প্রদান করতে, যা আপনাকে সার্ভিস অ্যাকাউন্টের ভূমিকাগুলো ব্যবহার করতে এবং সার্ভিস অ্যাকাউন্টটিকে অন্যান্য রিসোর্সের সাথে সংযুক্ত করতে দেয়। USER_EMAIL-এর জায়গায় আপনার গুগল অ্যাকাউন্টের ইমেল আইডি লিখুন।

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

পাইথন ফাংশন তৈরি করা

ক্রমাগত কথোপকথনের প্রয়োজন ছাড়াই, একটিমাত্র এপিআই (API) প্রতিক্রিয়ার মাধ্যমে সম্পন্ন করা যায় এমন কাজের জন্য টেক্সটের ক্ষেত্রে PaLM 2 আদর্শ। চলুন, এখন এর জন্য ক্লাউড ফাংশনটি তৈরি করা যাক।

ক্লাউড শেল ব্যবহার করে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে যান। (পূর্ববর্তী বিভাগে খোলা একই টার্মিনালটি ব্যবহার করুন):

mkdir vertex-ai-functions

cd vertex-ai-functions

পাইথন ক্লাউড ফাংশন লেখার জন্য একটি main.py ফাইল এবং ডিপেন্ডেন্সি সংরক্ষণের জন্য requirements.txt ফাইল তৈরি করুন।

touch main.py requirements.txt

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

গুগল ক্লাউড এডিটর খুলুন। এটি খোলার জন্য, প্রথমে একটি নতুন গুগল ক্লাউড কনসোল ট্যাব খুলুন এবং 'ACTIVATE CLOUD SHELL' বোতামে ক্লিক করুন। টার্মিনালটি লোড হলে, নিচের ছবিতে দেখানো অনুযায়ী দ্রুত 'OPEN EDITOR' বোতামে ক্লিক করুন।

8e501bd2c41d11b8.png

এডিটরটি খুললে আপনি main.py ফাইলটি দেখতে পাবেন। এই রিপোজিটরি লিঙ্ক থেকে কোডটি নিয়ে এর ভেতরের লেখাগুলো প্রতিস্থাপন করুন। কোডটির ব্যাখ্যা কোড কমেন্ট হিসেবে দেওয়া আছে। সংক্ষেপে, এই কোডটি Vertex AI ব্যবহার করে টেক্সট ইনপুটের সংক্ষিপ্ত সারাংশ তৈরি করার একটি সহজ উপায় প্রদান করে।

requirements.txt ফাইলে নিম্নলিখিত প্যাকেজ নির্ভরতাগুলো রয়েছে: functions-framework==3.*: এটি নিশ্চিত করে যে ফাংশনটি ফাংশনস ফ্রেমওয়ার্কের সর্বশেষ ফিচার এবং বাগ ফিক্সগুলো ব্যবহার করছে। google-cloud-aiplatform: ভার্টেক্স এআই টেক্সট জেনারেশন মডেল ব্যবহার করার জন্য এটি আবশ্যক।

requirements.txt ফাইলে এটি যোগ করুন:

functions-framework==3.*
google-cloud-aiplatform

ক্লাউড ফাংশনে স্থাপন করুন

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

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

সার্চ বার ব্যবহার করে ক্লাউড ফাংশন কনসোলে যান:

43a6b247098a9edb.png

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

৫. ফ্রন্ট-এন্ড তৈরি এবং স্থাপন করুন

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

রিপোজিটরি ক্লোন করুন এবং ডকারফাইল সেটআপ করুন

রুট ডিরেক্টরিতে যান এবং গিট রিপোজিটরিটি ক্লোন করুন।

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

এই অ্যাপ্লিকেশনটি চালানোর জন্য, আপনাকে Dockerfile-এ PUBLIC_FUNCTION_URL এনভায়রনমেন্ট ভেরিয়েবলটি যোগ করতে হবে। এই URL-টি হলো পূর্ববর্তী অংশে তৈরি ও সংরক্ষণ করা ক্লাউড ফাংশন URL।

ক্লাউড এডিটর খুলুন এবং Dockerfile ফাইলের বিষয়বস্তু সম্পাদনা করুন। PUBLIC_FUNCTION_URL ভেরিয়েবলটির পরিবর্তে আপনার ক্লাউড ফাংশন URL লিখুন।

2958bb12343368a9.png

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

আমরা আমাদের ডকার ইমেজ তৈরি ও সংরক্ষণের জন্য গুগল আর্টিফ্যাক্ট রেজিস্ট্রি ব্যবহার করব। সার্ভারলেস আর্কিটেকচারে কন্টেইনারগুলো ডেপ্লয় করতে ক্লাউড রান ব্যবহৃত হয়।

ক্লাউড শেল টার্মিনালে নিচের কমান্ডটি চালিয়ে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি করুন:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি URL-এর জন্য একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন।

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

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

docker build . -t ${DOCKER_URL}

ইমেজটি আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করুন।

docker push ${DOCKER_URL}

ক্লাউড রানে ডকার কন্টেইনার স্থাপন করুন।

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

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

cd94442961bb5308.gif

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

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

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

৭. অভিনন্দন

অভিনন্দন! আপনি সফলভাবে একটি Vertex AI PaLM2 API ব্যবহার করে প্রোগ্রাম্যাটিকভাবে টেক্সট সামারাইজেশন করেছেন, একটি Svelte ওয়েব অ্যাপ তৈরি করেছেন এবং ক্লাউড ফাংশনসে ডেপ্লয় করেছেন। উপলব্ধ মডেলগুলো সম্পর্কে আরও জানতে Vertex AI LLM প্রোডাক্ট ডকুমেন্টেশন দেখুন।