Cloud Function برای خلاصه‌سازی محتوا با استفاده از PalM Vertex AI API و Google Cloud Storage

۱. مقدمه

در این آزمایشگاه کد، می‌توانید مراحل خلاصه‌سازی محتوای آپلود شده در فضای ذخیره‌سازی ابری گوگل را با استفاده از مدل زبان بزرگ Vertex AI برای تولید متن ( text-bison ) به عنوان یک تابع ابری در پایتون، بیابید. لیست سرویس‌های مورد استفاده عبارتند از:

  • رابط برنامه‌نویسی کاربردی Vertex AI PaLM: یک رابط برنامه‌نویسی کاربردی مدل زبان بزرگ (LLM) که دسترسی به مدل PaLM Text Bison گوگل هوش مصنوعی را فراهم می‌کند.
  • توابع ابری: یک پلتفرم بدون سرور برای اجرای توابع بدون نیاز به مدیریت سرورها.
  • فضای ذخیره‌سازی ابری: یک سرویس مدیریت‌شده برای ذخیره‌سازی داده‌های بدون ساختار.
  • ثبت وقایع ابری: یک سرویس کاملاً مدیریت‌شده که به شما امکان ذخیره، جستجو، تجزیه و تحلیل، نظارت و هشدار در مورد داده‌های ثبت وقایع را می‌دهد.

آنچه خواهید ساخت

شما یک برنامه کاربردی ایجاد خواهید کرد که به عنوان یک تابع ابری پایتون برای خلاصه کردن متن با استفاده از Palm API مستقر می‌شود.

۲. الزامات

  • یک مرورگر، مانند کروم یا فایرفاکس
  • یک پروژه گوگل کلود با قابلیت پرداخت صورتحساب

۳. قبل از شروع

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید که چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر .
  3. مطمئن شوید که تمام APIهای لازم (Cloud Storage API، Vertex AI API، Cloud Function API و Cloud Logging) فعال هستند.
  4. شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می‌شود، استفاده خواهید کرد. برای دستورات و نحوه‌ی استفاده از gcloud به مستندات مراجعه کنید.
  5. از کنسول ابری، روی فعال کردن پوسته ابری در گوشه بالا سمت راست کلیک کنید:

51622c00acec2fa.png

اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:

gcloud config set project <YOUR_PROJECT_ID>
  1. با اجرای دستور زیر از ترمینال Cloud Shell، مطمئن شوید که تمام APIهای لازم فعال هستند:
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

۴. تابع ابری برای فراخوانی API هوش مصنوعی ورتکس

ما یک تابع ابری پایتون ایجاد خواهیم کرد و API هوش مصنوعی Vertex را در این تابع فراخوانی خواهیم کرد.

ایجاد یک حساب کاربری سرویس جدید

با اجرای دستور زیر در ترمینال Cloud Shell، یک حساب کاربری سرویس جدید ایجاد کنید.

gcloud iam service-accounts create vertex-service-acc

برای دسترسی به پروژه و منابع خود، به حساب سرویس یک نقش (role) اعطا کنید.

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

برای اعطای نقشی به حساب گوگل خود که به شما امکان می‌دهد از نقش‌های حساب سرویس استفاده کنید و حساب سرویس را به منابع دیگر متصل کنید، دستور زیر را اجرا کنید. به جای USER_EMAIL، شناسه ایمیل حساب گوگل خود را قرار دهید .

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

ایجاد تابع پایتون

API متن 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 را از ترمینال باز کنید و محتویات پوشه پروژه‌ای که از گیت‌هاب به دستگاه cloud shell شما کلون شده است را بررسی کنید.

این پوشه شامل ۲ فایل است:

  1. فایل main.py پایتون یک تابع HTTP Cloud ساده را تعریف می‌کند که از یک مدل تولید متن هوش مصنوعی Vertex برای تولید خلاصه‌های کوتاه از ورودی‌های متنی استفاده می‌کند. این تابع یک ورودی متنی را به عنوان پارامتر دریافت می‌کند و خلاصه‌ای کوتاه از ورودی را برمی‌گرداند. این تابع از پارامترهای متنوعی برای کنترل فرآیند تولید، مانند خلاقیت، تنوع و روانی متن تولید شده، استفاده می‌کند. تابع HTTP Cloud یک شیء درخواست را می‌پذیرد و خلاصه مدل را به عنوان پاسخ برمی‌گرداند.
  2. فایل requirements.txt وابستگی‌های بسته را دارد:
  • functions-framework==3. : تضمین می‌کند که تابع از آخرین ویژگی‌ها و رفع اشکالات Functions Framework استفاده می‌کند.
  • google-cloud-aiplatform : برای استفاده از مدل تولید متن Vertex AI مورد نیاز است.
  • google-cloud-storage: برای ایجاد سطل‌های ذخیره‌سازی در Google Cloud Storage مورد نیاز است.
  • google-cloud-logging : برای تولید گزارش‌ها مورد نیاز است.

