एआई के दौर में ऐप्लिकेशन बनाना

1. खास जानकारी

इस लैब में, Google Cloud में इन्फ़्रास्ट्रक्चर बनाने के लिए, Google के जनरेटिव एआई प्रॉडक्ट इस्तेमाल किए जाएंगे. इसके लिए, Gemini Cloud Assist की मदद ली जाएगी. साथ ही, Data Canvas की नैचुरल लैंग्वेज से एसक्यूएल क्वेरी जनरेट करने वाली सुविधाओं का इस्तेमाल करके, BigQuery डेटा को क्वेरी किया जाएगा. इसके अलावा, Colab Enterprise Jupyter Notebooks और Eclipse Theia (Visual Studio Code) में कोड लिखने के लिए, Gemini Code Assist की मदद ली जाएगी. साथ ही, Vertex AI Agent Builder में, Cloud Storage और BigQuery के ग्राउंडिंग सोर्स पर आधारित एआई सर्च और चैट सुविधाओं को इंटिग्रेट किया जाएगा.

हमारा लक्ष्य, AI Recipe Haven नाम की एक ऐसी वेबसाइट बनाना है जिस पर रेसिपी और खाना बनाने से जुड़ी जानकारी उपलब्ध हो. यह साइट Python और Streamlit में बनाई जाएगी. इसमें दो मुख्य पेज होंगे. 'खाना पकाने से जुड़ी सलाह' सुविधा में एक चैटबॉट होगा. इसे Gemini और Vertex AI Agent Builder का इस्तेमाल करके बनाया जाएगा. साथ ही, इसमें सोर्स के तौर पर कुकबुक का एक ग्रुप जोड़ा जाएगा. यह सुविधा, खाना पकाने से जुड़ी सलाह देगी और खाना पकाने से जुड़े सवालों के जवाब देगी. रेसिपी खोजने की सुविधा, Gemini पर आधारित एक सर्च इंजन होगा. यह BigQuery के रेसिपी डेटाबेस से जानकारी लेगा.

अगर आपको इस अभ्यास में किसी कोड को समझने में परेशानी हो रही है, तो सभी कोड फ़ाइलों के समाधान, solution ब्रांच पर मौजूद GitHub रिपॉज़िटरी में दिए गए हैं.

मकसद

इस लैब में, आपको ये टास्क करने का तरीका बताया जाएगा:

  • Gemini Cloud Assist को चालू करना और उसका इस्तेमाल करना
  • खाना बनाने के बारे में सलाह देने वाले चैटबॉट के लिए, Vertex AI Agent Builder में खोज करने की सुविधा वाला ऐप्लिकेशन बनाना
  • Gemini Code Assist की मदद से, Colab Enterprise notebook में डेटा लोड करना और उसे साफ़ करना
  • रेसिपी जनरेट करने वाले ऐप्लिकेशन के लिए, Vertex AI Agent Builder में खोज करने की सुविधा वाला ऐप्लिकेशन बनाना
  • Gemini की मदद से, Python और Streamlit वेब ऐप्लिकेशन का मुख्य हिस्सा तैयार करना
  • वेब ऐप्लिकेशन को Cloud Run पर डिप्लॉय करना
  • कुकिंग से जुड़ी सलाह देने वाले पेज को, कुकबुक खोजने वाले एजेंट बिल्डर ऐप्लिकेशन से कनेक्ट करो
  • (ज़रूरी नहीं) रेसिपी खोजने वाले पेज को, रेसिपी खोजने वाले एजेंट बिल्डर ऐप्लिकेशन से कनेक्ट करें
  • (ज़रूरी नहीं) फ़ाइनल आवेदन देखें

2. ज़रूरी शर्तें

  1. अगर आपके पास पहले से कोई Google खाता नहीं है, तो आपको एक Google खाता बनाना होगा.
    • ऑफ़िस या स्कूल वाले खाते के बजाय, निजी खाते का इस्तेमाल करें. ऑफ़िस और स्कूल वाले खातों पर कुछ पाबंदियां हो सकती हैं. इनकी वजह से, इस लैब के लिए ज़रूरी एपीआई चालू नहीं किए जा सकते.

3. प्रोजेक्ट सेटअप करना

  1. Google Cloud Console में साइन इन करें.
  2. Cloud Console में बिलिंग चालू करें.
    • इस लैब को पूरा करने में, Cloud संसाधनों पर 1 डॉलर से कम का खर्च आना चाहिए.
    • ज़्यादा शुल्क से बचने के लिए, इस लैब के आखिर में दिए गए निर्देशों का पालन करके संसाधनों को मिटाया जा सकता है.
    • नए उपयोगकर्ता, 300 डॉलर के मुफ़्त में आज़माने की सुविधा का फ़ायदा पा सकते हैं.
    • क्या आपको वर्चुअल हैंड्स-ऑन लैब इवेंट में शामिल होना है? आपको 500 रुपये का क्रेडिट मिल सकता है.
  3. नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें.
  4. पुष्टि करें कि Cloud Billing में मेरे प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है
    • अगर आपके नए प्रोजेक्ट के Billing account कॉलम में Billing is disabled दिखता है, तो:
      1. Actions कॉलम में मौजूद तीन बिंदुओं पर क्लिक करें
      2. बिलिंग बदलें पर क्लिक करें
      3. वह बिलिंग खाता चुनें जिसका आपको इस्तेमाल करना है
    • अगर आपको किसी लाइव इवेंट में शामिल होना है, तो खाते का नाम Google Cloud Platform का ट्रायल बिलिंग खाता होगा

4. Gemini Cloud Assist को चालू करना और उसका इस्तेमाल करना

इस टास्क में, हम Gemini Cloud Assist को चालू करेंगे और उसका इस्तेमाल करेंगे. Google Cloud Console में काम करते समय, Gemini Cloud Assist आपको सलाह दे सकता है. साथ ही, Google Cloud इंफ़्रास्ट्रक्चर को बनाने, कॉन्फ़िगर करने, और मॉनिटर करने में आपकी मदद कर सकता है. यह gcloud कमांड का सुझाव भी दे सकता है और Terraform स्क्रिप्ट लिख सकता है.

  1. Cloud Assist को इस्तेमाल करने के लिए, Cloud Console के यूज़र इंटरफ़ेस (यूआई) में सबसे ऊपर मौजूद खोज बॉक्स पर क्लिक करें. इसके बाद, Gemini से पूछें या Cloud Console के बारे में Gemini से पूछें को चुनें.
  2. पेज पर, 'ज़रूरी एपीआई' सेक्शन तक स्क्रोल करें. इसके बाद, Gemini for Google Cloud API को चालू करें.
  3. अगर आपको चैट इंटरफ़ेस तुरंत नहीं दिखता है, तो चैट शुरू करें पर क्लिक करें. सबसे पहले, Gemini से Cloud Shell Editor इस्तेमाल करने के कुछ फ़ायदों के बारे में पूछें. जनरेट किए गए जवाब को देखने के लिए कुछ समय निकालें.
  4. इसके बाद, Agent Builder के फ़ायदों के बारे में पूछें. साथ ही, यह भी पूछें कि इससे जनरेटिव जवाबों को बेहतर बनाने में कैसे मदद मिलती है.
  5. आखिर में, आइए दोनों के बीच तुलना करते हैं. Google Cloud Console की Gemini चैट विंडो में, यह सवाल पूछें:
    What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
    

5. खाना बनाने के बारे में सलाह देने वाले चैटबॉट के लिए, Vertex AI Agent Builder में खोज करने की सुविधा वाला ऐप्लिकेशन बनाना

