PaLM Vertex AI API और Google Cloud Storage का इस्तेमाल करके, कॉन्टेंट की खास जानकारी देने के लिए Cloud Function

1. परिचय

इस कोडलैब में, Google Cloud Storage में अपलोड किए गए कॉन्टेंट की खास जानकारी जनरेट करने का तरीका बताया गया है. इसके लिए, Python में क्लाउड फ़ंक्शन के तौर पर, टेक्स्ट जनरेट करने के लिए Vertex AI लार्ज लैंग्वेज मॉडल ( text-bison) का इस्तेमाल किया जाता है. इस्तेमाल की गई सेवाओं की सूची यहां दी गई है:

  • Vertex AI PaLM API: यह एक लार्ज लैंग्वेज मॉडल (एलएलएम) एपीआई है. इससे Google के एआई के PaLM Text Bison मॉडल का ऐक्सेस मिलता है.
  • Cloud Functions: यह सर्वरलेस प्लैटफ़ॉर्म है. इसकी मदद से, सर्वर को मैनेज किए बिना फ़ंक्शन चलाए जा सकते हैं.
  • Cloud Storage: यह बिना स्ट्रक्चर वाले डेटा को सेव करने के लिए मैनेज की जाने वाली सेवा है.
  • Cloud Logging: यह पूरी तरह से मैनेज की गई सेवा है. इसकी मदद से, लॉगिंग डेटा को सेव किया जा सकता है, खोजा जा सकता है, उसका विश्लेषण किया जा सकता है, उसे मॉनिटर किया जा सकता है, और उससे जुड़ी सूचनाएं पाई जा सकती हैं.

आपको क्या बनाना है

आपको एक ऐसा ऐप्लिकेशन बनाना होगा जिसे Python Cloud फ़ंक्शन के तौर पर डिप्लॉय किया गया हो. यह ऐप्लिकेशन, Palm API का इस्तेमाल करके टेक्स्ट की खास जानकारी देगा.

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

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट

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

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.
  3. पक्का करें कि सभी ज़रूरी एपीआई (Cloud Storage API, Vertex AI API, Cloud Function API, और Cloud Logging) चालू हों
  4. आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
  5. Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद, Cloud Shell चालू करें पर क्लिक करें:

51622c00acec2fa.png

अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:

gcloud config set project <YOUR_PROJECT_ID>
  1. पक्का करें कि सभी ज़रूरी एपीआई चालू हों. इसके लिए, Cloud Shell टर्मिनल में यह कमांड चलाएं:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Cloud Shell टर्मिनल में यह कमांड चलाकर, REGION और PROJECT_ID के लिए एनवायरमेंट वैरिएबल बनाएं:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Vertex AI API को चालू करने के लिए Cloud फ़ंक्शन

हम एक Python Cloud फ़ंक्शन बनाएंगे और इस फ़ंक्शन में Vertex AI API को चालू करेंगे.

नया सेवा खाता बनाना

Cloud Shell टर्मिनल में यह कमांड चलाकर, नया सेवा खाता बनाएं.

gcloud iam service-accounts create vertex-service-acc

अपने प्रोजेक्ट और संसाधनों का ऐक्सेस देने के लिए, सेवा खाते को कोई भूमिका असाइन करें.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

अपने Google खाते को ऐसी भूमिका असाइन करने के लिए नीचे दिए गए निर्देश का पालन करें जिससे आपको सेवा खाते की भूमिकाओं का इस्तेमाल करने और सेवा खाते को अन्य संसाधनों से जोड़ने की अनुमति मिले. USER_EMAIL की जगह अपने Google खाते का ईमेल आईडी डालें.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Python फ़ंक्शन बनाना

टेक्स्ट के लिए PaLM API, उन टास्क के लिए सबसे सही है जिन्हें एक एपीआई रिस्पॉन्स से पूरा किया जा सकता है. इसके लिए, लगातार बातचीत करने की ज़रूरत नहीं होती. अब इसके लिए, Cloud Function बनाते हैं.

रिपॉज़िटरी को क्लोन करने और प्रोजेक्ट पर जाने के लिए, Cloud Shell में ये कमांड चलाएं. इसके लिए, पिछले सेक्शन में खोले गए टर्मिनल का ही इस्तेमाल करें:

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

इस प्रोजेक्ट में, हमें जिस फ़ोल्डर से मतलब है वह यह है: summarization-gcs-cloudfunction.

टर्मिनल से Cloud Shell Editor खोलें. इसके बाद, उस प्रोजेक्ट फ़ोल्डर का कॉन्टेंट देखें जिसे अभी-अभी github से आपकी Cloud Shell मशीन पर क्लोन किया गया है.

इस फ़ोल्डर में दो फ़ाइलें हैं:

  1. main.py Python फ़ाइल, एक सामान्य एचटीटीपी क्लाउड फ़ंक्शन को तय करती है. यह फ़ंक्शन, Vertex AI के टेक्स्ट जनरेशन मॉडल का इस्तेमाल करके, टेक्स्ट इनपुट की छोटी खास जानकारी जनरेट करता है. यह फ़ंक्शन, टेक्स्ट को पैरामीटर के तौर पर लेता है और इनपुट की खास जानकारी दिखाता है. यह फ़ंक्शन, जनरेशन की प्रोसेस को कंट्रोल करने के लिए कई तरह के पैरामीटर का इस्तेमाल करता है. जैसे, जनरेट किए गए टेक्स्ट में क्रिएटिविटी, विविधता, और धाराप्रवाह भाषा का इस्तेमाल. एचटीटीपी क्लाउड फ़ंक्शन, अनुरोध ऑब्जेक्ट को स्वीकार करता है और मॉडल की खास जानकारी को रिस्पॉन्स के तौर पर दिखाता है.
  2. requirements.txt फ़ाइल में पैकेज की डिपेंडेंसी मौजूद हैं:
  • functions-framework==3.: इससे यह पक्का होता है कि फ़ंक्शन, Functions Framework की नई सुविधाओं और गड़बड़ियों को ठीक करने वाले अपडेट का इस्तेमाल करता है.
  • google-cloud-aiplatform: Vertex AI Text Generation Model का इस्तेमाल करने के लिए ज़रूरी है.
  • google-cloud-storage: Google Cloud Storage में स्टोरेज बकेट बनाने के लिए ज़रूरी है.
  • google-cloud-logging: लॉग जनरेट करने के लिए ज़रूरी है.

