একটি ক্লাউড স্টোরেজ বালতিতে আপলোড করা একটি পাঠ্য ফাইলের সংক্ষিপ্তসার করতে ক্লাউড রান ফাংশন এবং জেমিনি কীভাবে ব্যবহার করবেন

1. ভূমিকা

ওভারভিউ

ক্লাউড রান ফাংশন হল পরিচিত GCF ইভেন্টিং প্যারাডাইম এবং ফাংশন স্বাক্ষর ব্যবহার করে কাজের চাপ মোতায়েন করার একটি নতুন উপায়। আমাদের মতামতযুক্ত বিল্ড প্রক্রিয়া এবং স্থাপনার কনফিগারেশন ব্যবহার করার পরিবর্তে, ক্লাউড রান ফাংশন আপনাকে ক্লাউড রানে তৈরি অন্তর্নিহিত পরিষেবার উপর সরাসরি নিয়ন্ত্রণ দেয়।

এই বিভাগে, আপনি শিখবেন কিভাবে পাইথনে একটি ইভেন্ট-চালিত ফাংশন স্থাপন করতে হয় যা একটি ক্লাউড স্টোরেজ বালতিতে আপলোড করা একটি প্লেইন টেক্সট ফাইলকে সংক্ষিপ্ত করতে জেমিনি ব্যবহার করে।

আপনি কি শিখবেন

  • কিভাবে একটি ইভেন্ট-চালিত ক্লাউড রান ফাংশন স্থাপন করা যায় যা যখনই একটি জিসিএস বাকেটে একটি বস্তু আপলোড করা হয় তখন ট্রিগার হয়
  • ক্লাউড স্টোরেজ থেকে একটি ইভেন্ট গ্রহণ করতে এবং ক্লাউড রান ফাংশন চালু করতে সঠিক ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট কীভাবে তৈরি করবেন
  • ক্লাউড স্টোরেজে আপলোড করা একটি প্লেইন টেক্সট ডকুমেন্টের সারসংক্ষেপ করতে কিভাবে Gemini ব্যবহার করবেন

2. এনভায়রনমেন্ট ভেরিয়েবল সেটআপ করুন এবং এপিআই সক্ষম করুন

gcloud CLI আপডেট করুন

এই কোডল্যাবের জন্য ইনস্টল করা gcloud CLI-এর একটি সাম্প্রতিক সংস্করণ প্রয়োজন। আপনি চালানোর মাধ্যমে CLI আপডেট করতে পারেন

gcloud components update

এপিআই সক্ষম করুন

আপনি এই কোডল্যাব ব্যবহার শুরু করার আগে, আপনাকে সক্রিয় করতে হবে এমন বেশ কয়েকটি API আছে। এই কোডল্যাবের জন্য নিম্নলিখিত API ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে সেই APIগুলি সক্ষম করতে পারেন:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com \
    eventarc.googleapis.com \
    aiplatform.googleapis.com

পরিবেশ ভেরিয়েবল সেটআপ করুন

আপনি পরিবেশের ভেরিয়েবল সেট করতে পারেন যা এই কোডল্যাব জুড়ে ব্যবহার করা হবে।

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
SERVICE_NAME=crf-vertexai-codelab
BUCKET_NAME=$PROJECT_ID-$SERVICE_NAME
TRIGGER_NAME=$SERVICE_NAME-trigger

3. একটি স্টোরেজ বাকেট এবং একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন৷

একটি স্টোরেজ বালতি তৈরি করুন

আপনি নিম্নলিখিত কমান্ডটি চালিয়ে একটি ক্লাউড স্টোরেজ বালতি তৈরি করতে পারেন:

gsutil mb -l us-central1 gs://$BUCKET_NAME

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

এই উদাহরণের জন্য, আপনি ক্লাউড স্টোরেজ থেকে একটি ইভেন্ট পেতে এবং ক্লাউড রান ফাংশন চালু করতে প্রয়োজনীয় EventArc অনুমতি এবং ক্লাউড রান ইনভোকার ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করবেন৷

প্রথমে, পরিষেবা অ্যাকাউন্ট তৈরি করুন।

SERVICE_ACCOUNT="crf-vertexai-codelab"
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

gcloud iam service-accounts create $SERVICE_ACCOUNT \
  --display-name="Cloud Run functions Eventarc service account"

এর পরে, আপনার Eventarc ট্রিগারের সাথে সম্পর্কিত পরিষেবা অ্যাকাউন্টে প্রকল্পে Eventarc ইভেন্ট রিসিভার ভূমিকা (roles/eventarc.eventReceiver) প্রদান করুন যাতে ট্রিগার ইভেন্ট প্রদানকারীদের থেকে ইভেন্টগুলি গ্রহণ করতে পারে।

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/eventarc.eventReceiver

