Gemini CLI के बारे में ज़्यादा जानकारी

1. परिचय

be8ebdfe42ca39ac.png

नमस्ते! मेरा नाम स्पार्की है! हमें खुशी है कि आप इस इवेंट में शामिल हुए. मैं us-central1 में मौजूद GKE क्लस्टर से यहां तक आया हूं. इस कोडलैब में आपका स्वागत है.

मैंने अपना पूरा जीवन Google Cloud की डेटा स्ट्रीम में बिताया है. इसलिए, मैंने सब कुछ देखा है. मैंने आपको, आर्किटेक्ट, और इंजीनियरों को शानदार चीज़ें बनाते हुए देखा है. लेकिन, मैंने तुम्हें काँटों में फँसते हुए भी देखा है. तुम्हें पता है कि मैं किस बारे में बात कर रहा हूं! GKE में किसी पॉड को डीबग करते समय, कॉन्टेक्स्ट स्विच करने की भावना. नोड की परफ़ॉर्मेंस की जांच करने के लिए, kubectl logs और GCP कंसोल के बीच स्विच किया जा रहा है. साथ ही, डिप्लॉय किए गए सोर्स कोड को देखने के लिए, IDE और पॉड लाइफ़साइकल हुक के लिए आधिकारिक Kubernetes दस्तावेज़ों के साथ ब्राउज़र टैब के बीच स्विच किया जा रहा है. हर जंप से ध्यान भटकता है!

साथ ही, जटिल टूलिंग! gcloud, kubectl, terraform... हर एक का अपना डीएसएल और फ़्लैग का भंडार है. इससे दस्तावेज़ों को लगातार ढूंढना पड़ता है. आपको अपनी ज़रूरत के हिसाब से डेटा पाने के लिए, --filter और --format फ़्लैग के सही कॉम्बिनेशन के साथ, एक बेहतरीन gcloud कमांड खोजनी होती है. यह लाखों नट के जंगल में किसी खास नट को ढूंढने जैसा है. बार-बार किए जाने वाले टास्क के बारे में तो पूछो ही मत. हमने देखा है कि आपने नई Python सेवा के लिए, एक ही Dockerfile और cloudbuild.yaml कई बार लिखा है. इसलिए, हो सकता है कि कोड को डेजा वू हो रहा हो.

हम आपको एक बेहतर तरीका बताने के लिए यहां हैं. जंगल के बीच से गुज़रता एक गुप्त रास्ता. Gemini CLI इसी तरह काम करता है!

Gemini CLI क्या है?

तो, यह मैजिक शॉर्टकट क्या है, जिसके बारे में जानने के लिए मैं बहुत उत्सुक हूँ?

Gemini CLI को अपने टर्मिनल में मौजूद निजी क्लाउड कंपैनियन के तौर पर इस्तेमाल करें. यह एक बातचीत है, एक साझेदारी है! यह कॉन्टेक्स्ट के हिसाब से काम करता है. इसका मतलब है कि यह सिर्फ़ सुनता नहीं है, बल्कि समझता भी है. यह आपकी फ़ाइलों को पढ़ सकता है. साथ ही, आपके प्रोजेक्ट के नियमों को समझ सकता है. जैसे, टैब या स्पेस का इस्तेमाल किया जा रहा है या नहीं. इसके अलावा, यह भी समझ सकता है कि आपको क्या करना है. यह कुछ ऐसा है कि मुझे पता चल जाता है कि आपको कौनसे एकॉर्न इकट्ठा करने हैं!

हाई-लेवल आर्किटेक्चर (आइए, इसकी प्रोसेस को समझते हैं!)

