1. परिचय

नमस्ते! मेरा नाम स्पार्की है! हमें खुशी है कि आप आ सके. मैं आज us-central1 में मौजूद GKE क्लस्टर से यहां आया हूं. इस कोडलैब में आपका स्वागत है.
मैंने अपना पूरा जीवन Google Cloud की डेटा स्ट्रीम में बिताया है. इसलिए, मुझे सब कुछ पता है. मैंने आपको, आर्किटेक्ट को, और इंजीनियर को शानदार काम करते हुए देखा है. लेकिन मैंने तुम्हें काँटों में फँसते हुए भी देखा है. तुम्हें पता है कि मैं किस बारे में बात कर रहा हूँ! GKE में किसी पॉड को डीबग करते समय, कॉन्टेक्स्ट स्विच करने की भावना. आपको नोड की स्थिति देखने के लिए kubectl logs और GCP कंसोल के बीच स्विच करना होगा. साथ ही, डिप्लॉय किए गए सोर्स कोड को देखने के लिए अपने आईडीई और पॉड लाइफ़साइकल हुक के लिए आधिकारिक Kubernetes दस्तावेज़ों वाले ब्राउज़र टैब के बीच स्विच करना होगा. हर जंप से ध्यान भटकता है!
साथ ही, जटिल टूल! gcloud, kubectl, terraform... हर एक का अपना डीएसएल और फ़्लैग का ढेर है. इससे, दस्तावेज़ों को लगातार ढूंढना पड़ता है. आपको अपनी ज़रूरत के हिसाब से डेटा पाने के लिए, --filter और --format फ़्लैग के सही कॉम्बिनेशन के साथ, एक बेहतरीन gcloud कमांड खोजनी होती है. यह लाखों नट के जंगल में किसी खास नट को ढूंढने जैसा है. साथ ही, बार-बार होने वाले टास्क के बारे में तो बात ही न करें. मैंने देखा है कि आपने नई Python सेवा के लिए, एक ही Dockerfile और cloudbuild.yaml को कई बार लिखा है. शायद कोड को डेजा वू हो गया है.
हम आपको इससे बेहतर तरीका बताने के लिए यहां हैं. जंगल के बीच से गुज़रता एक गुप्त रास्ता. Gemini CLI का काम यही है!
Gemini CLI क्या है?
तो, यह मैजिक शॉर्टकट क्या है जिसके बारे में मैं इतना उत्साहित हूँ?
Gemini CLI को अपने टर्मिनल में मौजूद, आपके निजी क्लाउड कंपैनियन के तौर पर इस्तेमाल करें. यह एक बातचीत है, एक साझेदारी है! यह कॉन्टेक्स्ट के हिसाब से काम करता है. इसका मतलब है कि यह सिर्फ़ सुनता नहीं है, बल्कि समझता भी है. यह आपकी फ़ाइलों को पढ़ सकता है. साथ ही, आपके प्रोजेक्ट के नियमों के बारे में जान सकता है. जैसे, टैब या स्पेस का इस्तेमाल किया जाता है या नहीं. इसके अलावा, यह समझ सकता है कि आपको क्या करना है. यह कुछ ऐसा है कि मुझे पता चल जाता है कि आपको कौनसे एकॉर्न इकट्ठा करने हैं!
हाई-लेवल आर्किटेक्चर (आइए, इसकी प्रोसेस को समझते हैं!)
यह सब कैसे काम करता है? इसमें कुछ बेहतरीन चीज़ें शामिल हैं, जो एक साथ काम करती हैं:
- एक बेहतरीन लैंग्वेज मॉडल: यह इसका दिमाग़ है! खास तौर पर, यह Google का एक बड़ा मल्टीमॉडल मॉडल है. ‘मल्टीमॉडल' का मतलब है कि यह सिर्फ़ टेक्स्ट को नहीं समझता, बल्कि कोड के स्ट्रक्चर और मतलब को भी समझता है. इससे, यह आपके सॉफ़्टवेयर को सिर्फ़ पढ़ता नहीं है, बल्कि उसके बारे में तर्क भी देता है.
- आपका स्थानीय संदर्भ: यह ज़रूरी है. Gemini CLI, आपकी लोकल मशीन पर एक प्रोसेस के तौर पर काम करता है. इसके पास वही अनुमतियां होती हैं जो आपके उपयोगकर्ता खाते के पास होती हैं. इसका मतलब है कि यह प्रोजेक्ट से जुड़ी मदद देने के लिए, आपके फ़ाइल सिस्टम को ऐक्सेस कर सकता है. यह कोई दूर की क्लाउड सेवा नहीं है, जो आपके कोड के बारे में अनुमान लगा रही है. यह आपके साथ ही है.
- टूलिंग इकोसिस्टम: इस तरह मॉडल, दुनिया से इंटरैक्ट करता है. इसमें फ़ंक्शन का एक तय सेट होता है, जिसे कॉल किया जा सकता है. जैसे,
read_fileयाrun_shell_command. इसे एक सुरक्षित एपीआई की तरह समझें. मॉडल यह तय करता है कि क्या करना है और किस टूल का इस्तेमाल करना है. इसके बाद, इसे लागू करने के लिएtool_codeब्लॉक जनरेट करता है. इससे, इसकी कार्रवाइयों का अनुमान लगाया जा सकता है और यह भरोसेमंद बन जाता है. - शेल कमांड को लागू करना: यह वाकई कमाल का है! यह
bash -c <command>सबशेल में कोई भी कमांड चला सकता है. यहstdout,stderr, औरexit codeको कैप्चर करता है. यह शानदार है! इसका मतलब है कि Gemini CLI, कोई कमांड चला सकता है. साथ ही, यह देख सकता है कि कमांड काम नहीं कर रही है या नहीं. इसके बाद, गड़बड़ी के मैसेज के आधार पर, उसे ठीक करने की कोशिश कर सकता है. - सेफ़्टी नेट: यह मेरा पसंदीदा हिस्सा है! उस
tool_codeब्लॉक को लागू करने से पहले, सीएलआई क्लाइंट आपको exact कमांड या कोड दिखाएगा और आपसे पुष्टि करने के लिए कहेगा. यह क्लाइंट-साइड की जांच है. इसलिए, आपके पास यह तय करने का विकल्प होता है कि आपके सिस्टम में क्या डाउनलोड किया जाए. आपके पास हमेशा कंट्रोल रहता है!
यह सिर्फ़ एक चैटबॉट नहीं है, बल्कि एक ऐसा टूल है जो आपके काम कर सकता है! कोडिंग के दौरान आपकी मदद करने वाला एक ऐक्टिव असिस्टेंट.
मुख्य सिद्धांत: डिक्लेरेटिव बनाम इंपरेटिव
सबसे बड़ा और शानदार बदलाव यह है कि अब कंप्यूटर को यह बताने के बजाय कि कोई काम कैसे करना है, यह बताया जाता है कि आपको क्या चाहिए.
- आदेशात्मक (पुराना और मुश्किल तरीका): आपको हर चरण के बारे में बताना होगा. आपको टूल के खास डोमेन की भाषा का विशेषज्ञ होना चाहिए. जैसे, यह बहुत बड़ा निर्देश:
ओह! इसे देखें! आपको मशीन टाइप, इमेज फ़ैमिली, मेटाडेटा, और टैग के सिंटैक्स के बारे में पता होना चाहिए. किसी एक हिस्से को छोड़ देने पर, आपको गड़बड़ी का मैसेज मिलता है.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 - डिक्लेरेटिव (यह Sparky का शॉर्टकट है!): आपको बस आसान अंग्रेज़ी में यह बताना है कि आपको क्या चाहिए!
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
हो गया! Gemini आपकी क्वेरी को पार्स करता है और उसे gcloud टूल के पैरामीटर के साथ मैप करता है. साथ ही, हर फ़्लैग के लिए सही सिंटैक्स का पता लगाता है और आपके लिए वह बड़ी और डरावनी कमांड बनाता है. इसके बाद, वह आपको इसे मंज़ूरी देने के लिए कहता है. इसका मकसद, आपको कमांड-लाइन फ़्लैग याद रखने के बजाय, बड़े पैमाने पर सोचने के लिए प्रेरित करना है.
Gemini की क्षमताओं को बढ़ाना: सीएलआई एक्सटेंशन के बारे में जानकारी
Gemini CLI एक बेहतरीन टूल है. हालांकि, एक्सटेंशन की मदद से इसकी पूरी क्षमता का इस्तेमाल किया जा सकता है. एक्सटेंशन, प्रॉम्प्ट, टूल, और कस्टम कमांड के बंडल होते हैं. ये CLI की सुविधाओं को बेहतर बनाते हैं, ताकि आप इसे अपनी खास ज़रूरतों और वर्कफ़्लो के हिसाब से बना सकें.
एक्सटेंशन ढूंढना और इंस्टॉल करना
Gemini सीएलआई के लिए, Google और तीसरे पक्ष के डेवलपर, दोनों ही एक्सटेंशन बना रहे हैं. एक्सटेंशन की आधिकारिक डायरेक्ट्री को geminicli.com/extensions पर ब्राउज़ किया जा सकता है.
एक्सटेंशन इंस्टॉल करने के लिए, एक्सटेंशन की Git रिपॉज़िटरी के यूआरएल के साथ gemini extensions install कमांड का इस्तेमाल किया जा सकता है. उदाहरण के लिए, Cloud SQL for PostgreSQL का आधिकारिक एक्सटेंशन इंस्टॉल करने के लिए, यह कमांड चलाएं:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
ठीक है, अब बस! आइए, हम इस सुविधा को आज़माकर देखें!
2. शुरू करने से पहले