তারপর, পরিষেবা অ্যাকাউন্টটিকে ক্লাউড রান ইনভোকার ভূমিকা মঞ্জুর করুন যাতে এটি ফাংশনটি শুরু করতে পারে৷

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/run.invoker

এখন, পরিষেবা অ্যাকাউন্টটিকে AI প্ল্যাটফর্ম ব্যবহারকারীর ভূমিকা মঞ্জুর করুন যাতে এটি জেমিনিতে কল করতে পারে৷

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
    --role="roles/aiplatform.user"

এবং পরিষেবা অ্যাকাউন্টটিকে স্টোরেজ অবজেক্ট ভিউয়ার ভূমিকা মঞ্জুর করুন যাতে এটি ফাইলটি অ্যাক্সেস করতে পারে।

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
    --role="roles/storage.objectViewer"

Cloud Pub/Sub-এর পরিচয় টোকেন তৈরি করতে আপনার প্রকল্পে ভূমিকা ভূমিকা/iam.serviceAccountTokenCreator প্রয়োজন।

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
  --role=roles/iam.serviceAccountTokenCreator

ক্লাউড স্টোরেজের মাধ্যমে ইভেন্টগুলি পেতে Google ক্লাউড স্টোরেজ পরিষেবা অ্যাকাউন্টে প্রদত্ত ভূমিকা রোল/pubsub.publisher আপনার ট্রিগারের প্রয়োজন৷

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
  --role=roles/pubsub.publisher

4. ফাংশন তৈরি করুন এবং স্থাপন করুন

প্রথমে, সেই ডিরেক্টরিতে সোর্স কোড এবং সিডির জন্য একটি ডিরেক্টরি তৈরি করুন।

mkdir $SERVICE_NAME && cd $_

তারপর, নিম্নলিখিত বিষয়বস্তু সহ একটি requirements.txt ফাইল তৈরি করুন:

functions-framework==3.*
google-cloud-aiplatform==1.63.*
google-cloud-storage==2.16.*

পরবর্তী, নিম্নলিখিত বিষয়বস্তু সহ একটি main.py ফাইল তৈরি করুন:

import functions_framework
import vertexai
from vertexai.generative_models import GenerativeModel
from google.cloud import storage

vertexai.init(project="<YOUR_PROJECT_ID>", location="us-central1")

model = GenerativeModel(
    model_name="gemini-1.5-pro-001",
    system_instruction=[
        "Summarize the following document in a single sentence. Do not respond with more than one sentence.",
    ],
)

# Triggered by a change in a storage bucket
@functions_framework.cloud_event
def hello_gcs(cloud_event):
    data = cloud_event.data

    # download the file
    storage_client = storage.Client()
    blob = storage_client.bucket(data["bucket"]).get_blob(data["name"])
    #print(blob)

    doc = blob.download_as_text()
    contents = [doc]

    response = model.generate_content(contents)
    print(response.text)

    print(f"Response from Model: {response.text}")

এখন আপনি নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাউড রান ফাংশন স্থাপন করতে পারেন:

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function hello_gcs \
      --region $REGION \
      --no-allow-unauthenticated \
      --service-account $SERVICE_ACCOUNT_ADDRESS

নিম্নলিখিত নোট করুন:

  • --source পতাকাটি ক্লাউড রানকে ফাংশনটিকে একটি চালানযোগ্য কন্টেইনার ভিত্তিক পরিষেবাতে তৈরি করতে বলার জন্য ব্যবহৃত হয়
  • --function পতাকা (নতুন) ব্যবহার করা হয় নতুন পরিষেবার এন্ট্রিপয়েন্ট সেট করার জন্য যে ফাংশন স্বাক্ষর আপনি আহ্বান করতে চান
  • (ঐচ্ছিক) আপনার ফাংশনকে সর্বজনীনভাবে আবেদন করা থেকে আটকাতে --no-allow-unauthenticated

আপনাকে জিজ্ঞাসা করা হতে পারে "উৎস থেকে স্থাপনার জন্য নির্মিত কনটেইনারগুলি সংরক্ষণ করার জন্য একটি আর্টিফ্যাক্ট রেজিস্ট্রি ডকার সংগ্রহস্থলের প্রয়োজন৷ [<YOUR_REGION>] অঞ্চলে [Cloud-run-source-deploy] নামে একটি সংগ্রহস্থল তৈরি করা হবে।" সংগ্রহস্থল তৈরি করতে ডিফল্ট হ্যাঁ গ্রহণ করুন।

আপনি নিম্নলিখিত কমান্ডটি চালিয়ে আপনার নতুন পরিষেবা crf-vertexai-codelab দেখতে পারেন:

gcloud beta run services describe $SERVICE_NAME --region $REGION

5. ইভেন্ট তৈরি করুন

Google ক্লাউড স্টোরেজে যখনই কোনো বস্তু চূড়ান্ত করা হয় তখন আমরা আমাদের ফাংশনে বার্তা পাঠাতে একটি Eventarc ট্রিগার তৈরি করতে পারি:

BUCKET_REGION=$REGION

gcloud eventarc triggers create $TRIGGER_NAME \
     --location=$REGION \
     --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$BUCKET_REGION \
     --event-filters="type=google.cloud.storage.object.v1.finalized" \
     --event-filters="bucket=$BUCKET_NAME" \
     --service-account=$SERVICE_ACCOUNT_ADDRESS

অনুগ্রহ করে মনে রাখবেন --event-filters পতাকার জন্য, আপনার বালতির নামে gs:// উপসর্গ ব্যবহার করবেন না।

যদি আপনি একটি ত্রুটি দেখতে পান If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent. আবার চেষ্টা করার আগে কয়েক মিনিট অপেক্ষা করুন.

Eventarc ব্যবহার করে ক্লাউড স্টোরেজ থেকে ট্রিগার পরিষেবা সেট আপ করার একটি বিশদ টিউটোরিয়াল এখানে ক্লাউড রান ডকুমেন্টেশনে পাওয়া যাবে: https://cloud.google.com/run/docs/tutorials/eventarc

6. ফাংশন পরীক্ষা করুন

আমাদের ফাংশন স্থাপন করা হয়েছে এবং একটি ট্রিগার তৈরি করা হয়েছে, আমরা এখন ফাংশনটি চালু করতে প্রস্তুত।

একটি ফাইল তৈরি করুন এবং এটি আপনার ক্লাউড স্টোরেজ বালতিতে আপলোড করুন৷ আপনি ক্লাউড কনসোল ওয়েব ইন্টারফেসের মাধ্যমে বা gsutil CLI টুল ব্যবহার করে এটি করতে পারেন, যেমন

gsutil cp <YOUR_PLAIN_TEXT_FILE> gs://$BUCKET_NAME

ফাইলটি সফলভাবে আপলোড হয়ে গেলে, একটি ইভেন্ট তৈরি হবে এবং আপনার ফাংশন জেমিনিকে প্লেইন টেক্সট ফাইলের সংক্ষিপ্তসারে কল করবে। সারাংশটি লগগুলিতে প্রিন্ট করা হবে।

আপনি হয় ক্লাউড রান পরিষেবার জন্য ক্লাউড কনসোলে লগগুলি দেখতে পারেন, অথবা আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE_NAME AND textPayload: Response"

উদাহরণস্বরূপ, ব্যক্তিগত পূর্বরূপের জন্য ক্লাউড রান ফাংশন ব্যবহারকারী গাইডের একটি প্লেইন টেক্সট ফাইল আপলোড করলে নিম্নলিখিত লগগুলিতে প্রিন্ট করা হয়:

Response from Model: Cloud Run functions offer a new way to deploy serverless workloads with familiar Google Cloud Functions paradigms while providing control over the underlying Cloud Run service. 

7. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!

আমরা ক্লাউড রান ফাংশনগুলির জন্য ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই

আমরা কভার করেছি কি

  • কিভাবে একটি ইভেন্ট-চালিত ক্লাউড রান ফাংশন স্থাপন করা যায় যা যখনই একটি জিসিএস বাকেটে একটি বস্তু আপলোড করা হয় তখন ট্রিগার হয়
  • ক্লাউড স্টোরেজ থেকে একটি ইভেন্ট গ্রহণ করতে এবং ক্লাউড রান ফাংশন চালু করতে সঠিক ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট কীভাবে তৈরি করবেন
  • ক্লাউড স্টোরেজে আপলোড করা একটি প্লেইন টেক্সট ডকুমেন্টের সারসংক্ষেপ করতে কিভাবে Gemini ব্যবহার করবেন

8. পরিষ্কার করুন

অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি এই ক্লাউড রান পরিষেবাটি আপনার মাসিক ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে বিনামূল্যের স্তরে অজান্তেই বেশি বার আহ্বান করা হয়), আপনি হয় ক্লাউড রান পরিষেবাটি মুছে ফেলতে পারেন বা ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি মুছে ফেলতে পারেন৷

ক্লাউড রান পরিষেবাগুলি মুছতে, https://console.cloud.google.com/run/- এ ক্লাউড রান ক্লাউড কনসোলে যান এবং এই কোডল্যাবে আপনার তৈরি করা crf-vertexai-codelab পরিষেবাটি মুছুন৷

আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।