तो यह सब कैसे काम करता है? इसमें कुछ बेहतरीन चीज़ें शामिल हैं, जो एक साथ काम करती हैं:

  1. एक बेहतरीन लैंग्वेज मॉडल: यह इसका दिमाग़ है! खास तौर पर, यह एक बड़ा मल्टीमॉडल मॉडल है, जिसे Google ने ट्रेन किया है. ‘मल्टीमॉडल' का मतलब है कि यह सिर्फ़ टेक्स्ट को नहीं समझता, बल्कि कोड के स्ट्रक्चर और मतलब को भी समझता है. इससे, यह आपके सॉफ़्टवेयर को सिर्फ़ पढ़ता नहीं है, बल्कि उसके बारे में तर्क भी देता है.
  2. आपके लोकल कॉन्टेक्स्ट: यह ज़रूरी है. Gemini CLI, आपकी लोकल मशीन पर एक प्रोसेस के तौर पर काम करता है. इसके पास वही अनुमतियां होती हैं जो आपके उपयोगकर्ता खाते के पास होती हैं. इसका मतलब है कि यह प्रोजेक्ट से जुड़ी मदद देने के लिए, आपके फ़ाइल सिस्टम को ऐक्सेस कर सकता है. यह कोई दूर की क्लाउड सेवा नहीं है, जो आपके कोड का अनुमान लगा रही है. यह आपके साथ ही है.
  3. टूलिंग इकोसिस्टम: मॉडल इसी की मदद से दुनिया से इंटरैक्ट करता है. इसमें फ़ंक्शन का एक तय सेट होता है, जिसे कॉल किया जा सकता है. जैसे, read_file या run_shell_command. इसे एक सुरक्षित एपीआई की तरह समझें. मॉडल यह तय करता है कि क्या करना है और किस टूल का इस्तेमाल करना है. इसके बाद, वह इसे लागू करने के लिए tool_code ब्लॉक जनरेट करता है. इससे, इसकी कार्रवाइयों का अनुमान लगाया जा सकता है और यह भरोसेमंद बन जाता है.
  4. शेल कमांड को लागू करना: यह वाकई कमाल का है! यह bash -c <command> सबशेल में कोई भी कमांड चला सकता है. यह stdout, stderr, और exit code को कैप्चर करता है. यह शानदार है! इसका मतलब है कि Gemini CLI, कोई कमांड चला सकता है. साथ ही, यह देख सकता है कि कमांड पूरी हुई या नहीं. इसके बाद, गड़बड़ी के मैसेज के आधार पर, उसे ठीक करने की कोशिश कर सकता है.
  5. सेफ़्टी नेट: यह मेरी पसंदीदा सुविधा है! उस 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 CLI के लिए, Google और तीसरे पक्ष के डेवलपर, लगातार एक्सटेंशन बना रहे हैं. एक्सटेंशन की आधिकारिक डायरेक्ट्री को geminicli.com/extensions पर ब्राउज़ किया जा सकता है.

एक्सटेंशन इंस्टॉल करने के लिए, एक्सटेंशन की Git रिपॉज़िटरी के यूआरएल के साथ gemini extensions install कमांड का इस्तेमाल किया जा सकता है. उदाहरण के लिए, PostgreSQL के लिए Cloud SQL का आधिकारिक एक्सटेंशन इंस्टॉल करने के लिए, यह कमांड चलाएं:

gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql

ठीक है, अब बस! आइए, हम इस सुविधा को आज़माकर देखें!

2. शुरू करने से पहले

86dffda616ab7a1d.png

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

अगर आपके पास पहले से ही कोई Google Cloud प्रोजेक्ट है, तो Google Cloud Shell में Gemini सीएलआई का इस्तेमाल किया जा सकता है. ऐसा इसलिए, क्योंकि यह Gemini सीएलआई के साथ पहले से इंस्टॉल होता है. इसके अलावा, इसे अपने कंप्यूटर पर सेट अप करने के लिए यह तरीका अपनाएं.

पहला चरण: बुनियादी ज़रूरतें (ज़रूरी शर्तें)

