1. ভূমিকা

হ্যালো সবাই! নামটা স্পার্কি! তোমরা এখানে আসতে পেরে খুব খুশি। আজ এখানে আসার জন্য আমি us-central1 এর একটি GKE ক্লাস্টার থেকে সম্পূর্ণ জিপ করেছি। এই কোডল্যাবে আপনাকে স্বাগতম।
আমি আমার পুরো জীবন গুগল ক্লাউডের ডেটা স্ট্রিমগুলিতে ঘুরে বেড়িয়ে কাটিয়েছি, এবং আমি সবকিছুই দেখেছি। আমি তোমাদের, স্থপতিদের এবং প্রকৌশলীদের, অসাধারণ জিনিস তৈরি করতে দেখেছি। কিন্তু আমি তোমাদেরও দেখেছি যে কাঁঠালের মধ্যে আটকে যাও। তুমি জানো আমি কী বলছি! GKE-তে একটি পড ডিবাগ করার সময় প্রসঙ্গ পরিবর্তনের অনুভূতি। তুমি kubectl logs , নোডের স্বাস্থ্য পরীক্ষা করার জন্য GCP কনসোল, স্থাপন করা সোর্স কোডটি দেখার জন্য আপনার IDE এবং পড লাইফসাইকেল হুকের জন্য অফিসিয়াল Kubernetes ডক্স সহ একটি ব্রাউজার ট্যাবের মধ্যে ঝাঁপিয়ে পড়ছো। প্রতিটি লাফ ফোকাসে একটি বিরতি!
আর জটিল টুলিং ! gcloud , kubectl , terraform ... প্রতিটির নিজস্ব DSL এবং পতাকার পাহাড় রয়েছে। এটি ক্রমাগত ডকুমেন্টেশন খোঁজার দিকে পরিচালিত করে। আপনার প্রয়োজনীয় ডেটা পেতে --filter এবং --format পতাকার সঠিক সংমিশ্রণ সহ একটি নিখুঁত gcloud কমান্ড অনুসন্ধান করতে হবে। এটি লক্ষ লক্ষ মানুষের বনে একটি নির্দিষ্ট বাদাম খুঁজে বের করার চেষ্টা করার মতো। এবং আমাকে পুনরাবৃত্তিমূলক কাজ শুরু করতে বলবেন না। আমি আপনাকে একটি নতুন পাইথন পরিষেবার জন্য একই Dockerfile এবং cloudbuild.yaml লিখতে দেখেছি এতবার কোডটিতে সম্ভবত deja vu থাকে।
আচ্ছা, আমি তোমাকে আরও ভালো একটা পথ দেখাতে এসেছি। বনের মধ্য দিয়ে একটা গোপন পথ। জেমিনি সিএলআই আসলে এটাই!
জেমিনি সিএলআই কী?
তাহলে, এই ম্যাজিক শর্টকাটটি কী, যা নিয়ে আমি এত উত্তেজিত?
জেমিনি সিএলআই-কে আপনার ব্যক্তিগত ক্লাউড সঙ্গী হিসেবে ভাবুন, আপনার টার্মিনালের ভেতরেই। এটি একটি কথোপকথন, একটি অংশীদারিত্ব! এটি প্রসঙ্গ-সচেতন , যা কেবল শোনা নয়, এটি বোঝার একটি অভিনব উপায়। এটি আপনার ফাইলগুলি পড়তে পারে, আপনার প্রকল্পের নিয়মগুলি শিখতে পারে—যেমন আপনি ট্যাব ব্যবহার করেন নাকি স্পেস ব্যবহার করেন—এবং আপনি কী করার চেষ্টা করছেন তা বের করতে পারে। এটা এমন যে আপনি যে অ্যাকর্ন সংগ্রহ করার চেষ্টা করছেন তার গন্ধ আমি পাচ্ছি!
উচ্চ-স্তরের স্থাপত্য (আসুন হুডের নীচে উঁকি দেই!)
তাহলে এই সব কিভাবে কাজ করে? এটি কয়েকটি দুর্দান্ত জিনিসের মিশ্রণ যা সামঞ্জস্যপূর্ণভাবে কাজ করে:
- একটি শক্তিশালী ভাষা মডেল: এটি মস্তিষ্ক! বিশেষ করে, এটি গুগল দ্বারা প্রশিক্ষিত একটি বৃহৎ, মাল্টিমোডাল মডেল। ' মাল্টিমোডাল ' এর অর্থ হল এটি কেবল টেক্সট বোঝে না; এটি কোডের গঠন এবং অর্থ বোঝে। এটি এটিকে আপনার সফ্টওয়্যার সম্পর্কে যুক্তি করার সুযোগ দেয়, কেবল এটি পড়ার নয়।
- আপনার স্থানীয় প্রেক্ষাপট: এটি অত্যন্ত গুরুত্বপূর্ণ। জেমিনি সিএলআই আপনার স্থানীয় মেশিনে একটি প্রক্রিয়া হিসেবে চলে, আপনার ব্যবহারকারী অ্যাকাউন্টের মতো একই অনুমতি সহ। এর অর্থ হল এটি আপনার ফাইল সিস্টেম অ্যাক্সেস করে প্রকল্প-নির্দিষ্ট সহায়তা প্রদান করতে পারে। এটি কোনও দূরবর্তী ক্লাউড পরিষেবা নয় যা আপনার কোড সম্পর্কে অনুমান করছে; এটি আপনার সাথেই আছে।
- একটি টুলিং ইকোসিস্টেম: মডেলটি বিশ্বের সাথে এইভাবে যোগাযোগ করে। এর একটি সুনির্দিষ্ট ফাংশন রয়েছে যা এটি কল করতে পারে - যেমন
read_fileঅথবাrun_shell_command। এটিকে একটি নিরাপদ API হিসাবে ভাবুন। মডেলটি কী করবে এবং কোন টুলটি ব্যবহার করবে তা নির্ধারণ করে এবং তারপরে এটি কার্যকর করার জন্য একটিtool_codeব্লক তৈরি করে। এটি এর ক্রিয়াগুলিকে অনুমানযোগ্য এবং নির্ভরযোগ্য করে তোলে। - শেল কমান্ড এক্সিকিউশন: এটাই আসল জাদু! এটি
bash -c <command>সাবশেলে যেকোনো কমান্ড চালাতে পারে। এটিstdout,stderrএবংexit codeক্যাপচার করে। এটি বিশাল! এর মানে হল Gemini CLI একটি কমান্ড চালাতে পারে, এটি ব্যর্থ হয়েছে কিনা তা পরীক্ষা করতে পারে এবং তারপর ত্রুটি বার্তার উপর ভিত্তি করে এটি ঠিক করার চেষ্টা করতে পারে। - সুরক্ষা জাল: এটি আমার প্রিয় অংশ!
tool_codeব্লকটি কার্যকর করার আগে, CLI ক্লায়েন্ট আপনাকে সঠিক কমান্ড বা কোডটি দেখাবে এবং আপনার নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে। এটি একটি ক্লায়েন্ট-সাইড চেক, তাই আপনার সিস্টেমে কোনও কিছু স্পর্শ করার আগে আপনারই চূড়ান্ত সিদ্ধান্ত নেওয়ার অধিকার রয়েছে। আপনিই সর্বদা দায়িত্বে থাকবেন!
এটি কেবল একটি চ্যাটবট নয়, এটি একটি করণীয়! আপনার কোডিং অ্যাডভেঞ্চারে একজন সক্রিয় সহায়ক।
মূল ধারণা: ঘোষণামূলক বনাম আজ্ঞাবহ
সবচেয়ে বড়, সবচেয়ে অসাধারণ পরিবর্তন হল কম্পিউটারকে কীভাবে কিছু করতে হবে তা বলা থেকে আপনি কী চান তা বলা।
- অনুজ্ঞাসূচক (পুরাতন, কাঁটাযুক্ত পথ): আপনাকে প্রতিটি পদক্ষেপে এগিয়ে যেতে হবে। আপনাকে টুলের নির্দিষ্ট ডোমেন ভাষার একজন বিশেষজ্ঞ হতে হবে। এই দানবীয় আদেশের মতো:
ওহ! দেখো! তোমাকে মেশিনের ধরণ, ছবির পরিবার, মেটাডেটা এবং ট্যাগের সিনট্যাক্স জানতে হবে। একটা অংশ মিস করলে, একটা রহস্যময় ত্রুটি দেখাবে।gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev - ঘোষণামূলক (স্পার্কি শর্টকাট!): তুমি যা চাও তা সরল ইংরেজিতে বলো!
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
ব্যস! জেমিনি আপনার অনুরোধ বিশ্লেষণ করে, gcloud টুলের প্যারামিটারের সাথে ম্যাপ করে, প্রতিটি পতাকার জন্য সঠিক বাক্য গঠন বের করে এবং আপনার জন্য সেই বৃহৎ ভয়ঙ্কর কমান্ড তৈরি করে। তারপর এটি অনুমোদনের জন্য আপনার কাছে উপস্থাপন করে। এটি আপনাকে কমান্ড-লাইন পতাকা মুখস্থকারী নয়, বরং বৃহৎ চিত্রের চিন্তাবিদ হতে দেওয়ার বিষয়ে।
মিথুন রাশির শক্তি বৃদ্ধি: CLI এক্সটেনশনের একটি ভূমিকা
যদিও জেমিনি সিএলআই একটি শক্তিশালী হাতিয়ার, এক্সটেনশনের মাধ্যমে এর প্রকৃত সম্ভাবনা উন্মোচিত হয়। এক্সটেনশনগুলি হল প্রম্পট, টুল এবং কাস্টম কমান্ডের সমষ্টি যা সিএলআই-এর কার্যকারিতা উন্নত করে, যা আপনাকে আপনার নির্দিষ্ট চাহিদা এবং কর্মপ্রবাহ অনুসারে এটি তৈরি করতে দেয়।
এক্সটেনশনগুলি খুঁজে বের করা এবং ইনস্টল করা
জেমিনি সিএলআই-তে গুগল এবং থার্ড-পার্টি ডেভেলপার উভয়ের দ্বারা নির্মিত এক্সটেনশনের একটি ক্রমবর্ধমান ইকোসিস্টেম রয়েছে। আপনি geminicli.com/extensions- এ এক্সটেনশনের অফিসিয়াল ডিরেক্টরি ব্রাউজ করতে পারেন।
একটি এক্সটেনশন ইনস্টল করার জন্য, আপনি এক্সটেনশনের Git রিপোজিটরির URL সহ gemini extensions install কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, PostgreSQL এক্সটেনশনের জন্য অফিসিয়াল ক্লাউড SQL ইনস্টল করতে, আপনাকে নিম্নলিখিতগুলি চালাতে হবে:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
ঠিক আছে, আর কথাই শেষ! চলো আমাদের থাবা নোংরা করি এবং আসলে এই জিনিসটা চেষ্টা করে দেখি!
2. শুরু করার আগে