नमस्ते, क्लाउड के आने वाले समय के जादूगरों! स्पार्की, आपकी सेवा में हाज़िर है. हमारा शानदार एडवेंचर शुरू करने से पहले, हमें यह पक्का करना होगा कि आपका वर्कशॉप एनवायरमेंट तैयार हो. इसे जंगल में जाने से पहले, अपने बैग में सभी सही टूल और जादुई बलूत के फल पैक करने जैसा समझें. मुझे फ़ॉलो करो!
अगर आपके पास पहले से ही कोई Google Cloud प्रोजेक्ट है, तो Google Cloud Shell में Gemini सीएलआई का इस्तेमाल किया जा सकता है. ऐसा इसलिए, क्योंकि यह Gemini सीएलआई के साथ पहले से इंस्टॉल होता है. इसके अलावा, इसे अपने कंप्यूटर पर सेट अप करने के लिए, यह तरीका अपनाएं.
पहला चरण: ज़रूरी शर्तें
हर साहसिक व्यक्ति को एक मज़बूत नींव की ज़रूरत होती है. Gemini CLI को इंस्टॉल करने से पहले, आपको अपने कंप्यूटर पर कुछ चीज़ें सेट अप करनी होंगी.
- Google Cloud SDK (
gcloud): यह Google Cloud के लिए मुख्य टूलकिट है. Gemini सीएलआई, इस फ़ैमिली का हिस्सा है!
- देखें कि यह इंस्टॉल है या नहीं:
gcloud --versionचलाएं. अगर आपको वर्शन नंबर दिखता है, तो इसका मतलब है कि आपके पास नया वर्शन है! - अगर इंस्टॉल नहीं है: cloud.google.com/sdk/docs/install पर दिए गए आधिकारिक निर्देशों का पालन करें.
- Git: हमें इसकी ज़रूरत, हैंड्स-ऑन लैब की रिपॉज़िटरी को क्लोन करने के लिए होगी.
- देखें कि यह इंस्टॉल है या नहीं:
git --versionचलाएं. - अगर इंस्टॉल नहीं है: इसे git-scm.com/downloads से डाउनलोड किया जा सकता है.
- GCP प्रोजेक्ट और पुष्टि करना:
- पक्का करें कि आपके पास बिलिंग की सुविधा चालू वाला Google Cloud प्रोजेक्ट हो. यह बहुत ज़रूरी है!
- यह कमांड चलाकर, अपने Google खाते में लॉग इन करें:
gcloud auth login
- सेशन के लिए अपना प्रोजेक्ट सेट करें. GCP Console से अपना प्रोजेक्ट आईडी ढूंढें और यह कमांड चलाएं:
gcloud config set project YOUR_PROJECT_ID
(YOUR_PROJECT_ID की जगह अपना असल प्रोजेक्ट आईडी डालें!)
- Node.js का 20 या उसके बाद का वर्शन
दूसरा चरण: जादू देखें! (Gemini CLI इंस्टॉल करना)
ठीक है, बुनियादी बातें हो गईं. अब मुख्य इवेंट का समय आ गया है! हम Gemini CLI इंस्टॉल करेंगे.
npx की मदद से तुरंत चलाना
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
npm की मदद से, इसे ग्लोबल तौर पर इंस्टॉल करना
npm install -g @google/gemini-cli
Homebrew (macOS/Linux) की मदद से, इसे ग्लोबल तौर पर इंस्टॉल करना
brew install gemini-cli
Gemini का वर्शन देखना
gemini --version
आपको वर्शन नंबर दिखेगा. इससे पुष्टि होती है कि इंस्टॉल करने की प्रोसेस पूरी हो गई है.
तीसरा चरण: पावर अप करना (कॉन्फ़िगरेशन)
Gemini CLI इंस्टॉल हो गया है. अब हमें इसे ऐक्सेस करने के लिए, क्रेडेंशियल देने होंगे. सबसे पहले, टर्मिनल में gemini कमांड चलाकर इसे लॉन्च करें. आपको यह स्क्रीन दिखेगी:

