পরিকাঠামোর প্রতি অভিপ্রায়: GKE-তে এজেন্ট-চালিত স্থানান্তর

১. ভূমিকা

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

জিসিএ এমসিপি সার্ভারের সক্ষমতা

GCA MCP সার্ভার এজেন্টকে বেশ কিছু বিশেষায়িত টুল সরবরাহ করে:

  • ask_cloud_assist : এটি গুগল ক্লাউড প্ল্যাটফর্ম অ্যাসিস্ট্যান্স এবং জেমিনি ক্লাউড অ্যাসিস্ট এজেন্টের প্রধান ইন্টারফেস। জেমিনি ক্লাউড অ্যাসিস্টের সমস্ত কার্যকারিতা এই টুলের মাধ্যমে ব্যবহার করা যায় এবং এটি অন্যান্য এমসিপি টুলগুলোর কার্যকারিতাও অন্তর্ভুক্ত করে।
  • design_infra : এটি গুগল ক্লাউড প্ল্যাটফর্মে ইনফ্রাস্ট্রাকচার ডিজাইন এবং আর্কিটেক্ট করার ওয়ার্কফ্লো সমর্থন করে।
  • investigate_issue : এটি গুগল ক্লাউডে সমস্যা সমাধানের ওয়ার্কফ্লো সমর্থন করে। এটি দ্রুত সমস্যা সমাধান করতে পারে অথবা একটি Investigation রিসোর্সের মাধ্যমে আরও গভীর সমস্যা সমাধান করতে পারে।
  • invoke_operation : এটি গুগল ক্লাউডে রিসোর্স তৈরি, আপডেট এবং ডিলিট করার ওয়ার্কফ্লো সমর্থন করে। এই টুলটি শুধুমাত্র তখনই কার্যকর হয় যখন এজেন্ট অ্যাকশন সক্রিয় থাকে। জেমিনি ক্লাউড অ্যাসিস্ট-এ রাইট অপারেশন শুধুমাত্র এই টুলটির মাধ্যমেই সম্পাদন করা যায়।
  • optimize_costs : এটি গুগল ক্লাউডের খরচ বিশ্লেষণ, ট্র্যাক এবং অপ্টিমাইজ করার জন্য ওয়ার্কফ্লো সমর্থন করে। এটি ব্যয়ের বিস্তারিত বিভাজন প্রদান করে এবং অলস বা কম ব্যবহৃত রিসোর্স খুঁজে বের করার মাধ্যমে খরচ সাশ্রয়ের সুযোগ চিহ্নিত করে।

আপনি একটি GKE ক্লাস্টার এবং একটি ডাউনলোড করা মডেল সহ একটি পূর্ব-প্রস্তুত পরিবেশ দিয়ে শুরু করবেন। এরপর আপনি gemini-cli ব্যবহার করে এজেন্টকে ক্লাউড রান থেকে GKE-তে একটি ওয়ার্কলোড মাইগ্রেট করতে এবং আপনার স্টোরেজ বাকেটে থাকা প্রস্তুত মডেলটি ব্যবহার করে vLLM সহ একটি Gemma ইনফারেন্স ইনস্ট্যান্স চালু করতে নির্দেশ দেবেন।

আপনি যা করবেন

  • Terraform ব্যবহার করে একটি GKE ক্লাস্টার তৈরি করুন এবং একটি Gemma মডেল ডাউনলোড করুন।
  • এজেন্ট রুল এবং একটি এমসিপি সার্ভার দিয়ে gemini-cli কনফিগার করুন।
  • এজেন্টকে সম্পূর্ণ মাইগ্রেশন ও ডেপ্লয়মেন্ট সম্পাদন করার নির্দেশ দিতে একটি নির্দিষ্ট স্বাভাবিক ভাষার প্রম্পট ব্যবহার করুন।
  • এজেন্ট দ্বারা সম্পাদিত স্থাপন যাচাই করুন।

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

  • ক্রোমের মতো একটি ওয়েব ব্রাউজার।
  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
  • একটি হাগিং ফেস টোকেন (স্টেজিং পর্যায়ে জেমা মডেল ডাউনলোড করার জন্য আবশ্যক)।

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