হে ভবিষ্যৎ মেঘের জাদুকররা! স্পার্কি, তোমার সেবায়। আমাদের এই বিশাল অভিযান শুরু করার আগে, তোমার কর্মশালার পরিবেশ প্রস্তুত কিনা তা নিশ্চিত করতে হবে। জঙ্গলে যাওয়ার আগে আমাদের ব্যাগগুলো সব সঠিক সরঞ্জাম এবং জাদুর অ্যাকর্ন দিয়ে গুছিয়ে নেওয়ার মতো ভাবো। আমাকে অনুসরণ করো!
যদি আপনার ইতিমধ্যেই একটি Google ক্লাউড প্রজেক্ট থাকে, তাহলে আপনি Google Cloud Shell-এর মধ্যে Gemini CLI ব্যবহার করতে পারেন কারণ এটি Gemini CLI-এর সাথে আগে থেকে ইনস্টল করা থাকে। বিকল্পভাবে, আপনার স্থানীয় মেশিনে এটি সেট আপ করতে এই পদক্ষেপগুলি অনুসরণ করুন।
ধাপ ১: খালি প্রয়োজনীয়তা (পূর্বশর্ত)
প্রতিটি ভালো অভিযাত্রীর একটি শক্ত ভিত্তি প্রয়োজন। আমরা জেমিনি সিএলআই ইনস্টল করার আগে, আপনার স্থানীয় মেশিনে কিছু জিনিস ইতিমধ্যেই সেট আপ করা প্রয়োজন।
- গুগল ক্লাউড এসডিকে (
gcloud) : এটি গুগল ক্লাউডের প্রধান টুলকিট। জেমিনি সিএলআই এই পরিবারের একটি অংশ!
- এটি ইনস্টল করা আছে কিনা তা পরীক্ষা করুন :
gcloud --versionচালান। যদি আপনি একটি সংস্করণ নম্বর দেখতে পান, তাহলে আপনি যেতে পারেন! - যদি ইনস্টল না করা থাকে : cloud.google.com/sdk/docs/install ওয়েবসাইটে অফিসিয়াল নির্দেশাবলী অনুসরণ করুন।
- গিট : হ্যান্ডস-অন ল্যাব রিপোজিটরি ক্লোন করার জন্য আমাদের এটির প্রয়োজন হবে।
- এটি ইনস্টল করা আছে কিনা তা পরীক্ষা করুন :
git --versionচালান। - যদি ইনস্টল না করা থাকে : আপনি এটি git-scm.com/downloads থেকে পেতে পারেন।
- জিসিপি প্রকল্প এবং প্রমাণীকরণ :
- নিশ্চিত করুন যে আপনার কাছে বিলিং সক্ষম থাকা একটি গুগল ক্লাউড প্রজেক্ট আছে। এটি অত্যন্ত গুরুত্বপূর্ণ!
- আপনার গুগল অ্যাকাউন্টে লগ ইন করুন এইভাবে:
gcloud auth login
- সেশনের জন্য আপনার প্রোজেক্ট সেট করুন। GCP কনসোল থেকে আপনার প্রোজেক্ট আইডি খুঁজুন এবং চালান:
gcloud config set project YOUR_PROJECT_ID
( YOUR_PROJECT_ID আপনার প্রকৃত প্রকল্প আইডি দিয়ে প্রতিস্থাপন করুন!)
- Node.js সংস্করণ ২০ বা তার বেশি
ধাপ ২: জাদুটি উপভোগ করুন! (জেমিনি সিএলআই ইনস্টল করা)
ঠিক আছে, মূল বিষয়গুলো বাদ দিয়ে, এবার মূল ইভেন্টে যাওয়ার সময়! আমরা জেমিনি সিএলআই ইনস্টল করব।
npx দিয়ে তাৎক্ষণিকভাবে চালান
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
npm দিয়ে বিশ্বব্যাপী ইনস্টল করুন
npm install -g @google/gemini-cli
হোমব্রু (ম্যাকোস/লিনাক্স) দিয়ে বিশ্বব্যাপী ইনস্টল করুন
brew install gemini-cli
জেমিনি সংস্করণটি পরীক্ষা করুন
gemini --version
আপনার একটি সংস্করণ নম্বর দেখা উচিত। এটি নিশ্চিত করে যে ইনস্টলেশন সফল হয়েছে।
ধাপ ৩: পাওয়ার আপ (কনফিগারেশন)
এখন যেহেতু Gemini CLI ইনস্টল করা হয়েছে, আমাদের এটিকে কিংডমের চাবি দিতে হবে। প্রথমে, টার্মিনালে gemini কমান্ডটি চালিয়ে এটি চালু করুন। আপনি নিম্নলিখিত স্ক্রিনটি দেখতে পাবেন:

সহজ করার জন্য, আপনি আপনার Google অ্যাকাউন্ট দিয়ে প্রমাণীকরণ করতে পারেন, যা আপনাকে 1M টোকেন কনটেক্সট উইন্ডো সহ Gemini 2.5 Pro অ্যাক্সেস দেয় এবং API কী পরিচালনা করার প্রয়োজন ছাড়াই 60টি অনুরোধ/মিনিট এবং 1000টি অনুরোধ/দিন পর্যন্ত করতে পারে।
আপনি যদি নির্দিষ্ট জেমিনি মডেলগুলিতে অ্যাক্সেস চান বা প্রয়োজনে উচ্চতর সীমাতে আপগ্রেড করতে চান, তাহলে প্রমাণীকরণ পদ্ধতি হিসাবে জেমিনি এপিআই কী ব্যবহার করুন।
যেসব এন্টারপ্রাইজ টিম এবং প্রোডাকশন ওয়ার্কলোড ইতিমধ্যেই একটি গুগল প্রজেক্ট এবং বিলিং অ্যাকাউন্ট সেটআপ করেছে, তাদের জন্য উন্নত নিরাপত্তা এবং সম্মতির জন্য Vertex AI ব্যবহার করুন।
আপনার বেছে নেওয়া বিকল্পের উপর নির্ভর করে, আপনাকে প্রমাণীকরণ কনফিগার করার পরবর্তী ধাপগুলি সম্পর্কে জিজ্ঞাসা করা হবে। এই বিকল্পগুলি সম্পর্কে আরও বিস্তারিত জানার জন্য জেমিনি সিএলআই ডকুমেন্টেশন দেখুন।
যদি আপনি গুগল ক্লাউডের ভার্টেক্স এআই প্ল্যাটফর্ম ব্যবহার করতে চান, তাহলে প্রথমে দুবার ctrl+c টিপে জেমিনি CLI থেকে বেরিয়ে আসুন এবং প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করুন।
আপনার প্রমাণীকরণের পদ্ধতি যাই হোক না কেন, আপনাকে সাধারণত নিম্নলিখিত ভেরিয়েবলগুলি সেট করতে হবে: GOOGLE_CLOUD_PROJECT এবং GOOGLE_CLOUD_LOCATION।
এই ভেরিয়েবলগুলি সেট করতে:
# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
এবার গুগল ক্লাউডে লগ ইন করা যাক:
gcloud auth application-default login
পূর্ববর্তী পদ্ধতিটি ব্যবহার করে প্রমাণীকরণ সম্পন্ন করার পরে, টার্মিনালে gemini কমান্ডটি চালিয়ে আবার Gemini CLI চালু করুন। প্রমাণীকরণ বিকল্পগুলিতে, Vertex AI নির্বাচন করুন এবং আপনার সেট হয়ে যাবে।
ধাপ ৪: স্পার্ক টেস্ট! (আপনার সেটআপ যাচাই করা)
এটাই সত্যের মুহূর্ত! দেখা যাক সবকিছু ঠিকঠাক কাজ করছে কিনা। এই কমান্ডগুলি চালান যাতে নিশ্চিত হন যে সমস্ত আলো সবুজ।
- নিম্নলিখিত প্রম্পটটি প্রবেশ করান:
What is my current directory?
জেমিনি সিএলআই আপনার বর্তমান কার্যকরী ডিরেক্টরিটি জানিয়ে প্রতিক্রিয়া জানাবে। এটি মূল ভাষা মডেল এবং শেল ইন্টিগ্রেশন পরীক্ষা করে।

- GCP সংযোগ পরীক্ষা করুন:
list my gcs buckets
যদি আপনার কোন GCS বাকেট থাকে, তাহলে এটি তাদের তালিকাভুক্ত করবে। যদি না থাকে, তাহলে এটি আপনাকে জানাবে যে কোনওটিই নেই। এটি নিশ্চিত করে যে এটি আপনার GCP প্রকল্পের সাথে সঠিকভাবে সংযুক্ত।
ধাপ ৫: আরও সুপারপাওয়ার দেওয়া! (এক্সটেনশন ইনস্টল করা)
এবার আসুন জেমিনি সিএলআই-এর ক্ষমতা বৃদ্ধি করি কয়েকটি এক্সটেনশন ইনস্টল করে যা পরবর্তীতে ল্যাবে কাজে আসবে।
ক্লাউড রান
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
জেমিনি সিএলআই সিকিউরিটি
gemini extensions install https://github.com/gemini-cli-extensions/security
জিক্লাউড
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
PostgreSQL এর জন্য ক্লাউড SQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
যদি এই সমস্ত কমান্ড কাজ করে, তাহলে আপনি কর্মশালার জন্য আনুষ্ঠানিকভাবে প্রস্তুত! আপনার পরিবেশ তৈরি হয়ে গেছে, এবং আপনি আপনার উৎপাদনশীলতা প্রকাশ করতে প্রস্তুত। প্রথম ল্যাবে দেখা হবে!
৩. মূল ধারণা এবং স্থানীয় কর্মক্ষেত্রের মিথস্ক্রিয়া

