1. परिचय
इस लैब में, Google Cloud में मौजूद एआई की मदद से काम करने वाले Gemini Code Assist का इस्तेमाल किया जाएगा. इसकी मदद से, मौजूदा Python वेब ऐप्लिकेशन में टेस्ट जोड़े जाएंगे. साथ ही, टेस्ट के दौरान ऐप्लिकेशन में मिली गड़बड़ियों को ढूंढा और ठीक किया जाएगा. इसके बाद, नई सुविधाओं के लिए टेस्ट बनाने और उन टेस्ट को पास करने के लिए कोड जनरेट करने के लिए, कोड असिस्ट का इस्तेमाल करें. साथ ही, ऐप्लिकेशन को बेहतर बनाएं.
आपको क्या करना होगा...
- मौजूदा वेब ऐप्लिकेशन के लिए कोड डाउनलोड करने के लिए, Cloud Shell Editor का इस्तेमाल करें.
- Google Cloud के बारे में सामान्य सवाल पूछने के लिए, Cloud Shell Editor में Gemini Code Assist Chat का इस्तेमाल किया जाएगा.
- Cloud Shell Editor में, Gemini Code Assist की इनलाइन कोड सहायता सुविधा का इस्तेमाल करके, ऐप्लिकेशन के लिए टेस्ट जनरेट किए जाएँगे. साथ ही, टेस्ट चलाए जाएँगे और गड़बड़ियाँ ढूँढकर उन्हें ठीक किया जाएगा. इसके बाद, ऐप्लिकेशन की सुविधाओं को बढ़ाया जाएगा.
आपको यह जानकारी मिलेगी...
- डेवलपर के कई टास्क के लिए, Gemini Code Assist का इस्तेमाल कैसे करें. जैसे, टेस्ट जनरेट करना और कोड जनरेट करना.
- Google Cloud के बारे में जानने के लिए, Gemini Code Assist का इस्तेमाल कैसे करें.
आपको इन चीज़ों की ज़रूरत होगी...
- Chrome वेब ब्राउज़र
- Gmail खाता
- ऐसा Cloud प्रोजेक्ट जिसमें बिलिंग की सुविधा चालू हो
- आपके 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, आपके सवाल का जवाब देगा. कोड असिस्ट की चैट विंडो को बंद करने के लिए, सबसे ऊपर दाएं कोने में मौजूद
आइकॉन पर क्लिक करें.
Cloud Shell Editor में Gemini की सुविधा चालू करना
Gemini Code Assist, कई लोकप्रिय आईडीई में उपलब्ध है और यह सभी में एक जैसा काम करता है. इस कोडलैब में, Google Cloud Shell Editor का इस्तेमाल किया जाएगा. यह आपके वेब ब्राउज़र में पूरी तरह से काम करता है. आपको Cloud Shell Editor में Gemini को चालू और कॉन्फ़िगर करना होगा. इसके लिए, यह तरीका अपनाएं:
- नीचे दिखाए गए आइकॉन पर क्लिक करके, Cloud Shell लॉन्च करें. Cloud Shell इंस्टेंस को शुरू होने में एक या दो मिनट लग सकते हैं.

- एडिटर या एडिटर खोलें बटन पर क्लिक करें और Cloud Shell Editor दिखने तक इंतज़ार करें. अगर आपको नया एडिटर आज़माकर देखें बटन दिखता है, तो उस पर क्लिक करें.

- नीचे दिए गए स्टेटस बार में, Cloud Code - Sign in बटन पर क्लिक करें. निर्देशों के मुताबिक, प्लगिन को अनुमति दें. अगर आपको स्टेटस बार में "Cloud Code - no project" दिखता है, तो उसे चुनें. इसके बाद, प्रोजेक्ट की सूची में से वह Google Cloud प्रोजेक्ट चुनें जिस पर आपको काम करना है.