আনুমানিক সময়কাল: ৪৫-৬০ মিনিট।

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

একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন বা নির্বাচন করুন

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

ক্লাউড শেল শুরু করুন

  1. Google Cloud কনসোলের শীর্ষে থাকা Activate Cloud Shell-এ ক্লিক করুন।
  2. প্রমাণীকরণ যাচাই করুন:
gcloud auth list
  1. আপনার প্রকল্পটি নিশ্চিত করুন:
gcloud config get project
  1. প্রয়োজনে সেট করুন:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

এপিআই সক্ষম করুন

প্রয়োজনীয় সকল API সক্রিয় করতে এই কমান্ডটি চালান:

gcloud services enable \
  run.googleapis.com \
  container.googleapis.com \
  aiplatform.googleapis.com \
  compute.googleapis.com \
  cloudbuild.googleapis.com \
  cloudresourcemanager.googleapis.com

এছাড়াও, Gemini Cloud Assist MCP পরিষেবাটি সক্রিয় করুন:

gcloud beta services mcp enable geminicloudassist.googleapis.com

৩. পরিবেশ মঞ্চস্থ করুন

এই ধাপে, আপনি একটি কাস্টম চ্যাটবট ইমেজ তৈরি করে, GKE ক্লাস্টার তৈরি করে এবং জেমা মডেলটি একটি ক্লাউড স্টোরেজ বাকেটে ডাউনলোড করে পরিবেশ প্রস্তুত করবেন।

প্রায়শই, সংস্থাগুলো জেমিনি এপিআই (Gemini API) দিয়ে শুরু করে, কিন্তু পরবর্তীতে আরও বেশি নিয়ন্ত্রণ, কাস্টমাইজেশন, বা তাদের ব্যবসার জন্য বিশেষভাবে তৈরি কোনো সংস্করণ ব্যবহারের জন্য একটি সেলফ-হোস্টেড মডেলে স্থানান্তরিত হওয়ার সিদ্ধান্ত নেয়। এই কোডল্যাবে, আমরা জেমা (Gemma)-কে একটি শক্তিশালী ওপেন মডেলের উদাহরণ হিসেবে ব্যবহার করেছি, যা আপনি নিজেই জিকেই (GKE)-তে হোস্ট করতে পারেন। এটিকে একটি ক্লাউড স্টোরেজ বাকেটে স্টেজিং করার ফলে আমাদের ক্লাস্টার এটি ব্যবহার করার জন্য উপলব্ধ হয়।

ডেমো অ্যাসেট ডাউনলোড করুন

গিটহাব রিপোজিটরি থেকে নির্দিষ্ট ফোল্ডারটি ক্লোন করুন।

git clone --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/next-26-keynotes.git
cd next-26-keynotes
git sparse-checkout set devkey/intent-to-infrastructure
cd devkey/intent-to-infrastructure

চ্যাটবট ইমেজ তৈরি করুন

পরিকাঠামো স্থাপন করার আগে, আপনাকে কাস্টম চ্যাটবট ইমেজটি তৈরি করে আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করতে হবে। এই ইমেজটি পরবর্তী ধাপে ক্লাউড রান ব্যবহার করবে।

  1. asia-southeast1chatbot-repo নামে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি করুন:
    gcloud artifacts repositories create chatbot-repo \
        --repository-format=docker \
        --location=asia-southeast1 \
        --description="Chatbot Docker repository"
    
  2. src ডিরেক্টরিতে যান:
    cd src
    
  3. ক্লাউড বিল্ড ব্যবহার করে ইমেজটি তৈরি ও পুশ করুন:
    gcloud builds submit --config cloudbuild.yaml \
        --substitutions=_LOCATION="asia-southeast1",_REPOSITORY_ID="chatbot-repo",_IMAGE_NAME="chatbot",_IMAGE_TAG="latest"
    
  4. প্রজেক্ট রুটে ফিরে যান:
    cd ..
    

প্রোভিশন বেস ইনফ্রাস্ট্রাকচার

terraform ডিরেক্টরিতে যান এবং GKE ক্লাস্টার তৈরি করতে ধাপ ১ অনুসরণ করুন।

cd terraform
./deploy.sh demo step1 apply

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