हम एक वेबसाइट बना रहे हैं. इसमें खाना पकाने से जुड़ी सलाह देने वाला एक पेज होगा. इस पेज पर एक चैटबॉट होगा, जो लोगों को खाना पकाने से जुड़े सवालों के जवाब पाने में मदद करेगा. यह Gemini की मदद से काम करेगा. इसमें 70 कुकबुक के सोर्स से जानकारी ली जाएगी, जो सार्वजनिक डोमेन में उपलब्ध हैं. ये कुकबुक, Gemini के लिए भरोसेमंद सोर्स के तौर पर काम करेंगी. Gemini, सवालों के जवाब देने के लिए इनका इस्तेमाल करेगा.

  1. Vertex AI पर जाने के लिए, Cloud Console के खोज बॉक्स का इस्तेमाल करें. डैशबोर्ड में जाकर, सुझाए गए सभी एपीआई चालू करें पर क्लिक करें. इसमें कुछ मिनट लग सकते हैं. अगर आपको Vertex AI API को चालू करने के लिए कोई पॉप-अप बॉक्स मिलता है, तो कृपया उसे भी चालू करें. एपीआई चालू होने के बाद, अगले चरण पर जाएं.
  2. Agent Builder पर जाने के लिए, खोज बार का इस्तेमाल करें. इसके बाद, Continue and Activate the API पर क्लिक करें.
  3. Gemini ने हमें पहले भी सलाह दी थी कि Agent Builder में सर्च ऐप्लिकेशन बनाने के लिए, सबसे पहले भरोसेमंद डेटा सोर्स बनाना ज़रूरी है. जब कोई उपयोगकर्ता खोज करता है, तो Gemini सवाल को समझता है और यह भी समझता है कि स्मार्ट जवाब कैसे तैयार किए जाएं. हालांकि, वह जवाब में इस्तेमाल की गई जानकारी के लिए, भरोसेमंद सोर्स को देखेगा. वह अपनी जानकारी से जवाब नहीं देगा. बाईं ओर मौजूद मेन्यू में जाकर, डेटा स्टोर और डेटा स्टोर बनाएं पर जाएं.
  4. खाना पकाने से जुड़ी सलाह देने वाले पेज के लिए, हम सार्वजनिक डोमेन वाली कुकबुक का इस्तेमाल कर रहे हैं. ये कुकबुक, फ़िलहाल किसी बाहरी प्रोजेक्ट के Cloud Storage बकेट में मौजूद हैं. Cloud Storage के सोर्स टाइप को चुनें.
  5. हम जिस तरह की जानकारी इंपोर्ट कर रहे हैं उससे जुड़े डिफ़ॉल्ट विकल्पों की जांच करें, लेकिन उनमें बदलाव न करें. इंपोर्ट टाइप को फ़ोल्डर पर सेट रहने दें. इसके बाद, बकेट पाथ के लिए labs.roitraining.com/labs/old-cookbooks का इस्तेमाल करें. इसके बाद, जारी रखें पर क्लिक करें.
  6. डेटा स्टोर को नाम दें: old-cookbooks. बदलाव करें पर क्लिक करें और आईडी को old-cookbooks-id में बदलें. इसके बाद, डेटा स्टोर बनाएं.

Vertex AI Agent Builder, कई तरह के ऐप्लिकेशन के साथ काम करता है. साथ ही, डेटा स्टोर हर ऐप्लिकेशन के लिए भरोसेमंद सोर्स के तौर पर काम करता है. खोज ऐप्लिकेशन, सामान्य इस्तेमाल और खोज के लिए अच्छे होते हैं. चैट ऐप्लिकेशन, डेटाफ़्लो पर आधारित चैटबॉट/वॉइसबॉट ऐप्लिकेशन में जनरेटिव फ़्लो के लिए होते हैं. सुझाव देने वाले ऐप्लिकेशन, बेहतर सुझाव देने वाले इंजन बनाने में मदद करते हैं. साथ ही, एजेंट ऐप्लिकेशन का इस्तेमाल, जेन एआई की मदद से काम करने वाले एजेंट बनाने के लिए किया जाता है. आखिरकार, Agent शायद हमें वह सुविधा दे पाएगा जो हमें चाहिए. हालांकि, फ़िलहाल यह प्रॉडक्ट प्रीव्यू में है. इसलिए, हम Search ऐप्लिकेशन टाइप का इस्तेमाल करेंगे.

  1. बाईं ओर मौजूद मेन्यू का इस्तेमाल करके, ऐप्लिकेशन पर जाएं. इसके बाद, नया ऐप्लिकेशन बनाएं पर क्लिक करें.
  2. अपनी वेबसाइट खोजें कार्ड पर, बनाएं पर क्लिक करें. ऐप्लिकेशन का नाम डालें cookbook-search. बदलाव करें पर क्लिक करें और ऐप्लिकेशन आईडी को cookbook-search-id पर सेट करें. कंपनी को Google पर सेट करें और जारी रखें पर क्लिक करें.
  3. कुछ समय पहले बनाए गए old-cookbooks डेटा स्टोर को देखें. इसके बाद, Search App बनाएं.

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

6. Gemini Code Assist की मदद से, Colab Enterprise notebook में डेटा लोड करना और उसे साफ़ करना

Google Cloud में, Jupyter notebook का इस्तेमाल करने के दो मुख्य तरीके हैं. हम Google की नई सेवा, Colab Enterprise का इस्तेमाल करेंगे. आप में से कुछ लोग, Google के Colab प्रॉडक्ट के बारे में जानते होंगे. इसका इस्तेमाल आम तौर पर ऐसे लोग और संगठन करते हैं जो बिना किसी शुल्क के Jupyter notebook का इस्तेमाल करना चाहते हैं. Colab Enterprise, Google Cloud की एक कमर्शियल सेवा है. यह Google के अन्य क्लाउड प्रॉडक्ट के साथ पूरी तरह से इंटिग्रेट की गई है. साथ ही, यह GCP एनवायरमेंट की सुरक्षा और अनुपालन से जुड़ी सुविधाओं का पूरा फ़ायदा उठाती है.