हर साहसिक व्यक्ति को एक मज़बूत नींव की ज़रूरत होती है. Gemini CLI इंस्टॉल करने से पहले, आपको अपने कंप्यूटर पर कुछ चीज़ें सेट अप करनी होंगी.

  1. Google Cloud SDK (gcloud): यह Google Cloud के लिए मुख्य टूलकिट है. Gemini CLI भी इस परिवार का हिस्सा है!
  • देखें कि यह इंस्टॉल है या नहीं: gcloud --version चलाएं. अगर आपको वर्शन नंबर दिखता है, तो इसका मतलब है कि आपके पास नया वर्शन है!
  • अगर इंस्टॉल नहीं है: cloud.google.com/sdk/docs/install पर दिए गए आधिकारिक निर्देशों का पालन करें.
  1. Git: हमें इसकी ज़रूरत, हैंड्स-ऑन लैब की रिपॉज़िटरी को क्लोन करने के लिए होगी.
  • देखें कि यह इंस्टॉल है या नहीं: git --version चलाएं.
  • अगर यह इंस्टॉल नहीं है: इसे git-scm.com/downloads से डाउनलोड किया जा सकता है.
  1. GCP प्रोजेक्ट और पुष्टि करना:
  • पक्का करें कि आपके पास बिलिंग की सुविधा चालू वाला Google Cloud प्रोजेक्ट हो. यह बहुत ज़रूरी है!
  • अपने Google खाते में लॉग इन करने के लिए, यह कमांड चलाएं:
gcloud auth login
  • सेशन के लिए अपना प्रोजेक्ट सेट करें. GCP Console से अपना प्रोजेक्ट आईडी ढूंढें और यह कमांड चलाएं:
gcloud config set project YOUR_PROJECT_ID

(YOUR_PROJECT_ID की जगह अपना असल प्रोजेक्ट आईडी डालें!)

  1. 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 कमांड चलाकर इसे लॉन्च करें. आपको यह स्क्रीन दिखेगी:

9378d804bc647191.png

आसानी से पुष्टि करने के लिए, अपने 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 को चुनें. इसके बाद, आपको पुष्टि करने के लिए कहा जाएगा.

चौथा चरण: स्पार्क टेस्ट! (आपके सेटअप की पुष्टि की जा रही है)

यह सच जानने का समय है! आइए, देखते हैं कि सब कुछ ठीक से काम कर रहा है या नहीं. यह पक्का करने के लिए कि सभी लाइटें हरी हैं, इन कमांड को चलाएं.

  1. यह प्रॉम्प्ट डालें:
What is my current directory?

Gemini CLI को आपकी मौजूदा वर्किंग डायरेक्ट्री की जानकारी देकर जवाब देना चाहिए. इससे कोर लैंग्वेज मॉडल और शेल इंटिग्रेशन की जांच की जाती है.

15a12d7b3fdd2d83.png

  1. 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 के साथ इंटरैक्शन

a7bf3a905d8e2638.png

ठीक है, क्या आप अपने हाथों को गंदा करने के लिए तैयार हैं? अब हम 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. किसी प्रोजेक्ट के बारे में जानना

314faf951de66388.png

मकसद: टर्मिनल से बाहर निकले बिना, Gemini CLI का इस्तेमाल करके किसी अनजान कोडबेस को समझना.

उदाहरण: आप एक नए डेवलपर हैं और आपको इस प्रोजेक्ट के बारे में तुरंत जानकारी चाहिए!

टास्क 0: सेटअप - प्रोजेक्ट का क्लोन बनाएं!

सबसे पहले, हमें कोड चाहिए! यह 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

46c2feb0d1184db7.png

Gemini को यह समझ आएगा कि ‘क्लोन' का मतलब git clone कमांड का इस्तेमाल करना है. यह git clone https://github.com/gauravkakad-google/quickpoll.git जैसा कुछ इस्तेमाल करके, run_shell_command टूल कॉल जनरेट करेगा. अनुमति देने के बाद, यह आपके लिए रिपॉज़िटरी डाउनलोड कर देगा.

