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

1. परिचय

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

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

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

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

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. क्लाउड शेल टर्मिनल से नीचे दिया गया कमांड चलाकर, AREA और PROJECT_ID के लिए एनवायरमेंट वैरिएबल बनाएं:
export PROJECT_ID=<your project id>

export REGION=us-central1

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

हम एक Python Cloud Function बनाएंगे और इस फ़ंक्शन में 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 से अपनी क्लाउड शेल मशीन पर क्लोन किया गया है.

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

  1. main.py Python फ़ाइल, आसान एचटीटीपी क्लाउड फ़ंक्शन के बारे में जानकारी देती है. यह टेक्स्ट इनपुट के बारे में खास जानकारी जनरेट करने के लिए, Vertex AI Text Generation मॉडल का इस्तेमाल करती है. फ़ंक्शन, टेक्स्ट इनपुट को पैरामीटर के तौर पर लेता है और इनपुट के बारे में कम शब्दों में जानकारी देता है. यह फ़ंक्शन, जनरेट किए जाने की प्रोसेस को कंट्रोल करने के लिए कई तरह के पैरामीटर का इस्तेमाल करता है. जैसे, जनरेट किए गए टेक्स्ट की क्रिएटिविटी, विविधता, और फ़्लूएंसी. एचटीटीपी Cloud फ़ंक्शन, अनुरोध किए गए ऑब्जेक्ट को स्वीकार करता है और रिस्पॉन्स के तौर पर मॉडल की खास जानकारी दिखाता है.
  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 और एडमिन खोलें.

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 पर जाएं::

इसमें उस वर्टेक्स-एआई-फ़ंक्शन के क्लाउड फ़ंक्शन की सूची दिखेगी जिसे हमने अभी-अभी उसके सार्वजनिक यूआरएल की मदद से बनाया है. हम इस फ़ंक्शन का इस्तेमाल, GCS (जीसीएस) ट्रिगर बनाने के लिए करेंगे.

6. फ़ंक्शन शुरू करें

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

शुरू करने से पहले, सैंपल story.md फ़ाइल को summarization-gcs-cloudFunction फ़ोल्डर में सेव करें. इसके बाद, उसे अपने कंप्यूटर में सेव करें.

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

8. बधाई हो

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