आसानी से पुष्टि करने के लिए, अपने Google खाते का इस्तेमाल किया जा सकता है. इससे आपको Gemini 2.5 Pro का ऐक्सेस मिलता है. इसमें 10 लाख टोकन वाली कॉन्टेक्स्ट विंडो और हर मिनट में 60 अनुरोध और हर दिन में 1,000 अनुरोध करने की सुविधा मिलती है. इसके लिए, आपको एपीआई पासकोड मैनेज करने की ज़रूरत नहीं होती.
अगर आपको Gemini के किसी मॉडल का ऐक्सेस चाहिए या ज़रूरत पड़ने पर इस्तेमाल की सीमाएं बढ़ानी हैं, तो पुष्टि करने के तरीके के तौर पर Gemini API कुंजी का इस्तेमाल करें.
अगर Enterprise टीमों और प्रोडक्शन वर्कलोड के लिए, Google प्रोजेक्ट और बिलिंग खाता पहले से ही सेट अप है, तो बेहतर सुरक्षा और अनुपालन के लिए Vertex AI का इस्तेमाल करें.
आपने जो विकल्प चुना है उसके आधार पर, आपको पुष्टि करने की प्रोसेस को कॉन्फ़िगर करने के लिए अगले चरण बताए जाएंगे. इन विकल्पों के बारे में ज़्यादा जानने के लिए, Gemini CLI का दस्तावेज़ देखें.
अगर आपको Google Cloud के Vertex AI प्लैटफ़ॉर्म का इस्तेमाल करना है, तो पहले Gemini CLI से बाहर निकलें. इसके लिए, ctrl+c को दो बार दबाएं. इसके बाद, ज़रूरी एनवायरमेंट वैरिएबल सेट करें
पुष्टि करने के तरीके से कोई फ़र्क़ नहीं पड़ता. आम तौर पर, आपको ये वैरिएबल सेट करने होंगे: 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"
अब Google Cloud में लॉग इन करें:
gcloud auth application-default login
पिछले तरीके से पुष्टि करने के बाद, टर्मिनल में gemini कमांड चलाकर Gemini CLI को फिर से लॉन्च करें. पुष्टि करने के विकल्पों में जाकर, Vertex AI को चुनें. इसके बाद, आपको पुष्टि करने के लिए कहा जाएगा.
चौथा चरण: स्पार्क टेस्ट! (आपके सेटअप की पुष्टि की जा रही है)
अब पता चलेगा कि कौन सही है! आइए, देखते हैं कि सब कुछ ठीक से काम कर रहा है या नहीं. यह पक्का करने के लिए कि सभी लाइटें हरी हैं, इन कमांड को चलाएं.
- यह प्रॉम्प्ट डालें:
What is my current directory?
Gemini CLI को आपकी मौजूदा वर्किंग डायरेक्ट्री की जानकारी देकर जवाब देना चाहिए. इससे कोर लैंग्वेज मॉडल और शेल इंटिग्रेशन की जांच की जाती है.

- GCP कनेक्शन की जांच करें:
list my gcs buckets
अगर आपके पास कोई GCS बकेट है, तो उसे सूची में शामिल किया जाना चाहिए. अगर कोई अपडेट उपलब्ध नहीं है, तो आपको इसकी सूचना दी जाएगी. इससे यह पुष्टि होती है कि यह आपके GCP प्रोजेक्ट से सही तरीके से कनेक्ट है.
पांचवां चरण: इसे और भी ज़्यादा सुपरपावर देना! (एक्सटेंशन इंस्टॉल करना)
अब कुछ एक्सटेंशन इंस्टॉल करके, Gemini CLI की क्षमताओं को बेहतर बनाते हैं. ये एक्सटेंशन, लैब में बाद में काम आएंगे.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Gemini CLI की सुरक्षा
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
PostgreSQL के लिए Cloud SQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
अगर ये सभी कमांड काम करती हैं, तो इसका मतलब है कि आप वर्कशॉप के लिए तैयार हैं! आपका एनवायरमेंट सेट अप हो गया है. अब आप अपनी प्रॉडक्टिविटी को बेहतर बनाने के लिए तैयार हैं. पहले लैब में मिलते हैं!
3. मुख्य सिद्धांत और लोकल Workspace इंटरैक्शन