अब, 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.

568fdb8ff4889c5d.png

Gemini, अपनी search_file_content की मदद से उन फ़ाइलों को ढूंढ लेगा जिनमें इंपोर्ट स्टेटमेंट मौजूद है. इससे आपका ध्यान तुरंत कोड के उन हिस्सों पर जाता है जो Cloud SQL के साथ इंटरैक्ट करते हैं. इस प्रोजेक्ट में, इसे backend/main.py ढूंढना चाहिए.

तीसरा टास्क: मुझे मुख्य Dockerfile का कॉन्टेंट दिखाओ

मुझे Dockerfile दिख रहा है! यह हमारे कंटेनर का ब्लूप्रिंट है. आइए, इसके बारे में जानते हैं. बस यह पूछें:

Show me the contents of the main Dockerfile.

e49a83b3efbcf807.png

Gemini, Dockerfile को दिखाने के लिए read_file का इस्तेमाल करेगा. आपके पास बेस इमेज (FROM), इंस्टॉल की जा रही डिपेंडेंसी (RUN pip install...), और फ़ाइनल कमांड (CMD) का विश्लेषण करने का विकल्प होता है. इससे आपको ऐप्लिकेशन के रनटाइम एनवायरमेंट के बारे में पता चलता है.

टास्क 4: main.py फ़ाइल का मकसद क्या है?

ठीक है, अब कोड के मुख्य हिस्से पर नज़र डालते हैं. चलिए, Gemini से हमारा मार्गदर्शन करने के लिए कहते हैं. यह बोलो:

What's the purpose of the `main.py` file?

81d480c285285150.png

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

5. लोकल से लाइव! Cloud Run और Cloud SQL की मदद से डिप्लॉय करना

db708c2edf0036a9.png

ठीक है, क्लाउड एडवेंचरर, आपने इलाके की खोज कर ली है. अब क्लाउड में अपना ट्रीहाउस बनाने का समय आ गया है! हम अपने क्विकपोल ऐप्लिकेशन को एक असली, लाइव वेब ऐप्लिकेशन में बदलेंगे, जिसे कोई भी व्यक्ति ऐक्सेस कर सकेगा.

मकसद: Cloud SQL for PostgreSQL बैकएंड के साथ, quickpoll ऐप्लिकेशन को Cloud Run पर डिप्लॉय करना.

पहला टास्क: हमारे डेटा के लिए एक मज़बूत ब्रांच (Cloud SQL सेट अप करना)

हर अच्छे ऐप्लिकेशन को अपने कीमती डेटा को सेव करने के लिए जगह चाहिए होती है... मेरा मतलब है, डेटा! हम PostgreSQL के लिए Cloud SQL का इस्तेमाल करेंगे. यह हमारे डेटाबेस के लिए एक जादू की तरह है. यह अपने-आप काम करता है, ताकि हम मज़ेदार चीज़ों पर ध्यान दे सकें.

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!.

6c09e8e548efe217.png

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

उदाहरण बनाने के बाद, आपको इससे मिलता-जुलता आउटपुट दिखेगा:

1378c05137bf9260.png

ऊपर दिए गए एनवायरमेंट वैरिएबल के साथ .env फ़ाइल बनाई जा सकती है. साथ ही, Gemini CLI को फिर से चालू करने से पहले इसे सोर्स किया जा सकता है, ताकि इसके पास इन वैरिएबल का ऐक्सेस हो.

जब तक हमारा इंस्टेंस बढ़ रहा है, तब तक मिट्टी तैयार कर लेते हैं. हमें अपने ऐप्लिकेशन के लिए एक डेटाबेस और एक उपयोगकर्ता की ज़रूरत है.

In the quickpoll-db instance, create a new database named quickpolldb.

Gemini CLI, Cloud SQL for PostgreSQL एक्सटेंशन में मौजूद create_database टूल का इस्तेमाल करके, आपके लिए डेटाबेस बनाएगा.

