Building Applications in the AI Era

1. نظرة عامة

في هذا البرنامج التدريبي، ستستخدم منتجات الذكاء الاصطناعي التوليدي من Google لإنشاء بنية أساسية في Google Cloud بمساعدة Gemini Cloud Assist، وستستعلم عن بيانات BigQuery باستخدام اللغة الطبيعية في ميزات SQL في Data Canvas، وستكتب الرموز البرمجية في دفاتر ملاحظات Jupyter في Colab Enterprise وفي Eclipse Theia (Visual Studio Code) بمساعدة Gemini Code Assist، وستدمج ميزات البحث والدردشة المستندة إلى الذكاء الاصطناعي والمستندة إلى Cloud Storage ومصادر BigQuery الأساسية في Vertex AI Agent Builder.

هدفنا هو إنشاء موقع إلكتروني للوصفات والطبخ باسم AI Recipe Haven. سيتم إنشاء الموقع الإلكتروني باستخدام Python وStreamlit وسيتضمّن صفحتَين رئيسيتين. سيستضيف Cooking Advice برنامجًا محادثيًا سننشئه باستخدام Gemini وVertex AI Agent Builder، وسيقدّم البرنامج نصائح حول الطبخ ويجيب عن الأسئلة المتعلّقة به، وذلك استنادًا إلى مجموعة من كتب الطبخ. سيكون "بحث الوصفات" محرّك بحث يغذّيه Gemini، وسيستند هذه المرة إلى قاعدة بيانات الوصفات في BigQuery.

إذا واجهت مشكلة في أيّ من الرموز البرمجية في هذا التمرين، يمكنك العثور على حلول لجميع ملفات الرموز البرمجية في مستودع GitHub الخاص بالتمرين في فرع solution.

الأهداف

في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ المهام التالية:

  • تفعيل ميزة "مساعِد السحابة الإلكترونية" في Gemini واستخدامها
  • إنشاء تطبيق بحث في Vertex AI Agent Builder لمحادثة بوت تقديم النصائح حول الطهي
  • تحميل البيانات وتنظيفها في دفتر ملاحظات Colab Enterprise، بمساعدة Gemini Code Assist
  • إنشاء تطبيق بحث في Vertex AI Agent Builder لتطبيق إنشاء الوصفات
  • تحديد إطار تطبيق الويب الأساسي المكتوب بلغة Python وStreamlit، مع الاستفادة من بعض ميزات Gemini
  • نشر تطبيق الويب على Cloud Run
  • ربط صفحة "نصائح الطبخ" بتطبيق "أداة إنشاء موظّفي الدعم" الذي يبحث في كتب الطبخ
  • (اختياري) ربط صفحة "بحث الوصفات" بتطبيق "أداة إنشاء موظّفي الدعم" المخصّص للبحث عن الوصفات
  • (اختياري) استكشاف الطلب النهائي

2. المتطلبات الأساسية

  1. إذا لم يكن لديك حساب على Google، عليك إنشاء حساب على Google.
    • استخدام حساب شخصي بدلاً من حساب عمل أو حساب تديره مؤسسة تعليمية قد تفرض حسابات العمل والحسابات التي تديرها المؤسسات التعليمية قيودًا تمنعك من تفعيل واجهات برمجة التطبيقات اللازمة لهذا الدرس التطبيقي.

3- إعداد المشروع

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

4. تفعيل ميزة "مساعِد السحابة الإلكترونية" في Gemini واستخدامها

في هذه المهمة، سنفعّل ميزة "مساعِد السحابة الإلكترونية" في Gemini ونستخدمها. أثناء العمل في Google Cloud Console، يمكن أن تقدّم لك ميزة Gemini Cloud Assist نصائح وتساعدك في إنشاء البنية الأساسية في Google Cloud وضبطها ومراقبتها، ويمكنها أيضًا اقتراح أوامر gcloud وكتابة نصوص Terraform البرمجية.

  1. لتفعيل Cloud Assist لاستخدامها، انقر على مربّع البحث في أعلى واجهة مستخدم Cloud Console واختَر طلب المساعدة من Gemini أو طلب المساعدة من Gemini بشأن Cloud Console.
  2. انتقِل إلى قسم "واجهة برمجة التطبيقات المطلوبة" في الصفحة وفعِّل Gemini for Google Cloud API.
  3. إذا لم تظهر لك واجهة المحادثة على الفور، انقر على بدء المحادثة. ابدأ بطلب من Gemini شرح بعض مزايا استخدام "محرر Cloud Shell". يُرجى تخصيص بضع دقائق لاستكشاف الردّ الذي تم إنشاؤه.
  4. بعد ذلك، اسأل عن مزايا "أداة إنشاء موظّفي الدعم" وكيفية مساعدتها في وضع أسس الردود التوليدية.
  5. أخيرًا، لنلقِ نظرة على مقارنة. في نافذة محادثة Gemini ضمن Google Cloud Console، اطرح السؤال التالي:
    What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
    

5- إنشاء تطبيق بحث في Vertex AI Agent Builder لمحادثة بوت تقديم النصائح حول الطهي

سيتضمّن الموقع الإلكتروني الذي ننشئه صفحة نصائح للطهي تحتوي على محادثة آلية مصمّمة لمساعدة المستخدمين في العثور على إجابات عن الأسئلة المتعلّقة بالطبخ. وسيستند هذا التطبيق إلى Gemini، وسيتضمّن مصدرًا يحتوي على 70 كتاب طبخ متاحًا للجميع. ستكون كتب الطبخ بمثابة مصدر المعلومات الذي يستخدمه Gemini عند الإجابة عن الأسئلة.

  1. استخدِم مربّع البحث في Cloud Console للانتقال إلى Vertex AI. من لوحة البيانات، انقر على تفعيل جميع واجهات برمجة التطبيقات المقترَحة. قد تستغرق هذه العملية بضع دقائق. إذا ظهرت لك نافذة منبثقة تفيد بأنّ واجهة برمجة التطبيقات Vertex AI API نفسها بحاجة إلى التفعيل، يُرجى تفعيل هذه الواجهة أيضًا. بعد تفعيل واجهات برمجة التطبيقات، يمكنك الانتقال إلى الخطوة التالية.
  2. استخدِم ميزة البحث للانتقال إلى Agent Builder ثم متابعة وتفعيل واجهة برمجة التطبيقات.
  3. كما اقترحت "جيميني" في طلبنا السابق للحصول على النصائح، يبدأ إنشاء تطبيق بحث في "أداة إنشاء موظّفي الدعم" من خلال إنشاء مصدر بيانات موثوق. عندما يبحث المستخدم، يفهم Gemini السؤال وكيفية إنشاء ردود ذكية، ولكنه سيبحث عن المصدر الموثوق بالمعلومات المستخدَمة في هذا الردّ، بدلاً من الاعتماد على معلوماته الأساسية.من القائمة اليمنى، انتقِل إلى مستودعات البيانات وإنشاء مستودع بيانات.
  4. إنّ كتب الطبخ المتاحة للجميع التي نستخدمها لإنشاء صفحة نصائح الطبخ متوفّرة حاليًا في حزمة Cloud Storage في مشروع خارجي. اختَر نوع مصدر Cloud Storage.
  5. راجِع الخيارات التلقائية ذات الصلة بنوع المعلومات التي نستوردها، ولكن لا تغيّرها. اترك نوع الاستيراد مضبوطًا على مجلد، واستخدم labs.roitraining.com/labs/old-cookbooks لمسار الحزمة، ثم انقر على متابعة.
  6. أدخِل اسمًا لمستودع البيانات: old-cookbooks. انقر على تعديل وغيِّر المعرّف إلى old-cookbooks-id وأنشئ مستودع البيانات.