ठीक है, क्या आप अपने हाथों को गंदा करने के लिए तैयार हैं? अब हम Gemini के नए टूलबेल्ट में मौजूद टूल के बारे में जानेंगे. मुझे लगता है कि ये मेरे लिए क्लाउड में एक्सप्लोर करने और उसे बनाने की सुपरपावर हैं! आइए, जानते हैं कि ये कैसे काम करते हैं.
मुख्य सुविधाएं
मैंने अपनी क्षमताओं को दो हिस्सों में बांटा है: पहला, यह देखना कि क्या-क्या उपलब्ध है और दूसरा, उन सुविधाओं का इस्तेमाल करना!
अपने आस-पास के माहौल को समझना (मेरी सुपर-सेंस!)
नया घोंसला बनाने से पहले, आपको पेड़ की जांच करनी होगी, है न? इन टूल का इस्तेमाल, किसी जगह की जानकारी पाने के लिए किया जाता है.
list_directory: यह मेरा बुनियादी ‘स्निफ़ अराउंड' टूल है. यह ओएस-लेवल की डायरेक्ट्री लिस्टिंग के चारों ओर एक सामान्य रैपर है. हालांकि, सबसे अच्छी बात यह है कि मॉडल इस स्ट्रक्चर्ड आउटपुट को पार्स करके फ़ैसले ले सकता है. जैसे,srcनाम की सबडायरेक्ट्री को एक्सप्लोर करने का विकल्प चुनना.glob: यह मेरी ‘ऐकॉर्न फ़ाइंडर' है! यह स्टैंडर्ड ग्लोब पैटर्न का इस्तेमाल करता है. जैसे,*,**,?, और[]. इनके बारे में आपको.gitignoreजैसे प्रॉडक्ट से पहले से पता है. इसलिए,app/**/*.pyपैटर्न का इस्तेमाल करके, ‘appडायरेक्ट्री में मौजूद सभी*.pyफ़ाइलें ढूंढो' कहा जा सकता है. यह मॉडल के विश्लेषण के लिए, फ़ाइलों का एक खास सेट इकट्ठा करने का एक बेहतरीन तरीका है.search_file_content: यह मेरी एक्स-रे विज़न है! यह खोज के लिए, पूरे रेगुलर एक्सप्रेशन (रेगुलर एक्सप्रेशन) का इस्तेमाल करता है. सिर्फ़ स्ट्रिंग मैचिंग का नहीं. यह बहुत ही काम का फ़ीचर है. इसे मुश्किल पैटर्न ढूंढने के लिए कहा जा सकता है. जैसे, ‘POST तरीके का इस्तेमाल करने वाले सभी फ़्लास्क रूट ढूंढो.' इससेapp\.route\(.*methods=\['POST'\].*\)जैसा रेगुलर एक्सप्रेशन जनरेट हो सकता है. यह फ़ाइल पाथ, लाइन नंबर, और मैच करने वाली लाइन दिखाता है. इससे मॉडल को ज़रूरी कॉन्टेक्स्ट मिल जाता है.read_file: जब आपको कोई दिलचस्प फ़ाइल मिल जाए, तो उसे खोलें.read_fileको इसके लिए ऑप्टिमाइज़ किया गया है. पूरी फ़ाइल पढ़ी जा सकती है. हालांकि, बड़ी फ़ाइलों को हिस्सों में पढ़ने के लिए,offsetऔरlimitपैरामीटर का इस्तेमाल किया जा सकता है. इसका मतलब है कि मॉडल, टाइम आउट हुए बिना बड़ी लॉग फ़ाइलों को भी आसानी से स्कैन कर सकता है.
समझने से लेकर कार्रवाई करने तक (बनाने का समय!)
ठीक है, आपने इलाके को एक्सप्लोर कर लिया है. अब अपना घोंसला बनाने का समय आ गया है! इन टूल की मदद से, बदलाव किए जा सकते हैं और काम पूरे किए जा सकते हैं.
**write_file**: क्या आपको नई फ़ाइल बनानी है?write_fileएक एटॉमिक ऑपरेशन है. यह आपके दिए गए पूरे कॉन्टेंट को तय किए गए पाथ पर लिखता है. यह नए मॉड्यूल बनाने या प्रोजेक्ट की ज़रूरतों के आधार पर, स्क्रैच सेDockerfileबनाने के लिए सबसे सही है.**replace**: इस टूल का इस्तेमाल, बड़े बदलाव करने के लिए किया जाता है! यह सिर्फ़ ढूंढने और बदलने की सुविधा नहीं है. आपकोold_stringऔरnew_stringदेना होगा. इस सुविधा का सुरक्षित तरीके से इस्तेमाल करने के लिए,old_stringको फ़ाइल का यूनीक स्निपेट होना चाहिए. आम तौर पर, इसमें उस हिस्से से पहले और बाद में कई लाइनें होती हैं जिसे आपको बदलना है. इससे यह पक्का होता है कि हम सिर्फ़ उस कोड में बदलाव कर रहे हैं जिसे आपको exact है.**run_shell_command**: यह सबसे ज़्यादा असरदार पावर-अप है! यह दी गई कमांड कोbash -c <command>सबशेल में एक्ज़ीक्यूट करता है. मॉडल कोstdout,stderr, औरexit codeवापस मिल जाता है. वर्कफ़्लो बनाने के लिए यह ज़रूरी है. मॉडल,terraform planको चला सकता है और आउटपुट को पढ़ सकता है. अगर प्लान सही तरीके से काम करता है (एक्ज़िट कोड 0), तो वह आपसे पूछ सकता है कि क्या उसे इसे लागू करना चाहिए.
सेफ़्टी नेट (मेरा आपसे वादा!)
अब कमांड चलाने में डर लग सकता है. ठीक है! इसलिए, सुरक्षा कवच इतना अहम है. जब मॉडल, run_shell_command या write_file को कॉल करने वाला tool_code ब्लॉक जनरेट करता है, तो Gemini CLI क्लाइंट उसे इंटरसेप्ट कर लेता है. यह आपको लिखने के लिए फ़ाइल का पूरा कॉन्टेंट या सटीक कमांड दिखाता है. साथ ही, आपको [y/n] प्रॉम्प्ट देता है. आपकी साफ़ तौर पर दी गई अनुमति के बिना कुछ भी नहीं होता है. आपके पास हमेशा कंट्रोल रहता है.
4. किसी प्रोजेक्ट को एक्सप्लोर करना