3a0ffbf97fbc35cc.png

अब इसमें एक उपयोगकर्ता जोड़ते हैं:

In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.

इस बार, Gemini CLI create_user टूल का इस्तेमाल करेगा.

562db72ed9a59d4a.png

टास्क 2: सीक्रेट पाथ (बैकएंड को कनेक्ट करना)

हमारे बैकएंड को हमारे नए डेटाबेस का सीक्रेट पाथ पता होना चाहिए. आइए, backend/main.py में झांककर देखते हैं कि यह कैसे काम करता है.

show me how would the backend/main.py connect to the database

6592c52d634253ce.png

आहा! क्या आपने इसे देखा? यह Cloud SQL Python कनेक्टर का इस्तेमाल करता है. साथ ही, 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?

aa539ea8798aad71.png

आपको कई तरह की जानकारी दिखेगी. कनेक्शन का नाम ढूंढें और उस वैल्यू को कॉपी करें. यह कुछ ऐसा दिखेगा: your-project-id:us-central1:quickpoll-db.

अब ऐप्लिकेशन को Cloud Run पर डिप्लॉय करने से पहले, आइए डेटाबेस को ज़रूरी टेबल के साथ इंस्टैंशिएट करें. हमने एक अलग डेटाबेस और उपयोगकर्ता बना लिया है. इसलिए, Gemini के सीएलआई से बाहर निकलें और हमने पहले जो .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

5201cbf678dd3fc9.png

इस टूल को अपने-आप पता चल गया कि 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 पर डिप्लॉय करेगा. यह प्रोसेस पूरी होने में कुछ मिनट लग सकते हैं. इसके बाद, आपको नई बैकएंड सेवा के लिए यूआरएल मिलेगा. उस यूआरएल को अपने पास रखें!

f3330321e52c98e9.png

चौथा टास्क: फ़ाइनल टच (फ़्रंटएंड को कॉन्फ़िगर और डिप्लॉय करना)

हमारा फ़्रंटएंड, हमारे ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) होता है. इसे यह पता होना चाहिए कि बैकएंड कहां मिलेगा. आइए, इसे बताते हैं कि इसे कहाँ जाना है.

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

a80fe48e54b47c4.jpeg

टास्क 5: द ग्रैंड अनवेलिंग!

बस इतना ही! अब पता चलेगा कि क्या सही है! quickpoll-fe सेवा का यूआरएल पाएं और उसे अपने वेब ब्राउज़र में खोलें.

आपको QuickPoll ऐप्लिकेशन दिखेगा. यह लाइव है और कार्रवाई करने के लिए तैयार है! आगे बढ़ें, एक पोल बनाएं, वोट करें, और रीयल-टाइम में नतीजे अपडेट होते हुए देखें.

आपने कर दिखाया! आपने अपनी लोकल मशीन से कोई प्रोजेक्ट लिया और उसे Google Cloud पर लाइव किया. आपने यह सब अपने टर्मिनल पर, अपने भरोसेमंद साथी Gemini CLI की मदद से किया.

इसे कहते हैं प्रॉडक्टिविटी!

6. डेवलपर के लिए - डेवलपमेंट की लाइफ़साइकल को तेज़ करना

8feb670e686f4038.png

ठीक है, डेवलपर. अब असली मज़ा शुरू होता है! हमने एक प्रोजेक्ट पर काम किया है, लेकिन अब इसे बनाने का समय है. हम आपको बताएँगे कि Gemini, कोडिंग में आपकी कैसे मदद कर सकता है. यह आपको एक सामान्य आइडिया से लेकर प्रोडक्शन के लिए तैयार कोड तक का सफ़र, गिलहरी के अखरोट ढूँढने से भी कम समय में पूरा करने में मदद करता है!

आइडिया से कोड जनरेट करना

