تطبيق "تلخيص النصوص" مع Vertex AI وSvelte Kit

1. مقدمة

في هذا الدرس التطبيقي حول الترميز، أدرجتُ الخطوات اللازمة لإنشاء تطبيق ويب يتيح لك تلخيص النصوص باستخدام واجهة برمجة التطبيقات الخاصة بالنموذج اللغوي الكبير من Vertex AI لإنشاء النصوص ( text-bison) في إطار عمل Svelte Kit. قائمة الخدمات وحزمة التكنولوجيا المستخدَمة هي:

  1. ‫Svelte Kit: إطار عمل لتطبيقات الويب يستند إلى Svelte.
  2. ‫Vertex AI PaLM 2 API: واجهة برمجة تطبيقات لنموذج لغوي كبير (LLM) تتيح الوصول إلى نموذج PaLM 2 من Google AI.
  3. ‫Cloud Functions: هي منصة بدون خادم لتشغيل الدوال بدون الحاجة إلى إدارة الخوادم.
  4. ‫Cloud Run: منصة حوسبة بدون خادم لتشغيل التطبيقات المحفوظة في حاويات

ما ستنشئه

عليك إنشاء

  • يتم استخدام دالة Python Cloud Function لتنفيذ استدعاء Palm API
  • تطبيق ويب Svelte لواجهة المستخدم للتفاعل مع Vertex AI API من خلال Cloud Function
  • خدمة Cloud Run لنشر التطبيق الذي تم إنشاؤه أعلاه بدون خادم

2. المتطلبات

  • متصفّح، مثل Chrome أو Firefox
  • مشروع Google Cloud تم تفعيل الفوترة فيه

3- قبل البدء

  1. في Google Cloud Console، ضمن صفحة اختيار المشروع، اختَر أو أنشِئ مشروعًا على Google Cloud.
  2. تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. كيفية التحقّق من تفعيل الفوترة في مشروع
  3. ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud للتفاعل مع خدمات Google Cloud. راجِع المستندات لمعرفة أوامر gcloud وطريقة استخدامها. من Cloud Console، انقر على "تفعيل Cloud Shell" في أعلى يسار الصفحة:

51622c00acec2fa.png

إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:

gcloud config set project <YOUR_PROJECT_ID>
  1. تأكَّد من تفعيل جميع واجهات برمجة التطبيقات اللازمة من خلال تنفيذ الأمر التالي من "وحدة Cloud Shell الطرفية":
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. أنشئ متغيّرات بيئة لكل من REGION وPROJECT_ID من خلال تنفيذ الأمر التالي من "وحدة Cloud Shell الطرفية":
export PROJECT_ID=<your project id>

export REGION=asia-south1

4. دالة Cloud Function لاستدعاء Vertex AI API

سننشئ دالة 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 2 للرسائل النصية مثالي للمهام التي يمكن إكمالها بردّ واحد من واجهة برمجة التطبيقات، بدون الحاجة إلى محادثة مستمرة. لننشئ الآن Cloud Function لهذا الغرض.

أنشئ دليلاً جديدًا باستخدام Cloud Shell وانتقِل إليه. (استخدِم الوحدة الطرفية نفسها التي تم فتحها في القسم السابق):

mkdir vertex-ai-functions

cd vertex-ai-functions

أنشئ ملف main.py لكتابة وظيفة Python Cloud Function وملف requirements.txt لتخزين التبعيات.

touch main.py requirements.txt

يحدّد ملف Python هذا دالة HTTP Cloud Function بسيطة تستخدم نموذج إنشاء النصوص في Vertex AI لإنشاء ملخّصات قصيرة من المدخلات النصية. تتلقّى الدالة نصًا كإدخال كمَعلمة وتعرض ملخّصًا موجزًا للإدخال. تستخدم الدالة مجموعة متنوّعة من المَعلمات للتحكّم في عملية الإنشاء، مثل الإبداع والتنوّع والطلاقة في النص الذي يتم إنشاؤه. تقبل دالة Cloud Functions عبر بروتوكول HTTP عنصر طلب وتعرض ملخّص النموذج كاستجابة.

