1. परिचय
इस लैब में, आपको Gemini Code Assist का इस्तेमाल करना होगा. यह Google Cloud में एआई की मदद से काम करने वाला सहयोगी है. इससे, किसी मौजूदा Python वेब ऐप्लिकेशन में टेस्ट जोड़े जा सकते हैं. साथ ही, उन ऐप्लिकेशन में गड़बड़ियों को खोजा और ठीक किया जा सकता है जो टेस्ट के दौरान सामने आए हैं. इसके बाद, नई सुविधाओं के लिए टेस्ट तैयार करने के लिए, Code Assist का इस्तेमाल किया जा सकता है. साथ ही, इन टेस्ट को पास करने और ऐप्लिकेशन का दायरा बढ़ाने के लिए कोड जनरेट किया जा सकता है.
आपको क्या करना होगा...
- आपको किसी मौजूदा वेब ऐप्लिकेशन का कोड डाउनलोड करने के लिए, Cloud Shell Editor का इस्तेमाल करना होगा.
- Google Cloud के बारे में सामान्य सवाल पूछने के लिए, आपको Cloud Shell Editor में Gemini Code Assist Chat का इस्तेमाल करना होगा.
- Cloud Shell Editor में Gemini Code Assist Inline कोड से जुड़ी सहायता का इस्तेमाल करके, ऐप्लिकेशन के लिए टेस्ट जनरेट किए जा सकते हैं. साथ ही, टेस्ट चलाए जा सकते हैं और गड़बड़ियों का पता लगाकर उन्हें ठीक किया जा सकता है. इसके बाद, ऐप्लिकेशन की सुविधाएं बढ़ाई जा सकती हैं.
आपको इनके बारे में जानकारी मिलेगी...
- Gemini Code Assist का इस्तेमाल, डेवलपर से जुड़े कई टास्क के लिए कैसे किया जा सकता है. जैसे, टेस्ट जनरेट करना और कोड जनरेट करना.
- Google Cloud के बारे में जानने के लिए, Gemini Code Assist इस्तेमाल करने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी...
- Chrome वेब ब्राउज़र
- Gmail खाता
- ऐसा क्लाउड प्रोजेक्ट जिसमें बिलिंग की सुविधा चालू हो
- आपके Cloud प्रोजेक्ट के लिए, Gemini Code Assist की सुविधा चालू कर दी गई है
यह लैब सभी लेवल के डेवलपर के लिए है. इनमें नए उपयोगकर्ता भी शामिल हैं. ऐप्लिकेशन का सैंपल Python भाषा में होता है, लेकिन आपको इसे समझने के लिए Python प्रोग्रामिंग के बारे में जानने की ज़रूरत नहीं है. हम इस बात पर ध्यान देंगे कि डेवलपर के लिए Gemini Code Assist में क्या-क्या सुविधाएँ हैं.
2. सेटअप
आपके पास पहले से ही बिलिंग के साथ Cloud प्रोजेक्ट होना चाहिए, ताकि इस लैब का इस्तेमाल किया जा सके. अब हम अपने Google Cloud प्रोजेक्ट में Gemini API को चालू कर देंगे. इसके लिए, यहां दिया गया तरीका अपनाएं:
- https://console.cloud.google.com पर जाएं और पक्का करें कि आपने वह Google Cloud प्रोजेक्ट चुना हो जिसके साथ आपको इस लैब के लिए काम करना है. सबसे ऊपर दाईं ओर दिख रहे Gemini के आइकॉन पर क्लिक करें.
- Gemini for Cloud कंसोल की विंडो, कंसोल की दाईं ओर खुलेगी. अगर नीचे दिखाया गया है, तो चालू करें बटन पर क्लिक करें. अगर आपको चालू करें बटन नहीं दिखता है और इसके बजाय चैट का इंटरफ़ेस दिखता है, तो इसका मतलब है कि आपने प्रोजेक्ट के लिए Gemini for Cloud पहले ही चालू कर रखा है. अब अगले चरण पर जाया जा सकता है.
- Gemini के चालू होने के बाद, इसे एक या दो क्वेरी पूछकर टेस्ट किया जा सकता है. कुछ सैंपल क्वेरी दिखाई गई हैं, लेकिन आप Cloud Run क्या है? जैसा कुछ आज़माकर देख सकते हैं
Code Assist आपके सवाल के जवाब के साथ आपकी मदद करेगा. Code Assist चैट विंडो को बंद करने के लिए, सबसे ऊपर दाएं कोने में मौजूद आइकॉन पर क्लिक करें.
Cloud Shell Editor में Gemini को चालू करना
Gemini Code Assist उपलब्ध है. साथ ही, यह कई लोकप्रिय IDE में इसी तरह काम करता है. आपको Google क्लाउड शेल एडिटर का इस्तेमाल करना होगा, जो इस कोडलैब में आपके वेब ब्राउज़र में पूरी तरह से चलता है. आपको Gemini को Cloud Shell Editor में चालू और कॉन्फ़िगर करना होगा. इसके लिए, यह तरीका अपनाएं:
- नीचे दिखाए गए आइकॉन की मदद से Cloud Shell को लॉन्च करें. क्लाउड शेल इंस्टेंस चालू होने में एक या दो मिनट लग सकते हैं.
- एडिटर या एडिटर बटन पर क्लिक करें (जैसा भी हो सकता है) और क्लाउड शेल एडिटर दिखने तक इंतज़ार करें. अगर आपको नया एडिटर आज़माएं बटन दिखे, तो उस पर क्लिक करें.
- सबसे नीचे स्टेटस बार में, दिखाए गए तरीके से Cloud कोड - साइन इन करें बटन पर क्लिक करें. निर्देश के अनुसार प्लग इन को अनुमति दें. अगर आपको स्टेटस बार में "Cloud Code - कोई प्रोजेक्ट नहीं है" दिखता है, तो उसे चुनें. इसके बाद, उन प्रोजेक्ट की सूची में से Google Cloud प्रोजेक्ट चुनें जिन पर आपको काम करना है.
- अगर आपको दाईं ओर दिए गए स्टेटस बार में Gemini आइकॉन नहीं दिखता है, तो आपको इसे Cloud Code में चालू करना होगा. IDE में Cloud Code एक्सटेंशन → सेटिंग पर जाकर Gemini को चालू करें. Gemini (इसे पहले Duet AI for Developers के नाम से जाना जाता था) को चालू करने से पहले, नीचे बताए गए तरीके के मुताबिक Duet AI: enabled टेक्स्ट डालें. पक्का करें कि चेकबॉक्स चुना गया हो. आपको अपना IDE फिर से लोड करना चाहिए. इससे Cloud Code में Gemini चालू हो जाता है. साथ ही, Gemini का स्टेटस बार आपके IDE में दिखेगा.
- स्क्रीन पर सबसे नीचे दाएं कोने में मौजूद, Gemini बटन पर क्लिक करें. इसके बाद, वह Google Cloud प्रोजेक्ट चुनें जिसके लिए हमने Cloud AI Companion API चालू किया था.
- Google Cloud प्रोजेक्ट चुनने के बाद, यह देख लें कि आपको स्टेटस बार के Cloud Code स्टेटस मैसेज में यह जानकारी दिख रही हो. यह भी देख लें कि आपने Gemini को भी दाईं ओर चालू कर रखा है. यह जानकारी नीचे दिए गए स्टेटस बार में दी गई है:
Gemini Code Assist का इस्तेमाल किया जा सकता है!
3. ऐप्लिकेशन डाउनलोड करें और उसकी जांच करें
टर्मिनल विंडो में, निर्देश को चलाएं और शुरुआती कोड के साथ रिपॉज़िटरी का क्लोन बनाएं और फिर नई डायरेक्ट्री में बदलें (अगर टर्मिनल विंडो अब खुली न हो, तो इसे पहले जैसा करने के लिए Terminal या Open Terminal बटन पर क्लिक करें):
git clone https://github.com/GoogleCloudPlatform/testing-with-duet-ai-codelab.git
cd testing-with-duet-ai-codelab
एडिटर में main.py खोलें. इसके बाद, एडिटर की बाईं ओर मौजूद Gemini Chat के आइकॉन पर क्लिक करके Gemini Chat विंडो खोलें. Gemini Chat की यह विंडो, IDE के अंदर मौजूद है. साथ ही, इसके कॉन्टेक्स्ट के तौर पर IDE में यह कोड उपलब्ध है. इसे समझाएं प्रॉम्प्ट डालें और जवाब देखें:
पूरा जवाब देखने के लिए, इस चैट विंडो को स्क्रोल किया जा सकता है. जानकारी में बताया गया है कि हम इस प्रोग्राम को टर्मिनल विंडो में निर्देश python3 main.py
से स्थानीय तौर पर चला सकते हैं.
4. स्थानीय तौर पर चलाएं
अगर ज़रूरी हो, तो cd ~/testing-with-duet-ai-codelab
का इस्तेमाल करके, डेटा स्टोर करने की डायरेक्ट्री को बदलें और टर्मिनल विंडो में निर्देश python3 main.py
डालें:
ऐप्लिकेशन के होम पेज पर एक नया ब्राउज़र टैब खोलने के लिए, http://127.0.0.1:8080 लिंक पर क्लिक करें:
ऐप्लिकेशन "स्थानीय रूप से" चल रहा है. दरअसल, Cloud Shell Editor ने यहां कुछ जादू कर दिया है. यह ऐप्लिकेशन Cloud Shell में चल रहा है, आपके कंप्यूटर पर नहीं. जब आपने लिंक पर क्लिक किया, तो इससे एक टैब खुल गया, जो असली स्थानीय पते http://127.0.0.1:8080 के बजाय, Cloud Shell के ऐसे प्रॉक्सी सर्वर पर खुला है जिसे सिर्फ़ इसी काम के लिए सेट अप किया गया है. इसका असर ठीक वैसा ही होता है, जैसे कि डिवाइस को असल में चलाया जा रहा हो.
इसे आज़माकर देखें. 25 डालें और बदलें! को दबाएं
यह सही है, रोमन अंकों में 25 का मतलब XXV है! आपको यहां जाना होगा.
शायद कुछ और नंबर देखें. 25 से काम हो गया, 24 का क्या?
शायद हम यह सोचने के लिए थोड़ा जल्दी में थे कि सब कुछ ठीक था. क्या 24 के लिए XXIIII सही कन्वर्ज़न है? क्या इसे XXIV नहीं होना चाहिए?
ऐसा हो सकता है कि XXIIII सही हो, लेकिन आम तौर पर लोग इसकी उम्मीद नहीं करते. हालांकि, यह वाकई में गलत नहीं है (ध्यान दें कि कई घड़ियों में 4 को रोमन अंक IIII के रूप में दिखाया जाता है), इसलिए भविष्य में बेहतर बनाने के लिए इस समस्या को छोड़ दिया जाता है.
नेगेटिव नंबर आज़माना कैसा रहेगा? अभी तक कोई शिकायत नहीं है? उन संख्याओं को रोमन अंकों में दिखाने का कोई तरीका नहीं है. ऐसा लगता है कि उपयोगकर्ता के पास कोई जानकारी नहीं है. ऐसा लगता है कि इस गड़बड़ी को ठीक करने की ज़रूरत है.
टेस्टिंग से गड़बड़ियों का पता लगाने और उन्हें खत्म करने में मदद मिल सकती है. साथ ही, Gemini Code Assist की मदद से हमें टेस्ट लिखने और उनका इस्तेमाल करने में मदद मिलती है.
5. टेस्ट जोड़ना
Gemini Chat की विंडो पर वापस जाएँ और पूछें
How can I test the number_to_roman function?
जवाब को पढ़ें, जिसमें unittest मॉड्यूल और pytest मॉड्यूल पर चर्चा करना शामिल होना चाहिए.
ये टेस्ट लिखने के लिए, Gemini Code Assist की मदद ली जा सकती है. calendar.py खोलें, जहां असल कन्वर्ज़न कोड मौजूद होगा. इसके बाद, एडिटर में जाकर Gemini Chat की विंडो पर वापस आएं और फिर से पूछें
How can I test the number_to_roman function?
इसके बाद, आपको पहले से ज़्यादा सटीक जवाब मिलता है. यहां तक कि एक इकाई मॉड्यूल के साथ जिसे आप नई फ़ाइल में कॉपी या इंजेक्ट कर सकते हैं:
import unittest
import calendar
class NumberToRomanTest(unittest.TestCase):
def test_convert_1(self):
self.assertEqual(calendar.number_to_roman(1), "I")
def test_convert_4(self):
self.assertEqual(calendar.number_to_roman(4), "IV")
def test_convert_9(self):
self.assertEqual(calendar.number_to_roman(9), "IX")
def test_convert_40(self):
self.assertEqual(calendar.number_to_roman(40), "XL")
def test_convert_90(self):
self.assertEqual(calendar.number_to_roman(90), "XC")
def test_convert_400(self):
self.assertEqual(calendar.number_to_roman(400), "CD")
def test_convert_900(self):
self.assertEqual(calendar.number_to_roman(900), "CM")
def test_convert_1990(self):
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
def test_convert_2023(self):
self.assertEqual(calendar.number_to_roman(2023), "MMXXIII")
आपको ऊपर दिए गए उदाहरण से अलग कोड दिख सकता है. Gemini Code Assist के मॉडल समय-समय पर अपडेट किए जाते हैं. इसलिए, ज़रूरी नहीं है कि इसके जवाब हमेशा एक जैसे हों. अगर आपको कोड का अलग सेट दिखता है, तो अब यहां दिए गए कोड को कॉपी करके चुनें कि आपको इस कोडलैब में दिखाए गए सैंपल का इस्तेमाल जारी रखना है या नहीं. इसके अलावा, Gemini Code Assist की ओर से दिया जा रहा वैकल्पिक जवाब भी आज़माया जा सकता है. अगर आपके पास समय है, तो दोनों तरीके आज़माएं. Gemini Code Assist एक कोडिंग असिस्टेंट है. इसका इस्तेमाल, आपके हिसाब से किया जा सकता है.
Gemini Chat विंडो के सबसे ऊपर दाएं कोने में मौजूद, डबल पॉइंट वाले ऐरो पर क्लिक करके, यूनिट टेस्ट कोड वाली नई फ़ाइल बनाएं. इसके अलावा, नई फ़ाइल बनाने और इस लैब में दिखाया गया कोड चिपकाने के लिए, IDE का इस्तेमाल करें. उसे सेव करने के लिए उस विंडो में CTRL-S या CMD-S दबाएं और सेव की गई फ़ाइल calendar-unittest.py को कॉल करें.
आपने जिस वेब सर्वर को पहले छोड़ा था उसे रोकने के लिए टर्मिनल पर वापस जाएं और CTRL-C दबाएं और शेल प्रॉम्प्ट पाएं. निर्देश डालें
python3 calendar-unittest.py
इस्तेमाल किया जा सकता है.
कोई आउटपुट नहीं मिला. यह वैसा नहीं है जिसकी उम्मीद की गई थी. क्या सब कुछ बिना किसी आवाज़ के हो गया? आपको यह ज़रूर पता होना चाहिए. Gemini Code Assist से मिला वह जवाब देखें जिसमें टेस्ट कोड शामिल था. कोड के नीचे, टेस्ट केस चलाने के तरीके के बारे में ज़्यादा जानकारी दी गई थी:
सुझाए गए निर्देश को चलाकर देखें:
python -m unittest discover
अगर आपकी मशीन python3
कमांड को python
पर उपनाम नहीं करती है, तो आपको समस्या हो सकती है. ऐसा होने पर, यह फ़ंक्शन चलता है:
python3 -m unittest discover
निर्देश चलता है, लेकिन यह Ran 0 tests in 0.000s
दिखाता है. इस मॉड्यूल में कई टेस्ट किए गए हैं. क्या हो रहा है?
यह निर्देश का आखिरी शब्द है, discover
. यह कहां से आया? ऐसा लगता है कि Gemini Code Assist को टेस्ट कोड को discover
या discover.py
नाम की फ़ाइल में सेव करना चाहिए था. हालाँकि, उन्होंने यह नहीं बताया कि आपको क्या करना चाहिए. चूंकि आपने वास्तव में फ़ाइल को calendar-unittest.py
में सहेजा है, इसलिए यह आदेश चलाकर देखें:
python3 -m unittest calendar-unittest
अब आपको बहुत सारे आउटपुट दिखते हैं. इनकी शुरुआत कुछ इस तरह से होती है:
$ python3 -m unittest calendar-unittest
.F.FFFFFF
======================================================================
FAIL: test_convert_1990 (calendar-unittest.NumberToRomanTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/charles_engelke/testing-with-duet-ai-codelab/calendar-unittest.py", line 28, in test_convert_1990
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
AssertionError: 'MDCCCCLXXXX' != 'MCMXC'
- MDCCCCLXXXX
+ MCMXC
पहली लाइन में, पास होने वाले हर टेस्ट के लिए अलग-अलग पीरियड दिखता है. साथ ही, हर टेस्ट में सफल नहीं रहे हर टेस्ट के लिए F
की जानकारी दी जाती है. ज़्यादातर टेस्ट फ़ेल हो रहे हैं! इसके बाद, यह गड़बड़ी की हर जांच को अलग-अलग सूची में शामिल करता है, जिसमें अनुमानित आउटपुट और असल आउटपुट दिखता है. यह साफ़ तौर पर नहीं कहा जा सकता कि ये टेस्ट किस क्रम में किए गए थे. इसमें जांच के नाम के हिसाब से वर्णमाला के क्रम में रखा गया था, न कि उस क्रम में जिसमें जांच का नाम, फ़ाइल में दिख रहा है. इस तरह, पहले test_convert_1
दौड़ा गया, फिर test_convert_1990
, फिर test_convert_2023
, और फिर इसी तरह के अन्य. सिर्फ़ 1
और 2023
के टेस्ट केस पास हो गए हैं.
जब आपने पहली बार इस कोड को आज़माया, तो आपने देखा कि यह 24
को XXIIII
में बदल देता है, जो कि पूरी तरह से गलत नहीं था, लेकिन यह उस सामान्य रूप में नहीं था जिसमें IIII
को IV
में बदला गया था. ऐसे सभी मामले जिनकी पुष्टि नहीं हो पाई. जब इस समस्या को पहली बार नोट किया गया था, तब लैब ने कहा, "हालांकि, यह असल में गलत नहीं है (ध्यान दें कि कई घड़ियों में 4
को रोमन नंबर IIII
के तौर पर दिखाया जाता है), इसलिए इस समस्या को बाद में बेहतर बनाने के लिए छोड़ दिया जाता है."
"असल में गलत नहीं" होने की उम्मीद करने और उसे स्वीकार करने के लिए, टेस्ट केस में बदलाव किया जा सकता है दिए गए कोड का जवाब देता है या स्वीकार करते हैं कि "आने वाले समय में बेहतर बनाने" का समय आ गया है. इसलिए, अब आपको Gemini Code Assist की मदद से कोड को ठीक करना होगा. इससे, आपको टेस्ट के हिसाब से ज़्यादा सही जवाब मिल सकेंगे.
6. कोड बेहतर बनाया जा रहा है
याद रखें कि आम तौर पर इस्तेमाल होने वाले XXIV
के बजाय, 24
के लिए XXIIII
जैसे जवाब, "असल में गलत नहीं थे" के तौर पर मार्क किए गए थे और उन्हें भविष्य में बेहतर बनाने के लिए बंद कर दिया गया था. वह भविष्य अब है. वे "सच में गलत नहीं हैं" जवाब अब भी परेशान करने वाले हैं.
रोमन अंकों में दोहराए गए अंकों का पहला नियम यह है: जब भी आपकी पंक्ति में चार एक जैसे अंक हों, तो उन्हें किसी एक अंक से बदलना चाहिए. इसके बाद, अगली सबसे बड़ी संख्या होनी चाहिए. इसलिए, XXIIII
को XXIV
से बदलना चाहिए. इसी तरह, XXXX
को XL
में बदला जाना चाहिए और CCCC
को CD
होना चाहिए.
Gemini Code Assist से नंबर_to_roman के ज़रिए रिटर्न करने से ठीक पहले, रोमन वैरिएबल की वैल्यू को इस तरह से बदलने का तरीका जानें:
If the final value of roman has IIII in it, that should be replaced by IV. Similarly XXXX should be replaced by XL, and CCCC should become CD. How can I make those changes?
हमारा सुझाव है कि आखिर में कुछ कोड जोड़ें:
एडिटर में उन लाइनों को कॉपी करें/चिपकाएं या टाइप करें. इसके बाद देखें कि क्या होता है:
Gemini Code Assist ने उन केस को हैंडल करने के लिए और लाइनें जोड़ी हैं जो पहले सेट किए गए विकल्पों के बाद आ सकती हैं. उदाहरण के लिए, 19 को XVIIII में, फिर XVIV में, और आखिर में सही XIX में बदला जाएगा.
अगर Gemini Code Assist ने काम के सुझाव दिए हैं, तो सुझावों को स्वीकार करने, फ़ाइल सेव करने, और वेब सर्वर को फिर से चलाने के लिए Tab दबाएं. अगर ऐसा नहीं है, तो उदाहरण में दिखाई गई लाइनों को मैन्युअल तरीके से जोड़ें और फ़ाइल को सेव करें. एक मुश्किल बदलाव करके देखें: 1999:
सही जवाब!
जांच को फिर से चलाएं. वे सभी सफल हो गए!
ऐसा लगता है कि वेब ऐप्लिकेशन, प्रोडक्शन में शामिल होने के लिए तैयार है.
7. Cloud Run पर डिप्लॉय करें
Cloud Run, आपके लिए इंटरनेट पर कंटेनर वाला एक ऐप्लिकेशन चलाएगा. Flash जैसे सामान्य फ़्रेमवर्क का इस्तेमाल करके लिखे गए ऐप्लिकेशन के लिए, gcloud run deploy
निर्देश आपके लिए वह कंटेनर भी डिप्लॉय करने से पहले बना देगा. निर्देश चलाएं:
gcloud run deploy
टर्मिनल में. जब सोर्स कोड की जगह के बारे में पूछा जाए, तो सही जगह का सुझाव देने के लिए Enter दबाएं. इसी तरह, जब किसी सेवा का नाम पूछा जाए, तो सुझाव स्वीकार करने के लिए, Enter दबाएं.
यह निर्देश काम नहीं कर सकता, क्योंकि gcloud यह तय नहीं कर पा रहा है कि किस प्रोजेक्ट का इस्तेमाल करना है. ऐसी स्थिति में, यह निर्देश चलाएं:
gcloud config set core/project <project-id>
जहां
को आपके प्रोजेक्ट के आईडी से बदला जाता है. मुमकिन है कि इसका नाम भी हो. इसके बाद, gcloud run deploy
कमांड को फिर से चलाएं.
- कमांड से आपको पता चलेगा कि कुछ एपीआई की ज़रूरत है और उन्हें फ़िलहाल चालू नहीं किया गया है. सूचनाएं पाने की सुविधा चालू करने के लिए y डालें.
- जब क्षेत्र चुनने के लिए कहा जाए, तो अपनी सुविधा के हिसाब से कोई क्षेत्र चुनें.
us-central1
से जुड़ी संख्या डालना सुरक्षित विकल्प है. - पूछे जाने पर, जारी रखने के लिए Y डालें.
- आपको Cloud Run सेवा के लिए, पुष्टि नहीं किए गए अनुरोधों की अनुमति देनी होगी. Cloud Run में पुष्टि करने का जो विकल्प इस्तेमाल होता है वह सेवा को कॉल करने वाले प्रोग्राम के लिए सही होता है. यह एक वेबसाइट है, इसलिए पुष्टि करने की सुविधा का इस्तेमाल नहीं किया जा सकता.
Google Cloud, कंटेनर बनाएगा, उसे डिप्लॉय करेगा, ट्रैफ़िक को उस पर रूट करेगा, और ऐक्सेस की नीतियां सेट करेगा. इसके बाद, आपको होम पेज का लिंक दिखाएगा:
इस लिंक पर जाकर, अपना ऐप्लिकेशन ऐक्सेस किया जा सकता है.
कोई नंबर डालें और Enter दबाएं और tada दबाएं!
क्या!?!
यह आपकी मशीन पर कारगर साबित हुआ! यह प्रोसेस पूरी क्यों नहीं हुई है?
पता लगाएं. Code Assist से पूछें,
Why am I getting an internal server error on cloud run?
ऐसा लगता है कि Gemini Code Assist लॉग फ़ाइल को पढ़ सकता है. इसका मतलब है कि वह कुछ मिलता-जुलता है. चलिए, Gemini Code Assist से अपने-आप लॉग करने का तरीका जानते हैं:
आगे बढ़ें और वह करें. लाल रंग की लाइनें देखें !! गड़बड़ी के संकेत, जो नीचे दिए गए हैं:
इसके बाद, यहां आने वाले कॉल स्टैक के बारे में कई जानकारी दी गई है. हालांकि, यह जानकारी यहां दी गई है:
जब आप अपनी calendar.py फ़ाइल देखते हैं, तो आपको ठीक वहीं पर number_to_roman फ़ंक्शन दिखाई देता है! और आपको पता है यह सही है, क्योंकि यह आपकी मशीन पर काम करता था. Cloud Run में अलग क्या हो सकता है?
इसका जवाब पेचीदा है. Python3 में एक स्टैंडर्ड मॉड्यूल शामिल होता है, जिसे calendar कहा जाता है. calendar.py फ़ाइल की तरह ही number_to_roman फ़ंक्शन में इसकी जानकारी दी गई है. आपकी लोकल मशीन पर, जब Python ने calendar नाम का मॉड्यूल खोजा, तो उसने सबसे पहले आपकी ऐप्लिकेशन डायरेक्ट्री में खोजा. ऐसा लगता है कि Cloud Run पर Python ने सबसे पहले स्टैंडर्ड मॉड्यूल की खोज की, उसे इंपोर्ट किया, लेकिन number_to_roman फ़ंक्शन को नहीं ढूंढा.
माहौल में इस तरह के अंतर हमेशा संभव होते हैं. अच्छी बात यह है कि जब किसी ऐप्लिकेशन को कंटेनर के तौर पर इस्तेमाल किया जाता है, तो वह अपने अंदर ही एनवायरमेंट ले लेता है. इसलिए, आप जहां भी इसे चलाते हैं वहां भी ऐसा ही व्यवहार किया जा सकता है. अगर आपने स्थानीय रूप से वही कंटेनर वाला ऐप्लिकेशन चलाया है जिसे Cloud Run ने चलाया था, तो आपको भी वही समस्या हुई होगी.
इस समस्या का हल करें. आपको अपने लोकल कैलेंडर मॉड्यूल का नाम बदलना होगा. यह नाम, स्टैंडर्ड मॉड्यूल का नाम नहीं होगा. calendar.py फ़ाइल का नाम बदलकर my_calendar.py कर दें. इसके बाद, main.py और calendar-unittest.py में import calendar
पंक्तियों को import my_calendar
में बदलें. आखिर में, लाइन बदलें
roman = calendar.number_to_roman(number)
से
roman = my_calendar.number_to_roman(number)
इसे अपने डिवाइस पर आज़माएं, जांच करें, और फिर से डिप्लॉय करें:
gcloud run deploy
और अब यह काम करता है:
इस यूआरएल को शेयर किया जा सकता है. जिन लोगों को रोमन नंबर कन्वर्ज़न टूल की ज़रूरत है वे आपके यूआरएल का इस्तेमाल कर सकते हैं.
8. ज़रूरी नहीं: अपना लुक बेहतर बनाना
आपका ऐप्लिकेशन ठीक से काम कर रहा है और उसे वेब पर कोई भी ऐक्सेस कर सकता है. लेकिन देखने में यह थोड़ी सादी होती है. सभी को इसके बारे में बताने से पहले, क्यों न Gemini Code Assist से इसके रंग-रूप को बेहतर बनाने के लिए कहा जाए?
templates/index.html
फ़ाइल खोलें. Gemini की चैट विंडो में, ये सवाल पूछें:
Make this index.html file use material design.
इसके बाद, मौजूदा फ़ाइल में कुछ जोड़ा जाता है. इससे कुछ ऐसा दिखता है:
<!DOCTYPE html>
<html>
<head>
<title>Roman Numerals</title>
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
</head>
<body>
<h1 class="mdl-typography--title">Roman Numerals</h1>
<form action="/convert" method="post">
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" id="number" name="number" required />
<label class="mdl-textfield__label" for="number">Enter a number:</label>
</div>
<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored">
Convert!
</button>
</form>
</body>
</html>
सुझाया गया कोड कॉपी करने और index.html की मौजूदा सामग्री के ऊपर चिपकाने के लिए, आइकॉन का इस्तेमाल करें. टर्मिनल में, python3 main.py
चलाएं और झलक विंडो खोलने के लिए लिंक पर क्लिक करें. पेज अब थोड़ा कम सादा है:
अगर आप चाहें, तो इसे convert.html फ़ाइल के साथ दोहराया जा सकता है.
Gemini Code Assist के बारे में बहुत सी जानकारी है. इसकी मदद से, ऐप्लिकेशन के पेजों को अलग-अलग स्टाइल में ढाला जा सकता है. यह तो बस एक शुरुआत है.
आप इस ऐप्लिकेशन को शेयर करना चाहते हैं, इसलिए इसे Cloud Run पर फिर से डिप्लॉय करना न भूलें:
gcloud run deploy
आप यह यूआरएल उन लोगों को दे सकते हैं जिन्हें रोमन अंकों में बदलना है.
9. बधाई हो!
बधाई हो - आपने Gemini Code Assist के साथ काम करके, किसी ऐप्लिकेशन में टेस्ट जोड़ने, उसमें गड़बड़ियां ठीक करने, और बेहतर सुविधाएं जोड़ने का काम पूरा कर लिया है.
बनाए गए ऐप्लिकेशन का इस्तेमाल करने के बाद, उसे Cloud Console के डैशबोर्ड से मिटाया जा सकता है. ऐसा करके, आने वाले समय में किसी भी तरह के शुल्क को रोका जा सकता है.