Colab Enterprise की एक सुविधा, Google के Gemini Code Assist के साथ इंटिग्रेट करने की सुविधा है. कोड असिस्ट का इस्तेमाल कई अलग-अलग कोड एडिटर में किया जा सकता है. यह कोडिंग के दौरान, आपको सलाह देने के साथ-साथ इनलाइन सुझाव भी देता है. हम रेसिपी के डेटा को व्यवस्थित करते समय, इस जनरेटिव असिस्टेंट का इस्तेमाल करेंगे.

  1. Colab Enterprise पर जाने के लिए, खोज बार का इस्तेमाल करें. इसके बाद, नोटबुक बनाएं पर क्लिक करें. अगर आपको Colab की नई सुविधाओं को आज़माने का ऑफ़र मिलता है, तो उसे खारिज करें. नोटबुक को चलाने के लिए, कंप्यूटिंग पावर पाने के लिए, अपनी नई नोटबुक के सबसे ऊपर दाएं कोने में मौजूद, कनेक्ट करें पर क्लिक करें.कनेक्ट करें
  2. नोटबुक का नाम बदलकर Data Wrangling करने के लिए, फ़ाइल > नाम बदलें पर क्लिक करें.तीन बिंदु वाले मेन्यू में मौजूद, नाम बदलने का विकल्प
  3. नया टेक्स्ट बॉक्स बनाने के लिए, + टेक्स्ट पर क्लिक करें. इसके बाद, अप ऐरो का इस्तेमाल करके इसे पेज पर पहली सेल के तौर पर ले जाएं.+ टेक्स्ट और अप ऐरो
  4. टेक्स्ट बॉक्स में बदलाव करें और यह डालें:
    # Data Wrangling
    
    Import the Pandas library
    
  5. आपने अभी जो टेक्स्ट ब्लॉक बनाया है उसके नीचे मौजूद कोड ब्लॉक में, imp टाइप करना शुरू करें. इसके बाद, Gemini Code Assist को इंपोर्ट किए जाने वाले बाकी कोड का सुझाव देना चाहिए. यह सुझाव, ग्रे रंग में दिखेगा. सुझाव को स्वीकार करने के लिए, tab दबाएं.
    import pandas as pd
    
  6. इंपोर्ट कोड बॉक्स के नीचे, एक और टेक्स्ट बॉक्स बनाएं और उसमें यह डालें:
    Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
    
  7. कोई दूसरा कोड ब्लॉक बनाएं और उसमें बदलाव करें. फिर से df = टाइप करें और Gemini Code Assistant से जनरेट किए गए कोड की जांच करें. अगर आपको जनरेट किए गए सुझाव के ऊपर Python कीवर्ड की ऑटोकंप्लीट ड्रॉपडाउन सूची दिखती है, तो हल्के ग्रे रंग में सुझाया गया कोड देखने के लिए, Escape दबाएं. सुझाव स्वीकार करने के लिए, फिर से Tab दबाएं. अगर आपके सुझाव में head() फ़ंक्शन कॉल शामिल नहीं है, तो उसे जोड़ें.
    df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
    df.head()
    
  8. अपनी पहली कोड सेल पर क्लिक करें, जहां आपने Pandas को इंपोर्ट किया था. इसके बाद, चुनी गई सेल को चलाने के लिए, कमांड मेन्यू या कीबोर्ड का इस्तेमाल करें. कीबोर्ड पर shift+enter दबाने से, सेल चालू हो जाएगी और फ़ोकस अगली सेल पर चला जाएगा. अगर ज़रूरत होगी, तो एक नई सेल बन जाएगी. आगे बढ़ने से पहले, सेल के एक्ज़ीक्यूट होने का इंतज़ार करें.ध्यान दें: जब कोई सेल एक्ज़ीक्यूट नहीं होती है, तो आपको बाईं ओर [ ] दिखेगा. किसी सेल के एक्ज़ीक्यूट होने के दौरान, आपको एक घूमता हुआ ऐनिमेशन दिखेगा. सेल के पूरा होने के बाद, एक नंबर दिखेगा. जैसे, [13].
  9. उस सेल को एक्ज़ीक्यूट करें जो CSV फ़ाइल को DataFrame में लोड करती है. फ़ाइल लोड होने का इंतज़ार करें और डेटा की पहली पांच लाइनों की जांच करें. यह रेसिपी का डेटा है. इसे हम BigQuery में लोड करेंगे. साथ ही, इसका इस्तेमाल रेसिपी जनरेट करने वाले टूल को बेहतर बनाने के लिए करेंगे.
  10. एक नया कोड ब्लॉक बनाएं और नीचे दी गई टिप्पणी डालें. टिप्पणी टाइप करने के बाद, कोड की अगली लाइन पर जाएं. आपको df.columns सुझाव मिलेगा. इसे स्वीकार करें और फिर सेल को चलाएं.
    # List the current DataFrame column names
    
    हमने अभी दिखाया है कि Jupyter नोटबुक में Gemini Code Assist से मदद पाने के लिए, आपके पास दो विकल्प होते हैं: कोड सेल के ऊपर टेक्स्ट सेल या कोड सेल में मौजूद टिप्पणियां. Jupyter Notebook में कोड सेल के अंदर टिप्पणियां अच्छी तरह से काम करती हैं. हालाँकि, यह तरीका Google के Gemini Code Assist की सुविधा देने वाले किसी भी अन्य आईडीई में भी काम करेगा.
  11. आइए, कॉलम को थोड़ा सा व्यवस्थित करें. कॉलम Unnamed: 0 का नाम बदलकर id और link का नाम बदलकर uri करें. कोड बनाने के लिए, अपनी पसंद के प्रॉम्प्ट > कोड बनाने की तकनीकों का इस्तेमाल करें. इसके बाद, जब आपको लगे कि कोड सही है, तब सेल को चलाएं.
    # Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri'
    df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True)
    
  12. source और NER कॉलम हटाएं. इसके बाद, शुरुआती कुछ पंक्तियां देखने के लिए head() का इस्तेमाल करें. इस काम में Gemini की मदद लें. आखिरी दो लाइनें चलाएं और नतीजों की जांच करें.
    # Remove the source and NER columns
    df.drop(columns=['source', 'NER'], inplace=True)
    df.head()
    
  13. आइए, देखते हैं कि हमारे डेटासेट में कितने रिकॉर्ड हैं. इसके बाद, प्रॉम्प्ट देने की अपनी पसंद की तकनीक का इस्तेमाल करें और देखें कि क्या Gemini, कोड जनरेट करने में आपकी मदद कर सकता है.
    # Count the records in the DataFrame
    df.shape # count() will also work
    
  14. 22 लाख 30 हज़ार रिकॉर्ड, शायद इतनी रेसिपी हैं जिन्हें हम देख नहीं सकते. Agent Builder में इंडेक्स करने की प्रोसेस में बहुत समय लगता है. इसलिए, आज हम इस प्रोसेस का इस्तेमाल नहीं करेंगे. हम 1, 50,000 रेसिपी का सैंपल लेते हैं और उस पर काम करते हैं. अपने प्रॉम्प्ट > कोड के तरीके का इस्तेमाल करके, सैंपल लें और उसे dfs (s का मतलब छोटा है) नाम के नए DataFrame में सेव करें.
    # Sample out 150,000 records into a DataFrame named dfs
    dfs = df.sample(n=150000)
    
  15. रेसिपी के सोर्स डेटा को BigQuery में लोड किया जा सकता है. डेटा लोड करने से पहले, BigQuery पर जाएं और अपनी टेबल को सेव करने के लिए एक डेटासेट तैयार करें. Google Cloud Console में, खोज बॉक्स का इस्तेमाल करके BigQuery पर जाएं. BigQuery पर राइट क्लिक करके, इसे नए ब्राउज़र टैब में खोला जा सकता है.
  16. अगर यह पहले से नहीं दिख रहा है, तो Cloud Console के सबसे ऊपर दाईं ओर मौजूद Gemini के लोगो का इस्तेमाल करके, Gemini AI Chat पैनल खोलें. अगर आपसे एपीआई को फिर से चालू करने के लिए कहा जाता है, तो 'चालू करें' दबाएं या पेज को रीफ़्रेश करें. प्रॉम्प्ट चलाएं: What is a dataset used for in BigQuery? जवाब से जुड़े सवाल के बारे में जानने के बाद, How can I create a dataset named recipe_data using the Cloud Console? इन चरणों के हिसाब से नतीजों की तुलना करें.Gemini Cloud Assist खोलें
  17. BigQuery एक्सप्लोरर पैनल में, अपने प्रोजेक्ट आईडी के बगल में मौजूद तीन बिंदुओं वाले कार्रवाइयां देखें मेन्यू पर क्लिक करें. इसके बाद, डेटासेट बनाएं को चुनें.देखने की कार्रवाइयों के बारे में जानें
  18. recipe_data का डेटासेट और आईडी बताओ. लोकेशन टाइप को US पर सेट रहने दें और डेटासेट बनाएं पर क्लिक करें. अगर आपको यह गड़बड़ी मिलती है कि डेटासेट पहले से मौजूद है, तो बस आगे बढ़ें.BigQuery में डेटासेट बन जाने के बाद, आइए हम वापस अपनी नोटबुक पर जाएं और डेटा डालें.
  19. Colab Enterprise में, डेटा को व्यवस्थित करने वाली नोटबुक पर वापस जाएं. नई कोड सेल में, project_id नाम का एक वैरिएबल बनाएं और इसका इस्तेमाल अपने मौजूदा प्रोजेक्ट आईडी को सेव करने के लिए करें. इन निर्देशों में सबसे ऊपर बाईं ओर, 'लैब खत्म करें' बटन के नीचे देखें. आपको मौजूदा प्रोजेक्ट आईडी दिखेगा. अगर आपको पसंद है, तो यह Cloud Console के होम पेज पर भी उपलब्ध है. अपनी वैल्यू को project_id वैरिएबल में असाइन करें और सेल को चलाएं.
    # Create a variable to hold the current project_id
    project_id='YOUR_PROJECT_ID'
    
  20. प्रॉम्प्ट > कोड अप्रोच का इस्तेमाल करके, कोड का एक ऐसा ब्लॉक बनाएं जो DataFrame dfs को, अभी बनाए गए डेटासेट recipe_data में मौजूद recipes नाम की टेबल में डालेगा. सेल को चलाएं.
    dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
    

7. रेसिपी जनरेट करने वाले ऐप्लिकेशन के लिए, Vertex AI Agent Builder में खोज करने की सुविधा वाला ऐप्लिकेशन बनाना

