1. مقدمة
في هذا التمرين، ستستخدم Gemini، وهو أداة تعاون مستندة إلى الذكاء الاصطناعي (AI) في Google Cloud، بهدف تحديد المشاكل المتعلقة بنشر "الوظيفة السحابية" وحلّها، وذلك من خلال تحليل سجلّات الأخطاء وتحديد السبب الأساسي للمشكلة ومعرفة كيفية حلّها.
ما ستفعله...
- ستستخدم Cloud Shell Terminal وgcloud CLI لإعداد البيئة، بما في ذلك تفعيل واجهات Google APIs ذات الصلة وإنشاء دالة Cloud من الرمز المقدّم.
- ستستخدم تلخيص سجلات Cloud Logging لإنشاء ملخصات السجلات لفهم المعلومات التي تم التقاطها.
- ستتم الدردشة مع Gemini للحصول على مساعدة Gemini في تحديد المشاكل وحلّها.
المعلومات التي ستطّلع عليها
- كيفية استخدام Gemini من خلال Google Cloud Observerability، وتحديد المشاكل وحلّها
- كيفية العثور على سجلّات Cloud Function وفهمها بمساعدة Gemini
ما ستحتاجه...
- متصفح الويب Chrome
- مشروع على Google Cloud تم تفعيل الفوترة فيه
- حساب Google لديه أذونات الوصول إلى المشروع مما يسمح لك بتفعيل واجهات برمجة التطبيقات ومعالجة الموارد
يستهدف هذا التمرين المعملي DevOps ومهندسي المنصات ومطوّري البرامج من جميع المستويات، بما في ذلك المبتدئين. سينصب تركيزنا على اكتساب خبرة عملية باستخدام إمكانات Gemini في تحديد المشاكل وحلّها.
2. ضبط إعدادات الجهاز
يتناول هذا القسم كل الإجراءات المطلوبة للبدء في هذا التمرين.
إعداد البيئة
1. سجِّل الدخول إلى Cloud Console من خلال فتح https://console.cloud.google.com.
2. اختَر المشروع على Google Cloud الذي تريد العمل عليه لهذا الدرس التطبيقي.
3. افتح صفحة "دوال السحابة الإلكترونية" في Console. يمكنك إجراء ذلك من خلال اختيار "وظائف السحابة الإلكترونية" من قائمة التنقّل (الرمز في أعلى يمين الشاشة ⇧ في نافذة "وحدة التحكّم").
يمكنك بدلاً من ذلك البحث عن "دوال السحابة الإلكترونية" في قسم البحث بوحدة التحكم:
انقر على الزر "إنشاء دالة" في أعلى قائمة الدوال .
إذا لم يسبق لك استخدام Cloud Functions في هذا المشروع، سيُطلب منك تفعيل Google APIs لتنفيذ ذلك.
انقر على "تفعيل" للمتابعة.
4. حدِّد الخصائص الأساسية لدالة Cloud الجديدة.
- ضبط الاسم ليكون "
codelab-cf
" - حدِّد الخيار السماح بالاستدعاءات غير المُصدَّق عليها
لإكمال الخطوة، انقر على زر "التالي" في أسفل يمين النافذة:
بعد النقر على "التالي"، قد يُطلب منك تفعيل واجهات برمجة تطبيقات Google API إضافية. كما في الخطوة 4، انقر على "تفعيل".
إعداد بيئة التشغيل والرمز البرمجي لوظيفة السحابة الإلكترونية
يستخدم مختبر CodeLab لغة Python كلغة برمجة. لا تقلق إذا لم تكن معتادًا على استخدام Python. لإكمال برنامج CodeLab هذا، لن تحتاج إلى معرفة لغة Python.
5. حدد Python 3.11 ليكون وقت تشغيل الدالة
تجدر الإشارة إلى أنّ التغيير في بيئة التشغيل يؤدي إلى تغيير رمز المصدر الذي يظهر في "المحرّر المضمَّن".
6. انسخ الرمز أدناه إلى "المحرّر المضمّن" لتعديل مثال البدء السريع الذي يتم إنشاؤه تلقائيًا.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
يقرأ هذا الرمز السمة path
من طلب GET، ويحلّل المسار لاختيار اسم الحزمة ويطلب من Google Cloud Storage API للحصول على قائمة بالكائنات المخزّنة في هذا المسار. تقبل الدالة (get_object_list
) طلبًا، وهو كائن Flask كوسيطة إدخال وتعرض أسماء العناصر في شكل مصفوفة JSON.
7. اختَر ملف requirements.txt
من قائمة الملفات المتبقية في "المحرّر المضمَّن". استبدل القائمة الحالية للتبعيات بالقائمة الجديدة عن طريق نسخ الكود أدناه إلى "المحرر المضمن".
google-cloud-storage
8. لتفعيل Cloud Function، انقر على "DEPLOY" في أسفل يمين الصفحة.
قد تحتاج إلى الانتظار بضع دقائق حتى تكتمل عملية النشر. إذا اتّبعت تعليمات الإعداد بدقة، من المفترض أن ترى الإبلاغ عن عملية النشر على أنّها فشلت.
3- إيجاد المشكلة وحلها
في هذا القسم، ستستخدم ميزة "تفسيرات السجلّ" وغيرها من أدوات Gemini المساعِدة لتحديد المشكلة وطريقة حلّها.
1. تعذّر النشر. من المفترض أن تظهر لك رسالة خطأ تخبرك بذلك بالإضافة إلى معلومات إضافية وخيار للاطّلاع على سجلات النشر. انقر على "عرض السجلات" للاطّلاع على سجلات النشر.
وتجدر الإشارة إلى أنّه سيتم فتح سجلات النشر في علامة تبويب منفصلة في المتصفح نفسه. ستحتاج إلى التنقّل بين علامات التبويب لإكمال برنامج CodeLab.
ملاحظة: قد لا تظهر لك أسطر السجلّ عند النقر على "عرض السجلات" أو قد يظهر سطران فقط. في مثل هذا الحدث، استخدِم أداة اختيار النطاق الزمني في جزء طلب البحث في "مستكشف السجلّ" واختَر آخر 30 دقيقة.
2. راجِع السجلّات في علامة التبويب المفتوحة. انتبه إلى أن ملخصات السجلات تبدو مثل أسطر متعددة من استدعاءات الاستثناء. ويرجع ذلك إلى أنّ "الدالة السحابية" تلتقط النص المطبوع على stdout
أو stderr
وتكتب كل سطر كإدخال سجلّ منفصل. تلخّص أسطر السجلّ الأخرى معلومات حول رمز خطأ الخروج، بالإضافة إلى المعلومات الإضافية التي تم الإبلاغ عنها من خلال دوال Cloud وواجهات برمجة تطبيقات Cloud Run.
يمكنك النقر على أي سطر من الأسطر للاطلاع على مزيد من المعلومات حول سجل معين. تحتوي السجلّات الموسّعة على عناصر إضافية في واجهة المستخدم يمكن النقر عليها، ما يتيح لك نسخ جميع المعلومات المتعلقة بالسجلّ، وتوسيع جميع الحقول لعرض جميع بيانات إدخال السجلّ، وشرح إدخال السجلّ باستخدام Gemini.
4. استدعاءات الاستثناء ليس مفيدًا للغاية. ابحث في السجلات للعثور على نهاية سجل تتبُّع تسلسل استدعاء الدوال البرمجية للاستثناء. إنه السطر الذي يقول "Container called exit(1)
". يوضِّح ملخّص السجلّ التالي:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
يبدو أنه مرشح جيد للتحقيق. انقر على هذا السطر لتوسيع إدخال السجلّ. بعد ذلك، انقر على "شرح إدخال السجلّ هذا". للاطّلاع على معلومات إضافية عن السجلّ المحدَّد.
في حال عدم استخدام Gemini في السابق ضمن هذا المشروع، سيُطلب منك تفعيل واجهة برمجة تطبيقات مطلوبة. إذا طُلب منك تفعيل واجهة برمجة التطبيقات، انقر على "تفعيل" للمتابعة.
يُرجى العِلم أنّه قد تظهر لك أحيانًا رسالة خطأ عند طلب المساعدة من Gemini. في مثل هذا الحدث، كرِّر عملية الطلب مرة أخرى للحصول على الردّ. على سبيل المثال، انقر على شرح إدخال السجلّ هذا. مرة أخرى.
5. مراجعة التفسير من Gemini إذا لم يكن التفسير المقدَّم كافيًا أو غير واضح، يُرجى الطلب من Gemini تقديم المزيد من المعلومات باستخدام أحد الطلبات التالية أو من خلال كتابة سؤالك الخاص.
هل يمكنك تقديم المزيد من المعلومات حول هذا السجلّ؟
هل يمكنك تقديم المزيد من المعلومات حول الخطأ؟
6. بعد ذلك، اطلب من Gemini تقديم اقتراحات لحلّ المشكلة. على سبيل المثال، توجيه طلب إلى Gemini
كيف يمكن حل هذه المشكلة؟
اقتراح حل لحل هذا الخطأ
اقتراح كيفية إصلاح هذا الخطأ
قد يختلف ردّ Gemini بناءً على السياق الحالي وصياغة طلبك وتنسيقه. من المتوقّع أن ينصح Gemini بالتأكّد من أنّ رمز المصدر لوظيفة السحابة الإلكترونية يعمل بالاسم hello_http
.
7. تظهر لك حاليًا علامة التبويب التي تعرض سجلات Cloud Functions. اختَر علامة التبويب السابقة التي تعرض صفحة نشر "الدالة السحابية" مع الخطأ، ثم انقر على "تعديل".
8. تأكَّد من استمرار ضبط المصادقة على السماح بالاستدعاءات التي لم تتم مصادقتها وتعديل الاختيار إذا لزم الأمر.
9. انقر على "التالي" في أسفل الصفحة للاطّلاع على "المحرّر المضمَّن". اتّبِع اقتراح Gemini وغيِّر اسم الدالة من get_order_list
إلى hello_http
.
بعد الانتهاء من التعديل، انقر على DEPLOY.
قد تحتاج إلى الانتظار بضع دقائق حتى تكتمل عملية النشر. تأكَّد من اكتمال عملية النشر بنجاح وأنّه لا تظهر أي رسائل خطأ.
ملاحظة: قد تستمر وحدة التحكّم في عرض رسالة الخطأ الأخيرة إلى أن تكتمل عملية النشر.
10. تأكّد من أن دالة السحابة الإلكترونية تعمل من خلال إرسال طلب HTTPS التالي باستخدام curl
. يمكنك استخدام Cloud Shell أو تنفيذ ذلك من أي وحدة طرفية تتضمّن curl
وgcloud
CLI مُثبَّتًا.ينفِّذ الأمر التالي من Cloud Shell Terminal.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
تجدر الإشارة إلى أنّ تشغيل هذا الأمر من وحدة طرفية يتطلّب المصادقة باستخدام gcloud CLI وضبط قيمة رقم تعريف مشروعك على متغيّر البيئة GOOGLE_CLOUD_PROJECT
.
مكافأة
تم تحديد اسم الدالة hello_http
كنقطة إدخال تلقائية لدالة السحابة الإلكترونية التي تشغِّل HTTP عند اختيار بيئة تشغيل Python. يمكن أن يكون الحل البديل هو الاحتفاظ بـ get_order_list
كاسم للدالة في رمز المصدر وتعديل حقل نقطة الدخول لـ "دالة السحابة الإلكترونية" الواقع أعلى "المحرّر المضمّن" على اليسار من حقل "بيئة التشغيل":
سيؤدي تغيير نقطة الدخول من hello_http
إلى get_order_list
إلى حلّ المشكلة المتعلقة بالنشر.
4. تنظيف
لإزالة البيانات غير المرغوب فيها، يمكنك إيقاف المشروع أو حذف مثيل Cloud Function. يمكنك حذف دوال Cloud باستخدام Console أو باستخدام أمر CLI على النحو التالي:
gcloud functions delete codelab-cf --region=us-central1
5- تهانينا
تهانينا، لقد تمكّنت من استخدام Gemini بنجاح لتحديد المشاكل وحلّها وحلّ المشكلة في طلبك، وأصبح بإمكانك الآن مساعدتك في فهم السجلّات والحصول على إجابات عن أسئلة حول Google Cloud.