برنامه Text Summarizer با Vertex AI و Svelte Kit

۱. مقدمه

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

  1. کیت Svelte: یک چارچوب برنامه وب که بر اساس Svelte ساخته شده است.
  2. رابط برنامه‌نویسی کاربردی Vertex AI PaLM 2: یک رابط برنامه‌نویسی کاربردی مدل زبان بزرگ (LLM) که دسترسی به مدل PaLM 2 گوگل هوش مصنوعی را فراهم می‌کند.
  3. توابع ابری: یک پلتفرم بدون سرور برای اجرای توابع بدون نیاز به مدیریت سرورها.
  4. Cloud Run: یک پلتفرم بدون سرور برای اجرای برنامه‌های کانتینری.

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

شما خلق خواهید کرد

  • یک تابع ابری پایتون برای فراخوانی API پالم استفاده می‌شود.
  • یک برنامه وب Svelte برای رابط کاربری جهت تعامل با API هوش مصنوعی Vertex از طریق عملکرد ابری
  • یک سرویس Cloud Run برای استقرار برنامه ایجاد شده در بالا به صورت بدون سرور

۲. الزامات

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

۳. قبل از شروع

  1. در کنسول گوگل کلود ، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید
  2. مطمئن شوید که صورتحساب برای پروژه ابری شما فعال است. یاد بگیرید چگونه بررسی کنید که آیا صورتحساب در یک پروژه فعال است یا خیر
  3. شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می‌شود، برای تعامل با سرویس‌های Google Cloud استفاده خواهید کرد. برای دستورات و نحوه‌ی استفاده از gcloud به مستندات مراجعه کنید. از کنسول Cloud، روی Activate Cloud Shell در گوشه‌ی بالا سمت راست کلیک کنید:

51622c00acec2fa.png

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

gcloud config set project <YOUR_PROJECT_ID>
  1. با اجرای دستور زیر از ترمینال Cloud Shell، مطمئن شوید که تمام APIهای لازم فعال هستند:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. با اجرای دستور زیر از ترمینال Cloud Shell، متغیرهای محیطی برای REGION و PROJECT_ID ایجاد کنید:
export PROJECT_ID=<your project id>

export REGION=asia-south1

۴. تابع ابری برای فراخوانی 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

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

رابط کاربری متن PaLM 2 برای کارهایی که می‌توان با یک پاسخ API و بدون نیاز به مکالمه مداوم انجام داد، ایده‌آل است. بیایید اکنون تابع ابری را برای آن ایجاد کنیم.

با استفاده از cloud shell یک دایرکتوری جدید ایجاد کنید و به آن بروید. (از همان ترمینالی که در بخش قبل باز شد استفاده کنید):

mkdir vertex-ai-functions

cd vertex-ai-functions

یک فایل main.py برای نوشتن تابع ابری پایتون و یک فایل requirements.txt برای ذخیره وابستگی‌ها ایجاد کنید.

touch main.py requirements.txt

این فایل پایتون یک تابع HTTP Cloud ساده را تعریف می‌کند که از یک مدل تولید متن هوش مصنوعی Vertex برای تولید خلاصه‌های کوتاه از ورودی‌های متنی استفاده می‌کند. این تابع یک ورودی متنی را به عنوان پارامتر دریافت می‌کند و خلاصه‌ای کوتاه از ورودی را برمی‌گرداند. این تابع از پارامترهای متنوعی برای کنترل فرآیند تولید، مانند خلاقیت، تنوع و روانی متن تولید شده، استفاده می‌کند. تابع HTTP Cloud یک شیء درخواست را می‌پذیرد و خلاصه مدل را به عنوان پاسخ برمی‌گرداند.

ویرایشگر گوگل کلود را باز کنید. می‌توانید این کار را با باز کردن یک تب جدید در کنسول گوگل کلود و کلیک بر روی دکمه ACTIVATE CLOUD SHELL انجام دهید و وقتی ترمینال بارگذاری شد، همانطور که در تصویر زیر نشان داده شده است، سریعاً بر روی دکمه OPEN EDITOR کلیک کنید:

8e501bd2c41d11b8.png

پس از باز شدن ویرایشگر، باید بتوانید فایل main.py را ببینید. محتوای آن را با کد موجود در این لینک مخزن جایگزین کنید. توضیح کد به صورت کامنت‌های کد درج شده است. به طور خلاصه، این کد روشی مختصر برای تولید خلاصه‌های کوتاه از ورودی‌های متنی با استفاده از Vertex AI ارائه می‌دهد.