बहुत बढ़िया, रेसिपी के डेटा की टेबल बन गई है. अब इसका इस्तेमाल करके, रेसिपी जनरेट करने वाले टूल के लिए भरोसेमंद डेटा सोर्स बनाते हैं. हमारा तरीका, कुकिंग के बारे में जानकारी देने वाले चैटबॉट के लिए इस्तेमाल किए गए तरीके जैसा ही होगा. हम डेटा स्टोर बनाने के लिए, Vertex AI Agent Builder का इस्तेमाल करेंगे. इसके बाद, हम उसे Search App के लिए सोर्स ऑफ़ ट्रूथ के तौर पर इस्तेमाल करेंगे.

अगर आपको Agent Builder का सर्च ऐप्लिकेशन बनाने का तरीका याद नहीं है, तो Google Cloud Console में जाकर Gemini से इसके बारे में पूछें. इसके अलावा, यहां दिया गया तरीका भी अपनाया जा सकता है.

  1. Agent Builder पर जाने के लिए, Search का इस्तेमाल करें. डेटा स्टोर खोलें और डेटा स्टोर बनाएं पर क्लिक करें. इस बार, BigQuery डेटा स्टोर का टाइप चुनें.
  2. टेबल सिलेक्शन सेल में, ब्राउज़ करें दबाएं और recipes खोजें. अपनी टेबल के बगल में मौजूद रेडियो बटन को चुनें. अगर आपको qwiklabs-gcp-... प्रोजेक्ट की अन्य रेसिपी दिखती हैं, तो पक्का करें कि आपने अपनी रेसिपी को चुना हो.ध्यान दें: अगर आपने इसके बगल में मौजूद रेडियो बटन को चुनने के बजाय recipes पर क्लिक किया, तो यह आपके ब्राउज़र में एक नया टैब खोलेगा और आपको BigQuery में टेबल की खास जानकारी वाले पेज पर ले जाएगा. ब्राउज़र टैब को बंद करें और एजेंट बिल्डर में रेडियो बटन चुनें.
  3. डिफ़ॉल्ट तौर पर सेट किए गए अन्य विकल्पों की जांच करें, लेकिन उनमें कोई बदलाव न करें. इसके बाद, जारी रखें पर क्लिक करें.
  4. स्कीमा की समीक्षा करने वाले पेज पर, शुरुआती डिफ़ॉल्ट कॉन्फ़िगरेशन की जांच करें. हालांकि, इसमें कोई बदलाव न करें. जारी रखें
  5. डेटास्टोर recipe-data को नाम दें. डेटास्टोर आईडी में बदलाव करें और उसे recipe-data-id पर सेट करें. डेटा स्टोर बनाएं.
  6. बाईं ओर मौजूद नेविगेशन मेन्यू का इस्तेमाल करके, ऐप्लिकेशन पर जाएं और नया ऐप्लिकेशन बनाएं पर क्लिक करें.
  7. अपनी वेबसाइट खोजें कार्ड पर, बनाएं पर क्लिक करें. ऐप्लिकेशन का नाम recipe-search रखें. इसके बाद, आईडी को recipe-search-id पर सेट करने के लिए, बदलाव करें पर क्लिक करें. कंपनी का नाम Google पर सेट करें और जारी रखें पर क्लिक करें.
  8. इस बार, recipe-data डेटा सोर्स देखें. ऐप्लिकेशन बनाएं.

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

  1. BigQuery पर जाने के लिए, खोज बॉक्स का इस्तेमाल करें. BigQuery Studio में सबसे ऊपर, सबसे दाईं ओर मौजूद टैब के बगल में मौजूद डाउन ऐरो पर क्लिक करें. इसके बाद, डेटा कैनवस चुनें. क्षेत्र को us-central1 पर सेट करें.डेटा कैनवस खोलना
  2. डेटा खोजें पर क्लिक करें. डेटा कैनवस के खोज बॉक्स में, recipes खोजें. इसके बाद, खोजने के लिए Enter/Return दबाएं. इसके बाद, अपनी टेबल के नाम के बगल में मौजूद, कैनवस में जोड़ें बटन पर क्लिक करें.
  3. आपकी रेसिपी टेबल का विज़ुअल प्रज़ेंटेशन, BigQuery डेटा कैनवस में लोड हो जाएगा. टेबल के स्कीमा के बारे में जाना जा सकता है. साथ ही, टेबल में मौजूद डेटा की झलक देखी जा सकती है और अन्य जानकारी देखी जा सकती है. टेबल के नीचे, क्वेरी पर क्लिक करें.
  4. कैनवस पर, BigQuery क्वेरी का सामान्य डायलॉग बॉक्स लोड होगा. इसमें एक चीज़ और जोड़ी गई है: क्वेरी विंडो के ऊपर एक टेक्स्ट बॉक्स है. इसका इस्तेमाल करके, Gemini से मदद मांगी जा सकती है. आइए, देखते हैं कि क्या हमें अपने सैंपल में केक बनाने की कुछ रेसिपी मिल सकती हैं. एसक्यूएल जनरेट करने के लिए, यह प्रॉम्प्ट चलाएं. इसके लिए, टेक्स्ट टाइप करें और Enter/Return दबाएं:
    Please select the title and ingredients for all the recipes with a title that contains the word cake.
    
  5. जनरेट किया गया एसक्यूएल देखें. जब आप संतुष्ट हो जाएं, तो क्वेरी चलाएं.
  6. बहुत बढ़िया! आगे बढ़ने से पहले, कुछ और प्रॉम्प्ट और क्वेरी आज़माएं. एक्सपेरिमेंट करते समय, कम शब्दों वाले प्रॉम्प्ट का इस्तेमाल करें. इससे आपको यह पता चलेगा कि कौनसे प्रॉम्प्ट काम करते हैं और कौनसे नहीं. उदाहरण के लिए, यह प्रॉम्प्ट:
    Do I have any chili recipes?
    
    (नई क्वेरी चलाना न भूलें) इसने मिर्च की रेसिपी की सूची दिखाई, लेकिन उसमें सामग्री शामिल नहीं की. इसके बाद, मैंने इसे इस तरह से बदला:
    Do I have any chili recipes?  Please include their title and ingredients.
    
    (हाँ, मैं प्रॉम्प्ट करते समय कृपया कहता हूँ. मेरी माँ को मुझ पर बहुत गर्व होगा.) मुझे पता चला कि मिर्च की एक रेसिपी में मशरूम शामिल हैं. मिर्च की रेसिपी में मशरूम कौन डालता है? मैंने Gemini से उन रेसिपी को हटाने के लिए कहा.
    Do I have any chili recipes?  Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
    

8. Cloud Shell Editor खोलें

  1. Cloud Shell Editor पर जाएं
  2. अगर टर्मिनल स्क्रीन पर सबसे नीचे नहीं दिखता है, तो इसे खोलें:
    • हैमबर्गर मेन्यू हैमबर्गर मेन्यू का आइकॉन पर क्लिक करें
    • टर्मिनल पर क्लिक करें
    • नया टर्मिनलCloud Shell Editor में नया टर्मिनल खोलना पर क्लिक करें
  3. टर्मिनल में, इस निर्देश का इस्तेमाल करके अपना प्रोजेक्ट सेट करें:
    • फ़ॉर्मैट:
      gcloud config set project [PROJECT_ID]
      
    • उदाहरण:
      gcloud config set project lab-project-id-example
      
    • अगर आपको अपना प्रोजेक्ट आईडी याद नहीं है, तो:
      • अपने सभी प्रोजेक्ट आईडी की सूची बनाने के लिए, यह तरीका अपनाएं:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      Cloud Shell Editor के टर्मिनल में प्रोजेक्ट आईडी सेट करना
  4. अगर अनुमति देने के लिए कहा जाए, तो जारी रखने के लिए अनुमति दें पर क्लिक करें. Cloud Shell को अनुमति देने के लिए क्लिक करें
  5. आपको यह मैसेज दिखेगा:
    Updated property [core/project].
    
    अगर आपको WARNING दिखता है और आपसे Do you want to continue (Y/N)? पूछा जाता है, तो इसका मतलब है कि आपने प्रोजेक्ट आईडी गलत डाला है. N दबाएं, Enter दबाएं, और gcloud config set project निर्देश को फिर से चलाने की कोशिश करें.