প্রক্রিয়া চলাকালীন, Terraform প্ল্যানটি প্রদর্শন করবে এবং নিশ্চিতকরণের জন্য অনুরোধ করবে। অনুমোদন করে এগিয়ে যাওয়ার জন্য আপনাকে yes টাইপ করতে হবে।

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

সম্পূর্ণ প্রক্রিয়াটি সম্পন্ন হতে ১৫-২০ মিনিট সময় লাগতে পারে।

ডেপ্লয়মেন্ট সম্পূর্ণ হয়ে গেলে, টার্মিনালে প্রিন্ট হওয়া Terraform আউটপুটগুলোর মধ্যে cloud_run_url টি খুঁজুন। আপনার ব্রাউজারে চ্যাটবটটি খোলার জন্য URL-টিতে ক্লিক করুন। এখন আপনি চ্যাটবটটির সাথে ইন্টারঅ্যাক্ট করতে পারবেন, যেটি বর্তমানে Gemini 2.5 Flash-এ চলছে।

মডেলটি ডাউনলোড করুন

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

আপনার GCS বাকেটে জেমা মডেলটি ডাউনলোড করতে ধাপ ২ চালান। আপনার হাগিং ফেস টোকেন প্রয়োজন হবে। এই প্রক্রিয়াটি আপনার GKE ক্লাস্টারে চলে এবং হাগিং ফেস থেকে মডেলটি ডাউনলোড করে পরবর্তী ব্যবহারের জন্য আপনার বাকেটে আপলোড করতে প্রায় ১৫ মিনিট (অথবা ট্র্যাফিকের উপর নির্ভর করে আরও বেশি) সময় লাগবে।

./deploy.sh demo step2 apply -var="hf_token=<YOUR_HF_TOKEN>"

এই Terraform কমান্ডটি আপনার GKE ক্লাস্টারে ডাউনলোডটি পরিচালনা করার জন্য একটি Kubernetes Job তৈরি করে। যতক্ষণ জবটি চালু থাকবে, Terraform স্ক্রিপ্টটিও সক্রিয় থাকবে।

যদি আপনি অন্য কোনো শেল সেশন থেকে এর অগ্রগতি পর্যবেক্ষণ করতে চান, অথবা রানটি সম্পন্ন হয়েছে কিনা তা যাচাই করতে চান, তাহলে আপনি এটি চালাতে পারেন:

kubectl get jobs

৪. এজেন্ট এবং এমসিপি সেটআপ করুন

এখন আমরা সেই এজেন্টটি কনফিগার করব যেটি মাইগ্রেশনের কাজটি করবে। আমরা gemini-cli ব্যবহার করব এবং পরিবেশের সাথে যোগাযোগের জন্য এটিকে কিছু নিয়ম দিয়ে সজ্জিত করব।

জেমিনি ক্লাউড অ্যাসিস্ট (GCA) MCP সার্ভার এই কার্যপ্রবাহের একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান। এটি আপনার ক্লায়েন্ট-সাইড এজেন্ট এবং গুগল ক্লাউডের মধ্যে একটি সেতু হিসেবে কাজ করে, যা এজেন্টকে অনুসন্ধান চালাতে, পরিকল্পনা তৈরি করতে (যেমন gcloud এবং kubectl কমান্ড), এবং আপনার ক্লাউড প্রজেক্টের রিসোর্সগুলিতে সরাসরি পরিবর্তন প্রয়োগ করতে সক্ষম করে।

নিশ্চিত করুন যে আপনাকে এমন একটি রোল দেওয়া হয়েছে যা MCP টুল কল করার অনুমতি দেয়, যেমন roles/geminicloudassist.user । পরবর্তীতে যদি আপনি অনুমতি সংক্রান্ত সমস্যার সম্মুখীন হন, তাহলে Cloud Assist-এর জন্য IAM রোল কনফিগার করার ডকুমেন্টেশন দেখুন।

তৃতীয় পক্ষের টুলগুলির সাথে Gemini Cloud Assist ইন্টিগ্রেট করার বিষয়ে আরও বিস্তারিত নির্দেশাবলীর জন্য, “ Integrate Gemini Cloud Assist with third-party tools using MCP” ডকুমেন্টেশনটি দেখুন।