ঠিক আছে, তোমার পা নোংরা করার জন্য প্রস্তুত? এখন আমরা তোমার নতুন জেমিনি টুলবেল্টের আসল সরঞ্জামগুলি দেখব। আমি মনে করি মেঘে অন্বেষণ এবং নির্মাণের জন্য এগুলি আমার সুপারপাওয়ার! আসুন তারা কীভাবে কাজ করে সে সম্পর্কে একটু জ্ঞান অর্জন করি।
মূল ক্ষমতা
আমি আমার ক্ষমতা দুটি ভাগে ভাগ করি: বাইরে কী আছে তা দেখা, এবং তারপর আসলে কিছু করা!
তোমার পরিবেশ বোঝা (আমার অতি-ইন্দ্রিয়!)
নতুন বাসা তৈরি শুরু করার আগে, তোমাকে গাছটি পরীক্ষা করে দেখতে হবে, তাই না? এই সরঞ্জামগুলি জমির স্তর নির্ণয়ের জন্য।
-
list_directory: এটি আমার মৌলিক 'sniff around' টুল। এটি স্ট্যান্ডার্ড OS-স্তরের ডিরেক্টরি তালিকার চারপাশে একটি সহজ মোড়ক। কিন্তু মজার অংশ হল যে মডেলটি এই কাঠামোগত আউটপুটটিকে পার্স করে সিদ্ধান্ত নিতে পারে, যেমনsrcনামের একটি সাবডিরেক্টরি অন্বেষণ করা। -
glob: এটি আমার 'অ্যাকর্ন ফাইন্ডার'! এটি স্ট্যান্ডার্ড গ্লোব প্যাটার্ন ব্যবহার করে—যেমন*,**,?, এবং[]—যা আপনি ইতিমধ্যেই.gitignoreমতো জিনিস থেকে জানেন। তাই আপনি patternapp/**/*.pyব্যবহার করে 'appডিরেক্টরিতে সমস্ত*.pyফাইল খুঁজুন' জিজ্ঞাসা করতে পারেন। মডেলটির বিশ্লেষণের জন্য নির্দিষ্ট ফাইল সংগ্রহ করার এটি একটি শক্তিশালী উপায়। -
search_file_content: এটি আমার এক্স-রে ভিশন! এটি অনুসন্ধানের জন্য সম্পূর্ণ নিয়মিত এক্সপ্রেশন (regex) ব্যবহার করে, কেবল সাধারণ স্ট্রিং ম্যাচিং নয়। এটি অবিশ্বাস্যভাবে শক্তিশালী। আপনি এটিকে জটিল প্যাটার্নগুলি খুঁজে পেতে বলতে পারেন, যেমন 'POST পদ্ধতি ব্যবহার করে এমন সমস্ত ফ্লাস্ক রুট খুঁজুন', যাapp\.route\(.*methods=\['POST'\].*\)মতো একটি regex তৈরি করতে পারে।app\.route\(.*methods=\['POST'\].*\)। এটি ফাইলের পথ, লাইন নম্বর এবং ম্যাচিং লাইন ফেরত দেয়, যা মডেলটিকে প্রয়োজনীয় সমস্ত প্রসঙ্গ দেয়। -
read_file: একবার আপনি একটি আকর্ষণীয় ফাইল খুঁজে পেলে, আপনি এটি খুলতে চাইবেন।read_fileএর জন্য অপ্টিমাইজ করা হয়েছে। আপনি একটি সম্পূর্ণ ফাইল পড়তে পারেন, অথবা, বড় ফাইলের জন্য, আপনিoffsetএবংlimitপরামিতি ব্যবহার করে এটিকে খণ্ডে পড়তে পারেন। এর অর্থ হল মডেলটি সময় শেষ না করেও দক্ষতার সাথে বিশাল লগ ফাইলগুলি স্ক্যান করতে পারে।
বোধগম্যতা থেকে কর্মে (গঠনের সময়!)
ঠিক আছে, তুমি ভূখণ্ড ঘুরে দেখেছো। এখন তোমার বাসা তৈরির সময়! এই সরঞ্জামগুলি তোমাকে পরিবর্তন করতে এবং কাজ সম্পন্ন করতে সাহায্য করে।
-
**write_file**: স্ক্র্যাচ থেকে একটি নতুন ফাইল তৈরি করতে হবে?write_fileহল একটি পারমাণবিক অপারেশন যা আপনার প্রদত্ত সম্পূর্ণ কন্টেন্ট একটি নির্দিষ্ট পাথে লিখে। এটি আপনার প্রকল্পের চাহিদার উপর ভিত্তি করে নতুন মডিউল তৈরি করার জন্য বা স্ক্র্যাচ থেকে একটিDockerfileতৈরি করার জন্য উপযুক্ত। -
**replace**: এই টুলটি অস্ত্রোপচারের মাধ্যমে পরিবর্তনের জন্য! এটি কেবল একটি সহজ find-and-replace নয়। আপনি একটিold_stringএবং একটিnew_stringপ্রদান করেন। এটি নিরাপদে কাজ করার জন্য,old_stringফাইল থেকে একটি অনন্য স্নিপেট হতে হবে, সাধারণত আপনি যে অংশটি পরিবর্তন করছেন তার আগে এবং পরে বেশ কয়েকটি প্রসঙ্গ লাইন সহ। এটি নিশ্চিত করে যে আমরা কেবলমাত্র আপনার ইচ্ছাকৃত কোডের অংশটি পরিবর্তন করছি। -
**run_shell_command**: এটি চূড়ান্ত পাওয়ার-আপ! এটি একটিbash -c <command>সাবশেলে প্রদত্ত কমান্ডটি কার্যকর করে। মডেলটিstdout,stderrএবংexit codeফিরে পায়। এটি ওয়ার্কফ্লো তৈরির জন্য অত্যন্ত গুরুত্বপূর্ণ। মডেলটি একটিterraform planচালাতে পারে, আউটপুট পড়তে পারে এবং যদি প্ল্যানটি সফল হয় (exit কোড 0), তাহলে এটি আপনাকে জিজ্ঞাসা করতে পারে যে এটি প্রয়োগ করা উচিত কিনা।
নিরাপত্তা জাল (তোমাকে আমার প্রতিশ্রুতি!)
এখন, কমান্ড চালানো ভীতিকর হতে পারে। আমি বুঝতে পারছি! সেইজন্যই সুরক্ষা ব্যবস্থা এত গুরুত্বপূর্ণ। যখন মডেলটি run_shell_command অথবা write_file এ কল সহ একটি tool_code ব্লক তৈরি করে, তখন Gemini CLI ক্লায়েন্ট এটিকে আটকে দেয়। এটি আপনাকে সঠিক কমান্ড বা লেখা ফাইলের সম্পূর্ণ বিষয়বস্তু দেখায় এবং আপনাকে একটি [y/n] প্রম্পট দেয়। আপনার স্পষ্ট অনুমোদন ছাড়া কিছুই ঘটে না। আপনি সর্বদা চালকের আসনে থাকেন।
৪. একটি প্রকল্প অন্বেষণ করা

উদ্দেশ্য: টার্মিনাল থেকে না বেরিয়েই অপরিচিত কোডবেস বুঝতে জেমিনি সিএলআই ব্যবহার করুন।
পরিস্থিতি: আপনি একজন নতুন ডেভেলপার, এবং আপনাকে এই প্রকল্পের দ্রুত কাজ শুরু করতে হবে!
টাস্ক ০: সেটআপ - প্রকল্পটি ক্লোন করুন!
প্রথমেই আমাদের কোডটি বের করতে হবে! এটি GitHub-এর একটি পাবলিক রিপোজিটরিতে, quickpoll নামক একটি 'ট্রি'-তে লুকিয়ে আছে। আসুন Gemini CLI-কে এটি আমাদের জন্য ক্লোন করতে বলি। এটি করার আগে, আসুন একটি ওয়ার্কিং ডিরেক্টরি তৈরি করি এবং ওয়ার্কিং ডিরেক্টরির মধ্যে থেকে Gemini CLI চালু করি:
mkdir workdir
cd workdir
gemini
এখন, এই প্রম্পটটি টাইপ করুন:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