9. एपीआई चालू करें

टर्मिनल में, इन एपीआई को चालू करें:

gcloud services enable \
  compute.googleapis.com \
  sqladmin.googleapis.com \
  run.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  networkconnectivity.googleapis.com \
  servicenetworking.googleapis.com \
  cloudaicompanion.googleapis.com

अगर अनुमति देने के लिए कहा जाए, तो जारी रखने के लिए अनुमति दें पर क्लिक करें. Cloud Shell को अनुमति देने के लिए क्लिक करें

इस कमांड को पूरा होने में कुछ मिनट लग सकते हैं. हालांकि, इसके बाद आपको इस तरह का मैसेज दिखेगा:

Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.

10. Gemini की मदद से, Python और Streamlit वेब ऐप्लिकेशन का मुख्य हिस्सा तैयार करना

हमारे दोनों Vertex AI Agent Builder डेटा स्टोर इंडेक्स हो चुके हैं. साथ ही, हमारे खोज करने वाले ऐप्लिकेशन लॉन्च होने के लिए तैयार हैं. अब हम अपना वेब ऐप्लिकेशन बनाना शुरू करते हैं.

हम काम करते समय Gemini Code Assist का इस्तेमाल करेंगे. Visual Studio Code में Gemini Code Assist का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यहां दिया गया दस्तावेज़ देखें

  1. रेसिपी ऐप्लिकेशन की रिपॉज़िटरी को क्लोन करने के लिए, Cloud Shell Editor टर्मिनल में यह कमांड चलाएं.
    git clone https://github.com/haggman/recipe-app
    
  2. Cloud Shell Editor में ऐप्लिकेशन फ़ोल्डर खोलने के लिए, यह कमांड चलाएं.
    cloudshell open-workspace recipe-app/
    
  3. क्लोन किए गए फ़ोल्डर को एक्सप्लोर करने और अपने वेब ऐप्लिकेशन पर काम शुरू करने से पहले, हमें यह पक्का करना होगा कि एडिटर का Cloud Code प्लगिन, Google Cloud में लॉग इन हो और Gemini चालू हो. चलिए, अब ऐसा करते हैं. एडिटर में सबसे नीचे बाईं ओर, Cloud Code - Sign in पर क्लिक करें. अगर आपको लिंक नहीं दिखता है, तो एक मिनट इंतज़ार करें और फिर से देखें.Cloud Code - साइन इन करें
  4. टर्मिनल विंडो में एक लंबा यूआरएल दिखेगा. ब्राउज़र में यूआरएल खोलें और Cloud Code को अपने Google Cloud एनवायरमेंट का ऐक्सेस देने के लिए, दिया गया तरीका अपनाएं. आखिरी डायलॉग बॉक्स में, पुष्टि करने का कोड कॉपी करें. इसके बाद, इसे Cloud Shell Editor ब्राउज़र टैब में मौजूद, इंतज़ार कर रही टर्मिनल विंडो में वापस चिपकाएं.
  5. कुछ समय बाद, आपके एडिटर के सबसे नीचे बाईं ओर मौजूद Cloud Code का लिंक, Cloud Code - No Project में बदल जाएगा. कोई प्रोजेक्ट चुनने के लिए, नए लिंक पर क्लिक करें. निर्देश पैलेट, एडिटर के सबसे ऊपर खुलना चाहिए. कोई Google Cloud प्रोजेक्ट चुनें पर क्लिक करें और अपना प्रोजेक्ट चुनें. कुछ ही पलों में, आपके एडिटर में नीचे बाईं ओर मौजूद लिंक अपडेट हो जाएगा. इसमें आपका प्रोजेक्ट आईडी दिखेगा. इससे पता चलता है कि Cloud Code को आपके वर्किंग प्रोजेक्ट से जोड़ दिया गया है.
  6. Cloud Code को अपने प्रोजेक्ट से कनेक्ट करने के बाद, अब Gemini Code Assist को चालू किया जा सकता है. एडिटर इंटरफ़ेस में सबसे नीचे दाईं ओर, Gemini के लोगो पर क्लिक करें. Gemini Chat का पैनल, एडिटर की बाईं ओर खुलेगा. कोई Google Cloud प्रोजेक्ट चुनें पर क्लिक करें. कमांड पैलेट खुलने पर, अपना प्रोजेक्ट चुनें. अगर आपने सभी चरणों का सही तरीके से पालन किया है और Google ने कुछ भी नहीं बदला है, तो अब आपको Gemini Chat की चालू विंडो दिखनी चाहिए.Gemini की सुविधा बंद है
  7. बहुत बढ़िया! टर्मिनल, Gemini चैट, और Cloud Code कॉन्फ़िगरेशन सेट हो गए हैं. अब Explorer टैब खोलें और कुछ मिनटों तक मौजूदा प्रोजेक्ट की फ़ाइलों को एक्सप्लोर करें.एक्सप्लोरर बैज
  8. बदलाव करने के लिए, Explorer में अपनी requirements.txt फ़ाइल खोलें. Gemini चैट पैनल पर स्विच करें और पूछें:
    From the dependencies specified in the requirements.txt file, what type of application are we building?
    
  9. इसलिए, हम Python और Streamlit का इस्तेमाल करके एक इंटरैक्टिव वेब ऐप्लिकेशन बना रहे हैं. यह Vertex AI और Discovery Engine के साथ इंटरैक्ट कर रहा है. बहुत बढ़िया. फ़िलहाल, हम वेब ऐप्लिकेशन के कॉम्पोनेंट पर फ़ोकस करते हैं. Gemini के मुताबिक, Streamlit, Python में डेटा पर आधारित वेब ऐप्लिकेशन बनाने के लिए एक फ़्रेमवर्क है. अब पूछें:
    Does the current project's folder structure seem appropriate for a Streamlit app?
    
    इस तरह के सवालों के जवाब देने में Gemini को अक्सर समस्या होती है. Gemini, एडिटर में फ़िलहाल खुली हुई फ़ाइल को ऐक्सेस कर सकता है. हालांकि, यह पूरे प्रोजेक्ट को नहीं देख सकता. यह निर्देश देकर देखें:
    Given the below, does the current project's file and folder structure seem appropriate for a Streamlit app?
    - build.sh
    - Home.py
    - requirements.txt
    - pages
    -- Cooking_Advice.py
    -- Recipe_Search.py
    
    क्या आपको बेहतर जवाब चाहिए?
  10. आइए, Streamlit के बारे में कुछ और जानकारी पाएं:
    What can you tell me about Streamlit?
    
    बहुत बढ़िया, Gemini ने हमें इस बारे में अच्छी जानकारी दी है. इसमें फ़ायदे और नुकसान भी शामिल हैं.
  11. अगर आपको नुकसान के बारे में जानना है, तो यह सवाल पूछें:
    What are the major downsides or shortcomings?
    
    ध्यान दें, हमें "Streamlit के बारे में" नहीं कहना पड़ा, क्योंकि Gemini Chat बातचीत वाली सुविधा (कई बार बातचीत) है. Gemini को पता है कि हम किस बारे में बात कर रहे हैं, क्योंकि हम एक चैट सेशन में हैं. अगर आपको किसी भी समय Gemini की चैट का पूरा इतिहास मिटाना है, तो Gemini की कोड चैट विंडो में सबसे ऊपर मौजूद ट्रैश कैन आइकॉन का इस्तेमाल करें.

11. वेब ऐप्लिकेशन को Cloud Run पर डिप्लॉय करना

