इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. परिचय
इस लैब में, आपको Gemini का इस्तेमाल करना होगा. यह Google Cloud में बनाया गया, एआई की मदद से काम करता है. इससे आपको Cloud Function डिप्लॉयमेंट से जुड़ी समस्या हल करने में मदद मिलेगी. इसके लिए, आपको गड़बड़ी के लॉग का विश्लेषण करके, समस्या की असल वजह का पता लगाना होगा, और उसे ठीक करने का तरीका खोजना होगा.
आपको क्या करना होगा...
- आपको वातावरण सेट अप करने के लिए Cloud Shell Terminal और gcloud सीएलआई का इस्तेमाल करना होगा. साथ ही, आपको काम के Google API चालू करने और दिए गए कोड से Cloud Function बनाने की भी ज़रूरत होगी
- कैप्चर की गई जानकारी को समझने के लिए, आपको लॉग की खास जानकारी जनरेट करने के लिए, क्लाउड लॉगिंग लॉग की खास जानकारी का इस्तेमाल करना होगा.
- Gemini की मदद से समस्या हल करने और उसे हल करने में मदद पाने के लिए, आपको Gemini से चैट करनी होगी.
आपको क्या सीखने को मिलेगा...
- Google Cloud के निगरानी करने की सुविधा के साथ Gemini का इस्तेमाल कैसे करें और समस्या हल करने के लिए भी इसका इस्तेमाल कैसे करें.
- Gemini की मदद से, Cloud फ़ंक्शन के लॉग ढूंढने और उन्हें समझने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी...
- Chrome वेब ब्राउज़र
- आपके पास ऐसा Google Cloud प्रोजेक्ट होना चाहिए जिसमें बिलिंग की सुविधा चालू हो
- प्रोजेक्ट को ऐक्सेस करने की अनुमतियों वाला Google खाता, जो एपीआई चालू करने और संसाधनों में बदलाव करने की अनुमति देता है
यह लैब, DevOps, प्लैटफ़ॉर्म इंजीनियर, और सभी लेवल के सॉफ़्टवेयर डेवलपर के लिए बनाया गया है. इनमें नए उपयोगकर्ता भी शामिल हैं. हमारा फ़ोकस, समस्या हल करने के लिए Gemini की सुविधाओं के साथ-साथ इसके हिसाब से अनुभव पाने पर है.
2. सेटअप
इस सेक्शन में वह सब कुछ बताया गया है जो आपको इस लैब का इस्तेमाल शुरू करने के लिए करना होगा.
एनवायरमेंट को कॉन्फ़िगर करें
1. https://console.cloud.google.com खोलकर, Cloud Console में लॉग-इन करें.
2. वह Google Cloud प्रोजेक्ट चुनें जिस पर आपको इस लैब के लिए काम करना है.
3. कंसोल में Cloud Functions पेज खोलें. ऐसा करने के लिए, नेविगेशन मेन्यू (कंसोल विंडो में सबसे ऊपर बाईं ओर मौजूद आइकॉन \n) से Cloud Functions चुनें.
इसके अलावा, "क्लाउड फ़ंक्शन" भी खोजा जा सकता है कंसोल के खोज क्षेत्र में:
फ़ंक्शन की सूची में सबसे ऊपर, 'फ़ंक्शन बनाएं' बटन पर क्लिक करें
अगर आपने पहले इस प्रोजेक्ट में Cloud Functions का इस्तेमाल नहीं किया है, तो काम करने के लिए आपसे Google API को चालू करने के लिए कहा जाएगा.
जारी रखने के लिए, 'चालू करें' पर क्लिक करें.
4. नए Cloud फ़ंक्शन की बुनियादी प्रॉपर्टी तय करें.
- नाम को "
codelab-cf
" पर सेट करें - बिना पुष्टि वाले उन अनुरोधों को अनुमति दें विकल्प चुनें जिनकी पुष्टि नहीं की गई है
चरण पूरा करने के लिए, विंडो के नीचे बाईं ओर मौजूद 'आगे बढ़ें' बटन पर क्लिक करें:
'आगे बढ़ें' पर क्लिक करने के बाद, आपको अन्य Google API चालू करने के लिए कहा जा सकता है. चौथे चरण की तरह ही, 'चालू करें' पर क्लिक करें.
Cloud Function का रनटाइम और कोड सेट अप करें
यह CodeLab, प्रोग्रामिंग भाषा के तौर पर Python का इस्तेमाल करता है. अगर आपको Python के बारे में कुछ भी पता नहीं है, तो चिंता न करें. इस CodeLab को पूरा करने के लिए, आपको Python की जानकारी होने की ज़रूरत नहीं होगी.
5. फ़ंक्शन के रनटाइम के तौर पर, Python 3.11 को चुनें
ध्यान दें कि रनटाइम में बदलाव करने पर, इनलाइन एडिटर में दिखाया गया सोर्स कोड बदल जाता है.
6. अपने-आप जनरेट होने वाले क्विकस्टार्ट के उदाहरण में बदलाव करने के लिए, नीचे दिए गए कोड को इनलाइन एडिटर में कॉपी करें.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
यह कोड, जीईटी अनुरोध से मिले path
एट्रिब्यूट को पढ़ता है, बकेट का नाम चुनने के लिए, पाथ को पार्स करता है और इस पाथ में सेव किए गए ऑब्जेक्ट की सूची पाने के लिए, Google Cloud Storage API को कॉल करता है. फ़ंक्शन (get_object_list
) ऐसे अनुरोध को स्वीकार करता है जो इनपुट आर्ग्युमेंट के तौर पर एक फ़्लास्क ऑब्जेक्ट होता है. साथ ही, यह ऑब्जेक्ट के नाम को JSON फ़ॉर्मैट में दिखाता है.
7. इनलाइन एडिटर में छोड़ी गई फ़ाइलों की सूची में से requirements.txt
फ़ाइल चुनें. इनलाइन एडिटर में नीचे दिए गए कोड को कॉपी करके, डिपेंडेंसी की मौजूदा सूची को नई सूची से बदलें.
google-cloud-storage
8. Cloud Function डिप्लॉय करने के लिए, सबसे नीचे बाईं ओर DEPLOY पर क्लिक करें.
डिप्लॉयमेंट की प्रोसेस पूरी होने तक, आपको कुछ मिनट इंतज़ार करना पड़ सकता है. अगर आपने सेटअप के निर्देशों का बारीकी से पालन किया है, तो आपको डिप्लॉयमेंट को 'फ़ेल के तौर पर रिपोर्ट किया गया' के तौर पर देखना चाहिए.
3. समस्या का पता लगाना और उसे हल करना
इस सेक्शन में, समस्या का पता लगाने और उसे ठीक करने का तरीका जानने के लिए, लॉग की जानकारी की सुविधा और Gemini की अन्य सहायता का इस्तेमाल किया जाएगा.
1. डिप्लॉय नहीं किया जा सका. आपको गड़बड़ी का एक मैसेज दिखेगा, जिसमें इस बारे में ज़्यादा जानकारी होगी. साथ ही, डिप्लॉयमेंट लॉग देखने का विकल्प भी होगा. डिप्लॉयमेंट के लॉग देखने के लिए, 'लॉग देखें' पर क्लिक करें.
ध्यान दें कि डिप्लॉयमेंट लॉग उसी ब्राउज़र में अलग टैब में खोले जाएंगे. इस CodeLab को पूरा करने के लिए, आपको अलग-अलग टैब के बीच नेविगेट करना होगा.
ध्यान दें, हो सकता है कि 'लॉग देखें' पर क्लिक करने पर, आपको लॉग लाइन न दिखे या फिर आपको सिर्फ़ कुछ लाइनें दिखें. ऐसे इवेंट में, लॉग एक्सप्लोरर के क्वेरी पैनल में समय-सीमा चुनने वाले टूल का इस्तेमाल करें और पिछले 30 मिनट चुनें.
2. खुले हुए टैब में लॉग की समीक्षा करें. ध्यान दें कि लॉग की खास जानकारी, अपवाद के कॉलस्टैक की कई लाइनों की तरह दिखती है. इसकी वजह यह है कि Cloud Function, stdout
या stderr
पर प्रिंट किए गए टेक्स्ट को कैप्चर करता है और हर लाइन को अलग लॉग एंट्री के तौर पर लिखता है. अन्य लॉग लाइनें, गड़बड़ी के कोड से बाहर निकलने के कोड के साथ-साथ Cloud Functions और Cloud Run API से रिपोर्ट की गई अतिरिक्त जानकारी के बारे में खास जानकारी देती हैं.
किसी लॉग के बारे में ज़्यादा जानकारी देखने के लिए, उसमें से किसी भी लाइन पर क्लिक करें. बड़े किए गए लॉग में अतिरिक्त यूज़र इंटरफ़ेस (यूआई) एलिमेंट होते हैं. इन पर क्लिक करके, लॉग के बारे में पूरी जानकारी कॉपी की जा सकती है और लॉग एंट्री का पूरा डेटा देखने के लिए, सभी फ़ील्ड को बड़ा किया जा सकता है. साथ ही, Gemini का इस्तेमाल करके लॉग एंट्री की जानकारी दी जा सकती है.
4. अपवाद वाले कॉलस्टैक में बहुत ज़्यादा जानकारी नहीं होती. अपवाद के स्टैक ट्रेस लॉग का आखिरी हिस्सा देखने के लिए लॉग देखें. यह "Container called exit(1)
" वाली पंक्ति है. लॉग की यह खास जानकारी बताती है:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
यह जांच के लिए एक अच्छा उम्मीदवार लग रहा है. लॉग एंट्री को बड़ा करने के लिए, इस लाइन पर क्लिक करें. इसके बाद, "इस लॉग एंट्री के बारे में जानकारी दें" पर क्लिक करें बटन पर क्लिक करें.
अगर इस प्रोजेक्ट में पहले Gemini का इस्तेमाल नहीं किया गया था, तो आपको एक ज़रूरी एपीआई चालू करने के लिए कहा जाएगा. अगर आपको एपीआई चालू करने के लिए कहा जाता है, तो आगे बढ़ने के लिए 'चालू करें' पर क्लिक करें.
ध्यान दें कि Gemini से अनुरोध करते समय, कभी-कभी आपको गड़बड़ी का मैसेज मिल सकता है. ऐसे किसी इवेंट पर, जवाब पाने के लिए प्रॉम्प्ट की कार्रवाई एक बार और दोहराएं. उदाहरण के लिए, "इस लॉग एंट्री के बारे में बताएं" पर क्लिक करें बटन को फिर से चालू कर सकते हैं.
5. Gemini की ओर से दी गई जानकारी देखें. अगर दी गई जानकारी पूरी न हो या साफ़ तौर पर न दी गई हो, तो Gemini को ज़्यादा जानकारी देने के लिए कहें. इसके लिए, यहां दिए गए प्रॉम्प्ट में से किसी एक का इस्तेमाल करें या अपना सवाल लिखें
क्या आप इस लॉग के बारे में ज़्यादा जानकारी दे सकते हैं?
क्या आप गड़बड़ी के बारे में ज़्यादा जानकारी दे सकते हैं?
6. इसके बाद, Gemini से समस्या हल करने के सुझाव पाएँ. उदाहरण के लिए, Gemini से पूछें
इस समस्या को कैसे ठीक करें?
इस गड़बड़ी को ठीक करने के लिए कोई समाधान सुझाएं
मैं इस गड़बड़ी को कैसे ठीक करूं
Gemini से मिलने वाले जवाब, मौजूदा कॉन्टेक्स्ट के साथ-साथ आपके प्रॉम्प्ट के शब्दों और फ़ॉर्मैट के हिसाब से अलग-अलग हो सकते हैं. Gemini, यह पक्का करने का सुझाव देगा कि Cloud Function के सोर्स कोड में, hello_http
नाम का फ़ंक्शन है.
7. फ़िलहाल, आपको वह टैब दिख रहा है जो आपको Cloud Functions के लॉग दिखाता है. वह पिछला टैब चुनें जिसमें गड़बड़ी वाला Cloud फ़ंक्शन डिप्लॉयमेंट पेज दिखता है. इसके बाद, 'बदलाव करें' पर क्लिक करें.
8. पक्का करें कि पुष्टि करने की सुविधा अब भी पुष्टि नहीं किए गए अनुरोधों को अनुमति दें पर सेट है. साथ ही, अगर ज़रूरी हो, तो चुने गए विकल्प को अपडेट करें.
9. इनलाइन एडिटर देखने के लिए, सबसे नीचे मौजूद 'आगे बढ़ें' पर क्लिक करें. Gemini के सुझाव का पालन करें और फ़ंक्शन का नाम बदलकर get_order_list
से hello_http
करें.
बदलाव पूरा होने के बाद, 'अपलोड करें' पर क्लिक करें.
डिप्लॉयमेंट की प्रोसेस पूरी होने तक, आपको कुछ मिनट इंतज़ार करना पड़ सकता है. पुष्टि करें कि डिप्लॉयमेंट पूरा हो गया है और इसमें गड़बड़ी का कोई मैसेज नहीं दिखता.
ध्यान दें कि डिप्लॉयमेंट की प्रोसेस पूरी होने तक, कंसोल आपको गड़बड़ी का आखिरी मैसेज दिखा सकता है.
10. curl
का इस्तेमाल करके यह जांच लें कि Cloud Function काम कर रहा है या नहीं. इसके लिए, नीचे दिया गया एचटीटीपीएस अनुरोध भेजें. आपके पास Cloud Shell का इस्तेमाल करने का विकल्प है. इसके अलावा, इसे ऐसे किसी भी टर्मिनल से भी इस्तेमाल किया जा सकता है जिसमें curl
और gcloud
सीएलआई इंस्टॉल हों. इसके लिए, Cloud Shell टर्मिनल से नीचे दिए गए निर्देश को एक्ज़ीक्यूट करें.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
ध्यान दें कि इस कमांड को किसी टर्मिनल से चलाने के लिए, आपको gcloud सीएलआई का इस्तेमाल करके पुष्टि करनी होगी. साथ ही, अपने प्रोजेक्ट आईडी की वैल्यू को एनवायरमेंट वैरिएबल GOOGLE_CLOUD_PROJECT
पर सेट करना होगा.
बोनस
Python रनटाइम चुनने पर, एचटीटीपी से ट्रिगर किए गए Cloud Function के लिए, hello_http
फ़ंक्शन का नाम एक डिफ़ॉल्ट एंट्री पॉइंट के तौर पर बताया गया था. इसका दूसरा विकल्प यह है कि सोर्स कोड में फ़ंक्शन के नाम के तौर पर get_order_list
को रखा जाए. साथ ही, Cloud Function के एंट्री पॉइंट फ़ील्ड को अपडेट किया जा सकता है. यह फ़ील्ड, इनलाइन एडिटर के ऊपर रनटाइम फ़ील्ड से दाईं ओर मौजूद होता है:
एंट्री पॉइंट को hello_http
से get_order_list
में बदलने से, डिप्लॉयमेंट से जुड़ी समस्या हल हो जाएगी.
4. साफ़-सफ़ाई सेवा
क्लीनअप करने के लिए, या तो प्रोजेक्ट बंद करें या Cloud Function इंस्टेंस मिटाएं. कंसोल का इस्तेमाल करके या नीचे दिए गए सीएलआई निर्देश का इस्तेमाल करके, Cloud Functions मिटाया जा सकता है:
gcloud functions delete codelab-cf --region=us-central1
5. बधाई हो!
बधाई हो - आपने Gemini का इस्तेमाल करके, अपने ऐप्लिकेशन से जुड़ी समस्या हल कर ली है. अब आपको पता चल गया है कि इससे लॉग को समझने और Google Cloud से जुड़े सवालों के जवाब पाने में कैसे मदद मिल सकती है.