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

1. परिचय

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

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

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

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

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 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.: इससे यह पक्का होता है कि फ़ंक्शन, फ़ंक्शन फ़्रेमवर्क की नई सुविधाओं और गड़बड़ियों को ठीक करने वाले टूल का इस्तेमाल करता है.
  • google-cloud-aiplatform: Vertex AI के टेक्स्ट जनरेशन मॉडल का इस्तेमाल करने के लिए ज़रूरी है.
  • 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 का मतलब "बकेट बनाएं" है
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 और Admin खोलें.

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 Console में जाएं. इसके बाद, 'बकेट' पर क्लिक करें. इसके बाद, सूची में से उन बकेट को चुनें जिन्हें मिटाना है और 'मिटाएं' पर क्लिक करें.
  5. Cloud Functions पर जाकर भी Cloud Function को मिटाया जा सकता है. इसके लिए, फ़ंक्शन की सूची में से उस फ़ंक्शन को चुनें जिसे मिटाना है और 'मिटाएं' पर क्लिक करें.

8. बधाई हो

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