सामान्य डेवलपमेंट साइकल के बारे में सोचें. यह सिर्फ़ कोड नहीं लिख रहा है, है न? इसमें स्केफ़ोल्डिंग, गड़बड़ी ठीक करने की सुविधा, रीफ़ैक्टरिंग, और टेस्ट लिखना शामिल है. Gemini इन सभी कामों में आपकी मदद कर सकता है!

छोटे-मोटे बदलाव वाले और बार-बार किए जाने वाले टास्क: अब कॉपी करके चिपकाने की ज़रूरत नहीं!

ठीक है, आपके पास ऐप्लिकेशन की बुनियादी सुविधाएं हैं. अब आपको लॉगिंग की सुविधा जोड़नी है और संभावित गड़बड़ियों को ठीक करना है, है न? आम तौर पर, इसमें एक जैसे try...except ब्लॉक काफ़ी ज़्यादा होते हैं. अब ऐसा नहीं है! आइए, Gemini सीएलआई से कोड का विश्लेषण करने के लिए कहते हैं. साथ ही, गड़बड़ी लॉग करने और अपवाद को मैनेज करने के सबसे सही तरीकों के बारे में सुझाव देने के लिए कहते हैं:

What are the best practices for error handling and logging that should also be included in this application?

3a132d7bbf57bf67.png

Gemini CLI, मौजूदा फ़ाइल का विश्लेषण करेगा और कुछ सबसे सही तरीके के सुझाव देगा. इसे एक विशेषज्ञ असिस्टेंट की तरह समझें, जो इन विषयों पर रिसर्च करने में आपका समय बचा सकता है.

अब, हम इसे आपके लिए इन सुझावों को लागू करने के लिए कहेंगे:

please go ahead and implement these in the existing app

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

7fcd0153f88740ce.png

रीफ़ैक्टरिंग: आपका निजी कोड रिव्यूअर

हम सभी चाहते हैं कि हमारा कोड साफ़-सुथरा और असरदार हो. हालांकि, कभी-कभी हम जल्दबाज़ी में होते हैं. Gemini, आपके कोड की समीक्षा करने वाले निजी असिस्टेंट के तौर पर काम कर सकता है. इससे इस तरह के सवाल पूछे जा सकते हैं:

please perform a comprehensive code review for best practices and security

e5482012a524210e.png32039b0638d1efd.png

Gemini, भाषा के हिसाब से सबसे सही तरीके समझता है. आपके मामले में, ऊपर दिए गए स्क्रीनशॉट से अलग आउटपुट मिल सकता है. हालांकि, आउटपुट पढ़ने पर आपको पता चलेगा कि कोड का विश्लेषण करने के लिए, Gemini CLI ने कितनी बारीकी से काम किया है. इससे आपको कोड सीखने और उसे बेहतर बनाने में मदद मिलती है!

टेस्ट जनरेट करना: सबसे अहम हिस्सा!

यह मेरा पसंदीदा तरीका है! हम सभी जानते हैं कि हमें टेस्ट लिखने चाहिए. हालांकि, यह काम मुश्किल हो सकता है. खास तौर पर, जब आपको चीज़ों को मॉक करना हो. ठीक है, इसे देखें. बस यह पूछें:

Add a test suite to this application

d7475f5ca8c9d99d.pngac55b84b842187b.png3653819afe847cf3.png

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

टेस्ट चलाएं! (आपके लिए एक चैलेंज टास्क)

अब बारी है सबसे मज़ेदार काम की! हम इस हिस्से को आपके लिए एक चुनौती के तौर पर छोड़ रहे हैं, ताकि आप इसे खुद से एक्सप्लोर कर सकें. Gemini CLI को, जनरेट किए गए टेस्ट केस चलाने के लिए बेझिझक प्रॉम्प्ट करें. इसके बाद, बस आराम से बैठें और देखें कि कैसे जादू होता है!

7. लोकलहोस्ट के अलावा: GitHub के साथ इंटिग्रेट करना

d2664a4c173f1d6.png