يتيح Vertex AI Agent Builder استخدام عدة أنواع من التطبيقات، ويعمل "مخزّن البيانات" كمصدر للحقائق لكل تطبيق. تطبيقات البحث جيدة للاستخدام العام والبحث. تطبيقات Chat مخصّصة للعمليات التوليدية في تطبيقات chatbot/voicebot المستندة إلى Dataflow. تساعد تطبيقات الاقتراحات في إنشاء محركات اقتراحات أفضل. وتطبيقات موظّفي الدعم مخصّصة لإنشاء موظّفي دعم مستندين إلى الذكاء الاصطناعي التوليدي. في النهاية، من المحتمل أن يكون "موظّف الدعم" هو الخيار الأنسب لنا في ما نريد تنفيذه، ولكن بما أنّ المنتج قيد المعاينة حاليًا، سنلتزم بنوع "تطبيق بحث".

  1. استخدِم القائمة على يمين الصفحة للانتقال إلى التطبيقات، ثم انقر على إنشاء تطبيق جديد.
  2. انقر على إنشاء في بطاقة البحث عن موقعك الإلكتروني. أدخِل اسمًا للتطبيق cookbook-search. انقر على تعديل واضبط رقم تعريف التطبيق على cookbook-search-id. اضبط الشركة على Google وانقر على متابعة.
  3. تحقّق من مستودع البيانات old-cookbooks الذي أنشأته قبل بضع خطوات وأنشئ تطبيق البحث.

إذا اطّلعت على علامة التبويب النشاط، من المرجّح أن ترى أنّه لا يزال يتم استيراد كتب الطبخ وفهرستها. ستستغرق عملية فهرسة آلاف الصفحات في 70 كتاب طبخ قدّمناها إلى Agent Builder أكثر من 5 دقائق. أثناء العمل على ذلك، لنحمِّل بعض بيانات قاعدة بيانات الوصفات ونُنظّفها لتطبيق "أداة إنشاء الوصفات".

6- تحميل البيانات وتنظيفها في دفتر ملاحظات Colab Enterprise، بمساعدة Gemini Code Assist

توفّر Google Cloud طريقتَين رئيسيتين يمكنك من خلالهما العمل مع دفاتر ملاحظات Jupyter. سنستخدم أحدث منتج من Google، وهو Colab Enterprise. قد يكون بعضكم على دراية بمنتج Colab من Google، والذي يستخدمه عادةً الأفراد والمؤسسات الذين يريدون تجربة أوراق ملاحظات Jupyter في بيئة مجانية. ‫Colab Enterprise هو عرض تجاري من Google Cloud مدمج بالكامل مع بقية منتجات السحابة الإلكترونية من Google، ويستفيد بالكامل من إمكانات الأمان والامتثال لبيئة Google Cloud Platform.