- अगर आपको स्टेटस बार में सबसे नीचे दाईं ओर Gemini का आइकॉन नहीं दिखता है, तो आपको इसे Cloud Code में चालू करना होगा. ऐसा करने से पहले, पक्का करें कि IDE में Gemini (पहले इसे Duet AI for Developers के नाम से जाना जाता था) चालू हो. इसके लिए, Cloud Code Extension → Settings पर जाएं. इसके बाद, नीचे दिखाए गए तरीके से Duet AI: Enable टेक्स्ट डालें. पक्का करें कि चेकबॉक्स चुना गया हो. आपको अपने आईडीई को फिर से लोड करना चाहिए. इससे Cloud Code में Gemini चालू हो जाता है. साथ ही, Gemini का स्टेटस बार आपके आईडीई में दिखने लगता है.

- दिखाए गए तरीके से, सबसे नीचे दाएं कोने में मौजूद Gemini बटन पर क्लिक करें. इसके बाद, उस Google Cloud प्रोजेक्ट को चुनें जिसके लिए हमने Cloud AI Companion API चालू किया था.

- Google Cloud प्रोजेक्ट चुनने के बाद, पक्का करें कि आपको स्टेटस बार में Cloud Code का स्टेटस मैसेज दिख रहा हो. साथ ही, यह भी पक्का करें कि आपने स्टेटस बार में दाईं ओर Gemini को चालू किया हो. जैसा कि यहाँ दिखाया गया है:

Gemini Code Assist का इस्तेमाल किया जा सकता है!
3. ऐप्लिकेशन डाउनलोड करना और उसकी जांच करना
टर्मिनल विंडो में, शुरुआती कोड के साथ रिपॉज़िटरी को क्लोन करने के लिए कमांड चलाएं. इसके बाद, नई डायरेक्ट्री पर जाएं. अगर टर्मिनल विंडो अब खुली नहीं है, तो इसे वापस लाने के लिए टर्मिनल या टर्मिनल खोलें बटन पर क्लिक करें:
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 विंडो, आईडीई में मौजूद होती है. इसमें आईडीई में मौजूद कोड, बातचीत के संदर्भ के तौर पर उपलब्ध होता है. प्रॉम्प्ट इसके बारे में जानकारी दो डालें और जवाब देखें:

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

शायद हमने यह मानकर थोड़ी जल्दबाज़ी की कि सब कुछ ठीक है. क्या XXIIII, 24 का सही कन्वर्ज़न है? क्या यह 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?
अब जवाब ज़्यादा सटीक है. इसमें एक unittest मॉड्यूल भी शामिल है. इसे कॉपी किया जा सकता है या नई फ़ाइल में डाला जा सकता है:
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. कोड को बेहतर बनाना
याद रखें कि 24 के लिए XXIIII जैसे जवाब, XXIV के बजाय "पूरी तरह से गलत नहीं" माने गए थे. साथ ही, इन्हें आने वाले समय में बेहतर बनाने के लिए रोक दिया गया था. अब वह समय आ गया है. "पूरी तरह से गलत नहीं" जवाब अब भी परेशान करने वाले हैं.
रोमन अंकों में दोहराए गए अंकों के लिए पहला नियम यह है: जब भी आपके पास एक लाइन में चार एक जैसे अंक हों, तो उन्हें किसी एक अंक से बदल दिया जाना चाहिए. इसके बाद, अगला बड़ा अंक होना चाहिए. इसलिए, XXIIII को XXIV से बदल दिया जाना चाहिए. इसी तरह, XXXX को XL में और CCCC को CD में बदल दिया जाना चाहिए.
Gemini Code Assist से पूछें कि number_to_roman फ़ंक्शन से वैल्यू मिलने से ठीक पहले, 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 दबाएं. बस हो गया!

क्या!?!
यह आपकी मशीन पर काम करता है! यह प्रोसेस पूरी क्यों नहीं हुई?
जानें. Gemini 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 के डैशबोर्ड से मिटाया जा सकता है. इससे, आने वाले समय में आपसे कोई शुल्क नहीं लिया जाएगा.