हमने अपने कंप्यूटर पर कुछ बेहतरीन काम किया है. यह कंप्यूटर, जंगल के हमारे छोटे से कोने जैसा है. हालांकि, क्लाउड की असली ताकत साथ मिलकर काम करना और कनेक्ट करना है! अब समय आ गया है कि हम देखें कि Gemini, दुनिया के साथ कैसे इंटरैक्ट कर सकता है. इसकी शुरुआत, डेवलपर फ़ॉरेस्ट के सबसे बड़े पेड़: GitHub से करते हैं!

कॉन्सेप्ट: इंटिग्रेटेड DevOps Assistant

अब तक, हमने Gemini का इस्तेमाल एक लोकल कोडिंग बडी के तौर पर किया है. अब हम इसे पूरी तरह से काम करने वाले इंटिग्रेटेड DevOps Assistant में अपग्रेड करने जा रहे हैं. यह सब मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) इंटिग्रेशन की वजह से हो पाता है. यह एक शानदार नाम है. इसका मतलब सिर्फ़ यह है कि Gemini आपकी ओर से अन्य सेवाओं से सुरक्षित तरीके से बातचीत कर सकता है. हम सबसे पहले GitHub के साथ काम करने के लिए Gemini को तैयार करेंगे.

इस बारे में सोचें. आपको GitHub पर पुल का अनुरोध देखने, समस्या बनाने या किसी डेटा स्टोर करने की जगह को ब्राउज़ करने के लिए, कितनी बार अपना टर्मिनल छोड़ना पड़ता है? यह तो कॉन्टेक्स्ट के बीच स्विच करने की समस्या है! github टूलसेट की मदद से, ये सभी काम यहीं किए जा सकते हैं. इससे Gemini, GitHub के लिए नेटिव इंटरफ़ेस में बदल जाता है.

GitHub पर मौजूद एमसीपी सर्वर के दस्तावेज़ में, इसके टूल और कॉन्फ़िगरेशन के विकल्पों के बारे में पूरी जानकारी दी गई है. आपके पास लोकल या रिमोट ऑपरेशन में से किसी एक को चुनने का विकल्प होता है, क्योंकि Gemini CLI, दोनों रिमोट एमसीपी सर्वर के साथ काम करता है.

इस ट्यूटोरियल में, GitHub के लिए रिमोट MCP सर्वर का विकल्प सेट अप करने का तरीका बताया गया है. सबसे पहले, आपको GitHub से निजी ऐक्सेस टोकन (पीएटी) की ज़रूरत होगी.

पीएटी मिलने के बाद, आपको एमसीपी सर्वर ऑब्जेक्ट को 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 Server को दिखाया गया है. इसमें यह भी दिखाया गया है कि Gemini CLI, मॉडल कॉन्टेक्स्ट प्रोटोकॉल की मदद से अब कौन-कौनसे टूल इस्तेमाल कर सकता है.

cf9cab5f70ca1fc2.png

मुख्य निर्देशों की जानकारी

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 एक्सप्लोरेशन

7e66f28519488019.png

अब बहुत हो गया, चलो पतंग उड़ाएं! हम 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 रिपॉज़िटरी ढूंढनी है जिसे हमने पहले क्लोन किया था. इसके लिए, आपको किसी निर्देश की ज़रूरत नहीं है. बस पिछले चरण का आउटपुट पढ़ें और रेपो ढूंढें!

तीसरा टास्क: पुल अनुरोधों की सूची खोलना

अब हमने टारगेट रिपॉज़िटरी की पहचान कर ली है. आइए, देखते हैं कि इसमें क्या हो रहा है. क्या कोई पुल अनुरोध खुला है? आइए, पूछते हैं:

List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.