من الميزات التي يوفّرها إصدار Colab Enterprise هي الدمج مع ميزة "مساعدة الرموز البرمجية" في Gemini من Google. يمكن استخدام ميزة "مساعدة في الترميز" في عدد من برامج تعديل الرموز البرمجية المختلفة، ويمكن أن تقدّم لك النصائح بالإضافة إلى اقتراحات مضمّنة سلسة أثناء كتابة الرموز البرمجية. سنستفيد من هذا المساعد التوليدي أثناء معالجة بيانات الوصفات.

  1. استخدِم ميزة البحث للانتقال إلى Colab Enterprise وانقر على إنشاء دفتر ملاحظات. إذا تلقّيت عرضًا لتجربة ميزات جديدة في Colab، ارفض العرض. للحصول على وقت التشغيل، وهو طاقة الحوسبة التي تشغّل دفتر الملاحظات، انقر على ربط في أعلى يسار دفتر الملاحظات الجديد.ربط
  2. انقر على ملف > إعادة تسمية لإعادة تسمية دفتر الملاحظات إلى Data Wrangling.إعادة التسمية من خلال النقر على رمز النقاط الثلاث
  3. انقر على + نص لإنشاء مربّع نص جديد، واستخدِم السهم المتّجه للأعلى لنقله ليصبح الخلية الأولى في الصفحة.+ النص والسهم المتّجه للأعلى
  4. عدِّل مربّع النص وأدخِل ما يلي:
    # Data Wrangling
    
    Import the Pandas library
    
  5. في مجموعة الرموز البرمجية أسفل مجموعة النصوص التي أنشأتها للتو، ابدأ بكتابة imp ومن المفترض أن تقترح ميزة "مساعدة الرموز البرمجية" في Gemini بقية عملية الاستيراد باللون الرمادي. اضغط على مفتاح التبويب (Tab) لقبول الاقتراح.
    import pandas as pd
    
  6. أسفل مربّع رمز الاستيراد، أنشئ مربّع نص آخر وأدخِل ما يلي:
    Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
    
  7. أنشئ مجموعة أخرى من الرموز البرمجية وعدِّلها. مرة أخرى، ابدأ بكتابة df = وتحقّق من الرمز الذي أنشأه Gemini Code Assistant. إذا ظهرت لك قائمة منسدلة للإكمال التلقائي للكلمات الرئيسية في Python فوق الاقتراح الذي تم إنشاؤه، اضغط على مفتاح Escape لعرض الرمز البرمجي المقترَح باللون الرمادي الفاتح. اضغط مرة أخرى على مفتاح التبويب (Tab) لقبول الاقتراح. إذا لم يتضمّن اقتراحك طلب دالة head()، أضِفه.
    df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
    df.head()
    
  8. انقر على خلية الرمز البرمجي الأولى التي استوردت Pandas إليها، واستخدِم قائمة الطلبات أو لوحة المفاتيح لتشغيل الخلية المحدّدة. على لوحة المفاتيح، يؤدي shift+enter إلى تنفيذ الخلية ونقل التركيز إلى الخلية التالية، وإنشاء خلية إذا لزم الأمر. انتظِر تنفيذ الخلية قبل الانتقال إلى الخطوة التالية.ملاحظة: سيظهر لك [ ] على يمين الخلية عندما لا يتم تنفيذها. أثناء تنفيذ خلية، ستظهر لك صورة متحركة تدور. بعد اكتمال الخلية، سيظهر رقم، مثل [13].
  9. نفِّذ الخلية التي تحمِّل ملف CSV إلى إطار البيانات. انتظِر تحميل الملف وفحص الصفوف الخمسة الأولى من البيانات. هذه هي بيانات الوصفات التي سنحمّلها إلى BigQuery، وسنستخدمها في النهاية لإنشاء أداة إنشاء الوصفات.
  10. أنشئ كتلة تعليمة برمجية جديدة وأدخِل التعليق أدناه. بعد كتابة التعليق، انتقِل إلى سطر الرمز البرمجي التالي ومن المفترض أن يظهر لك الاقتراح df.columns. اقبل التغييرات ثم نفِّذ الخلية.
    # List the current DataFrame column names
    
    لقد شرحنا للتو أنّ لديك خيارَين للحصول على مساعدة من ميزة "مساعدة ترميز Gemini" في دفتر ملاحظات Jupyter: خلايا نصية فوق خلايا الرموز البرمجية أو تعليقات داخل خلية الرمز البرمجي نفسها. تعمل التعليقات داخل خلايا الرموز البرمجية بشكل جيد في دفاتر ملاحظات Jupyter، ولكن سيعمل هذا الأسلوب أيضًا في أي بيئة تطوير متكاملة أخرى تتيح ميزة "مساعدة ترميز Gemini" من Google.
  11. لننظّف الأعمدة قليلاً. أعِد تسمية العمود Unnamed: 0 إلى id، والعمود link إلى uri. استخدِم تقنيات الطلب > الرمز البرمجي التي تختارها لإنشاء الرمز، ثم نفِّذ الخلية عند الرضا عن النتيجة.
    # Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri'
    df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True)
    
  12. أزِل عمودَي source وNER واستخدِم head() لعرض الصفوف القليلة الأولى. يمكنك مرة أخرى طلب المساعدة من فريق Gemini. شغِّل السطرَين الأخيرَين وراجِع النتائج.
    # Remove the source and NER columns
    df.drop(columns=['source', 'NER'], inplace=True)
    df.head()
    
  13. لنطّلِع على عدد السجلات في مجموعة البيانات. مرة أخرى، ابدأ باختيار أسلوب الطلب ومعرفة ما إذا كان بإمكانك الاستعانة بـ Gemini لمساعدتك في إنشاء الرمز.
    # Count the records in the DataFrame
    df.shape # count() will also work
    
  14. 2.23 مليون سجلّ هو على الأرجح عدد وصفات أكثر من الوقت الذي يمكننا استخدامه. من المرجّح أن تستغرق عملية الفهرسة في "أداة إنشاء موظّفي الدعم" وقتًا طويلاً جدًا لتنفيذ التمرين اليوم. كحل وسط، لنأخذ عيّنة من 150,000 وصفة ونعمل على أساسها. استخدِم أسلوب الطلب > الرمز البرمجي لأخذ العيّنة وتخزينها في إطار بيانات جديد باسم dfs (s للحجم الصغير).
    # Sample out 150,000 records into a DataFrame named dfs
    dfs = df.sample(n=150000)
    
  15. أصبحت بيانات مصدر الوصفات جاهزة للتحميل إلى BigQuery. قبل التحميل، لننتقل إلى BigQuery ونُعدّ مجموعة بيانات لاستضافة جدولنا. في Google Cloud Console، استخدِم مربّع البحث للانتقال إلى BigQuery. يمكنك النقر بزر الماوس الأيمن على BigQuery وفتحه في علامة تبويب جديدة في المتصفّح.
  16. افتح لوحة المحادثة المستندة إلى الذكاء الاصطناعي في Gemini باستخدام شعار Gemini في أعلى يسار Cloud Console إذا لم تكن ظاهرة. إذا طُلب منك تفعيل واجهة برمجة التطبيقات مرة أخرى، اضغط على تفعيل أو أعِد تحميل الصفحة. شغِّل الطلب: What is a dataset used for in BigQuery? بعد استكشاف طلب الردّ، How can I create a dataset named recipe_data using the Cloud Console? قارِن النتائج بالخطوات القليلة التالية.فتح Gemini Cloud Assist
  17. في لوحة BigQuery Explorer (مستكشف BigQuery)، انقر على قائمة النقاط الثلاث عرض الإجراءات بجانب رقم تعريف مشروعك. بعد ذلك، اختَر إنشاء مجموعة بيانات.استكشاف إجراءات "العرض"
  18. أدخِل مجموعة البيانات ورقم تعريف recipe_data. اترك نوع الموقع الجغرافي على الولايات المتحدة وإنشاء مجموعة بيانات. إذا ظهرت لك رسالة خطأ تفيد بأنّ مجموعة البيانات متوفّرة، ما عليك سوى الانتقال إلى الخطوة التالية.بعد إنشاء مجموعة البيانات في BigQuery، لننتقل إلى دفتر البيانات ونُجري عملية الإدراج.
  19. ارجع إلى "دفتر ملاحظات معالجة البيانات" في Colab Enterprise. في خلية رمز جديدة، أنشئ متغيّرًا باسم project_id واستخدِمه لتخزين رقم تعريف مشروعك الحالي. ابحث في أعلى يمين هذه التعليمات، أسفل زر "إنهاء التجربة"، وستجد رقم تعريف المشروع الحالي. يمكنك أيضًا العثور عليه في الصفحة الرئيسية في Cloud Console. حدِّد القيمة في متغيّر project_id وشغِّل الخلية.
    # Create a variable to hold the current project_id
    project_id='YOUR_PROJECT_ID'
    
  20. استخدِم أسلوب الطلب > الرمز البرمجي لإنشاء مجموعة من الرموز البرمجية التي ستُدخِل إطار البيانات dfs في جدول باسم recipes في مجموعة البيانات التي أنشأناها للتو recipe_data. شغِّل الخلية.
    dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
    

7- إنشاء تطبيق بحث في Vertex AI Agent Builder لتطبيق إنشاء الوصفات

رائع، بعد إنشاء جدول بيانات الوصفات، لنستخدمه لإنشاء مصدر بيانات مستند إلى الحقائق لتطبيق إنشاء الوصفات. سيكون النهج الذي سنستخدمه مشابهًا لما فعلناه مع برنامجنا الحواري للطبخ. سنستخدم Vertex AI Agent Builder لإنشاء "مستودع بيانات"، ثم سنستخدمه كمصدر معلومات لتطبيق بحث.