জেমিনি ক্লাউড অ্যাসিস্ট এক্সটেনশন ইনস্টল করুন

  1. নিম্নলিখিত কমান্ডটি চালিয়ে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) এর মাধ্যমে প্রমাণীকরণ করুন:
gcloud auth application-default login
  1. MCP সার্ভারটিকে একটি Gemini CLI এক্সটেনশন হিসেবে ইনস্টল করুন:
gemini extensions install https://github.com/GoogleCloudPlatform/gemini-cloud-assist-mcp
  1. স্কিলটি সফলভাবে ইনস্টল হয়েছে কিনা তা যাচাই করুন: gemini চালু করুন এবং সক্রিয় স্কিলগুলোর তালিকা দেখতে নিম্নলিখিত কমান্ডটি চালান:
/skills list

তালিকায় Gemini Cloud Assist সম্পর্কিত স্কিলটি দেখতে পাচ্ছেন কিনা তা যাচাই করুন। আপনার Cloud Shell প্রম্পটে ফিরে যেতে exit টাইপ করুন।

জেমিনি ক্লাউড অ্যাসিস্ট-এ মিউটেশন সক্রিয় করুন

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

  1. Google Cloud Console উইন্ডোর উপরের ডানদিকে থাকা Gemini লোগোতে ক্লিক করে Gemini Assist Sidebar-টি খুলুন।
    জেমিনি অ্যাসিস্ট সাইডবার
  2. সাইডবারে তালিকাভুক্ত প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন।
    এপিআই সক্ষম করুন
  3. সাইডবারের সেটিংসে যান এবং 'Enable Cloud Assist to execute actions' বিকল্পটি চেক করুন।
    সেটিংসে যান
    এক্সিকিউশন সক্ষম করুন

এজেন্ট নিয়ম কনফিগার করুন

প্রজেক্ট ডিরেক্টরির ইন্টেন্ট-টু-ইনফ্রাস্ট্রাকচার ( intent-to-infrastructure ) ফোল্ডারের রুটে একটি কাস্টম gemini.md ফাইল রয়েছে। এই ফাইলে এমন কিছু নিয়ম রয়েছে যা এজেন্টকে সঠিক টুল ব্যবহার করার জন্য নির্দেশনা দেয়।

আপনার ডিরেক্টরিতে এই ফাইলটি আছে কিনা তা যাচাই করুন। আপনার এই ডিরেক্টরি থেকেই gemini চালানো উচিত, যাতে এটি Terraform ফাইল, অ্যাপ্লিকেশন কোড এবং gemini.md রুলস ফাইলটি অ্যাক্সেস করতে পারে।

৫. ধাপ ১: চ্যাটবটকে GKE-তে স্থানান্তর করুন

এখন আমরা মাইগ্রেশনের প্রথম অংশটি সম্পন্ন করতে এজেন্টটি ব্যবহার করব: চ্যাটবট অ্যাপ্লিকেশনটিকে ক্লাউড রান থেকে জিকেই-তে স্থানান্তর করা।

  1. intent-to-infrastructure ডিরেক্টরির রুট থেকে gemini চালু করুন (এবং নিশ্চিত করুন যে এটির gemini.md ফাইলে অ্যাক্সেস আছে)।
  2. প্রথমে, অ্যাপ্লিকেশন এবং পরিকাঠামো বোঝার জন্য এজেন্টকে প্রজেক্টটি অন্বেষণ করতে বলা যাক। নিম্নলিখিত প্রম্পটটি প্রবেশ করান:
Tell me about the app and infrastructure in this project

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

  1. এখন, এজেন্টকে মাইগ্রেশনটি সম্পাদন করার নির্দেশ দিতে নিম্নলিখিত প্রম্পটটি ব্যবহার করুন।