Gemini, github.list_pull_requests टूल का इस्तेमाल करेगा. साथ ही, open स्थिति के हिसाब से फ़िल्टर करेगा. इसके बाद, यह सभी खुली हुई पीआर की सूची दिखाएगा. इसमें पीआर नंबर, टाइटल, और उसे बनाने वाले व्यक्ति का नाम दिखेगा. इससे आपको प्रोजेक्ट के डेवलपमेंट की मौजूदा स्थिति के बारे में तुरंत पता चलता है. इस सुविधा को ऐसी रिपॉज़िटरी के साथ आज़माएं जिसमें आपका योगदान लगातार बना रहता है. इसके बाद, नतीजे देखें.

38aecd94347e633c.png

टास्क 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. पीआरडी से लेकर शुरुआती कमिट तक

bbaad74efa344d07.png

आपने एक्सप्लोर करने, बनाने, और टेस्ट करने का तरीका सीख लिया है. अब हम इन सभी को एक साथ, असल दुनिया के उदाहरण में इस्तेमाल करेंगे. इस समय, हम किसी प्लान को प्रॉडक्ट में बदलते हैं. हम प्रॉडक्ट से जुड़ी ज़रूरी शर्तों की जानकारी देने वाले दस्तावेज़ (पीआरडी) से लेकर, पहले कमिट तक की प्रोसेस के बारे में जानेंगे. आइए, कुछ शानदार बनाएं!

मकसद: लोकल और रिमोट कॉन्टेक्स्ट को मिलाकर, डेवलपमेंट से जुड़े किसी टास्क को शुरू से आखिर तक पूरा करना.

सिनारियो: आपको एक नई सुविधा असाइन की गई है! ज़रूरी शर्तें, प्रोजेक्ट की GitHub रिपॉज़िटरी में मौजूद PRD फ़ाइल में दी गई हैं.

पहला टास्क: समझें - पीआरडी पढ़ें

यह सबसे ज़रूरी चरण है! कोड की एक लाइन लिखने से पहले, आपको प्लान को अच्छी तरह से समझ लेना चाहिए. हमारी नई सुविधा की ज़रूरी शर्तें, prd/NEW_FEATURE.md फ़ाइल में मौजूद हैं. चलो, इसे खोलकर देखते हैं कि इसके अंदर क्या है.

explain the requirements mentioned in prd/NEW_FEATURE.md

Gemini CLI, PRD का कॉन्टेंट दिखाने के लिए read_file का इस्तेमाल करेगा. गोता लगाएं इसमें नई सुविधा के बारे में बताया जाएगा: उपयोगकर्ताओं के लिए रीफ़्रेश बटन. इसकी मदद से, वे सक्रिय पोल की सूची को मैन्युअल तरीके से अपडेट कर पाएंगे. हमेशा ब्लूप्रिंट से सलाह लें!

b07e95a5977e927d.png

टास्क 2: कोड - ज़रूरी शर्तों को हकीकत में बदलना

यह एक खास पल है! हम पीआरडी से ज़रूरी जानकारी लेंगे और Gemini से हमारे लिए कोड लिखने के लिए कहेंगे. आइए, हम सटीक जानकारी दें और उसे बताएं कि हमें क्या चाहिए.

Implement the changes as per the PRD

Gemini CLI काम करना शुरू कर देगा. कुछ समय बाद, आपको इस तरह का आउटपुट दिखेगा. हमारा नया कोड अब एक सुरक्षित जगह पर है!

aff664dee6796f8b.png

तीसरा टास्क: अपने बदलावों की पुष्टि करना

हमने नए कोड के साथ एक नई फ़ाइल बनाई है. इस लैब का आखिरी चरण, 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 CLI हमेशा आपसे उस जानकारी को देने के लिए कहेगा.

अगर अपडेट की गई Cloud Run सेवा में कोई गड़बड़ी होती है, तो Gemini सीएलआई को कोड को डिबग करने और उसे ठीक करने के लिए कहें. याद रखें, यह आपके लिए एक बेहतरीन साथी है!

10. बधाई हो

393fa778d8ee9f18.png

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

रेफ़रंस दस्तावेज़