मकसद: टर्मिनल से बाहर निकले बिना, Gemini CLI का इस्तेमाल करके किसी ऐसे कोडबेस को समझना जिसके बारे में आपको जानकारी नहीं है.
उदाहरण: आप एक नए डेवलपर हैं और आपको इस प्रोजेक्ट के बारे में तुरंत जानकारी चाहिए!
टास्क 0: सेटअप - प्रोजेक्ट का क्लोन बनाएं!
सबसे पहले, हमें कोड चाहिए! यह GitHub पर मौजूद किसी सार्वजनिक रिपॉज़िटरी में छिपा है. यह quickpoll नाम के ‘ट्री' में मौजूद है. आइए, Gemini सीएलआई से इसे हमारे लिए क्लोन करने के लिए कहें. इससे पहले, आइए एक वर्किंग डायरेक्ट्री बनाते हैं और वर्किंग डायरेक्ट्री से Gemini CLI लॉन्च करते हैं:
mkdir workdir
cd workdir
gemini
अब यह प्रॉम्प्ट टाइप करें:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini समझ जाएगा कि ‘क्लोन' का मतलब git clone कमांड का इस्तेमाल करना है. इससे run_shell_command टूल कॉल जनरेट होगा. इसमें git clone https://github.com/gauravkakad-google/quickpoll.git जैसा कुछ होगा. अनुमति देने के बाद, यह आपके लिए रिपॉज़िटरी डाउनलोड कर देगा.
अब, ctrl+c को दो बार दबाकर Gemini CLI से बाहर निकलें. इसके बाद, सैंपल रिपॉज़िटरी पर जाएँ और Gemini CLI को फिर से लॉन्च करें:
cd quickpoll
gemini
बढ़िया! अब हम प्रोजेक्ट ट्री में हैं. इसलिए, अब हम एक्सप्लोर करना शुरू कर सकते हैं!
टास्क 1: प्रोजेक्ट में मौजूद सभी फ़ाइलों की सूची बनाना
अब हम जंगल में आ गए हैं, तो आइए पूरे जंगल को मैप करें. हमें हर फ़ाइल देखनी है. Gemini से यह पूछें:
List all the files in the project.
Gemini, **/* पैटर्न के साथ glob टूल का इस्तेमाल कर सकता है. यह हर फ़ाइल को क्रम से दिखाता है. इससे आपको कोडबेस का पूरा मेनिफ़ेस्ट मिलता है. यह प्रोजेक्ट के स्ट्रक्चर को समझने का पहला बेहतरीन चरण है.
दूसरा टास्क: ‘google.cloud.sql.connector' को इंपोर्ट करने वाली सभी फ़ाइलें ढूंढना
ठीक है, मुझे इस बारे में जानकारी चाहिए. यह प्रोजेक्ट, Google Cloud Storage से कहां कम्यूनिकेट करता है? आइए, कुछ जासूसी करते हैं. यह सवाल पूछें:
Find all files that import the 'google.cloud.sql.connector' library.

search_file_content की मदद से, Gemini उन फ़ाइलों को ढूंढ लेगा जिनमें इंपोर्ट स्टेटमेंट मौजूद है. इससे, आपका ध्यान तुरंत कोड के उन हिस्सों पर जाता है जो Cloud SQL के साथ इंटरैक्ट करते हैं. इस प्रोजेक्ट में, इसे backend/main.py ढूंढना चाहिए.
तीसरा टास्क: मुझे मुख्य Dockerfile का कॉन्टेंट दिखाओ
मुझे Dockerfile दिख रहा है! यह हमारे कंटेनर का ब्लूप्रिंट है. आइए, इसके बारे में जानते हैं. बस यह पूछें:
Show me the contents of the main Dockerfile.

Gemini, Dockerfile को दिखाने के लिए read_file का इस्तेमाल करेगा. बेस इमेज (FROM), इंस्टॉल की जा रही डिपेंडेंसी (RUN pip install...), और फ़ाइनल कमांड (CMD) का विश्लेषण किया जा सकता है. इससे आपको ऐप्लिकेशन के रनटाइम एनवायरमेंट के बारे में पता चलता है.
टास्क 4: main.py फ़ाइल का मकसद क्या है?
ठीक है, अब कोड के मुख्य हिस्से पर नज़र डालते हैं. आइए, Gemini से हमारी मदद करने के लिए कहें. यह बोलो:
What's the purpose of the `main.py` file?

Gemini CLI का इस्तेमाल करके, इस काम को आसानी से किया जा सकता है. यह backend/main.py को read_file बजे कॉल करेगा. इसके बाद, इसका मल्टीमॉडल लैंग्वेज मॉडल Python कोड का विश्लेषण करेगा. इससे यह पता चलेगा कि यह एक FastAPI ऐप्लिकेशन है, जो पोलिंग ऐप्लिकेशन के लिए REST API उपलब्ध कराता है. इसके बाद, यह एपीआई एंडपॉइंट और उनके काम करने के तरीके के बारे में बताएगा. इससे आपको खुद ही पूरी जानकारी पढ़ने और समझने में लगने वाले समय की बचत होती है. इनमें से कुछ सुविधाओं के बारे में ज़्यादा जानने के लिए, फ़ॉलो अप सवाल भी पूछे जा सकते हैं. यह काफ़ी अच्छा है, है न? इसे आज़माकर देखें!
5. लोकल से लाइव! Cloud Run और Cloud SQL की मदद से डिप्लॉय करना

ठीक है, क्लाउड एडवेंचरर, आपने इलाके की खोज कर ली है. अब क्लाउड में अपना ट्रीहाउस बनाने का समय आ गया है! हम अपने क्विकपोल ऐप्लिकेशन को एक असली, लाइव वेब ऐप्लिकेशन में बदलेंगे, जिसे कोई भी व्यक्ति ऐक्सेस कर सकता है.
मकसद: quickpoll ऐप्लिकेशन को Cloud Run पर डिप्लॉय करना है. इसके लिए, Cloud SQL for PostgreSQL बैकएंड का इस्तेमाल करना है.
पहला टास्क: हमारे डेटा के लिए एक मज़बूत ब्रांच (Cloud SQL सेट अप करना)
हर अच्छे ऐप्लिकेशन को अपने कीमती डेटा को सेव करने के लिए एक जगह की ज़रूरत होती है... मेरा मतलब है, डेटा! हम Cloud SQL for PostgreSQL का इस्तेमाल करेंगे. यह हमारे डेटाबेस के लिए एक जादुई और अपने-आप रखरखाव करने वाला गार्डन है, ताकि हम मज़ेदार चीज़ों पर ध्यान दे सकें.
आइए, Gemini CLI से अपने डेटाबेस के लिए शुरुआती डेटा तैयार करने के लिए कहें.
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!.

Gemini CLI, Cloud SQL एक्सटेंशन का इस्तेमाल करके काम शुरू कर देगा. इसमें आपको create_instance टूल कॉल दिखेगा. आगे बढ़ें और इसे स्वीकार करें!
उदाहरण के लिए, इंस्टेंस बनने के बाद आपको कुछ ऐसा आउटपुट दिखेगा:

ऊपर दिए गए एनवायरमेंट वैरिएबल के साथ एक .env फ़ाइल बनाई जा सकती है. साथ ही, Gemini CLI को फिर से चालू करने से पहले इसे सोर्स किया जा सकता है, ताकि इसके पास इन वैरिएबल का ऐक्सेस हो.
जब तक हमारा इंस्टेंस बढ़ता है, तब तक मिट्टी तैयार कर लेते हैं. हमें अपने ऐप्लिकेशन के लिए एक डेटाबेस और एक उपयोगकर्ता की ज़रूरत है.
In the quickpoll-db instance, create a new database named quickpolldb.
Gemini CLI, Cloud SQL for PostgreSQL एक्सटेंशन में मौजूद create_database टूल का इस्तेमाल करके, आपके लिए डेटाबेस बनाएगा.

अब हम इस खाते को मैनेज करने के लिए, किसी उपयोगकर्ता को जोड़ते हैं:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
इस बार, Gemini CLI create_user टूल का इस्तेमाल करेगा.

टास्क 2: सीक्रेट पाथ (बैकएंड को कनेक्ट करना)
हमारे बैकएंड को हमारे नए डेटाबेस का सीक्रेट पाथ पता होना चाहिए. आइए, backend/main.py में जाकर देखते हैं कि यह कैसे काम करता है.
show me how would the backend/main.py connect to the database

अहा! क्या आपने देखा? यह Cloud SQL Python Connector का इस्तेमाल करता है. साथ ही, CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD, और CLOUD_SQL_POSTGRES_DATABASE जैसे एनवायरमेंट वैरिएबल ढूंढता है. हमें इन्हें Cloud Run सेवा को देना होगा.
सबसे पहले, हमें CLOUD_SQL_POSTGRES_INSTANCE की ज़रूरत होगी. यह एक तरह का सीक्रेट हैंडशेक है.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

आपको कई तरह की जानकारी दिखेगी. कनेक्शन का नाम ढूंढें और उस वैल्यू को कॉपी करें. यह कुछ ऐसा दिखेगा: your-project-id:us-central1:quickpoll-db.
अब ऐप्लिकेशन को Cloud Run पर डिप्लॉय करने से पहले, आइए डेटाबेस को ज़रूरी टेबल के साथ इंस्टैंटिएट करें. हमने एक अलग डेटाबेस और उपयोगकर्ता बना लिया है. इसलिए, Gemini CLI से बाहर निकलें और हमने पहले जो .env फ़ाइल बनाई थी उसे नई वैल्यू के साथ अपडेट करें:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
अब Gemini CLI को रीस्टार्ट करें और यह कमांड डालें:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

इसने अपने-आप यह पता लगा लिया कि टूल execute_sql, एक ही कॉल में कई SQL कमांड को एक्ज़ीक्यूट करने की सुविधा नहीं देता है. इसलिए, इसने हर एसक्यूएल कमांड को अलग-अलग तरीके से लागू किया.
टास्क 3: बैकएंड, टेक फ़्लाइट! (Cloud Run पर डिप्लॉय किया जा रहा है)
अब समय आ गया है कि हमारा बैकएंड, नेस्ट को छोड़ दे! हम Gemini को बैकएंड फ़ोल्डर को Cloud Run पर डिप्लॉय करने और डेटाबेस का सीक्रेट पाथ देने के लिए कहेंगे.
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
Gemini आपके कोड को पैकेज करेगा, कंटेनर इमेज बनाएगा, और उसे Cloud Run पर डिप्लॉय करेगा. यह प्रोसेस पूरी होने में कुछ मिनट लग सकते हैं. इसके बाद, आपको नई बैकएंड सेवा के लिए यूआरएल मिलेगा. उस यूआरएल को अपने पास रखें!

चौथा टास्क: फ़ाइनल टच (फ़्रंटएंड को कॉन्फ़िगर और डिप्लॉय करना)
हमारा फ़्रंटएंड, हमारे ऐप्लिकेशन के यूज़र इंटरफ़ेस की तरह होता है. इसे यह पता होना चाहिए कि बैकएंड कहां मिलेगा. आइए, इसे बताते हैं कि इसे कहाँ जाना है.
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

टास्क 5: द ग्रैंड अनवेलिंग!
बस इतना ही! अब पता चलेगा कि कौन है असली विजेता! quickpoll-fe सेवा का यूआरएल पाएं और इसे अपने वेब ब्राउज़र में खोलें.
आपको QuickPoll ऐप्लिकेशन दिखेगा. यह लाइव है और कार्रवाई करने के लिए तैयार है! आगे बढ़ें, पोल बनाएं, वोट करें, और रीयल-टाइम में नतीजे अपडेट होते हुए देखें.
आपने कर दिखाया! आपने अपनी लोकल मशीन से कोई प्रोजेक्ट लिया और उसे Google Cloud पर लाइव किया. आपने यह सब अपने टर्मिनल पर, Gemini CLI की मदद से किया.
इसे कहते हैं प्रॉडक्टिविटी!
6. डेवलपर के लिए - डेवलपमेंट की लाइफ़साइकल को तेज़ करना

ठीक है, डेवलपर. अब यहां से असली मज़ा शुरू होता है! हमने एक प्रोजेक्ट पर काम किया है, लेकिन अब इसे बनाने का समय है. हम आपको बताएंगे कि Gemini, कोडिंग में आपकी कैसे मदद कर सकता है. यह आपको किसी सामान्य आइडिया से लेकर, प्रोडक्शन के लिए तैयार कोड तक पहुंचने में मदद करता है. यह काम, गिलहरी के अखरोट ढूंढने से भी ज़्यादा तेज़ी से होता है!
आइडिया से कोड तक
डेवलपमेंट के सामान्य साइकल के बारे में सोचें. सिर्फ़ कोड लिखना ही काफ़ी नहीं है, है न? इसमें स्केफ़ोल्डिंग, गड़बड़ी ठीक करना, कोड को फिर से व्यवस्थित करना, और टेस्ट लिखना शामिल है. Gemini इन सभी कामों में आपकी मदद कर सकता है!
छोटे-मोटे बदलाव वाले दोहराव और बार-बार किए जाने वाले टास्क: अब कॉपी-पेस्ट करने की ज़रूरत नहीं!
ठीक है, आपके पास ऐप्लिकेशन की बुनियादी सुविधाएं हैं. अब आपको लॉगिंग की सुविधा जोड़नी है और संभावित गड़बड़ियों को ठीक करना है, है न? आम तौर पर, इसमें कई try...except ब्लॉक दोहराए जाते हैं. अब ऐसा नहीं है! आइए, Gemini सीएलआई से कोड का विश्लेषण करने के लिए कहें. साथ ही, गड़बड़ी लॉग करने और अपवाद को मैनेज करने के सबसे सही तरीकों के बारे में सुझाव देने के लिए कहें:
What are the best practices for error handling and logging that should also be included in this application?

Gemini CLI, मौजूदा फ़ाइल का विश्लेषण करेगा और सबसे सही तरीके से काम करने के कुछ सुझाव देगा. इसे एक विशेषज्ञ असिस्टेंट की तरह समझें, जो इन विषयों पर रिसर्च करने में आपका समय बचा सकता है.
अब, हम इसे आपके लिए इन सुझावों को लागू करने के लिए कहेंगे:
please go ahead and implement these in the existing app
ऐसा हो सकता है कि आपके मामले में, असल आउटपुट अलग हो. हालांकि, आखिर में आपको उन बदलावों की जानकारी दिखेगी जो एआई ने किए हैं. उदाहरण के लिए, यहां दिए गए स्क्रीनशॉट में देखा जा सकता है कि JSON फ़ॉर्मैट वाले लॉग जनरेट करने के लिए, structlog को जोड़ा गया है. साथ ही, अपवादों को मैनेज करने की सुविधा को लागू किया गया है और अनुरोधों के जवाबों को लॉग करने के तरीके को बेहतर बनाया गया है. आपने टाइपिंग में कितना समय बचाया!

कोड को बेहतर बनाना: आपका निजी कोड रिव्यूअर
हम सभी चाहते हैं कि हमारा कोड साफ़-सुथरा और असरदार हो. हालांकि, कभी-कभी हम जल्दबाज़ी में होते हैं. Gemini, आपके निजी कोड की समीक्षा करने वाले व्यक्ति की भूमिका निभा सकता है. इससे इस तरह के सवाल पूछे जा सकते हैं:
please perform a comprehensive code review for best practices and security


Gemini, भाषा के हिसाब से सबसे सही तरीके समझता है. आपके मामले में, ऊपर दिए गए स्क्रीनशॉट से अलग आउटपुट मिल सकता है. हालांकि, आउटपुट पढ़ने पर आपको पता चलेगा कि कोड का विश्लेषण करने के लिए, Gemini CLI ने कितनी जानकारी का इस्तेमाल किया है. इससे आपको कोड सीखने और उसे बेहतर बनाने में मदद मिलती है!
टेस्ट जनरेट करना: सबसे अहम हिस्सा!
यह मेरी पसंदीदा तरकीब है! हम सभी जानते हैं कि हमें टेस्ट लिखने चाहिए. हालांकि, यह काम मुश्किल हो सकता है. खास तौर पर, जब आपको चीज़ों को मॉक करना हो. ठीक है, इसे देखें. बस यह पूछें:
Add a test suite to this application



Gemini आपके फ़ंक्शन का विश्लेषण करेगा. साथ ही, यह पता लगाएगा कि इसके इनपुट और आउटपुट क्या हैं और यह किन चीज़ों पर निर्भर करता है. इसके बाद, यह कई टेस्ट केस के साथ पूरी test_main.py फ़ाइल जनरेट करेगा. इसमें ‘हैप्पी पाथ' और शायद गड़बड़ी की स्थिति भी शामिल होगी. इससे प्रॉडक्टिविटी को काफ़ी बढ़ावा मिलता है!
टेस्ट चलाएं! (आपके लिए एक चैलेंज टास्क)
अब, यहां से चीज़ें वाकई दिलचस्प हो जाती हैं! हम इस हिस्से को आपके लिए एक चुनौती के तौर पर छोड़ रहे हैं, ताकि आप इसे खुद से एक्सप्लोर कर सकें. Gemini CLI को उन टेस्ट केस को लागू करने के लिए प्रॉम्प्ट करें जिन्हें उसने जनरेट किया है. इसके बाद, आराम से बैठें और देखें कि कैसे जादू होता है!
7. लोकलहोस्ट के अलावा: GitHub के साथ इंटिग्रेट करना

हमने अपने कंप्यूटर पर कुछ बेहतरीन काम किया है. यह हमारे लिए जंगल का एक छोटा सा कोना है. हालांकि, क्लाउड की असली ताकत साथ मिलकर काम करने और कनेक्ट करने में है! अब समय आ गया है कि हम देखें कि Gemini, दुनिया भर के लोगों के साथ कैसे इंटरैक्ट कर सकता है. इसकी शुरुआत हम डेवलपर फ़ॉरेस्ट के सबसे बड़े पेड़, GitHub से करेंगे!
कॉन्सेप्ट: इंटिग्रेटेड DevOps Assistant
अब तक, हमने Gemini का इस्तेमाल एक लोकल कोडिंग बडी के तौर पर किया है. अब हम इसे पूरी तरह से काम करने वाले इंटिग्रेटेड DevOps Assistant में अपग्रेड करने जा रहे हैं. यह मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) इंटिग्रेशन की वजह से हो पाता है. यह एक शानदार नाम है. इसका मतलब सिर्फ़ यह है कि Gemini आपकी ओर से अन्य सेवाओं से सुरक्षित तरीके से बातचीत कर सकता है. हम सबसे पहले GitHub के साथ काम करने के लिए Gemini को बेहतर बनाने जा रहे हैं.
इस बारे में सोचें. आपको GitHub पर पुल करने का अनुरोध देखने, समस्या बनाने या किसी रिपॉज़िटरी को ब्राउज़ करने के लिए, कितनी बार अपना टर्मिनल छोड़ना पड़ता है? यह कॉन्टेक्स्ट स्विचिंग का एक और उदाहरण है! github टूलसेट की मदद से, ये सभी काम यहीं किए जा सकते हैं. इससे Gemini, GitHub के लिए नेटिव इंटरफ़ेस में बदल जाता है.
GitHub पर मौजूद एमसीपी सर्वर के आधिकारिक दस्तावेज़ में, इसके टूल और कॉन्फ़िगरेशन के विकल्पों के बारे में पूरी जानकारी दी गई है. आपके पास लोकल या रिमोट ऑपरेशन में से किसी एक को चुनने का विकल्प होता है, क्योंकि Gemini CLI, दोनों रिमोट एमसीपी सर्वर के साथ काम करता है.
इस ट्यूटोरियल में, GitHub के लिए रिमोट एमसीपी सर्वर का विकल्प सेट अप करने का तरीका बताया गया है. सबसे पहले, आपको GitHub से पर्सनल ऐक्सेस टोकन (पीएटी) की ज़रूरत होगी.
पीएटी मिलने के बाद, आपको MCP Server ऑब्जेक्ट को अपनी settings.json फ़ाइल में जोड़ना होगा. मेरी पूरी settings.json फ़ाइल यहां दिखाई गई है. हालांकि, आपको सिर्फ़ यह पक्का करना है कि आपका mcpServers ऑब्जेक्ट, यहां दिख रहे ऑब्जेक्ट से मेल खाता हो:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
GitHub MCP Server के कॉन्फ़िगरेशन के साथ settings.json फ़ाइल को अपडेट करने के बाद, Gemini CLI को रीस्टार्ट करें या /mcp refresh कमांड चलाएं. यहां दिए गए स्क्रीनशॉट में, मेरे सिस्टम पर मौजूद GitHub MCP सर्वर को दिखाया गया है. इसमें दिखाया गया है कि Gemini CLI, मॉडल कॉन्टेक्स्ट प्रोटोकॉल की मदद से अब कौन-कौनसे टूल इस्तेमाल कर सकता है.

मुख्य निर्देशों को हाइलाइट करना
Gemini में, GitHub के लिए खास तौर पर तैयार की गई नई सुविधाएं उपलब्ध हैं. यहां मेरे कुछ पसंदीदा वीडियो दिए गए हैं:
github.list_repositories: क्या आपको ब्राउज़र खोले बिना, अपने संगठन की सभी रिपॉज़िटरी देखनी हैं? यह आपका टूल है! बस इतना पूछें, ‘मेरे संगठन में मौजूद सभी रिपॉज़िटरी की सूची बनाओ.'github.create_issue: क्या आपको कोई गड़बड़ी मिली? समस्या बनाने के लिए, विंडो स्विच न करें. आपको बस Gemini को यह बताना है कि ‘sample-flask-appरिपो में "लॉगिन की गड़बड़ी ठीक करें" टाइटल वाली समस्या बनाएं. इसमें यह जानकारी शामिल करें...' और poof, समस्या बन जाएगी.github.get_pull_request: क्या आपको पीआर की जांच करनी है? आप ऐसा सवाल पूछ सकते हैं, ‘मुझेsample-flask-appरेपो में पीआर नंबर 42 की जानकारी दिखाओ.' Gemini, टाइटल, ब्यौरा, स्थिति, और समीक्षकों की जानकारी फ़ेच करेगा.github.get_file_contents: यह बहुत शानदार है. किसी फ़ाइल को पहले क्लोन किए बिना, उसे रिमोट रिपॉज़िटरी से पढ़ा जा सकता है! यह सुविधा, किसी ऐसी कॉन्फ़िगरेशन फ़ाइल या प्रोजेक्ट के README को तुरंत देखने के लिए बहुत अच्छी है जो आपके डिवाइस पर मौजूद नहीं है.
8. GitHub एक्सप्लोरेशन

अब बहुत हो गया, चलो पतंग उड़ाएं! हम GitHub की नई सुविधाओं का इस्तेमाल करके, किसी संगठन और प्रोजेक्ट के बारे में जानेंगे. यह सब हम अपने टर्मिनल पर ही करेंगे.
मकसद: GitHub पर होस्ट किए गए किसी प्रोजेक्ट के बारे में जानने और उसे समझने के लिए, Gemini का इस्तेमाल करना.
सिनारियो: आपको GitHub पर मौजूद किसी ऐसे प्रोजेक्ट के बारे में जानकारी चाहिए जिस पर आपने पहले काम नहीं किया है.
टास्क 1: किसी संगठन में मौजूद डेटाबेस की सूची बनाना
सबसे पहले, GitHub संगठन में मौजूद सभी प्रोजेक्ट देखें. इस लैब के लिए, अपने GitHub उपयोगकर्ता नाम या उस संगठन का इस्तेमाल किया जा सकता है जिसके आप सदस्य हैं. आइए, Gemini से इन सुविधाओं की सूची बनाने के लिए कहें.
List the repositories in the `[your-org-or-username]` GitHub organization.
([your-org-or-username] को अपनी असल जानकारी से बदलना न भूलें!) Gemini, github.list_repositories टूल का इस्तेमाल करेगा और आपको सभी प्रोजेक्ट की सूची दिखाएगा. बहुत बढ़िया!
दूसरा टास्क: कोई खास रिपॉज़िटरी ढूंढना
ठीक है, आपको रिपॉज़िटरी की सूची दिखेगी. अब आपको एक असली डेवलपर की तरह, उस सूची को स्कैन करना होगा और उस प्रोजेक्ट को ढूंढना होगा जिसमें आपकी दिलचस्पी है. हमारी लैब के लिए, मान लें कि हमें वह quickpoll रिपॉज़िटरी ढूंढनी है जिसे हमने पहले क्लोन किया था. इसके लिए, आपको किसी निर्देश की ज़रूरत नहीं है. बस पिछले चरण का आउटपुट पढ़ें और रेपो ढूंढें!
टास्क 3: पुल अनुरोधों की सूची खोलना
अब हमने टारगेट रिपॉज़िटरी की पहचान कर ली है. आइए, देखते हैं कि इसके साथ क्या हो रहा है. क्या कोई पुल अनुरोध खुला है? आइए, पूछते हैं:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini, github.list_pull_requests टूल का इस्तेमाल करेगा. साथ ही, open राज्य के हिसाब से फ़िल्टर करेगा. इसके बाद, यह कमांड आपको सभी खुली हुई पीआर की सूची दिखाएगी. इसमें पीआर नंबर, टाइटल, और उसे बनाने वाले व्यक्ति का नाम दिखेगा. इससे आपको प्रोजेक्ट के डेवलपमेंट की मौजूदा स्थिति के बारे में तुरंत पता चलता है. इस सुविधा को ऐसी रिपॉज़िटरी के साथ आज़माएं जिसमें आप लगातार योगदान दे रहे हैं. इसके बाद, नतीजे देखें.

टास्क 4: पुल अनुरोध की जांच करना
मान लें कि उस सूची में कोई दिलचस्प पीआर है. हमें इसके बारे में ज़्यादा जानकारी चाहिए! हमें ब्यौरा और बदली गई फ़ाइलों की जानकारी चाहिए. सूची से कोई पीआर नंबर चुनें. अगर कोई पीआर नंबर नहीं है, तो इसे छोड़ा जा सकता है. हालांकि, मान लें कि कोई पीआर नंबर मौजूद है!
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
यह Gemini के लिए, कई चरणों वाला टास्क का एक बेहतरीन उदाहरण है! सबसे पहले, यह मुख्य जानकारी पाने के लिए github.get_pull_request का इस्तेमाल करेगा. जैसे, टाइटल, मुख्य हिस्सा, लेखक वगैरह. इसके बाद, फ़ाइल में हुए बदलावों की जानकारी पाने के लिए, यह दूसरे टूल github.get_pull_request_files का इस्तेमाल करेगा. इसके बाद, यह सारी जानकारी को मिलाकर आपके लिए एक अच्छी और साफ़-सुथरी खास जानकारी तैयार करेगा. आपने अभी-अभी टर्मिनल से बाहर निकले बिना पीआर की समीक्षा की है! यह कितना शानदार है?!
9. पीआरडी से लेकर शुरुआती कमिट तक

आपने एक्सप्लोर करने, बनाने, और टेस्ट करने का तरीका सीख लिया है. अब हम इन सभी को एक साथ, असल दुनिया के उदाहरण में इस्तेमाल करेंगे. इस समय, हम किसी प्लान को प्रॉडक्ट में बदलते हैं. हम प्रॉडक्ट की ज़रूरी शर्तों की जानकारी देने वाले दस्तावेज़ (पीआरडी) से लेकर, पहले कमिट तक की प्रोसेस के बारे में जानेंगे. आइए, कुछ शानदार बनाएं!
मकसद: लोकल और रिमोट कॉन्टेक्स्ट को मिलाकर, असल दुनिया में डेवलपमेंट से जुड़े टास्क को शुरू से आखिर तक पूरा करना.
सिनारियो: आपको एक नई सुविधा असाइन की गई है! ज़रूरी शर्तें, प्रोजेक्ट की GitHub रिपॉज़िटरी में मौजूद PRD फ़ाइल में दी गई हैं.
पहला टास्क: समझें - पीआरडी पढ़ें
यह सबसे ज़रूरी चरण है! कोड की एक लाइन लिखने से पहले, आपको प्लान को अच्छी तरह से समझ लेना चाहिए. हमारी नई सुविधा से जुड़ी ज़रूरी शर्तें, prd/NEW_FEATURE.md फ़ाइल में मौजूद हैं. इसे खोलकर देखते हैं कि इसमें क्या है.
explain the requirements mentioned in prd/NEW_FEATURE.md
Gemini CLI, PRD का कॉन्टेंट दिखाने के लिए read_file का इस्तेमाल करेगा. गोता लगाएं इसमें नई सुविधा के बारे में बताया जाएगा: उपयोगकर्ताओं के लिए रीफ़्रेश बटन. इसकी मदद से, वे सक्रिय पोल की सूची को मैन्युअल तरीके से अपडेट कर पाएंगे. हमेशा ब्लूप्रिंट देखें!

टास्क 2: कोड - ज़रूरतों को हकीकत में बदलना
यह जादुई पल है! हम पीआरडी से ज़रूरी शर्तें लेंगे और Gemini से हमारे लिए कोड लिखने के लिए कहेंगे. आइए, हम प्रॉम्प्ट में सटीक जानकारी दें और उसे बताएं कि हमें क्या चाहिए.
Implement the changes as per the PRD
Gemini CLI काम करना शुरू कर देगा. कुछ समय बाद, आपको इससे मिलता-जुलता आउटपुट दिखेगा. हमारा नया कोड अब एक सुरक्षित जगह पर है!

तीसरा टास्क: अपने बदलावों की पुष्टि करना
हमने नए कोड के साथ एक नई फ़ाइल बनाई है. इस लैब का आखिरी चरण, Cloud Run पर बदलाव को डिप्लॉय करना और उसकी पुष्टि करना है.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
ध्यान दें कि उस प्रॉम्प्ट में अतिरिक्त जानकारी दी गई है. जैसे, Cloud Run की मौजूदा सेवा का नाम और उसे डिप्लॉय करने का क्षेत्र. विषय से जुड़ी जानकारी देने से समय बचता है. हालांकि, अगर आपने कोई जानकारी नहीं दी है, तो Gemini सीएलआई हमेशा आपसे उस जानकारी को देने के लिए कहेगा.
अगर अपडेट की गई Cloud Run सेवा में कोई गड़बड़ी होती है, तो Gemini CLI को कोड डीबग करने और उसे ठीक करने के लिए कहें. याद रखें, यह आपका सबसे भरोसेमंद साथी है!
10. बधाई हो

बस इतना ही! आपने अभी-अभी डेवलपमेंट का पूरा साइकल पूरा किया है. आपने ज़रूरी शर्तों वाले दस्तावेज़ से लेकर नई सुविधा तक का सफ़र तय कर लिया है. अब इसे कमिट और पुश किया जा सकता है. आपने लोकल कॉन्टेक्स्ट, रिमोट कॉन्टेक्स्ट, फ़ाइल सिस्टम के ऑपरेशन, और कोड जनरेशन को एक साथ इस्तेमाल किया. आप सिर्फ़ एक डेवलपर नहीं हैं, बल्कि एक बेहतरीन क्लाउड आर्किटेक्ट हैं! बधाई हो!