জেমিনি বুঝতে পারবে যে 'ক্লোন' বলতে git clone কমান্ড ব্যবহার করা বোঝায়। এটি git clone https://github.com/gauravkakad-google/quickpoll.git মতো কিছু ব্যবহার করে একটি run_shell_command টুল কল তৈরি করবে। আপনি এটি অনুমোদন করলে, এটি আপনার জন্য সংগ্রহস্থলটি ডাউনলোড করবে।
এবার, দুইবার ctrl+c টিপে Gemini CLI থেকে বেরিয়ে আসুন, নমুনা সংগ্রহস্থলে যান এবং আবার Gemini CLI চালু করুন:
cd quickpoll
gemini
দারুন! এখন যেহেতু আমরা প্রজেক্ট ট্রির ভেতরে আছি, আমরা অন্বেষণ শুরু করতে পারি!
কাজ ১: প্রকল্পের সমস্ত ফাইলের তালিকা তৈরি করুন।
এখন আমরা ঢুকে পড়েছি, চলো পুরো বনের মানচিত্র তৈরি করি। আমরা প্রতিটি ফাইল দেখতে চাই। জেমিনিকে জিজ্ঞাসা করুন:
List all the files in the project.
জেমিনি সম্ভবত **/* প্যাটার্ন সহ glob টুল ব্যবহার করবে। এটি প্রতিটি ফাইলকে পুনরাবৃত্তভাবে তালিকাভুক্ত করে, যা আপনাকে কোডবেসের সম্পূর্ণ ম্যানিফেস্ট দেয়। প্রকল্পের কাঠামো বোঝার জন্য এটি একটি দুর্দান্ত প্রথম পদক্ষেপ।
কাজ ২: 'google.cloud.sql.connector' আমদানি করে এমন সমস্ত ফাইল খুঁজুন।
ঠিক আছে, আমি কৌতূহলী। এই প্রকল্পটি গুগল ক্লাউড স্টোরেজের সাথে কোথায় কথা বলে? আসুন কিছু গোয়েন্দা কাজ করি। এটিকে জিজ্ঞাসা করুন:
Find all files that import the 'google.cloud.sql.connector' library.

এর search_file_content ক্ষমতা ব্যবহার করে, জেমিনি সেই ইম্পোর্ট স্টেটমেন্ট ধারণকারী ফাইলগুলি খুঁজে পাবে। এটি অবিলম্বে আপনার ফোকাসকে কোডের সেই অংশগুলিতে সংকুচিত করে যা ক্লাউড SQL ইন্টারঅ্যাকশন পরিচালনা করে। এই প্রকল্পে, এটি backend/main.py খুঁজে পাবে।
কাজ ৩: মূল ডকারফাইলের বিষয়বস্তু আমাকে দেখান।
আমি একটা Dockerfile দেখতে পাচ্ছি! এটাই আমাদের কন্টেইনারের নীলনকশা। চলুন ভেতরে উঁকি দেই। শুধু জিজ্ঞাসা করুন:
Show me the contents of the main Dockerfile.

জেমিনি Dockerfile প্রদর্শনের জন্য read_file ব্যবহার করবে। আপনি বেস ইমেজ ( FROM ), ইনস্টল করা নির্ভরতা ( RUN pip install... ) এবং চূড়ান্ত কমান্ড ( CMD ) বিশ্লেষণ করতে পারবেন। এটি আপনাকে অ্যাপ্লিকেশনের রানটাইম পরিবেশ সম্পর্কে বলবে।
কাজ ৪: main.py ফাইলটির উদ্দেশ্য কী?
ঠিক আছে, কোডের মূল কথাটা দেখার সময় এসেছে। আসুন জেমিনিকে আমাদের পথপ্রদর্শক হতে বলি। এটি বলুন:
What's the purpose of the `main.py` file?

এখানেই জেমিনি CLI সত্যিই উজ্জ্বল। এটি প্রথমে backend/main.py তে read_file কল করবে। তারপর, এর মাল্টিমোডাল ল্যাঙ্গুয়েজ মডেল পাইথন কোড বিশ্লেষণ করবে। এটি সনাক্ত করবে যে এটি একটি FastAPI অ্যাপ্লিকেশন যা একটি পোলিং অ্যাপ্লিকেশনের জন্য একটি REST API প্রদান করে। তারপর এটি API এন্ডপয়েন্ট এবং তাদের কার্যকারিতা ব্যাখ্যা করবে। এটি আপনাকে এটি নিজেই পড়তে এবং বোঝার সময় বাঁচাবে। আপনি এই কার্যকারিতাগুলির কিছু বিস্তারিতভাবে ব্যাখ্যা করার জন্য পরবর্তী প্রশ্ন জিজ্ঞাসা করতে পারেন। বেশ সুন্দর, তাই না? এগিয়ে যান, চেষ্টা করে দেখুন!
৫. লোকাল থেকে লাইভ! ক্লাউড রান এবং ক্লাউড এসকিউএল দিয়ে ডিপ্লয়িং

ঠিক আছে, ক্লাউড অ্যাডভেঞ্চারার, তুমি পুরো এলাকা ঘুরে দেখেছো। এখন ক্লাউডে তোমার নিজস্ব ট্রিহাউস তৈরি করার সময়! আমরা আমাদের কুইকপোল অ্যাপ্লিকেশনটি গ্রহণ করব এবং এটিকে একটি বাস্তব, লাইভ ওয়েব অ্যাপে পরিণত করব যা যে কেউ দেখতে পারবে।
উদ্দেশ্য: PostgreSQL ব্যাকএন্ডের জন্য ক্লাউড SQL সহ ক্লাউড রানে কুইকপোল অ্যাপ্লিকেশনটি স্থাপন করা।
কাজ ১: আমাদের ডেটার জন্য একটি শক্তিশালী শাখা (ক্লাউড SQL সেট আপ করা)
প্রতিটি ভালো অ্যাপ্লিকেশনেরই মূল্যবান অ্যাকর্ন সংরক্ষণের জন্য একটি জায়গা প্রয়োজন... মানে, ডেটা! আমরা PostgreSQL-এর জন্য Cloud SQL ব্যবহার করব। এটি আমাদের ডাটাবেসের জন্য একটি জাদুর, স্ব-প্রতিরোধী বাগানের মতো, যাতে আমরা মজাদার জিনিসগুলিতে মনোনিবেশ করতে পারি।
আসুন জেমিনি সিএলআইকে আমাদের ডাটাবেসের জন্য বীজ বপন করতে বলি।
Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

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

আপনি উপরের পরিবেশ ভেরিয়েবলটি দিয়ে একটি .env ফাইল তৈরি করতে পারেন এবং Gemini CLI পুনরায় চালু করার আগে এটি সোর্স করতে পারেন, যাতে এটি এই ভেরিয়েবলগুলিতে অ্যাক্সেস পেতে পারে।
আমাদের ইনস্ট্যান্স যখন ক্রমবর্ধমান হচ্ছে, আসুন আমরা মাটি প্রস্তুত করি। আমাদের অ্যাপের জন্য একটি ডাটাবেস এবং একজন ব্যবহারকারীর প্রয়োজন।
In the quickpoll-db instance, create a new database named quickpolldb.
আপনার জন্য ডাটাবেস তৈরি করতে জেমিনি সিএলআই পোস্টগ্রেএসকিউএল এক্সটেনশনের জন্য ক্লাউড এসকিউএল-এ create_database টুল ব্যবহার করবে।

এবার এটি পরিচালনা করার জন্য একজন ব্যবহারকারী যোগ করা যাক:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
এবার, জেমিনি সিএলআই create_user টুল ব্যবহার করবে।

কাজ ২: গোপন পথ (ব্যাকএন্ড সংযোগ)
আমাদের ব্যাকএন্ডকে আমাদের নতুন ডাটাবেসের গোপন পথটি জানতে হবে। আসুন backend/main.py তে উঁকি দিই এবং দেখি এটি কীভাবে তার পথ খুঁজে পায়।
show me how would the backend/main.py connect to the database

আহ! দেখেছো? এটি ক্লাউড SQL পাইথন সংযোগকারী ব্যবহার করে এবং CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD, এবং CLOUD_SQL_POSTGRES_DATABASE এর মতো পরিবেশগত ভেরিয়েবলগুলি অনুসন্ধান করে। আমাদের এগুলি আমাদের ক্লাউড রান পরিষেবাতে দিতে হবে।
প্রথমত, আমাদের CLOUD_SQL_POSTGRES_INSTANCE দরকার। এটা অনেকটা গোপন হ্যান্ডশেকের মতো।
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

আপনি অনেক বিস্তারিত দেখতে পাবেন। Connection Name খুঁজুন এবং সেই মানটি কপি করুন। এটি দেখতে your-project-id:us-central1:quickpoll-db এর মতো হবে।
এখন আমরা ক্লাউড রানে অ্যাপ্লিকেশনটি স্থাপন করার আগে, প্রয়োজনীয় টেবিলগুলি দিয়ে ডাটাবেসটি ইন্সট্যান্টিয়েট করি। যেহেতু আমরা একটি পৃথক ডাটাবেস এবং একটি ব্যবহারকারী তৈরি করেছি, তাই আসুন জেমিনি CLI থেকে বেরিয়ে আসি এবং নতুন মানগুলি দিয়ে আমরা আগে তৈরি .env আপডেট করি:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
এখন জেমিনি সিএলআই পুনরায় চালু করুন এবং নিম্নলিখিতটি লিখুন:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

এটি স্বয়ংক্রিয়ভাবে বুঝতে পেরেছিল যে execute_sql টুলটি একই কলে একাধিক SQL কমান্ড কার্যকর করতে সহায়তা করে না। তাই, এটি এগিয়ে গিয়ে প্রতিটি SQL কমান্ড আলাদাভাবে কার্যকর করে।
টাস্ক ৩: ব্যাকএন্ড, টেক ফ্লাইট! (ক্লাউড রানে স্থাপন)
আমাদের ব্যাকএন্ডের নেস্ট ছেড়ে যাওয়ার সময় এসেছে! আমরা জেমিনিকে বলব ব্যাকএন্ড ফোল্ডারটি ক্লাউড রানে স্থাপন করতে এবং এটিকে ডাটাবেসের গোপন পথ দিতে।
Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
জেমিনি আপনার কোড প্যাকেজ করবে, একটি কন্টেইনার ইমেজ তৈরি করবে এবং ক্লাউড রানে এটি স্থাপন করবে। এটি সম্পন্ন হয়ে গেলে, যা কয়েক মিনিটেরও বেশি সময় নিতে পারে, আপনি আপনার চকচকে নতুন ব্যাকএন্ড পরিষেবার জন্য একটি URL পাবেন। সেই URL টি হাতের কাছে রাখুন!

কাজ ৪: ফিনিশিং টাচ (ফ্রন্টএন্ড কনফিগার এবং স্থাপন)
আমাদের ফ্রন্টএন্ড আমাদের অ্যাপ্লিকেশনের বন্ধুত্বপূর্ণ মুখের মতো। এটিকে জানতে হবে কোথায় ব্যাকএন্ড খুঁজে পেতে হবে। আসুন আমরা বলি কোথায় যেতে হবে।
Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

টাস্ক ৫: জমকালো উন্মোচন!
এটাই তো! সত্যের মুহূর্ত! আপনার quickpoll-fe পরিষেবার URL টি ধরুন এবং আপনার ওয়েব ব্রাউজারে এটি খুলুন।
তুমি তোমার QuickPoll অ্যাপ্লিকেশনটি লাইভ দেখতে পাবে এবং কাজ করার জন্য প্রস্তুত হবে! এগিয়ে যাও, একটি পোল তৈরি করো, ভোট দাও এবং রিয়েল-টাইমে ফলাফলের আপডেট দেখো।
তুমি এটা করেছো! তুমি তোমার স্থানীয় মেশিন থেকে একটি প্রকল্প নিয়ে গুগল ক্লাউডে এটিকে প্রাণবন্ত করে তুলেছো। আর তুমি তোমার বিশ্বস্ত সহযোগী, জেমিনি সিএলআই-এর সাহায্যে তোমার টার্মিনালে বসেই সবকিছু করেছো।
এখন এটাকেই আমি উৎপাদনশীলতা বলি!
৬. ডেভেলপারের জন্য - ডেভেলপমেন্ট লাইফসাইকেল ত্বরান্বিত করা

ঠিক আছে, ডেভেলপাররা, আসল মজা এখান থেকেই শুরু! আমরা একটি প্রকল্প অন্বেষণ করেছি, কিন্তু এখন এটি তৈরি করার সময়। আমি আপনাকে দেখাবো কিভাবে জেমিনি আপনার চূড়ান্ত কোডিং অংশীদার হতে পারে, যা আপনাকে একটি সহজ ধারণা থেকে উৎপাদন-প্রস্তুত কোডে কাঠবিড়ালির চেয়ে দ্রুত যেতে সাহায্য করবে!
আইডিয়া থেকে কোডে
সাধারণ উন্নয়ন চক্র সম্পর্কে চিন্তা করুন। এটি কেবল কোড লেখা নয়, তাই না? এটি স্ক্যাফোল্ডিং, ত্রুটি পরিচালনা, পুনর্নির্মাণ এবং লেখার পরীক্ষা যোগ করা। জেমিনি এই সবকিছুতে সাহায্য করতে পারে!
বয়লারপ্লেট এবং পুনরাবৃত্তিমূলক কাজ: আর কপি-পেস্ট নয়!
ঠিক আছে, তোমার মৌলিক অ্যাপ্লিকেশন কার্যকারিতা আছে। এখন তোমাকে লগিং যোগ করতে হবে এবং সম্ভাব্য ত্রুটিগুলি পরিচালনা করতে হবে, তাই না? সাধারণত এটি অনেক পুনরাবৃত্তিমূলক try...except । আর নয়! আসুন শুরু করি জেমিনি সিএলআই-কে কোড বিশ্লেষণ করতে এবং ত্রুটি লগিং এবং ব্যতিক্রম পরিচালনার জন্য সর্বোত্তম অনুশীলনের সুপারিশগুলি সুপারিশ করতে বলে:
What are the best practices for error handling and logging that should also be included in this application?

জেমিনি সিএলআই বিদ্যমান ফাইলটি বিশ্লেষণ করবে এবং কিছু সেরা অনুশীলনের সুপারিশ প্রদান করবে। এটিকে একজন বিশেষজ্ঞ সহকারী হিসেবে ভাবুন যা আপনার নিজের গবেষণা করার সময় বাঁচাতে পারে।
এখন, আসুন আমরা এটিকে আপনার জন্য এই সুপারিশগুলি বাস্তবায়ন করতে বলি:
please go ahead and implement these in the existing app
আপনার ক্ষেত্রে প্রকৃত আউটপুট ভিন্ন হতে পারে, তবে শেষ পর্যন্ত আপনি এটির করা পরিবর্তনগুলির বিশদ দেখতে পাবেন। উদাহরণস্বরূপ, নীচের স্ক্রিনশটে আপনি দেখতে পাচ্ছেন যে এটি JSON-ফর্ম্যাটেড লগ তৈরি করতে structlog যোগ করেছে, কেন্দ্রীয় ব্যতিক্রম পরিচালনা বাস্তবায়ন করেছে এবং অনুরোধের প্রতিক্রিয়া লগ করার পদ্ধতি উন্নত করেছে। আপনি এখন যে সমস্ত টাইপিং সংরক্ষণ করেছেন তার কথা ভাবুন!

রিফ্যাক্টরিং: আপনার ব্যক্তিগত কোড পর্যালোচক
আমরা সকলেই পরিষ্কার, দক্ষ কোড লিখতে চাই। কিন্তু মাঝে মাঝে, আমরা তাড়াহুড়ো করি। জেমিনি আপনার ব্যক্তিগত কোড পর্যালোচক হিসেবে কাজ করতে পারে। আপনি এটিকে এই ধরনের কিছু জিজ্ঞাসা করতে পারেন:
please perform a comprehensive code review for best practices and security


জেমিনি ভাষা-নির্দিষ্ট সর্বোত্তম অনুশীলনগুলি বোঝে। আবার, আপনার ক্ষেত্রে প্রকৃত আউটপুট উপরের স্ক্রিনশটগুলির চেয়ে আলাদা হতে পারে, তবে আপনি যদি আউটপুটটি পড়েন তবে আপনি কোড বিশ্লেষণ করার জন্য জেমিনি সিএলআই যে স্তরের বিশদ বিবরণ ব্যবহার করেছে তা উপলব্ধি করবেন। এটি আপনাকে একই সাথে আপনার কোড শিখতে এবং উন্নত করতে সহায়তা করে!
টেস্ট জেনারেশন: সেরা অংশ!
এটা আমার প্রিয় কৌশল! আমরা সবাই জানি আমাদের পরীক্ষা লেখা উচিত , কিন্তু এটা ক্লান্তিকর হতে পারে, বিশেষ করে যখন আপনাকে কিছু মজা করতে হয়। আচ্ছা, এটা দেখে নাও। তুমি শুধু জিজ্ঞাসা করতে পারো:
Add a test suite to this application



জেমিনি আপনার ফাংশন বিশ্লেষণ করবে, এর ইনপুট এবং আউটপুট সনাক্ত করবে এবং এর নির্ভরতা কী তা বের করবে। এরপর এটি একটি সম্পূর্ণ test_main.py ফাইল তৈরি করবে যেখানে বেশ কয়েকটি টেস্ট কেস থাকবে, যার মধ্যে একটি 'হ্যাপি পাথ' এবং সম্ভবত একটি ত্রুটির অবস্থা থাকবে। এটি একটি বিশাল উৎপাদনশীলতা বৃদ্ধি!
পরীক্ষাগুলো চালান! (আপনার জন্য একটি চ্যালেঞ্জিং কাজ)
এখন, এখানেই জিনিসগুলি সত্যিই রোমাঞ্চকর হয়ে ওঠে! আমি এই অংশটি আপনার জন্য স্বাধীনভাবে অন্বেষণ করার একটি চ্যালেঞ্জ হিসেবে রেখে যাচ্ছি। জেমিনি সিএলআই-কে এর তৈরি করা টেস্ট কেসগুলি কার্যকর করার জন্য অনুরোধ করতে দ্বিধা করবেন না। তারপর, কেবল বসে থাকুন এবং জাদুটি কীভাবে উন্মোচিত হয় তা পর্যবেক্ষণ করুন!
৭. লোকালহোস্টের বাইরে: গিটহাবের সাথে একীভূতকরণ

আমরা আমাদের স্থানীয় মেশিনে, আমাদের নিজস্ব বনের ছোট্ট কোণে, কিছু আশ্চর্যজনক কাজ করেছি। কিন্তু ক্লাউডের আসল শক্তি হল সহযোগিতা এবং সংযোগ! এখন সময় এসেছে উড়ে যাওয়ার এবং দেখার যে জেমিনি কীভাবে বৃহত্তর বিশ্বের সাথে যোগাযোগ করতে পারে, ডেভেলপার বনের সবচেয়ে বড় গাছ: GitHub থেকে শুরু করে!
ধারণা: আপনার ইন্টিগ্রেটেড ডেভঅপস সহকারী
এখন পর্যন্ত, আমরা স্থানীয় কোডিং বন্ধু হিসেবে Gemini ব্যবহার করেছি। এখন, আমরা এটিকে একটি পূর্ণাঙ্গ Integrated DevOps Assistant- এ আপগ্রেড করতে যাচ্ছি। এর সবই সম্ভব হয়েছে Model Context Protocol (MCP) ইন্টিগ্রেশনের জন্য। এটি একটি অভিনব নাম, কিন্তু এর অর্থ হল Gemini আপনার পক্ষ থেকে অন্যান্য পরিষেবার সাথে নিরাপদে কথা বলতে পারে, এবং আমরা প্রথমে যেটি আয়ত্ত করতে যাচ্ছি তা হল GitHub।
একবার ভেবে দেখুন। GitHub-এ পুল রিকোয়েস্ট চেক করতে, সমস্যা তৈরি করতে, অথবা রিপোজিটরি ব্রাউজ করতে কত ঘন ঘন আপনাকে টার্মিনাল ছেড়ে যেতে হয়? এটা আরও বেশি কনটেক্সট স্যুইচিং! github টুলসেটের সাহায্যে, আপনি এখানেই সবকিছু করতে পারবেন। এটি Gemini-কে GitHub-এর জন্য একটি নেটিভ ইন্টারফেসে পরিণত করে।
অফিসিয়াল GitHub MCP সার্ভার ডকুমেন্টেশন এর এক্সপোজড টুল এবং কনফিগারেশন অপশন সম্পর্কে যথেষ্ট নির্দেশনা প্রদান করে। আপনি স্থানীয় বা দূরবর্তী অপারেশনের মধ্যে একটি বেছে নিতে পারেন, কারণ Gemini CLI সম্পূর্ণরূপে উভয় দূরবর্তী MCP সার্ভারকেই সমর্থন করে।
এই টিউটোরিয়ালটি আপনাকে GitHub এর জন্য Remote MCP Server অপশন সেট আপ করার ক্ষেত্রে সাহায্য করবে। প্রথমেই, আপনার GitHub থেকে একটি Personal Access Token (PAT) প্রয়োজন হবে।
একবার আপনার PAT হয়ে গেলে, আপনার settings.json ফাইলে MCP সার্ভার অবজেক্ট যোগ করার সময় এসেছে। আমার সম্পূর্ণ settings.json নীচে দেখানো হয়েছে, তবে আপনি কেবল নিশ্চিত করতে পারেন যে আপনার mcpServers অবজেক্টটি আপনি এখানে যা দেখছেন তার সাথে মেলে:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
GitHub MCP সার্ভার কনফিগারেশনের সাথে আপনার settings.json আপডেট করার পরে, কেবল Gemini CLI পুনরায় চালু করুন অথবা /mcp refresh কমান্ডটি কার্যকর করুন। নীচের স্ক্রিনশটটি আমার সিস্টেমে প্রাইম করা GitHub MCP সার্ভারকে আলোকিত করে, যা Gemini CLI এখন মডেল কনটেক্সট প্রোটোকলের সাহায্যে ব্যবহার করতে পারে এমন শক্তিশালী সরঞ্জামগুলির অ্যারে প্রদর্শন করে।

কী কমান্ডের প্রদর্শনী
GitHub-এর জন্য বিশেষভাবে তৈরি সুপারপাওয়ারের একটি সম্পূর্ণ নতুন সেট নিয়ে এসেছে GettyHub। আমার পছন্দের কয়েকটি এখানে দেওয়া হল:
-
github.list_repositories: ব্রাউজার না খুলেই আপনার প্রতিষ্ঠানের সমস্ত রিপোজিটরি দেখতে চান? এটি আপনার টুল! শুধু জিজ্ঞাসা করুন, 'আমার প্রতিষ্ঠানের সমস্ত রিপোজিটরি তালিকাভুক্ত করুন।' -
github.create_issue: একটি বাগ খুঁজে পেয়েছেন? সমস্যা তৈরি করতে উইন্ডোজ পরিবর্তন করবেন না। আপনি কেবল Gemini কে বলতে পারেন, 'এই বর্ণনার মাধ্যমে "লগইন বাগ ঠিক করুন" শিরোনামেরsample-flask-appরেপোতে একটি সমস্যা তৈরি করুন...' এবং poof , সমস্যা তৈরি হয়ে গেছে। -
github.get_pull_request: PR চেক করতে হবে? আপনি জিজ্ঞাসা করতে পারেন, 'sample-flask-apprepo-তে PR নম্বর 42-এর বিবরণ আমাকে দেখান।' Gemini শিরোনাম, বিবরণ, স্ট্যাটাস এবং পর্যালোচক কারা তা নিয়ে আসবে। -
github.get_file_contents: এটি অসাধারণ। আপনি একটি রিমোট রিপোজিটরি থেকে একটি ফাইল পড়তে পারেন, প্রথমে এটি ক্লোন না করেই! এটি আপনার স্থানীয়ভাবে না থাকা কোনও প্রকল্পের কনফিগ ফাইল বা README দ্রুত পরীক্ষা করার জন্য দুর্দান্ত।
৮. গিটহাব এক্সপ্লোরেশন

অনেক কথা, চলো উড়ে যাই! আমরা আমাদের নতুন GitHub ক্ষমতা ব্যবহার করে একটি প্রতিষ্ঠান এবং একটি প্রকল্প অন্বেষণ করব, সবকিছুই আমাদের টার্মিনালের আরাম থেকে।
উদ্দেশ্য : GitHub-এ হোস্ট করা একটি প্রকল্প অন্বেষণ এবং বুঝতে Gemini ব্যবহার করুন।
পরিস্থিতি : আপনাকে GitHub-এর এমন একটি প্রকল্পের সাথে পরিচিত হতে হবে যার উপর আপনি আগে কাজ করেননি।
কাজ ১: একটি প্রতিষ্ঠানের সংগ্রহস্থলের তালিকা তৈরি করা
প্রথমে, আসুন একটি GitHub প্রতিষ্ঠানের সমস্ত প্রকল্পের একটি দৃশ্য দেখে নেওয়া যাক। এই ল্যাবের জন্য, আপনি আপনার নিজস্ব GitHub ব্যবহারকারীর নাম অথবা আপনার সংশ্লিষ্ট কোনও প্রতিষ্ঠান ব্যবহার করতে পারেন। আসুন Gemini কে সেগুলি তালিকাভুক্ত করতে বলি।
List the repositories in the `[your-org-or-username]` GitHub organization.
( [your-org-or-username] আপনার প্রকৃত তথ্য দিয়ে প্রতিস্থাপন করতে ভুলবেন না!) জেমিনি github.list_repositories টুল ব্যবহার করবে এবং আপনাকে সমস্ত প্রকল্পের একটি তালিকা দেখাবে। অসাধারণ!
কাজ ২: একটি নির্দিষ্ট সংগ্রহস্থল খুঁজুন
ঠিক আছে, তুমি রিপোজিটরির একটি তালিকা দেখতে পাবে। এখন, একজন প্রকৃত ডেভেলপারের মতো, তোমাকে সেই তালিকাটি স্ক্যান করতে হবে এবং তোমার আগ্রহের প্রজেক্টটি খুঁজে বের করতে হবে। আমাদের ল্যাবের জন্য, ধরে নাও যে আমরা আগে ক্লোন করা quickpoll রিপোজিটরিটি খুঁজছি। এই অংশের জন্য তোমার কোন কমান্ডের প্রয়োজন নেই—শুধু শেষ ধাপের আউটপুটটি পড়ে রেপোটি খুঁজে বের করো!
কাজ ৩: খোলা পুল অনুরোধগুলির তালিকা তৈরি করুন
এখন যেহেতু আমরা আমাদের টার্গেট রিপোজিটরিটি চিহ্নিত করেছি, দেখা যাক এর সাথে কী হচ্ছে। কোন খোলা পুল অনুরোধ আছে কি? আসুন জিজ্ঞাসা করি:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
জেমিনি github.list_pull_requests টুল ব্যবহার করবে, যা open স্টেটের জন্য ফিল্টার করবে। এরপর এটি যেকোনো ওপেন পিআর তালিকাভুক্ত করবে, যেখানে আপনাকে পিআর নম্বর, শিরোনাম এবং এটি কে তৈরি করেছে তা দেখানো হবে। এটি প্রকল্পের সক্রিয় বিকাশ সম্পর্কে আপনার তাৎক্ষণিক ধারণা। আপনি যে রিপোজিটরিতে সক্রিয়ভাবে অবদান রাখছেন তার সাথে এটি চেষ্টা করতে পারেন এবং ফলাফলগুলি পরীক্ষা করতে পারেন।

কাজ ৪: একটি পুল রিকোয়েস্ট তদন্ত করুন
ধরা যাক সেই তালিকায় একটি আকর্ষণীয় জনসংযোগ আছে। আমরা এটি সম্পর্কে আরও জানতে চাই! আমরা বিবরণ এবং কোন ফাইলগুলি পরিবর্তন করা হয়েছে তা দেখতে চাই। তালিকা থেকে একটি জনসংযোগ নম্বর বেছে নিন (যদি কোনওটি না থাকে, তাহলে আপনি এটি এড়িয়ে যেতে পারেন, কিন্তু কল্পনা করুন যে একটি আছে!)।
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
এটি জেমিনির জন্য বহু-পদক্ষেপের কাজের একটি দুর্দান্ত উদাহরণ! প্রথমে, এটি সম্ভবত github.get_pull_request ব্যবহার করে মূল বিবরণ - শিরোনাম, বডি, লেখক ইত্যাদি সংগ্রহ করবে। তারপর, ফাইলের পরিবর্তনগুলি পেতে, এটি দ্বিতীয় একটি টুল, github.get_pull_request_files ব্যবহার করবে। এরপর এটি আপনার জন্য এই সমস্ত তথ্য একত্রিত করে একটি সুন্দর, পরিষ্কার সারাংশ তৈরি করবে। আপনি আপনার টার্মিনাল থেকে বের না হয়েই একটি PR পর্যালোচনা করেছেন! এটা কত আশ্চর্যজনক?!
৯. পিআরডি থেকে প্রাথমিক কমিট পর্যন্ত

তুমি অন্বেষণ, নির্মাণ এবং পরীক্ষা করতে শিখেছো। এখন, আমরা সবকিছুকে বাস্তব জগতের দৃশ্যপটে একত্রিত করব। এই মুহূর্তটি হল যখন আমরা একটি পরিকল্পনাকে একটি পণ্যে রূপান্তরিত করি। আমরা একটি পণ্য প্রয়োজনীয়তা ডকুমেন্ট (PRD) থেকে আমাদের প্রথম প্রতিশ্রুতি পর্যন্ত যাব। চলো অসাধারণ কিছু তৈরি করি!
উদ্দেশ্য : স্থানীয় এবং দূরবর্তী প্রেক্ষাপটকে একত্রিত করে, শুরু থেকে শেষ পর্যন্ত একটি বাস্তব-বিশ্বের উন্নয়নমূলক কাজ অনুকরণ করুন।
পরিস্থিতি : আপনাকে একটি নতুন বৈশিষ্ট্য বরাদ্দ করা হয়েছে! প্রকল্পের GitHub সংগ্রহস্থলের ভিতরে একটি PRD ফাইলে প্রয়োজনীয়তাগুলি আপনার জন্য অপেক্ষা করছে।
কাজ ১: বুঝুন - PRD পড়ুন
এটি সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপ! একটি একক লাইন কোড লেখার কথা ভাবার আগে, আপনাকে অবশ্যই পরিকল্পনাটি বুঝতে হবে। আমাদের নতুন বৈশিষ্ট্যের প্রয়োজনীয়তাগুলি prd/NEW_FEATURE.md ফাইলের মধ্যে রয়েছে। আসুন এটি খুলে দেখি ভিতরে কী আছে।
explain the requirements mentioned in prd/NEW_FEATURE.md
জেমিনি সিএলআই পিআরডির কন্টেন্ট প্রদর্শনের জন্য read_file ব্যবহার করবে। এখানে ক্লিক করুন! এটি নতুন বৈশিষ্ট্যটির রূপরেখা দেবে: ব্যবহারকারীদের সক্রিয় পোল তালিকা ম্যানুয়ালি আপডেট করার জন্য একটি রিফ্রেশ বোতাম। সর্বদা প্রথমে ব্লুপ্রিন্টটি দেখুন!

কাজ ২: কোড - প্রয়োজনীয়তাগুলিকে বাস্তবে রূপান্তর করা
এটা একটা জাদুর মুহূর্ত! আমরা PRD-এর কাছ থেকে প্রয়োজনীয়তা নেব এবং জেমিনিকে আমাদের জন্য কোড লিখতে বলব। আসুন আমরা স্পষ্টভাবে বলি এবং আমরা ঠিক কী চাই তা বলি।
Implement the changes as per the PRD
জেমিনি সিএলআই কার্যকর হবে, এবং কিছুক্ষণ পরে, আপনি অনেকটা এরকম একটি আউটপুট দেখতে পাবেন। আমাদের চকচকে নতুন কোডটি এখন একটি আরামদায়ক ঘর!

কাজ ৩: আপনার পরিবর্তনগুলি যাচাই করুন
আমরা নতুন কোড সহ একটি নতুন ফাইল তৈরি করেছি। এই ল্যাবের শেষ ধাপ হল পরিবর্তনটি ক্লাউড রানে স্থাপন করা এবং যাচাই করা।
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
লক্ষ্য করুন কিভাবে সেই প্রম্পটে অতিরিক্ত বিশদ বিবরণ দেওয়া হয়েছে, যেমন বিদ্যমান ক্লাউড রান পরিষেবার নাম এবং এর স্থাপনার অঞ্চল। নির্দিষ্ট থাকা সময় বাঁচাতে সাহায্য করে, যদিও আপনি যদি কোনও অনুপস্থিত বিশদ বাদ দেন তবে জেমিনি সিএলআই সর্বদা আপনাকে জিজ্ঞাসা করবে।
যদি আপনার আপডেট করা ক্লাউড রান পরিষেবায় কোনও ত্রুটি দেখা দেয়, তাহলে কেবল জেমিনি সিএলআই-কে কোডটি ডিবাগ এবং সংশোধন করতে বলুন। মনে রাখবেন, এটি আপনার অতি-শক্তিশালী সঙ্গী!
১০. অভিনন্দন

And that's a wrap! You just completed a full development cycle. You went from a requirement document to a new feature, ready to be committed and pushed. You combined local context, remote context, file system operations, and code generation. You're not just a developer; you're a super-productive cloud architect! Congratulations!