1. نظرة عامة
قد يكون نشر تطبيق ويب للمرة الأولى أمرًا مخيفًا. حتى بعد عملية النشر الأولى، إذا كانت العملية تتطلّب الكثير من الجهد، قد تتجنّب نشر إصدارات جديدة من تطبيقك. باستخدام النشر المستمر، يمكنك نشر تغييرات تطبيقك تلقائيًا بسهولة.
في هذا المختبر، ستكتب تطبيق ويب وتضبط Cloud Run لنشر تطبيقك تلقائيًا عند إجراء تغيير على الرمز المصدر لتطبيقك. بعد ذلك، يمكنك تعديل تطبيقك ونشره مرة أخرى.
ما ستتعلمه
- كتابة تطبيق ويب باستخدام "محرّر Cloud Shell"
- تخزين رمز تطبيقك في GitHub
- نشر تطبيقك تلقائيًا على Cloud Run
- إضافة الذكاء الاصطناعي التوليدي إلى تطبيقك باستخدام Genkit
- إدارة طلبات النماذج اللغوية الكبيرة باستخدام مكتبة dotprompt
2. المتطلبات الأساسية
- إذا لم يكن لديك حساب على Google، عليك إنشاء حساب على Google.
- استخدام حساب شخصي بدلاً من حساب عمل أو حساب تديره مؤسسة تعليمية قد تتضمّن حسابات العمل والمؤسسة التعليمية قيودًا تمنعك من تفعيل واجهات برمجة التطبيقات اللازمة لهذا الدرس التطبيقي.
- إذا لم يكن لديك حساب على GitHub، عليك إنشاء حساب على GitHub
- استخدِم حسابًا حاليًا على GitHub إذا كان لديك حساب. من المرجّح أن تحظر GitHub حسابًا جديدًا باعتباره غير مرغوب فيه.
- إعداد المصادقة الثنائية في حسابك على GitHub للحدّ من فرص تصنيف حسابك كرسائل غير مرغوب فيها
3- إعداد المشروع
- سجِّل الدخول إلى Google Cloud Console.
- فعِّل الفوترة في Cloud Console.
- يجب أن تكلّف إكمال هذا المختبر أقل من دولار أمريكي واحد من موارد السحابة الإلكترونية.
- يمكنك اتّباع الخطوات في نهاية هذا المختبر لحذف الموارد وتجنُّب المزيد من الرسوم.
- يكون المستخدمون الجدد مؤهّلين للاستفادة من الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
- هل ستشارك في فعالية "الذكاء الاصطناعي التوليدي للمطوّرين"؟ قد يتوفّر رصيد بقيمة دولار أمريكي واحد.
- أنشئ مشروعًا جديدًا أو اختَر إعادة استخدام مشروع حالي.
- تأكَّد من تفعيل الفوترة في مشاريعي ضمن
- فوترة Cloud
- إذا كان مشروعك الجديد يعرض
Billing is disabledفي العمودBilling account:- انقر على النقاط الثلاث في العمود
Actions - انقر على تغيير الفوترة.
- اختَر حساب الفوترة الذي تريد استخدامه
- انقر على النقاط الثلاث في العمود
- إذا كنت ستشارك في فعالية "الذكاء الاصطناعي التوليدي للمطوّرين"، من المحتمل أن يكون اسم الحساب حساب فوترة تجريبي في Google Cloud Platform.
- إذا كان مشروعك الجديد يعرض
4. فتح Cloud Shell Editor
- انتقِل إلى محرّر Cloud Shell
- إذا لم تظهر النافذة الطرفية في أسفل الشاشة، افتحها باتّباع الخطوات التالية:
- انقر على قائمة الهامبرغر

- انقر على Terminal.
- انقر على نافذة طرفية جديدة
.
- انقر على قائمة الهامبرغر
- في الوحدة الطرفية، اضبط مشروعك باستخدام الأمر التالي:
- التنسيق:
gcloud config set project [PROJECT_ID] - مثال:
gcloud config set project lab-project-id-example - إذا تعذّر عليك تذكُّر رقم تعريف مشروعك، اتّبِع الخطوات التالية:
- يمكنك إدراج جميع أرقام تعريف المشاريع باستخدام:
gcloud projects list | awk '/PROJECT_ID/{print $2}'