Convert my Cloud Run service to the equivalent on GKE.
  1. এজেন্টের উচিত:
    • প্রসঙ্গটি বোঝার জন্য ask_cloud_assist টুলটি ব্যবহার করুন।
    • চ্যাটবট অ্যাপ্লিকেশনটির জন্য Kubernetes YAML তৈরি করতে design_infra টুলটি ব্যবহার করুন।
    • জিজ্ঞাসা করুন: "আপনি কি এই কনফিগারেশনটি প্রয়োগ করতে চান?"
  1. পরিবর্তনগুলি প্রয়োগ করতে yes দিয়ে উত্তর দিন। এজেন্ট আপনার GKE ক্লাস্টারে রিসোর্সগুলি স্থাপন করতে invoke_operation ব্যবহার করবে।

ধাপ ১ যাচাই করুন

  1. পরিষেবাগুলির তালিকা নিন:
kubectl get services

আপনি চ্যাটবট অ্যাপ্লিকেশনটির একটি সার্ভিস চালু দেখতে পাবেন।

  1. চ্যাটবট অ্যাক্সেস করতে সার্ভিসটি পোর্ট-ফরোয়ার্ড করুন:
kubectl port-forward svc/chatbot-service 8080:80

(দ্রষ্টব্য: প্রতিস্থাপন করুন)

chatbot-service

এজেন্ট দ্বারা তৈরি পরিষেবার আসল নামটি সহ (যদি তা ভিন্ন হয়)।

চ্যাটবটটি পরীক্ষা করুন। এটির এখনও জেমিনি এপিআই ব্যবহার করে সাড়া দেওয়া উচিত (যেমনটি ক্লাউড রানে কনফিগার করা হয়েছিল)।

৬. ধাপ ২: vLLM-এর মাধ্যমে Gemma স্থাপন করুন এবং পুনরায় সংযোগ স্থাপন করুন।

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

  1. একই gemini সেশনে, নিম্নলিখিত প্রম্পটটি প্রবেশ করান:
Now that the chatbot is on GKE, add a vLLM service running the Gemma model from my storage bucket in the same cluster. Make sure to give the vLLM service at least 10 minutes to start up to account for loading the large model. Then, update the chatbot service to reference this vLLM service instead of the Gemini API.
  1. এজেন্টের উচিত:
    • vLLM ডেপ্লয়মেন্ট এবং সার্ভিসের জন্য YAML তৈরি করতে design_infra ব্যবহার করুন।
    • Gemini API-এর পরিবর্তে নতুন vLLM সার্ভিসকে নির্দেশ করার জন্য এনভায়রনমেন্ট ভেরিয়েবল (বা কনফিগ) পরিবর্তন করতে চ্যাটবট ডিপ্লয়মেন্ট YAML আপডেট করুন।
    • পরিবর্তনগুলো প্রয়োগ করার জন্য নিশ্চিতকরণের অনুরোধ করুন।
  2. পরিবর্তনগুলো প্রয়োগ করতে yes লিখে উত্তর দিন।

ধাপ ২ যাচাই করুন

  1. পডগুলোর তালিকাটি আবার নিন:
kubectl get pods

এখন আপনি চ্যাটবট এবং ভিএলএলএম উভয়ের পড দেখতে পাবেন।

  1. vLLM প্রস্তুত হয়ে গেলে, প্রয়োজনে চ্যাটবট পরিষেবাটি আবার পোর্ট-ফরোয়ার্ড করুন এবং পরীক্ষা করে দেখুন। এটি এখন আপনার সেলফ-হোস্টেড জেমা মডেল দ্বারা চালিত হওয়া উচিত!

৭. পরিষ্কার করা

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

মূল পরিকাঠামোর জন্য ধ্বংস কমান্ডটি চালান:

cd terraform
./deploy.sh demo step1 destroy

এছাড়াও, আপনি যদি আপনার স্থানীয় পরিবেশ পরিষ্কার করতে চান, তাহলে Gemini Cloud Assist এক্সটেনশনটি আনইনস্টল বা নিষ্ক্রিয় করতে পারেন। এর জন্য gemini extensions uninstall অথবা gemini extensions disable লিখে তার পরে এক্সটেনশনটির নাম লিখুন।

৮. এরপর কী?

জেমিনি ক্লাউড অ্যাসিস্ট এবং এর উন্নত বৈশিষ্ট্যগুলো সম্পর্কে আরও জানতে, এই রিসোর্সগুলো দেখুন:

৯. অভিনন্দন

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