۵. تابع را مستقر کنید

  1. دو سطل ذخیره‌سازی ابری ایجاد کنید:
  • سطل اول: سطل $BUCKET_NAME برای آپلود فایل‌ها جهت خلاصه‌سازی استفاده خواهد شد. متغیر محیطی را برای ذخیره نام سطل خود به صورت زیر ایجاد کنید:
export BUCKET_NAME='Your Bucket Name'
  • سطل دوم: سطل $BUCKET_NAME-summaries برای ذخیره فایل خلاصه شده استفاده خواهد شد.
  • ما از دستور gsutil برای ایجاد سطل‌ها استفاده خواهیم کرد:
  • gsutil یک برنامه پایتون است که به شما امکان دسترسی به فضای ذخیره‌سازی ابری از طریق خط فرمان را می‌دهد. می‌توانید از gsutil برای انجام طیف گسترده‌ای از وظایف مدیریت سطل و شیء استفاده کنید.
  • mb مخفف "Make Bucket" است.
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. در این مرحله، ما آماده‌ی پیاده‌سازی تابع هستیم. اما قبل از آن، مطمئن شوید که حساب کاربری سرویس Cloud Storage Bucket نقش Pub/Sub Publisher را دارد.
  2. به فضای ذخیره‌سازی ابری گوگل بروید و در پنل سمت چپ، روی «تنظیمات» کلیک کنید.

8ce34eb05153abf2.png

  1. «حساب سرویس» را از تنظیمات کپی کرده و آن را یادداشت کنید.
  2. از منوی ناوبری کنسول گوگل کلود، IAM و Admin را باز کنید.

c5a7103e90689684.png

  1. در تب Permissions، روی GRANT ACCESS کلیک کنید و شناسه حساب سرویسی را که یادداشت کرده‌اید، در بخش New principals وارد کنید و Role را به عنوان "Pub/Sub Publisher" انتخاب کنید و روی SAVE کلیک کنید.

11c2df774fa740a9.png

  1. این منبع را در توابع ابری مستقر کنید. دستور زیر را از ترمینال شل ابری اجرا کنید:
  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. در کنسول گوگل کلود، به Cloud Functions بروید ::

این تابع، تابع ابری vertex-ai-function که به تازگی ایجاد کرده‌ایم را به همراه URL عمومی آن فهرست می‌کند. ما از این تابع برای ایجاد یک تریگر GCS استفاده خواهیم کرد.

۶. تابع را فراخوانی کنید

وقتی فایلی در سطل $BUCKET_NAME * آپلود می‌شود، تریگر GCS تابع را فراخوانی می‌کند. سطل $BUCKET_NAME"-summaries شامل فایل خلاصه‌شده با همان نام است.

قبل از شروع، فایل نمونه story.md را از پوشه summarization-gcs-cloudfunction در دستگاه محلی خود ذخیره کنید.

  1. در کنسول گوگل کلود، به بخش فضای ذخیره‌سازی ابری (Cloud Storage) بروید.
  2. سطل $BUCKET_NAME خود را از لیست سطل‌ها باز کنید.
  3. روی «بارگذاری فایل‌ها» کلیک کنید و فایل story.md را انتخاب کنید.

تابع summarizeArticles فعال می‌شود و شروع به خلاصه‌سازی محتویات فایل می‌کند.

  1. در پنل ناوبری سمت چپ، روی Buckets کلیک کنید.
  2. سطل $BUCKET_NAME"-summaries خود را باز کنید.

فایل story.md شامل خلاصه‌ای از محتویات فایل است.

۷. تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این پست، این مراحل را دنبال کنید:

  1. در کنسول گوگل کلود، به صفحه مدیریت منابع بروید.
  2. در لیست پروژه‌ها، پروژه‌ای را که می‌خواهید حذف کنید انتخاب کنید و سپس روی حذف کلیک کنید.
  3. در کادر محاوره‌ای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن کلیک کنید.
  4. اگر می‌خواهید پروژه را نگه دارید و فقط برخی از منابع را حذف کنید، به کنسول Cloud Storage بروید، روی Buckets کلیک کنید و از لیست، Bucketsهایی را که می‌خواهید حذف کنید، علامت بزنید و روی DELETE کلیک کنید.
  5. همچنین می‌توانید با رفتن به Cloud Functions و از لیست توابع، تابعی را که می‌خواهید حذف کنید، علامت بزنید و روی DELETE کلیک کنید تا تابع Cloud حذف شود.

۸. تبریک

تبریک! شما با موفقیت از یک نرم‌افزار Vertex AI Text Generation LLM برای خلاصه‌سازی متن روی داده‌های خود استفاده کردید. برای کسب اطلاعات بیشتر در مورد مدل‌های موجود ، مستندات محصول Vertex AI LLM را بررسی کنید.