बहुत बढ़िया, हमारे पास मुख्य ऐप्लिकेशन का स्ट्रक्चर तैयार है. हालांकि, क्या यह काम करेगा? सबसे अच्छा यह होगा कि हम इसे Google Cloud में कहां होस्ट करें?

  1. Gemini की चैट विंडो में, यह सवाल पूछें:
    If I containerize this application, what compute technologies in Google Cloud would be best for hosting it?
    
  2. ध्यान रखें कि अगर आपने पहले से अपने आईडीई में काम नहीं किया है, तो Google Cloud Assist से भी मदद मांगी जा सकती है. Google Cloud Console खोलें. इसके बाद, Gemini Cloud Assist खोलें और यह सवाल पूछें:
    If I have a containerized web application, where would be the best place to run it in Google Cloud?
    
    क्या दोनों जवाब एक जैसे थे? क्या आप किसी भी सलाह से सहमत/असहमत हैं? ध्यान रखें कि Gemini एक जनरेटिव एआई असिस्टेंट है. यह इंसान की तरह काम करता है, लेकिन यह ज़रूरी नहीं है कि आप इसकी हर बात से सहमत हों. हालांकि, Google Cloud और कोड एडिटर में काम करते समय, इस हेल्पर को हमेशा अपने साथ रखने से, आपको ज़्यादा बेहतर तरीके से काम करने में मदद मिल सकती है.
  3. स्टेटलेस और कम समय तक चलने वाले कंटेनर वाले वेब ऐप्लिकेशन के लिए, Cloud Run एक बेहतरीन विकल्प होगा. अपने कोड एडिटर की Gemini चैट विंडो में, यह प्रॉम्प्ट आज़माएँ:
    What steps would be required to run this application in Cloud Run?
    
  4. ऐसा लगता है कि हमें सबसे पहले Dockerfile बनाना होगा. Editor का इस्तेमाल करके, अपने प्रोजेक्ट फ़ोल्डर की रूट डायरेक्ट्री में Dockerfile नाम की फ़ाइल बनाएं. पक्का करें कि आपने इसे गलती से pages फ़ोल्डर में न रखा हो. बदलाव करने के लिए, फ़ाइल खोलें.
  5. आइए, Dockerfile बनाने के लिए Gemini के साइड चैट पैनल का इस्तेमाल करें. नीचे दिए गए प्रॉम्प्ट की तरह कोई प्रॉम्प्ट इस्तेमाल करें. जब चैट में नतीजे दिखते हैं, तब सुझाए गए Dockerfile के ठीक ऊपर मौजूद, कॉपी आइकॉन के बगल में मौजूद + का इस्तेमाल करके, सुझाए गए कोड को Dockerfile में डालें.
    Create a Dockerfile for the application in the current folder. The dependencies are defined in requirements.txt and I want you to use the Python 3 slim bookworm base image.
    
    Gemini, एक ही प्रॉम्प्ट के लिए हमेशा एक जैसा जवाब नहीं देता. पहली बार जब मैंने Gemini से Dockerfile के बारे में पूछा, तो मुझे वही फ़ाइल मिली जिसका इस्तेमाल करने का सुझाव मैं आपको देने जा रहा हूं. मुझे अभी यह सुझाव मिला है:
    # Base image
    FROM python:3-bookworm-slim
    
    # Set working directory
    WORKDIR /app
    
    # Install dependencies
    RUN apt-get update && apt-get install -y \
        build-essential \
        libpq-dev \
        gcc \
        python3-dev \
        && rm -rf /var/lib/apt/lists/*
    
    # Install pip and virtualenv
    RUN pip install --upgrade pip virtualenv
    
    # Create virtual environment
    RUN python3 -m venv venv
    
    # Activate virtual environment
    WORKDIR /app/venv/bin
    RUN . activate
    
    # Install Streamlit and libraries from requirements.txt
    RUN pip install -r requirements.txt
    
    # Copy application files
    COPY . /app
    
    # Expose port 8501 for Streamlit
    EXPOSE 8501
    
    # Start Streamlit app
    CMD ["streamlit", "run", "main.py"]
    
    यह एक बेहतरीन Dockerfile है. हम इसे थोड़ा आसान बना देंगे. हमें apt-get सेक्शन की ज़रूरत नहीं है, क्योंकि Python के लिए ज़रूरी सभी चीज़ें हमारी बेस इमेज में पहले से मौजूद हैं. साथ ही, Python कंटेनर में वर्चुअल एनवायरमेंट का इस्तेमाल करने से जगह बर्बाद होती है. इसलिए, मैं इसे हटा दूंगा. expose कमांड का इस्तेमाल करना ज़रूरी नहीं है, लेकिन इसका इस्तेमाल किया जा सकता है. साथ ही, यह main.py को शुरू करने की कोशिश कर रहा है, जो मेरे पास नहीं है.
  6. recipe-app फ़ोल्डर में, Dockerfile नाम की एक फ़ाइल बनाएं और इसमें यह कॉन्टेंट चिपकाएं:
    FROM python:3.11-slim-bookworm
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir --upgrade pip && \
        pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["streamlit", "run", "Home.py"]
    
  7. Gemini को चैट विंडो के ज़रिए इस्तेमाल किया जा सकता है. हालांकि, यह सीधे तौर पर आपकी कोड फ़ाइल में भी काम कर सकता है. इसके लिए, टिप्पणियों का इस्तेमाल किया जाता है. जैसे, हमने डेटा रैंगलिंग नोटबुक में किया था. इसे Windows पर Control+i या Mac पर Command+i का इस्तेमाल करके भी चालू किया जा सकता है. Dockerfile में कहीं भी क्लिक करें और Command+i / Control+i कमांड का इस्तेमाल करके Gemini को चालू करें.
  8. प्रॉम्प्ट में यह डालें. बदलाव की समीक्षा करें और स्वीकार करें.
    Please comment the current file.
    
    यह कितना शानदार है?! आपको कितनी बार किसी दूसरे व्यक्ति के कोड पर काम करना पड़ा है. हालांकि, इससे पहले आपको बिना टिप्पणी वाले कोड को समझने में समय बर्बाद करना पड़ा. Gemini आपकी मदद के लिए तैयार है!
  9. अब Gemini से पूछें कि Cloud Run का इस्तेमाल करके, मौजूदा फ़ोल्डर में मौजूद Dockerfile से recipe-web-app नाम की नई इमेज को कैसे बनाया और डिप्लॉय किया जा सकता है.
    How could I use gcloud to build a new Cloud Run service named recipe-web-app from the current directory?
    
  10. आइए, अपना ऐप्लिकेशन बनाएं और उसे डिप्लॉय करें. टर्मिनल विंडो में gcloud run deploy कमांड चलाएं
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    
    अगर आपको Artifact Registry में डेटाबेस बनाने के लिए कहा जाता है, तो enter/return दबाएं
    Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository
    named cloud-run-source-deploy in region us-central1 will be created.
    
    Do you want to continue (Y/n)?
    
  11. अगर आपको बिल्ड प्रोसेस देखनी है, तो सबसे पहले Artifact Registry docker repo को बिल्ड किया जाएगा. इसके बाद, यह Cloud Build का इस्तेमाल करके, लोकल फ़ोल्डर में मौजूद Dockerfile से कंटेनर इमेज बनाता है. आखिर में, डॉकर इमेज को नई Cloud Run सेवा में डिप्लॉय किया जाएगा. स्क्रिप्ट के आखिर में, आपको Cloud Run का टेस्ट यूआरएल मिलेगा. इसका इस्तेमाल किया जा सकता है.

नतीजे में मिले लिंक को अपने ब्राउज़र के नए टैब में खोलें. कुछ समय निकालकर, ऐप्लिकेशन के स्ट्रक्चर और पेजों को एक्सप्लोर करें. बहुत बढ़िया, अब हमें जनरेटिव एआई की सुविधा को हुक करना होगा.

12. कुकिंग से जुड़ी सलाह देने वाले पेज को, कुकबुक खोजने वाले एजेंट बिल्डर ऐप्लिकेशन से कनेक्ट करो

हमारे पास वेब ऐप्लिकेशन का फ़्रेमवर्क है. हालांकि, हमें दो वर्क पेजों को Vertex AI Agent Builder के दो Search ऐप्लिकेशन से कनेक्ट करना है. आइए, खाना पकाने से जुड़ी सलाह से शुरू करते हैं.

  1. Cloud Shell Editor टैब को खुला रखें. Google Cloud Console में, Vertex AI में Chat पर जाने के लिए, खोज बार का इस्तेमाल करें.
  2. सेटिंग पेज के दाईं ओर मौजूद पैनल में, मॉडल को gemini-1.5-flash-002 पर सेट करें. आउटपुट टोकन की सीमा को ज़्यादा से ज़्यादा तक स्लाइड करें, ताकि मॉडल ज़रूरत पड़ने पर लंबे जवाब दे सके. सुरक्षा फ़िल्टर की सेटिंग खोलें. नफ़रत फैलाने वाली भाषा, साफ़ तौर पर सेक्शुअल ऐक्ट दिखाने वाला कॉन्टेंट, और उत्पीड़न वाले कॉन्टेंट के लिए, कुछ कॉन्टेंट ब्लॉक करें को चुनें. खतरनाक कॉन्टेंट के लिए, कुछ ब्लॉक करें को चुनें. इसके बाद, सेव करें पर क्लिक करें. हम खतरनाक कॉन्टेंट के लिए, स्कोर को थोड़ा कम कर रहे हैं. ऐसा इसलिए, क्योंकि चाकू और काटने के बारे में बात करने को Gemini, हिंसा के तौर पर गलत तरीके से समझ सकता है.
  3. ग्राउंडिंग की सुविधा चालू करने के लिए, टॉगल बटन को दाईं ओर स्लाइड करें. इसके बाद, पसंद के मुताबिक बनाएं पर क्लिक करें. भरोसेमंद स्रोतों से जानकारी लेने के लिए, Vertex AI Search को सोर्स के तौर पर सेट करें. साथ ही, डेटास्टोर के पाथ के लिए इसका इस्तेमाल करें. YOUR_PROJECT_ID को बदलकर, इन निर्देशों में 'लैब खत्म करें' बटन के पास मौजूद प्रोजेक्ट आईडी डालें. इसके बाद, ग्राउंडिंग की सेटिंग सेव करें
    projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
    
    ध्यान दें: अगर आपको कोई गड़बड़ी मिलती है, तो हो सकता है कि आपने प्रोजेक्ट आईडी को अपने असली प्रोजेक्ट आईडी में न बदला हो. इसके अलावा, ऐसा भी हो सकता है कि आपने उस चरण को छोड़ दिया हो जिसमें पुराने कुकबुक के Agent Builder डेटा स्टोर आईडी को बदला गया था. Agent Builder > Data Stores > old-cookbooks में जाकर, इसका डेटा स्टोर आईडी देखें.
  4. कुछ चैट मैसेज भेजकर देखें. शायद नीचे दिए गए तरीके से शुरुआत करें. अगर आपको पसंद आए, तो कुछ और भी आज़माकर देखें.
    How can I tell if a tomato is ripe?
    
  5. मॉडल काम कर रहा है. अब कोड के साथ एक्सपेरिमेंट करते हैं. बातचीत मिटाएं पर क्लिक करें, ताकि हमारी बातचीत कोड का हिस्सा न बने. इसके बाद, कोड पाएं पर क्लिक करें.बातचीत मिटाएं और कोड पाएं
  6. कोड विंडो में सबसे ऊपर, Open Notebook दबाएं, ताकि हम Colab Enterprise में कोड को आज़मा सकें और उसे बेहतर बना सकें. इसके बाद, हम इसे अपने ऐप्लिकेशन में इंटिग्रेट कर सकें.
  7. कोड को समझने के लिए कुछ समय निकालें. आइए, इसमें कुछ बदलाव करके इसे अपनी ज़रूरत के हिसाब से बनाते हैं. शुरू करने से पहले, पहली कोड सेल चलाकर कंप्यूट से कनेक्ट करें और AI Platform SDK इंस्टॉल करें. ब्लॉक के चलने के बाद, आपको सेशन फिर से शुरू करने के लिए कहा जाएगा. आगे बढ़ें और ऐसा करें.
  8. उस कोड पर जाएं जिसे हमने Vertex AI Studio से निकाला है. multiturn_generate_content तरीके का नाम बदलकर start_chat_session कर दें.
  9. स्क्रोल करके, model = GenerativeModel( वाले तरीके को कॉल करने पर जाएं. मौजूदा कोड में generation_config और safety_settings को तय किया गया है, लेकिन असल में उनका इस्तेमाल नहीं किया गया है. GenerativeModel को इस तरह से बनाओ कि वह इस तरह दिखे:
    model = GenerativeModel(
        "gemini-1.5-flash-002",
        tools=tools,
        generation_config=generation_config,
        safety_settings=safety_settings,
    )
    
  10. आखिर में, chat = model.start_chat() के ठीक नीचे, तरीके में एक आखिरी लाइन जोड़ें, ताकि फ़ंक्शन chat ऑब्जेक्ट को वापस कर सके. फ़ंक्शन पूरा होने के बाद, ऐसा दिखना चाहिए.ध्यान दें: इस कोड को अपनी नोटबुक में कॉपी न करें. यह सिर्फ़ यह देखने के लिए है कि आपकी सेवाओं की मदद से सही वेबसाइटें बनाई जा रही हैं या नहीं.
    def start_chat_session():
        vertexai.init(project="qwiklabs-gcp-02-9a7298ceaaec", location="us-central1")
        tools = [
            Tool.from_retrieval(
                retrieval=grounding.Retrieval(
                    source=grounding.VertexAISearch(datastore="projects/qwiklabs-gcp-02-9a7298ceaaec/locations/global/collections/default_collection/dataStores/old-cookbooks-id"),
                )
            ),
        ]
        model = GenerativeModel(
            "gemini-1.5-flash-002",
            tools=tools,
            generation_config=generation_config,
            safety_settings=safety_settings,
        )
        chat = model.start_chat()
        return chat
    
  11. कोड सेल में सबसे नीचे तक स्क्रोल करें. इसके बाद, पुरानी फ़ंक्शन को कॉल करने वाली आखिरी लाइन को बदलें, ताकि वह नए फ़ंक्शन के नाम को कॉल करे और लौटाए गए ऑब्जेक्ट को वैरिएबल chat में सेव करे. बदलाव करने के बाद, सेल को चलाएं.
    chat = start_chat_session()
    
  12. नई कोड सेल बनाएं और उसमें # Use chat to invoke Gemini and print out the response टिप्पणी जोड़ें. अगली लाइन पर जाएं और resp टाइप करें. Gemini आपके लिए ब्लॉक को अपने-आप पूरा कर देगा. प्रॉम्प्ट को How can I tell if a tomato is ripe? पर अपडेट करो. सेल को चलाना
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response)
    
  13. यह जवाब ठीक है, लेकिन हमें नेस्ट किया गया text फ़ील्ड चाहिए. सिर्फ़ उस सेक्शन को प्रिंट करने के लिए, कोडब्लॉक में इस तरह बदलाव करें:
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response.candidates[0].content.parts[0].text)
    
  14. बहुत बढ़िया, अब हमारे पास काम करने वाला चैट कोड है. इसे अपने वेब ऐप्लिकेशन में इंटिग्रेट करते हैं. start_chat_session फ़ंक्शन बनाने वाले कोड सेल का पूरा कॉन्टेंट कॉपी करें. हमें टेस्ट सेल की ज़रूरत नहीं होगी. सेल पर क्लिक करके, सबसे ऊपर दाएं कोने में मौजूद तीन बिंदु वाले मेन्यू पर क्लिक करें और वहां से कॉपी करेंसेल कॉपी करें
  15. Cloud Shell Editor टैब पर जाएं और बदलाव करने के लिए pages\Cooking_Advice.py खोलें.
  16. टिप्पणी ढूंढें:
    #
    # Add the code you copied from your notebook below this message
    #
    
  17. कॉपी किए गए कोड को, Add the code टिप्पणी के ठीक नीचे चिपकाएं. बहुत बढ़िया, अब हमारे पास वह सेक्शन है जो Gemini को कॉल करके, चैट इंजन को चालू करता है. अब इसे Streamlit में इंटिग्रेट करते हैं.
  18. टिप्पणी वाले कोड का वह सेक्शन ढूंढें जो टिप्पणी के ठीक नीचे मौजूद हो:
    #
    # Here's the code to setup your session variables
    # Uncomment this block when instructed
    #
    
  19. कोड के इस सेक्शन (अगले Setup done, let's build the page UI सेक्शन तक) से टिप्पणी हटाएं और इसे एक्सप्लोर करें. यह कुकी, चैट और इतिहास के सेशन वैरिएबल बनाती है या उन्हें वापस लाती है.
  20. इसके बाद, हमें यूज़र इंटरफ़ेस (यूआई) में इतिहास और चैट की सुविधा को इंटिग्रेट करना होगा. कोड में तब तक स्क्रोल करें, जब तक आपको नीचे दी गई टिप्पणी न मिल जाए.
    #
    # Here's the code to create the chat interface
    # Uncomment the below code when instructed
    #
    
  21. कमेंट के नीचे दिए गए बाकी कोड से कमेंट हटाएं और उसे एक्सप्लोर करें. अगर आपको पसंद है, तो उसे हाइलाइट करें और Gemini से उसकी फ़ंक्शनैलिटी के बारे में जानकारी पाएं.
  22. बहुत बढ़िया, अब ऐप्लिकेशन बनाएं और उसे डिप्लॉय करें. यूआरएल वापस आने पर, ऐप्लिकेशन लॉन्च करें और कुकिंग एडवाइज़र पेज को आज़माएं. ऐसा हो सकता है कि आपको पके हुए टमाटर के बारे में जानकारी चाहिए हो या बॉट को ब्रसल स्प्राउट बनाने का कोई अच्छा तरीका पता हो.
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    

यह कितना शानदार है! खाना बनाने के लिए आपका निजी एआई सलाहकार :-)

13. (ज़रूरी नहीं) रेसिपी खोजने वाले पेज को, रेसिपी खोजने वाले एजेंट बिल्डर ऐप्लिकेशन से कनेक्ट करें

हमने कुकिंग के बारे में सलाह देने वाले पेज को उसके भरोसेमंद सोर्स से कनेक्ट करने के लिए, सीधे तौर पर Gemini API का इस्तेमाल किया. रेसिपी खोजने की सुविधा के लिए, सीधे Vertex AI Agent Builder के खोज ऐप्लिकेशन से कनेक्ट करें.

  1. Cloud Shell Editor में, बदलाव करने के लिए pages/Recipe_Search.py पेज खोलें. पेज के स्ट्रक्चर की जांच करें.
  2. फ़ाइल में सबसे ऊपर, अपना प्रोजेक्ट आईडी सेट करें.
  3. search_sample फ़ंक्शन की जांच करें. यह कोड, Discovery Engine के दस्तावेज़ से लिया गया है. इसे यहां देखा जा सकता है. इस नोटबुक में, काम करने वाली कॉपी यहां देखी जा सकती है.मैंने सिर्फ़ यह बदलाव किया है कि नतीजे दिखाने के बजाय, response.results दिखाया जाए. इसके बिना, रिटर्न टाइप एक ऐसा ऑब्जेक्ट होता है जिसे नतीजों को पेज के हिसाब से दिखाने के लिए डिज़ाइन किया गया है. हालांकि, हमें अपने बुनियादी ऐप्लिकेशन के लिए इसकी ज़रूरत नहीं है.
  4. फ़ाइल के सबसे आखिर तक स्क्रोल करें और Here are the first 5 recipes I found के नीचे मौजूद पूरे सेक्शन से टिप्पणी हटाएं.
  5. आपने जिस पूरे सेक्शन से टिप्पणी हटाई है उसे हाइलाइट करें. इसके बाद, Gemini Code chat खोलें. Explain the highlighted code से पूछें. अगर आपने कुछ भी नहीं चुना है, तो Gemini पूरी फ़ाइल के बारे में जानकारी दे सकता है. किसी सेक्शन को हाइलाइट करके, Gemini से उसे समझाने, उस पर टिप्पणी करने या उसे बेहतर बनाने के लिए कहें. Gemini ऐसा करेगा. कुछ समय निकालकर, जवाब को पढ़ें. Colab Enterprise notebook का इस्तेमाल करके, Gemini API को अपने ऐप्लिकेशन में इंटिग्रेट करने से पहले, उन्हें एक्सप्लोर किया जा सकता है. यह खास तौर पर, कुछ नए एपीआई के बारे में जानने में मददगार होता है. ऐसा हो सकता है कि इनके बारे में पूरी जानकारी उपलब्ध न हो.
  6. एडिटर टर्मिनल विंडो में, फ़ाइनल ऐप्लिकेशन को डिप्लॉय करने के लिए build.sh चलाएं. अगले चरण पर जाने से पहले, नए वर्शन के डिप्लॉय होने तक इंतज़ार करें.

14. (ज़रूरी नहीं) फ़ाइनल आवेदन देखें

कुछ समय निकालकर, फ़ाइनल ऐप्लिकेशन को एक्सप्लोर करें.

  1. Google Cloud Console में, Cloud Run पर जाने के लिए खोज बार का इस्तेमाल करें. इसके बाद, recipe-web-app पर क्लिक करें.
  2. ऐप्लिकेशन टेस्ट यूआरएल (सबसे ऊपर) ढूंढें और उसे ब्राउज़र के नए टैब में खोलें.
  3. ऐप्लिकेशन का होम पेज दिखना चाहिए. Streamlit की ओर से उपलब्ध कराए गए बुनियादी लेआउट और नेविगेशन पर ध्यान दें. इसमें pages फ़ोल्डर की Python फ़ाइलें, नेविगेशन के विकल्पों के तौर पर दिखती हैं. साथ ही, Home.py को होम पेज के तौर पर लोड किया जाता है. खाना पकाने से जुड़ी सलाह पेज पर जाएं.
  4. कुछ ही देर में चैट इंटरफ़ेस दिखने लगेगा. Streamlit की ओर से उपलब्ध कराया गया कोर लेआउट देखें.
  5. खाना पकाने से जुड़े कुछ सवाल पूछकर देखें और देखें कि बॉट कैसे काम करता है. जैसे:
    Do you have any advice for preparing broccoli?
    
    How about a classic chicken soup recipe?
    
    Tell me about meringue.
    
  6. अब हम एक या दो रेसिपी ढूंढते हैं. रेसिपी खोजने वाले पेज पर जाएं और कुछ खोजें. जैसे:
    Chili con carne
    
    Chili, corn, rice
    
    Lemon Meringue Pie
    
    A dessert containing strawberries
    

15. बधाई हो!

आपने Vertex AI Agent Builder के ऐप्लिकेशन का इस्तेमाल करके कोई ऐप्लिकेशन बनाया हो. इस दौरान, आपने Gemini Cloud Assist, Gemini Code Assist, और BigQuery के डेटा कैनवस की नैचुरल लैंग्वेज से एसक्यूएल जनरेट करने की सुविधाओं के बारे में जाना. बहुत बढ़िया!

व्यवस्थित करें

Cloud SQL का कोई मुफ़्त टियर नहीं है. इसका इस्तेमाल जारी रखने पर, आपसे शुल्क लिया जाएगा. अतिरिक्त शुल्क से बचने के लिए, अपना Cloud प्रोजेक्ट मिटाया जा सकता है.

Cloud Run, सेवा का इस्तेमाल न किए जाने पर कोई शुल्क नहीं लेता. हालांकि, Artifact Registry में कंटेनर इमेज सेव करने के लिए आपसे शुल्क लिया जा सकता है. Cloud प्रोजेक्ट मिटाने पर, उस प्रोजेक्ट में इस्तेमाल किए गए सभी संसाधनों के लिए बिलिंग बंद हो जाती है.

अगर आपको प्रोजेक्ट मिटाना है, तो यह तरीका अपनाएं:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

आपके पास, Cloud Shell डिस्क से ग़ैर-ज़रूरी संसाधन मिटाने का विकल्प भी होता है. आप:

  1. कोड लैब प्रोजेक्ट की डायरेक्ट्री मिटाएं:
    rm -rf ~/task-app
    
  2. चेतावनी! इस कार्रवाई को पहले जैसा नहीं किया जा सकता! अगर आपको Cloud Shell पर मौजूद सभी फ़ाइलें मिटाकर जगह खाली करनी है, तो अपनी पूरी होम डायरेक्ट्री मिटाएं. ध्यान रखें कि आपको जो भी डेटा रखना है वह किसी दूसरी जगह पर सेव हो.
    sudo rm -rf $HOME