5. फ़ंक्शन डिप्लॉय करना

  1. दो Cloud Storage बकेट बनाएं:
  • पहला बकेट: खास जानकारी जनरेट करने के लिए, फ़ाइलों को $BUCKET_NAME बकेट में अपलोड किया जाएगा. अपने बकेट का नाम सेव करने के लिए, एनवायरमेंट वैरिएबल बनाएं. इसके लिए, यह तरीका अपनाएं:
export BUCKET_NAME='Your Bucket Name'
  • दूसरी बकेट: $BUCKET_NAME-summaries बकेट का इस्तेमाल, खास जानकारी वाली फ़ाइल को सेव करने के लिए किया जाएगा.
  • हम बकेट बनाने के लिए, gsutil कमांड का इस्तेमाल करेंगे:
  • gsutil एक Python ऐप्लिकेशन है. इसकी मदद से, कमांड लाइन से Cloud Storage को ऐक्सेस किया जा सकता है. gsutil का इस्तेमाल करके, बकेट और ऑब्जेक्ट मैनेजमेंट से जुड़े कई टास्क किए जा सकते हैं.
  • mb का मतलब "Make Bucket" है
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. अब हम फ़ंक्शन को डिप्लॉय करने के लिए तैयार हैं. हालांकि, इससे पहले पक्का करें कि Cloud Storage बकेट के सेवा खाते के पास Pub/Sub पब्लिशर की भूमिका हो.
  2. Google Cloud Storage पर जाएं. इसके बाद, बाईं ओर मौजूद पैनल में, "सेटिंग" पर क्लिक करें.

8ce34eb05153abf2.png

  1. सेटिंग से "सेवा खाता" कॉपी करें और इसे लिख लें.
  2. Google Cloud Console के नेविगेशन मेन्यू में जाकर, IAM और एडमिन खोलें.

c5a7103e90689684.png

  1. अनुमतियां टैब पर, ऐक्सेस दें पर क्लिक करें. इसके बाद, मुख्य खाते वाले नए सेक्शन में, नोट किया गया सेवा खाता आईडी डालें. भूमिका के तौर पर "Pub/Sub पब्लिशर" चुनें और सेव करें पर क्लिक करें.

11c2df774fa740a9.png

  1. इस सोर्स को Cloud Functions पर डिप्लॉय करें. Cloud Shell टर्मिनल में यह कमांड चलाएं:
  2. पक्का करें कि आप इस प्रोजेक्ट में summarization-gcs-cloudfunction फ़ोल्डर में हों.
  3. यह कमांड चलाएं:
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Google Cloud Console में, Cloud Functions पर जाएं::

इससे, हमें अभी-अभी बनाया गया vertex-ai-function Cloud Function और उसका सार्वजनिक यूआरएल दिखेगा. हम इस फ़ंक्शन का इस्तेमाल, GCS ट्रिगर बनाने के लिए करेंगे.

6. फ़ंक्शन को कॉल करना

जब $BUCKET_NAME बकेट में कोई फ़ाइल अपलोड की जाती है, तब GCS ट्रिगर फ़ंक्शन को चालू करता है. $BUCKET_NAME"-summaries बकेट में, उसी नाम की खास जानकारी वाली फ़ाइल शामिल है.

शुरू करने से पहले, summarization-gcs-cloudfunction फ़ोल्डर से, story.md फ़ाइल को अपनी लोकल मशीन में सेव करें.

  1. Google Cloud Console में, Cloud Storage पर जाएं.
  2. बकेट की सूची में से, अपना $BUCKET_NAME बकेट खोलें.
  3. फ़ाइलें अपलोड करें पर क्लिक करें और story.md फ़ाइल चुनें.

summarizeArticles फ़ंक्शन ट्रिगर हो जाता है और फ़ाइल के कॉन्टेंट की खास जानकारी जनरेट करना शुरू कर देता है.

  1. बाईं ओर दिए गए नेविगेशन पैनल में, बकेट पर क्लिक करें.
  2. अपना $BUCKET_NAME"-summaries बकेट खोलें.

story.md फ़ाइल में, फ़ाइल के कॉन्टेंट की खास जानकारी शामिल होती है.

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

इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  3. डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
  4. अगर आपको प्रोजेक्ट को सेव रखना है और सिर्फ़ कुछ संसाधन मिटाने हैं, तो Cloud Storage कंसोल पर जाएं. इसके बाद, बकेट पर क्लिक करें. सूची में से, उन बकेट को चुनें जिन्हें आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  5. क्लाउड फ़ंक्शन को मिटाने के लिए, Cloud Functions पर जाएं. इसके बाद, फ़ंक्शन की सूची में से उस फ़ंक्शन को चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.

8. बधाई हो

बधाई हो! आपने अपने डेटा पर टेक्स्ट की खास जानकारी जनरेट करने के लिए, Vertex AI Text Generation LLM का इस्तेमाल किया है. उपलब्ध मॉडल के बारे में ज़्यादा जानने के लिए, Vertex AI LLM प्रॉडक्ट का दस्तावेज़ देखें.