إذا أردت، يمكنك أن تطلب من Gemini في Google Cloud Console تذكيرك بخطوات إنشاء تطبيق بحث على Agent Builder، أو يمكنك اتّباع الخطوات الواردة أدناه.

  1. استخدِم ميزة "البحث" للانتقال إلى أداة إنشاء موظّفي الدعم. افتح مستودعات البيانات وإنشاء مستودع بيانات. هذه المرة، اختَر نوع "متجر بيانات BigQuery".
  2. في خلية اختيار الجدول، اضغط على تصفّح وابحث عن recipes. انقر على زر الاختيار بجانب الجدول. إذا ظهرت لك وصفات من مشاريع qwiklabs-gcp-... أخرى، احرص على اختيار الوصفة التي تخصّك.ملاحظة: إذا نقرت على recipes بدلاً من النقر على زر الاختيار بجانبها، سيتم فتح علامة تبويب جديدة في المتصفّح ونقلك إلى صفحة النظرة العامة على الجدول في BigQuery. ما عليك سوى إغلاق علامة التبويب في المتصفّح واختيار زر الاختيار في "أداة إنشاء موظّفي الدعم".
  3. راجِع بقية الخيارات التلقائية، ولكن لا تغيِّرها، ثم انقر على متابعة.
  4. في صفحة مراجعة المخطّط، راجِع الإعدادات التلقائية الأولية، ولكن لا تغيِّر أيّ شيء. متابعة
  5. أدخِل اسمًا لمساحة التخزين recipe-data. عدِّل معرّف قاعدة البيانات واضبطه على recipe-data-id. أنشئ "مخزّن البيانات".
  6. انتقِل إلى التطبيقات باستخدام قائمة التنقّل على يمين الصفحة وانقر على إنشاء تطبيق جديد.
  7. انقر على إنشاء في بطاقة البحث عن موقعك الإلكتروني. أدخِل اسم "recipe-search" للتطبيق وانقر على تعديل لضبط رقم التعريف على recipe-search-id. اضبط اسم الشركة على Google وانقر على متابعة.
  8. هذه المرة، تحقّق من مصادر بيانات recipe-data. أنشئ التطبيق.

سيستغرق فهرسة جدول قاعدة البيانات بعض الوقت. في هذه الأثناء، لنجرّب لوحة البيانات الجديدة في BigQuery ونرى ما إذا كان بإمكاننا العثور على وصفة أو طريقتَين مثيرتَين للاهتمام.

  1. استخدِم مربّع البحث للانتقال إلى BigQuery. في أعلى BigQuery Studio، انقر على السهم المتّجه للأسفل بجانب علامة التبويب في أقصى يسار الصفحة واختَر لوحة البيانات. اضبط المنطقة على us-central1.فتح لوحة البيانات
  2. انقر على البحث عن البيانات. في مربّع البحث في لوحة البيانات، ابحث عن recipes، واضغط على Enter/Return للبحث، ثم انقر على الزر إضافة إلى اللوحة بجانب اسم الجدول.
  3. سيتم تحميل تمثيل مرئي لجدول الوصفات في لوحة بيانات BigQuery. يمكنك استكشاف مخطّط الجدول ومعاينة البيانات في الجدول وفحص تفاصيل أخرى. أسفل تمثيل الجدول، انقر على طلب بحث.
  4. ستحمِّل اللوحة مربّع حوار طلب بحث BigQuery عاديًا تقريبًا مع إضافة واحدة: فوق نافذة طلب البحث، يتوفّر مربّع نص يمكنك استخدامه لطلب المساعدة من Gemini. لنرى ما إذا كان بإمكاننا العثور على بعض وصفات الكعك في عيّنتنا. شغِّل الطلب التالي (من خلال كتابة النص والضغط على Enter/Return لبدء إنشاء لغة الاستعلام البنيوية):
    Please select the title and ingredients for all the recipes with a title that contains the word cake.
    
  5. اطّلِع على طلب SQL الذي تم إنشاؤه. بعد الانتهاء، شغِّل الاستعلام.
  6. رائعة. يمكنك تجربة بعض الطلبات وطلبات البحث الأخرى قبل الانتقال إلى الخطوة التالية. عند إجراء التجربة، جرِّب طلبات أقل تحديدًا لمعرفة الطلبات التي تحقّق النجاح والطلبات التي لا تحقّق النجاح. على سبيل المثال، هذا الطلب:
    Do I have any chili recipes?
    
    (لا تنسَ تنفيذ الطلب الجديد) تم عرض قائمة بوصفات الفلفل الحار، ولكن تم حذف المكونات إلى أن عدّلت الطلب إلى:
    Do I have any chili recipes?  Please include their title and ingredients.
    
    (نعم، أقول "من فضلك" عندما أطلب منك إجراءً. ستسرّ أمي كثيرًا.) لاحظت أنّ إحدى وصفات الفلفل الحار تحتوي على فطريات، ومن يريد ذلك في الفلفل الحار؟ طلبتُ من Gemini مساعدتي في استبعاد هذه الوصفات.
    Do I have any chili recipes?  Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
    

8. فتح محرِّر Cloud Shell

  1. انتقِل إلى محرر Cloud Shell.
  2. إذا لم تظهر المحطة الطرفية في أسفل الشاشة، افتح المحطة باتّباع الخطوات التالية:
    • انقر على قائمة الخطوط الثلاثة رمز قائمة الهمبرغر.
    • انقر على Terminal (الوحدة الطرفية).
    • انقر على وحدة تحكّم جديدةفتح وحدة طرفية جديدة في محرِّر Cloud Shell.
  3. في الوحدة الطرفية، اضبط مشروعك باستخدام الأمر التالي:
    • طبيعة الحضور:
      gcloud config set project [PROJECT_ID]
      
    • مثال:
      gcloud config set project lab-project-id-example
      
    • إذا لم تتذكر رقم تعريف المشروع:
      • يمكنك إدراج جميع أرقام تعريف مشاريعك باستخدام:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      ضبط رقم تعريف المشروع في محطة محرِّر Cloud Shell
  4. إذا طُلب منك تفويض، انقر على تفويض للمتابعة. انقر على تفويض Cloud Shell.
  5. من المفترض أن تظهر لك هذه الرسالة:
    Updated property [core/project].
    
    إذا ظهر لك رمز WARNING وتلقّيت رسالة Do you want to continue (Y/N)?، هذا يعني على الأرجح أنّك أدخلت رقم تعريف المشروع بشكل غير صحيح. اضغط على N، ثم اضغط على Enter، وحاول تنفيذ الأمر gcloud config set project مرة أخرى.

9. تفعيل واجهات برمجة التطبيقات

في الوحدة الطرفية، فعِّل واجهات برمجة التطبيقات:

gcloud services enable \
  compute.googleapis.com \
  sqladmin.googleapis.com \
  run.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  networkconnectivity.googleapis.com \
  servicenetworking.googleapis.com \
  cloudaicompanion.googleapis.com