- يمكنك إدراج جميع أرقام تعريف المشاريع باستخدام:
- التنسيق:
- إذا طُلب منك منح الإذن، انقر على منح الإذن للمتابعة.

- من المفترض أن تظهر لك هذه الرسالة:
إذا ظهرت لكUpdated property [core/project].
WARNINGوطُلب منكDo you want to continue (Y/N)?، من المحتمل أنّك أدخلت رقم تعريف المشروع بشكل غير صحيح. اضغط علىN، ثم علىEnter، وحاوِل تنفيذ الأمرgcloud config set projectمرة أخرى.
5- تفعيل واجهات برمجة التطبيقات
في الوحدة الطرفية، فعِّل واجهات برمجة التطبيقات:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
قد يستغرق تنفيذ هذا الأمر بضع دقائق، ولكن من المفترض أن يعرض في النهاية رسالة نجاح مشابهة لما يلي:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. إعداد Git
- اضبط عنوان البريد الإلكتروني لمستخدم git العام:
git config --global user.email "you@example.com" - اضبط اسم مستخدم git العام:
git config --global user.name "Your Name" - اضبط فرع git التلقائي العام على
main:git config --global init.defaultBranch main
7. كتابة الرمز
لكتابة تطبيق في Node.js، اتّبِع الخطوات التالية:
- انتقِل إلى دليل الصفحة الرئيسية:
cd ~ - أنشئ الدليل
codelab-genai:mkdir codelab-genai - انتقِل إلى الدليل
codelab-genai:cd codelab-genai - إنشاء ملف
index.js:touch index.js - أنشئ ملف
package.json:npm init es6 -y - إضافة
expressكعنصر تابعnpm install express - إضافة ملف
.gitignoreلمنع تنفيذnode_modulesecho node_modules/ >> .gitignore - افتح الملف
index.jsفي "محرِّر Cloud Shell": من المفترض أن يظهر ملف فارغ الآن في الجزء العلوي من الشاشة. هذا هو المكان الذي يمكنك فيه تعديل ملفcloudshell edit index.jsindex.jsهذا.
- انسخ الرمز التالي والصِقه في ملف
index.jsالذي تم فتحه: بعد بضع ثوانٍ، سيحفظ Cloud Shell Editor الرمز تلقائيًا. يستجيب هذا الرمز لطلبات http من خلال رسالة الترحيب "Hello world!".import express from 'express'; const app = express(); app.get('/', async (req, res) => { res.send('Hello world!'); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
تم الانتهاء من الرمز الأولي لتطبيقك وأصبح جاهزًا للتخزين في نظام التحكّم بالإصدارات.
8. إنشاء مستودع
- ارجع إلى نافذة Cloud Shell في أسفل الشاشة.
- تأكَّد من أنّك لا تزال في الدليل الصحيح:
cd ~/codelab-genai - إعداد مستودع git
git init -b main - تسجيل الدخول إلى GitHub CLI
اضغط علىgh auth loginEnterلقبول الخيارات التلقائية واتّبِع التعليمات في أداة GitHub CLI، بما في ذلك:- ما هو الحساب الذي تريد تسجيل الدخول إليه؟
GitHub.com - ما هو البروتوكول المفضّل لديك لتنفيذ عمليات Git على هذا المضيف؟
HTTPS - هل تريد مصادقة Git باستخدام بيانات اعتماد GitHub؟
Y(تخطَّ هذه الخطوة إذا لم يظهر هذا الخيار.) - كيف تريد مصادقة GitHub CLI؟
Login with a web browser - نسخ الرمز الذي يُستخدَم لمرة واحدة
- افتح https://github.com/login/device
- لصق الرمز الذي يُستخدَم لمرة واحدة
- انقر على تفويض github.
- إكمال عملية تسجيل الدخول
- ما هو الحساب الذي تريد تسجيل الدخول إليه؟
- تأكَّد من تسجيل الدخول باتّباع الخطوات التالية:
إذا سجّلت الدخول بنجاح، من المفترض أن يعرض هذا الأمر اسم مستخدم GitHub.gh api user -q ".login" - إنشاء متغيّر
GITHUB_USERNAMEGITHUB_USERNAME=$(gh api user -q ".login") - تأكَّد من إنشاء متغيّر البيئة:
إذا أنشأت المتغيّر بنجاح، من المفترض أن يعرض اسم مستخدم GitHub.echo ${GITHUB_USERNAME} - أنشئ مستودع GitHub فارغًا باسم
codelab-genai: إذا ظهرت لك رسالة الخطأ:gh repo create codelab-genai --private عندئذٍ سيكون لديك مستودع باسمGraphQL: Name already exists on this account (createRepository)
codelab-genai. لديك خياران لمواصلة اتّباع هذا البرنامج التعليمي:- حذف مستودع GitHub الحالي
- أنشئ مستودعًا باسم مختلف وتذكَّر تغييره في الأوامر التالية.
- أضِف مستودع
codelab-genaiباعتباره المستودع البعيدorigin:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9- مشاركة الرمز
- تأكَّد من أنّك في الدليل الصحيح:
cd ~/codelab-genai - إضافة جميع الملفات في الدليل الحالي إلى عملية الإيداع هذه:
git add . - أنشئ عملية الإيداع الأولى:
git commit -m "add http server" - ادفع عملية الدمج إلى فرع
mainفي مستودعorigin:git push -u origin main
يمكنك تشغيل هذا الأمر والانتقال إلى عنوان URL الناتج لعرض رمز تطبيقك على GitHub:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/index.js \n\n"
10. إعداد عمليات النشر التلقائية
- اترك علامة التبويب "محرِّر Cloud Shell" مفتوحة. سنعود إلى علامة التبويب هذه لاحقًا.
- في علامة تبويب جديدة، انتقِل إلى صفحة Cloud Run.
- اختَر مشروع Google Cloud الصحيح في وحدة التحكّم

- انقر على ربط مستودع.
- انقر على الإعداد باستخدام Cloud Build
- .
- اختَر GitHub كموفِّر المستودع
- إذا لم تكن مسجِّلاً الدخول إلى حسابك على GitHub في المتصفّح، سجِّل الدخول باستخدام بيانات الاعتماد.
- انقر على المصادقة، ثمّ انقر على متابعة.
- بعد تسجيل الدخول، ستظهر لك رسالة على صفحة Cloud Run تفيد بأنّه لم يتم تثبيت تطبيق GitHub على أي من مستودعاتك.
- انقر على الزر تثبيت Google Cloud Build.
- في صفحة "إعداد التثبيت"، اختَر اختيار المستودعات فقط واختَر المستودع codelab-genai الذي أنشأته من خلال واجهة سطر الأوامر.
- انقر على تثبيت.
- ملاحظة: إذا كان لديك الكثير من مستودعات GitHub، قد يستغرق تحميلها بضع دقائق.
- اختَر
your-user-name/codelab-genaiكـ المستودع- إذا لم يكن المستودع متاحًا، انقر على الرابط إدارة المستودعات المرتبطة.
- اترك الفرع على
^main$ - انقر على Go أو Node.js أو Python أو Java أو .NET Core أو Ruby أو PHP من خلال حِزم الإنشاء في Google Cloud
- اترك الحقول الأخرى (
Build context directoryوEntrypointوFunction target) كما هي.
- اترك الحقول الأخرى (
- انقر على حفظ.
- اختَر GitHub كموفِّر المستودع
- انتقِل للأسفل وصولاً إلى المصادقة
- انقر على السماح بعمليات الاستدعاء غير المصادَق عليها.
- انقر على إنشاء.
بعد انتهاء عملية الإنشاء (التي ستستغرق عدة دقائق)، نفِّذ هذا الأمر وانتقِل إلى عنوان URL الناتج لعرض تطبيقك قيد التشغيل:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. تغيير الرمز
الرجوع إلى Cloud Shell Editor
إذا كان Cloud Shell Editor لا يزال مفتوحًا، يمكنك تخطّي هذه الخطوات.
- انتقِل إلى محرّر Cloud Shell
- إذا لم تظهر النافذة الطرفية في أسفل الشاشة، افتحها باتّباع الخطوات التالية:
- انقر على قائمة الهامبرغر

- انقر على Terminal.
- انقر على نافذة طرفية جديدة
.
- انقر على قائمة الهامبرغر
- في الوحدة الطرفية، اضبط مشروعك باستخدام الأمر التالي:
- التنسيق:
gcloud config set project [PROJECT_ID] - مثال:
gcloud config set project lab-project-id-example - إذا تعذّر عليك تذكُّر رقم تعريف مشروعك، اتّبِع الخطوات التالية:
- يمكنك إدراج جميع أرقام تعريف المشاريع باستخدام:
gcloud projects list | awk '/PROJECT_ID/{print $2}'

- يمكنك إدراج جميع أرقام تعريف المشاريع باستخدام:
- التنسيق:
- إذا طُلب منك منح الإذن، انقر على منح الإذن للمتابعة.

- من المفترض أن تظهر لك هذه الرسالة:
إذا ظهرت لكUpdated property [core/project].
WARNINGوطُلب منكDo you want to continue (Y/N)?، من المحتمل أنّك أدخلت رقم تعريف المشروع بشكل غير صحيح. اضغط علىN، ثم علىEnter، وحاوِل تنفيذ الأمرgcloud config set projectمرة أخرى.
إضافة Genkit وVertex AI إلى تطبيقك
- ارجع إلى نافذة Cloud Shell في أسفل الشاشة.
- تأكَّد من أنّك لا تزال في الدليل الصحيح:
cd ~/codelab-genai - ثبِّت حزمة تطوير البرامج (SDK) الخاصة بـ Node.js Genkit:
npm install @genkit-ai/ai - ثبِّت حزمة تطوير البرامج Node.js Genkit في Vertex AI:
npm install @genkit-ai/vertexai - إعادة فتح
index.jsفي "محرِّر Cloud Shell"cloudshell edit ~/codelab-genai/index.js - استبدِل الرمز في ملف
index.jsبما يلي:import express from 'express'; const app = express(); import { genkit } from 'genkit'; import { gemini15Flash, vertexAI } from '@genkit-ai/vertexai'; const ai = genkit({ plugins: [ vertexAI({ location: 'us-central1' }), ], }); app.get('/', async (req, res) => { const animal = req.query.animal || 'dog'; const prompt = `Give me 10 fun facts about ${animal}. Return this as html without backticks.` const llmResponse = await ai.generate({ model: gemini15Flash, prompt: prompt, }); const html = llmResponse.text; res.send(html); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
- تأكَّد من أنّك لا تزال في الدليل الصحيح في Cloud Shell:
cd ~/codelab-genai - نفِّذ الأوامر التالية لتثبيت إصدار جديد من تطبيقك في مستودع git المحلي:
git add . git commit -m "add latest changes" - إرسال التغييرات إلى GitHub:
git push - بعد الانتهاء من إنشاء الإصدار، شغِّل الأمر التالي وانتقِل إلى تطبيقك الذي تم نشره:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
قد يستغرق اكتمال الإصدار عدة دقائق قبل أن تتمكّن من رؤية التغييرات.
يمكنك الاطّلاع على سجلّ جميع المراجعات هنا: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
12. (اختياري) استخدام ملفات .prompt مع Genkit
- ارجع إلى نافذة Cloud Shell في أسفل الشاشة.
- تأكَّد من أنّك لا تزال في الدليل الصحيح:
cd ~/codelab-genai - أنشئ مجلدًا
promptsلتخزين طلباتك:mkdir prompts - أنشئ ملف
animal-facts.promptلإنشاء طلبك الأول:touch prompts/animal-facts.prompt - افتح الملف
animal-facts.promptفي "محرِّر Cloud Shell":cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt - عدِّل ملف
animal-facts.promptوالصِق الرمز التالي فيه:--- model: vertexai/gemini-1.5-flash input: schema: animal: string --- Give me 10 fun facts about {{animal}}. Return the results as HTML without markdown backticks. - افتح الملف
index.jsفي "محرِّر Cloud Shell":cloudshell edit ~/codelab-genai/index.js - استبدِل الرمز في ملف
index.jsبما يلي:import express from 'express'; const app = express(); import { genkit } from 'genkit'; import { vertexAI } from '@genkit-ai/vertexai'; const ai = genkit({ plugins: [ vertexAI({ location: 'us-central1' }), ], }); app.get('/', async (req, res) => { const animal = req.query.animal || 'dog'; const animalPrompt = ai.prompt('animal-facts'); const llmResponse = await animalPrompt({animal}); const html = llmResponse.text; res.send(html); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
- تأكَّد من أنّك لا تزال في الدليل الصحيح في Cloud Shell:
cd ~/codelab-genai - نفِّذ الأوامر التالية لتثبيت إصدار جديد من تطبيقك في مستودع git المحلي:
git add . git commit -m "add latest changes" - إرسال التغييرات إلى GitHub:
git push - بعد الانتهاء من إنشاء الإصدار، شغِّل الأمر التالي وانتقِل إلى تطبيقك الذي تم نشره:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
قد يستغرق اكتمال الإصدار عدة دقائق قبل أن تتمكّن من رؤية التغييرات.
يمكنك الاطّلاع على سجلّ جميع المراجعات هنا: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (اختياري) استخدام طلبات النظام
تفترض هذه الخطوة أنّك أضفت ملفات .prompt في الخطوة السابقة.
- ارجع إلى نافذة Cloud Shell في أسفل الشاشة.
- تأكَّد من أنّك لا تزال في الدليل الصحيح:
cd ~/codelab-genai - افتح الملف
animal-facts.promptفي "محرِّر Cloud Shell":cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt - عدِّل ملف
animal-facts.promptوالصِق الرمز التالي فيه:--- model: vertexai/gemini-1.5-flash config: temperature: 0.9 input: schema: animal: string --- role "system" The user should have submitted an animal. If the user requests anything besides animal fun facts, respond in a kind and firm manner that you only provide information about fun facts. Give the user 10 fun facts about the animal the user provided. All responses should be valid HTML without markdown backticks. role "user" {{animal}}
- تأكَّد من أنّك لا تزال في الدليل الصحيح في Cloud Shell:
cd ~/codelab-genai - نفِّذ الأوامر التالية لتثبيت إصدار جديد من تطبيقك في مستودع git المحلي:
git add . git commit -m "add latest changes" - إرسال التغييرات إلى GitHub:
git push - بعد الانتهاء من إنشاء الإصدار، شغِّل الأمر التالي وانتقِل إلى تطبيقك الذي تم نشره:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
قد يستغرق اكتمال الإصدار عدة دقائق قبل أن تتمكّن من رؤية التغييرات.
يمكنك الاطّلاع على سجلّ جميع المراجعات هنا: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
14. تهانينا
في هذا المختبر، كتبت تطبيق ويب وأعددت Cloud Run لنشر تطبيقك تلقائيًا عند إجراء تغيير على الرمز المصدر لتطبيقك. بعد ذلك، عدّلت تطبيقك ونشرته مرة أخرى.
إذا استمتعت بهذا المختبر، يمكنك تجربته مرة أخرى بلغة ترميز أو إطار عمل آخرَين:
في ما يلي بعض الخيارات لمواصلة التعلّم:
- مستندات Genkit: بدء الاستخدام
- درس تطبيقي حول إضافة إمكانية المراقبة إلى تطبيق Node.js: تقنيات عملية للمراقبة في تطبيق الذكاء الاصطناعي التوليدي باستخدام JavaScript
- درس تطبيقي حول الترميز لإضافة واجهة أمامية إلى تطبيقك باستخدام Next.js: نشر تطبيق ويب تلقائيًا باستخدام الذكاء الاصطناعي التوليدي وNext.js من نظام التحكم في الإصدارات إلى Cloud Run
- Codelab يوضّح كيفية استخدام ميزة "استدعاء الدوال": كيفية استخدام ميزة "استدعاء الدوال" في Gemini مع Cloud Run
- درس تطبيقي حول استخدام الذكاء الاصطناعي لمعالجة محتوى الفيديو: كيفية استخدام Cloud Run Jobs Video Intelligence API لمعالجة مشهد فيديو تلو الآخر