فایل requirements.txt دارای وابستگی‌های بسته‌ای است: functions-framework==3.*: تضمین می‌کند که تابع از آخرین ویژگی‌ها و رفع اشکالات Functions Framework استفاده می‌کند. google-cloud-aiplatform: برای استفاده از مدل تولید متن Vertex AI مورد نیاز است.

این را به فایل requirements.txt اضافه کنید:

functions-framework==3.*
google-cloud-aiplatform

توابع را به فضای ابری منتقل کنید

حالا بیایید این منبع را در توابع ابری مستقر کنیم. دستور زیر را از ترمینال شل ابری اجرا کنید:

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

از نوار جستجو استفاده کنید و به کنسول Cloud Functions بروید:

43a6b247098a9edb.png

این تابع ابری vertex-ai-function که ما ایجاد کرده‌ایم را به همراه URL عمومی آن که در صفحه تابع ارائه می‌شود، فهرست می‌کند. ما از این برای اتصال رابط برنامه‌نویسی کاربردی فرانت‌اند و Vertex AI خود استفاده می‌کنیم. این URL را ذخیره کنید. همچنین ممکن است لازم باشد سرویس Cloud Run زیرین را برای دسترسی غیرمجاز مجاز کنید. استفاده از سرویس احراز هویت شده برای اهداف امنیتی توصیه می‌شود.

۵. ساخت و استقرار رابط کاربری (front-end)

این برنامه با یک رابط کاربری frontend برای تعامل با Vertex AI API ما از طریق توابع Google Cloud ارائه می‌شود. بیایید اکنون آن را ایجاد کنیم.

کلون کردن مخزن و راه‌اندازی داکرفایل

به دایرکتوری ریشه بروید و مخزن git را کلون کنید.

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

برای اجرای این برنامه، باید متغیر محیطی PUBLIC_FUNCTION_URL را در Dockerfile اضافه کنید. این URL، URL تابع ابری است که در بخش قبلی ایجاد و ذخیره شده است.

ویرایشگر ابر (Cloud Editor) را باز کنید و محتویات فایل Dockerfile را ویرایش کنید. متغیر PUBLIC_FUNCTION_URL را با آدرس تابع ابر خود جایگزین کنید.

2958bb12343368a9.png

استقرار Frontend روی Cloud Run

ما از Google Artifact Registry برای ساخت و ذخیره تصاویر Docker خود استفاده خواهیم کرد. Cloud Run برای استقرار کانتینرها در معماری بدون سرور استفاده می‌شود.

با اجرای دستور زیر در ترمینال Cloud Shell، یک مخزن رجیستری مصنوعات ایجاد کنید:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

یک متغیر محیطی برای URL مخزن رجیستری Artifact ایجاد کنید.

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

کانتینر داکر را بسازید و آن را با نام Artifact Registry Repository تگ کنید. تگ کردن ایمیج داکر با نام یک مخزن، دستور docker push را برای ارسال ایمیج به یک مکان خاص پیکربندی می‌کند.

docker build . -t ${DOCKER_URL}

تصویر را به رجیستری مصنوعات (Artifact Registry) منتقل کنید.

docker push ${DOCKER_URL}

کانتینر داکر را روی Cloud Run مستقر کنید.

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

هورا!! خلاصه‌ساز ورتکس (Vertex Summarizer) راه‌اندازی و اجرا شد. آدرس اینترنتی (URL) در Cloud Shell نمایش داده خواهد شد، پس هوش مصنوعی ورتکس (Vertex AI) را کاوش کنید و از آن لذت ببرید🤖.

cd94442961bb5308.gif

۶. تمیز کردن

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

  1. در کنسول گوگل کلود، به صفحه مدیریت منابع بروید
  2. در لیست پروژه‌ها، پروژه‌ای را که می‌خواهید حذف کنید انتخاب کنید و سپس روی «حذف» کلیک کنید.
  3. در کادر محاوره‌ای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن کلیک کنید.
  4. اگر می‌خواهید پروژه را نگه دارید و فقط سرویس Cloud Run را حذف کنید، مراحل زیر را دنبال کنید.
  5. اگر می‌خواهید فقط عملکرد ابر را حذف کنید یا دسترسی را لغو کنید، می‌توانید از اینجا این کار را انجام دهید

۷. تبریک

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