إذا طُلب منك تفويض، انقر على تفويض للمتابعة. انقر على تفويض Cloud Shell.

قد يستغرق تنفيذ هذا الأمر بضع دقائق، ولكن من المفترض أن يؤدي في النهاية إلى ظهور رسالة ناجحة مشابهة لهذه الرسالة:

Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.

10. وضع إطار لتطبيق الويب الأساسي Python وStreamlit، مع الاستفادة من بعض ميزات Gemini

بعد فهرسة مستودعَي بيانات Vertex AI Agent Builder واستعداد تطبيقات البحث للنشر، لنبدأ في إنشاء تطبيق الويب.

سنستفيد من ميزة Gemini Code Assist أثناء العمل. لمزيد من المعلومات حول استخدام ميزة Gemini Code Assist في Visual Studio Code، يُرجى الاطّلاع على المستندات هنا.

  1. في وحدة تحكّم محرِّر Cloud Shell، شغِّل هذا الأمر لنسخ مستودع تطبيق الوصفات.
    git clone https://github.com/haggman/recipe-app
    
  2. يمكنك استخدام هذا الأمر لفتح مجلد التطبيق في محرِّر Cloud Shell.
    cloudshell open-workspace recipe-app/
    
  3. قبل استكشاف المجلد المُكرّر والبدء في العمل على تطبيق الويب، علينا تسجيل الدخول إلى Google Cloud باستخدام المكوّن الإضافي Cloud Code في المحرّر وتفعيل Gemini. لنفعل ذلك الآن. في أسفل يمين المحرِّر، انقر على Cloud Code - تسجيل الدخول. إذا لم يظهر الرابط، يُرجى الانتظار لمدة دقيقة ثم التحقّق مرة أخرى.Cloud Code - تسجيل الدخول
  4. ستعرض نافذة المحطة الطرفية عنوان URL طويلاً. افتح عنوان URL في المتصفّح واتّبِع الخطوات لمنح Cloud Code إذن الوصول إلى بيئة Google Cloud. في مربّع الحوار النهائي، انسخ رمز إثبات الملكية والصقه مرة أخرى في نافذة المحطة الطرفية في انتظار الردّ في علامة تبويب متصفّح "محرِّر Cloud Shell".
  5. بعد بضع لحظات، سيتغيّر رابط Cloud Code في أسفل يمين المحرِّر إلى Cloud Code - لا يتوفّر مشروع. انقر على الرابط الجديد لاختيار مشروع. من المفترض أن تفتح لوحة الأوامر في أعلى المحرِّر. انقر على اختيار مشروع على Google Cloud واختَر مشروعك. بعد لحظات قليلة، سيتم تعديل الرابط في أسفل يمين المحرِّر لعرض رقم تعريف مشروعك. يشير ذلك إلى أنّه تم إرفاق Cloud Code بمشروعك الجاري العمل عليه بنجاح.
  6. بعد ربط Cloud Code بمشروعك، يمكنك الآن تفعيل ميزة Gemini Code Assist. في أسفل يسار واجهة المحرّر، انقر على شعار Gemini المشطوب. ستفتح لوحة Gemini Chat على يمين المحرِّر. انقر على اختيار مشروع Google Cloud. عند فتح لوحة الأوامر، اختَر مشروعك. إذا اتّبعت الخطوات بشكل صحيح (ولم تجرِ Google أي تغييرات)، من المفترض أن تظهر لك الآن نافذة محادثة نشطة على Gemini.ميزة Gemini غير مفعَّلة
  7. رائع، بعد الانتهاء من ضبط إعدادات المحطة الطرفية ومحادثة Gemini وCloud Code، افتح علامة التبويب المستكشف واستغرِق بضع دقائق لاستكشاف الملفات في المشروع الحالي.المستكشف
  8. في "المستكشف"، افتح ملف requirements.txt لتعديله. انتقِل إلى لوحة المحادثة في Gemini واسأل:
    From the dependencies specified in the requirements.txt file, what type of application are we building?
    
  9. نحن بصدد إنشاء تطبيق ويب تفاعلي باستخدام Python وStreamlit يتفاعل مع Vertex AI وDiscovery Engine. في الوقت الحالي، لنركّز على مكونات تطبيقات الويب. وفقًا لفريق Gemini، Streamlit هو إطار عمل لإنشاء تطبيقات ويب مستندة إلى البيانات في Python. الآن، اسأل:
    Does the current project's folder structure seem appropriate for a Streamlit app?
    
    هذه هي الأماكن التي يواجه فيها Gemini عادةً مشاكل. يمكن أن يصل Gemini إلى الملف الذي تفتحه حاليًا في المحرِّر، ولكن لا يمكنه الاطّلاع على المشروع بأكمله. جرِّب طرح السؤال التالي:
    Given the below, does the current project's file and folder structure seem appropriate for a Streamlit app?
    - build.sh
    - Home.py
    - requirements.txt
    - pages
    -- Cooking_Advice.py
    -- Recipe_Search.py
    
    هل حصلت على إجابة أفضل؟
  10. لنلقِ نظرة على بعض المعلومات الإضافية حول Streamlit:
    What can you tell me about Streamlit?
    
    حسنًا، يبدو أنّ Gemini تقدّم لنا نظرة عامة جيدة تتضمّن الإيجابيات والسلبيات.
  11. إذا أردت استكشاف السلبيات، يمكنك طرح الأسئلة التالية:
    What are the major downsides or shortcomings?
    
    لم يكن علينا قول "من Streamlit"، لأنّ Gemini Chat هي محادثة (متعدّدة المقاطع). يعرف Gemini ما نتحدث عنه لأنّنا في جلسة محادثة. إذا أردت محو سجلّ محادثات Gemini في أي وقت، استخدِم رمز المهملات في أعلى نافذة محادثة Gemini code.

11. نشر تطبيق الويب على Cloud Run