افتح "محرّر Google Cloud". يمكنك فتح هذا الملف من خلال فتح علامة تبويب جديدة في "وحدة تحكّم Google Cloud" والنقر على الزر "تفعيل Cloud Shell"، وعند تحميل الوحدة الطرفية، انقر بسرعة على الزر "فتح المحرّر" كما هو موضّح في الصورة أدناه:

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

النشر على Cloud Functions

لننشُر الآن هذا المصدر على Cloud Functions. نفِّذ الأمر التالي من "وحدة Cloud Shell الطرفية":

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

سيتم إدراج دالة Cloud Function التي أنشأناها للتو باسم vertex-ai-function، وسيتم تقديم عنوان URL العلني الخاص بها في صفحة الدالة. نستخدم هذا المعرّف لربط الواجهة الأمامية وVertex AI API. احفظ عنوان URL هذا. قد تحتاج أيضًا إلى السماح لخدمة Cloud Run الأساسية بالوصول بدون مصادقة. ننصح باستخدام خدمة مصادقة لأغراض الأمان.

5- إنشاء الواجهة الأمامية ونشرها

يتضمّن هذا التطبيق واجهة أمامية للتفاعل مع Vertex AI API من خلال "دوال Google السحابية". لننشئها الآن.

إنشاء نسخة طبق الأصل من المستودع وإعداد ملف Dockerfile

انتقِل إلى الدليل الجذر واستنسِخ مستودع git.

cd ~/

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

cd  vertex-summarizer-svelte

لتشغيل هذا التطبيق، عليك إضافة متغيّر بيئة PUBLIC_FUNCTION_URL في Dockerfile. عنوان URL هذا هو عنوان URL الخاص بـ Cloud Function الذي تم إنشاؤه وتخزينه في القسم السابق.

افتح Cloud Editor وعدِّل محتوى ملف Dockerfile. استبدِل المتغيّر PUBLIC_FUNCTION_URL بعنوان URL الخاص بـ Cloud Function.

2958bb12343368a9.png

نشر الواجهة الأمامية على Cloud Run

سنستخدم Google Artifact Registry لإنشاء صور Docker وتخزينها. يتم استخدام Cloud Run لنشر الحاويات في البنية غير المستنِدة إلى الخادم.

أنشئ مستودع Artifact Registry من خلال تنفيذ الأمر التالي في "وحدة Cloud Shell الطرفية":

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

أنشئ متغيّر بيئة لعنوان URL لمستودع Artifact Registry.

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

أنشئ حاوية Docker وضمِّنها علامة بموقع مستودع Artifact Registry. يؤدي وضع علامة على صورة Docker باسم مستودع إلى ضبط أمر docker push لدفع الصورة إلى موقع جغرافي محدّد.

docker build . -t ${DOCKER_URL}

ادفع الصورة إلى Artifact Registry.

docker push ${DOCKER_URL}

نشر حاوية Docker على 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

6. تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذه المشاركة، اتّبِع الخطوات التالية:

  1. في Google Cloud Console، انتقِل إلى صفحة إدارة الموارد.
  2. في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على "حذف".
  3. في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على "إيقاف" لحذف المشروع.
  4. إذا كنت تريد الاحتفاظ بالمشروع وحذف خدمة Cloud Run فقط، اتّبِع الخطوة الواردة هنا.
  5. إذا أردت حذف Cloud Function أو إلغاء إذن الوصول فقط، يمكنك إجراء ذلك من هنا.

7. تهانينا

تهانينا! لقد استخدمت بنجاح واجهة Vertex AI PaLM2 API لتنفيذ عملية تلخيص النصوص بشكل آلي، وإنشاء تطبيق ويب Svelte ونشره في Cloud Functions. اطّلِع على مستندات منتج Vertex AI LLM لمعرفة المزيد عن النماذج المتاحة.