رائع، تم وضع بنية التطبيق الأساسية، ولكن هل ستعمل كل العناصر على ما يرام؟ والأفضل من ذلك، أين يجب أن نستضيفه في Google Cloud؟

  1. في نافذة محادثة Gemini، اسأل:
    If I containerize this application, what compute technologies in Google Cloud would be best for hosting it?
    
  2. إذا لم تكن تعمل في بيئة تطوير البرامج المتكاملة، يمكنك أيضًا استخدام Google Cloud Assist. افتح Google Cloud Console، ثم افتح Gemini Cloud Assist واسأل:
    If I have a containerized web application, where would be the best place to run it in Google Cloud?
    
    هل كانت مجموعتَا النصائح متطابقتَين؟ هل توافق على أي من النصائح أم لا؟ تذكَّر أنّ Gemini هو مساعد يستند إلى الذكاء الاصطناعي التوليدي، ومثل أي مساعد بشري، قد لا توافق دائمًا على كل ما يقوله. ومع ذلك، يمكن أن يساعدك هذا المساعد دائمًا أثناء عملك في Google Cloud وفي محرِّر الرموز البرمجية على تحسين كفاءتك بشكل كبير.
  3. بالنسبة إلى تطبيق الويب الذي لا يتضمّن حالة ويكون قصير الأجل ومُنشئًا في حاويات، يُعدّ Cloud Run خيارًا رائعًا. في نافذة محادثة Gemini ضمن أداة تعديل الرموز البرمجية، جرِّب الطلب التالي:
    What steps would be required to run this application in Cloud Run?
    
  4. يبدو أنّ أول ما علينا فعله هو إنشاء ملف Dockerfile. باستخدام المحرِّر، أنشِئ ملفًا باسم Dockerfile في جذر مجلد المشروع. تأكَّد من عدم وضعه عن طريق الخطأ في مجلد pages. افتح الملف لتعديله.
  5. لنستخدم لوحة محادثة Gemini الجانبية لإنشاء Dockerfile. استخدِم طلبًا مثل الطلب أدناه. عند عرض النتائج في المحادثة، استخدِم الرمز + بجانب رمز النسخ فوق Dockerfile المقترَح مباشرةً لإدراج الرمز المقترَح في Dockerfile.
    Create a Dockerfile for the application in the current folder. The dependencies are defined in requirements.txt and I want you to use the Python 3 slim bookworm base image.
    
    لا يقدّم Gemini دائمًا الاستجابة نفسها للطلب نفسه. في المرة الأولى التي طلبتُ فيها من Gemini الحصول على ملف Dockerfile، حصلتُ على الملف نفسه الذي سأقترح عليك استخدامه. لقد تلقّيتُ للتوّ الاقتراح التالي:
    # Base image
    FROM python:3-bookworm-slim
    
    # Set working directory
    WORKDIR /app
    
    # Install dependencies
    RUN apt-get update && apt-get install -y \
        build-essential \
        libpq-dev \
        gcc \
        python3-dev \
        && rm -rf /var/lib/apt/lists/*
    
    # Install pip and virtualenv
    RUN pip install --upgrade pip virtualenv
    
    # Create virtual environment
    RUN python3 -m venv venv
    
    # Activate virtual environment
    WORKDIR /app/venv/bin
    RUN . activate
    
    # Install Streamlit and libraries from requirements.txt
    RUN pip install -r requirements.txt
    
    # Copy application files
    COPY . /app
    
    # Expose port 8501 for Streamlit
    EXPOSE 8501
    
    # Start Streamlit app
    CMD ["streamlit", "run", "main.py"]
    
    هذا ملف Dockerfile رائع. سأبسّط الأمر قليلاً. لا نحتاج إلى قسم apt-get لأنّ أي شيء مطلوب لبرنامج Python متوفّر في صورتنا الأساسية. بالإضافة إلى ذلك، يُعدّ استخدام بيئة افتراضية في حاوية Python مضيعة للمساحة، لذا سأزيل ذلك. ليس من الضروري استخدام الأمر expose، ولكن لا بأس به. يحاول أيضًا تشغيل main.py الذي لا أملكه.
  6. في مجلد recipe-app، أنشئ ملفًا باسم Dockerfile والصق هذا المحتوى:
    FROM python:3.11-slim-bookworm
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir --upgrade pip && \
        pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["streamlit", "run", "Home.py"]
    
  7. يمكن تشغيل Gemini من خلال نافذة المحادثة، ولكن يمكنه أيضًا العمل مباشرةً في ملف الرموز البرمجية باستخدام التعليقات، كما استخدمنا في دفتر ملاحظات "تحليل البيانات"، ويمكن أيضًا تشغيله باستخدام Control ‏+ i على نظام التشغيل Windows أو Command ‏+ i على نظام التشغيل Mac. انقر في مكان ما في Dockerfile، وفعِّل Gemini باستخدام الأمر المناسب Command ‏+ i / Control ‏+ i.
  8. أدخِل المعلومات التالية عندما يُطلب منك ذلك. راجِع التغيير واقبله.
    Please comment the current file.
    
    أليس هذا رائعًا؟ كم مرة اضطررت إلى العمل على رمز برمجي أعدّه شخص آخر، ثم ضيعت الوقت في اكتساب فهم أساسي لعمله الذي لا يتضمّن تعليقات قبل أن تتمكّن من بدء إجراء التغييرات؟ Gemini في خدمتك
  9. اسأل الآن Gemini عن كيفية استخدام Cloud Run لإنشاء صورة جديدة باسم recipe-web-app ونشرها من Dockerfile في المجلد الحالي.
    How could I use gcloud to build a new Cloud Run service named recipe-web-app from the current directory?
    
  10. لنبدأ في إنشاء تطبيقنا ونشره. في نافذة الوحدة الطرفية، نفِّذ الأمر gcloud run deploy.
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    
    إذا ظهر لك طلب بإنشاء مستودع في "مستودع العناصر"، اضغط على enter/return.
    Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository
    named cloud-run-source-deploy in region us-central1 will be created.
    
    Do you want to continue (Y/n)?
    
  11. إذا راقبت عملية الإنشاء، سيتم أولاً إنشاء مستودع Docker في Artifact Registry. بعد ذلك، يستخدم Cloud Build لإنشاء صورة الحاوية من ملف Dockerfile في المجلد المحلي. أخيرًا، سيتم نشر صورة Docker في خدمة Cloud Run جديدة. في نهاية النص البرمجي، ستحصل على عنوان URL لاختبار Cloud Run لاستخدامه.

افتح الرابط الذي تم عرضه في علامة تبويب جديدة في المتصفّح. خذ بعض الوقت لاستكشاف بنية التطبيق وصفحاته. رائع، نحتاج الآن إلى ربط وظيفة الذكاء الاصطناعي التوليدي.

12. ربط صفحة "نصائح الطبخ" بتطبيق "أداة إنشاء موظّفي الدعم" الذي يبحث في كتب الطبخ

لدينا إطار عمل لتطبيق الويب الذي يعمل، ولكن علينا ربط صفحتَي العمل بتطبيقَي البحث Vertex AI Agent Builder. لنبدأ بـ "نصائح للطبخ".

  1. اترك علامة التبويب "محرِّر Cloud Shell" مفتوحة. في وحدة تحكّم Google Cloud، استخدِم ميزة البحث للانتقال إلى Chat في Vertex AI.
  2. في لوحة صفحة الإعدادات على يسار الصفحة، اضبط الطراز على gemini-1.5-flash-002. حرِّك الحد الأقصى لعدد الرموز المميّزة للإخراج إلى أقصى حدّ كي يتمكّن النموذج من عرض إجابات أطول إذا لزم الأمر. افتح إعدادات فلتر الأمان. اضبط الخيار "الكلام الذي يحض على الكراهية" و"المحتوى الجنسي الفاضح" و"المحتوى الذي يتضمن تحرّشًا" على حظر بعض المحتوى. اضبط الإعداد "المحتوى الخطير" على حظر عدد قليل ثم انقر على حفظ. سنغيّر تصنيف "المحتوى الخطير" إلى فئة أقل لأنّه يمكن أن يسيء Gemini فهم الحديث عن السكاكين والقطع على أنّه عنف.
  3. مرِّر زر التبديل لتفعيل التأريض، ثم انقر على تخصيص. اضبط مصدر تحديد المصدر على بحث Vertex AI، واستخدم ما يلي لمسار مستودع البيانات. استبدِل YOUR_PROJECT_ID برقم تعريف المشروع المتوفّر في أعلى الصفحة بالقرب من زر "إنهاء التجربة" في هذه التعليمات، ثم احفظ إعدادات التأريض.
    projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
    
    ملاحظة: إذا ظهرت لك رسالة خطأ، يعني ذلك أنّك لم تغيّر رقم تعريف المشروع إلى رقم تعريف مشروعك الفعلي، أو أنّك فاتتك الخطوة التي غيّرت فيها رقم تعريف "مستودع بيانات أدوات إنشاء موظّفي الدعم" القديم. يُرجى الانتقال إلى "أداة إنشاء موظّفي الدعم" > مستودعات البيانات > كتب الطبخ القديمة للاطّلاع على رقم تعريف مستودع البيانات الفعلي.
  4. اختبِر رسالتَي محادثة. ننصحك بالبدء بما يلي: يمكنك تجربة بعض الاقتراحات الأخرى إذا أردت.
    How can I tell if a tomato is ripe?
    
  5. يعمل النموذج، والآن لنجرّب الرمز البرمجي. انقر على محو المحادثة حتى لا تصبح محادثاتنا جزءًا من الرمز، ثم انقر على الحصول على الرمز.محو المحادثة والحصول على رمز
  6. في أعلى نافذة الرمز، اضغط على فتح دفتر ملاحظات لنتمكّن من تجربة الرمز وتحسينه في Colab Enterprise قبل دمجه في تطبيقنا.
  7. خصِّص بضع دقائق للتعرّف على الرمز. لنعدّل بعض الإعدادات لكي تتوافق مع ما نريد. قبل البدء، شغِّل خلية الرموز البرمجية الأولى للاتصال بوحدة الحوسبة وتثبيت حزمة تطوير البرامج (SDK) لمنصّة AI Platform. بعد تنفيذ الإجراء، سيُطلب منك إعادة تشغيل الجلسة. يمكنك إجراء ذلك.
  8. انتقِل إلى الرمز الذي سحبناه من Vertex AI Studio. غيِّر اسم الطريقة multiturn_generate_content إلى start_chat_session.
  9. انتقِل إلى طلب إجراء model = GenerativeModel(. يحدِّد الرمز الحالي السمتَين generation_config وsafety_settings، ولكنّه لا يستخدمهما في الواقع. عدِّل عملية إنشاء GenerativeModel لكي تشبه ما يلي:
    model = GenerativeModel(
        "gemini-1.5-flash-002",
        tools=tools,
        generation_config=generation_config,
        safety_settings=safety_settings,
    )
    
  10. أخيرًا، أضِف سطرًا أخيرًا إلى الطريقة، أسفل chat = model.start_chat() مباشرةً، حتى تُرجع الدالة عنصر chat. من المفترض أن تظهر الدالة المكتملة على النحو الموضّح أدناه.ملاحظة: لا تنسخ هذا الرمز البرمجي إلى دفتر ملاحظاتك. يتم استخدامها هنا للتحقّق من صحة البيانات.
    def start_chat_session():
        vertexai.init(project="qwiklabs-gcp-02-9a7298ceaaec", location="us-central1")
        tools = [
            Tool.from_retrieval(
                retrieval=grounding.Retrieval(
                    source=grounding.VertexAISearch(datastore="projects/qwiklabs-gcp-02-9a7298ceaaec/locations/global/collections/default_collection/dataStores/old-cookbooks-id"),
                )
            ),
        ]
        model = GenerativeModel(
            "gemini-1.5-flash-002",
            tools=tools,
            generation_config=generation_config,
            safety_settings=safety_settings,
        )
        chat = model.start_chat()
        return chat
    
  11. انتقِل إلى أسفل خلية الرمز البرمجي وغيِّر السطر الأخير الذي يستدعي الدالة القديمة لكي يستدعي اسم الدالة الجديدة ويخزِّن العنصر الذي تم إرجاعه في متغيّر chat. بعد أن تصبح راضيًا عن التغييرات، شغِّل الخلية.
    chat = start_chat_session()
    
  12. أنشئ خلية رمز جديدة وأضِف التعليق # Use chat to invoke Gemini and print out the response. انتقِل إلى السطر التالي واكتب resp، ومن المفترض أن تُكمل Gemini الرمز تلقائيًا. عدِّل الطلب إلى How can I tell if a tomato is ripe?. تنفيذ الخلية
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response)
    
  13. هذا هو الردّ الصحيح، ولكن الجزء الذي نريده حقًا هو حقل text المُدمَج. عدِّل رمز الكتلة لطباعة هذا القسم فقط، مثل:
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response.candidates[0].content.parts[0].text)
    
  14. حسنًا، بما أنّ لدينا الآن رمزًا برمجيًا صالحًا للمحادثة، لندمجه في تطبيق الويب. انسخ كل محتوى خلية الرمز البرمجي التي تنشئ دالة start_chat_session (لن نحتاج إلى خلية الاختبار). إذا نقرت على الخلية، يمكنك النقر على قائمة الخيارات الإضافية في أعلى يسار الصفحة والنسخ من هناك.نسخ خلية
  15. انتقِل إلى علامة التبويب "محرِّر Cloud Shell" وافتح pages\Cooking_Advice.py لتعديله.
  16. حدِّد مكان التعليق:
    #
    # Add the code you copied from your notebook below this message
    #
    
  17. الصِق الرمز الذي نسخته أسفل تعليق إضافة الرمز مباشرةً. رائع، لدينا الآن القسم الذي يشغّل محرّك المحادثة من خلال طلب مُستند إلى Gemini. لندمجها الآن في Streamlit.
  18. ابحث عن قسم التعليمات البرمجية التي تم التعليق عليها مباشرةً تحت التعليق:
    #
    # Here's the code to setup your session variables
    # Uncomment this block when instructed
    #
    
  19. أزِل التعليقات من هذا القسم من الرمز البرمجي (حتى القسم Setup done, let's build the page UI التالي) واستكشِفه. ينشئ هذا الإجراء متغيّرات جلسة المحادثة والسجلّ أو يسترجعها.
  20. بعد ذلك، علينا دمج وظائف السجلّ والمحادثة في واجهة المستخدم. انتقِل في الرمز البرمجي إلى أن تعثر على التعليق أدناه.
    #
    # Here's the code to create the chat interface
    # Uncomment the below code when instructed
    #
    
  21. أزِل التعليقات من بقية الرمز البرمجي أسفل التعليق واستفِد من بعض الوقت لاستكشافه. يمكنك إبرازها وطلب من Gemini شرح وظيفتها.
  22. رائع، لنبدأ الآن في إنشاء التطبيق ونشره. عندما يعود عنوان URL، افتح التطبيق وجرِّب صفحة "نصائح الطبخ". يمكنك مثلاً أن تسأله عن الطماطم الناضجة، أو قد يعرف الروبوت طريقة جيدة لإعداد ملفوف بروكسل.
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    

يا له من شيء مثير! مستشارك الشخصي للطبخ المستنِد إلى الذكاء الاصطناعي :-)

13. (اختياري) ربط صفحة "بحث الوصفات" بتطبيق "أداة إنشاء موظّفي الدعم" المخصّص للبحث عن الوصفات

عند ربط صفحة Cooking Advice بمصدرها، استخدمنا Gemini API مباشرةً. بالنسبة إلى "بحث الوصفات"، لنربط تطبيق البحث Vertex AI Agent Builder مباشرةً.

  1. في محرِّر Cloud Shell، افتح صفحة pages/Recipe_Search.py لتعديلها. التحقّق من بنية الصفحة
  2. في أعلى الملف، اضبط رقم تعريف المشروع.
  3. راجِع الدالة search_sample. يتم الحصول على هذا الرمز بشكل مباشر تقريبًا من مستندات محرّك "اقتراحات" هنا. يمكنك العثور على نسخة صالحة في دفتر الملاحظات هذا هنا.التغيير الوحيد الذي أجريته هو عرض response.results بدلاً من النتائج فقط. بدون ذلك، يكون نوع الإرجاع عنصرًا مصمّمًا للتنقّل بين النتائج، وهذا شيء لا نحتاج إليه في تطبيقنا الأساسي.
  4. انتقِل إلى نهاية الملف وأزِل التعليقات من القسم بأكمله أدناه Here are the first 5 recipes I found.
  5. ميِّز القسم بأكمله الذي أزلت التعليق عنه للتو وافتح محادثة Gemini Code. Explain the highlighted code، يُرجى طرح أي سؤال. إذا لم يكن لديك عنصر محدّد، يمكن أن يشرح لك Gemini الملف بأكمله. إذا تميّز قسمًا وطلبت من Gemini شرحه أو التعليق عليه أو تحسينه، سيفعل ذلك.ننصحك بأخذ بعض الوقت للاطّلاع على التفسير. يُرجى العِلم أنّ استخدام دفتر ملاحظات Colab Enterprise هو طريقة رائعة لاستكشاف واجهات برمجة التطبيقات في Gemini قبل دمجها في تطبيقك. ويُعدّ ذلك مفيدًا بشكل خاص في استكشاف بعض واجهات برمجة التطبيقات الأحدث التي قد لا تكون موثّقة على النحو المطلوب.
  6. في نافذة وحدة الطرفية الخاصة بالمحرِّر، شغِّل build.sh لنشر التطبيق النهائي. انتظِر إلى أن يتم نشر الإصدار الجديد قبل الانتقال إلى الخطوة التالية.

14. (اختياري) استكشاف الطلب النهائي

يُرجى تخصيص بضع دقائق لاستكشاف التطبيق النهائي.

  1. في Google Cloud Console، استخدِم ميزة البحث للانتقال إلى Cloud Run، ثم انقر على recipe-web-app.
  2. ابحث عن عنوان URL لاختبار التطبيق (في أعلى الصفحة) وافتحه في علامة تبويب جديدة في المتصفّح.
  3. من المفترض أن تظهر صفحة التطبيق الرئيسية. يُرجى ملاحظة التنسيق الأساسي وعناصر التنقّل التي يوفّرها Streamlit، مع عرض ملفات Python من مجلد pages كخيارات تنقّل، وتحميل Home.py كصفحة رئيسية. انتقِل إلى صفحة نصائح الطبخ.
  4. بعد بضع لحظات، ستظهر واجهة المحادثة. يُرجى ملاحظة تنسيق التطبيق الأساسي الجميل الذي يوفّره Streamlit.
  5. جرِّب طرح بعض الأسئلة المتعلقة بالطبخ ومعرفة كيفية عمل الروبوت. على سبيل المثال:
    Do you have any advice for preparing broccoli?
    
    How about a classic chicken soup recipe?
    
    Tell me about meringue.
    
  6. لنبحث الآن عن وصفة أو اثنتين. انتقِل إلى صفحة "بحث عن وصفات" وجرِّب إجراء بعض عمليات البحث. على سبيل المثال:
    Chili con carne
    
    Chili, corn, rice
    
    Lemon Meringue Pie
    
    A dessert containing strawberries
    

15. تهانينا!

لقد أنشأت تطبيقًا يستفيد من تطبيقات Vertex AI Agent Builder. خلال هذه الرحلة، اطّلعت على ميزتَي Gemini Cloud Assist وGemini Code Assist وميزات تحويل اللغة الطبيعية إلى لغة الاستعلامات البنيوية (SQL) في "لوحة البيانات" في BigQuery. أحسنت!

تَنظيم

لا تتوفّر فئة مجانية في Cloud SQL، وسيتم تحصيل رسوم منك في حال مواصلة استخدامها. يمكنك حذف مشروعك على Cloud لتجنُّب تحصيل رسوم إضافية.

على الرغم من أنّ Cloud Run لا تحصّل رسومًا عندما تكون الخدمة غير مستخدَمة، قد يستمر تحصيل رسوم منك مقابل تخزين صورة الحاوية في Artifact Registry. يؤدي حذف مشروعك على Cloud إلى إيقاف الفوترة لجميع الموارد المستخدَمة في ذلك المشروع.

إذا أردت حذف المشروع، اتّبِع الخطوات التالية:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

يمكنك أيضًا حذف الموارد غير الضرورية من قرص Cloudshell. يمكنك إجراء ما يلي:

  1. احذف دليل مشروع Codelab:
    rm -rf ~/task-app
    
  2. تحذير! لا يمكن التراجع عن هذا الإجراء التالي. إذا أردت حذف كل المحتوى على Cloud Shell لإخلاء بعض المساحة، يمكنك حذف الدليل الرئيسي كاملاً. احرص على حفظ كل ما تريد الاحتفاظ به في مكان آخر.
    sudo rm -rf $HOME