Building Applications in the AI Era

1. نظرة عامة

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

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

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

الأهداف

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

  • تفعيل Gemini Cloud Assist واستخدامه
  • إنشاء تطبيق بحث في 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.
  3. أنشِئ مشروعًا جديدًا أو اختَر إعادة استخدام مشروع حالي.
  4. تأكَّد من تفعيل الفوترة في مشاريعي ضمن
      فوترة Cloud
    • إذا كان مشروعك الجديد يعرض Billing is disabled في العمود Billing account:
      1. انقر على النقاط الثلاث في العمود Actions
      2. انقر على تغيير الفوترة.
      3. اختَر حساب الفوترة الذي تريد استخدامه
    • إذا كنت تحضر حدثًا مباشرًا، من المحتمل أن يكون اسم الحساب هو حساب فوترة تجريبي على Google Cloud Platform.

4. تفعيل Gemini Cloud Assist واستخدامه

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

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

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

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

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

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

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

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

  1. استخدِم البحث للانتقال إلى Colab Enterprise وانقر على إنشاء ورقة ملاحظات. إذا تلقّيت عرضًا لتجربة ميزات جديدة في Colab، تجاهله. لإعداد وقت التشغيل، أي قدرة الحوسبة التي يستند إليها دفتر الملاحظات، وتشغيله، انقر على ربط في أعلى يسار دفتر الملاحظات الجديد.ربط
  2. انقر على ملف > إعادة تسمية لإعادة تسمية دفتر الملاحظات إلى Data Wrangling.إعادة التسمية باستخدام قائمة النقاط الثلاث
  3. انقر على + نص لإنشاء مربّع نص جديد، واستخدِم السهم المتّجه للأعلى لنقله إلى أن يصبح الخلية الأولى في الصفحة.+ نص وسهم للأعلى
  4. عدِّل مربّع النص وأدخِل ما يلي:
    # Data Wrangling
    
    Import the Pandas library
    
  5. في مجموعة الرموز البرمجية أسفل مجموعة النصوص التي أنشأتها للتو، ابدأ بكتابة imp، ومن المفترض أن يقترح Gemini Code Assist بقية عملية الاستيراد باللون الرمادي. اضغط على مفتاح التبويب لقبول الاقتراح.
    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 للاطّلاع على الرمز البرمجي المقترَح باللون الرمادي الفاتح. اضغط على مفتاح التبويب مرة أخرى لقبول الاقتراح. إذا لم يتضمّن اقتراحك استدعاء الدالة head()، أضِفه.
    df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
    df.head()
    
  8. انقر على خلية الرمز الأولى التي استوردت فيها Pandas، واستخدِم قائمة الأوامر أو لوحة المفاتيح لتشغيل الخلية المحدّدة. على لوحة المفاتيح، سيؤدي الضغط على shift+enter إلى تنفيذ الخلية ونقل التركيز إلى الخلية التالية، وإنشاء واحدة إذا لزم الأمر. انتظِر حتى يتم تنفيذ الخلية قبل الانتقال إلى الخطوة التالية.ملاحظة: سيظهر لك الرمز [ ] على يسار الخلية مباشرةً عندما لا يتم تنفيذها. أثناء تنفيذ خلية، ستظهر صورة متحركة تدور وتشير إلى أنّ العملية قيد التنفيذ. بعد انتهاء الخلية، سيظهر رقم، مثل [13].
  9. نفِّذ الخلية التي تحمّل ملف CSV إلى DataFrame. انتظِر إلى أن يتم تحميل الملف وافحص الصفوف الخمسة الأولى من البيانات. هذه هي بيانات الوصفات التي سنحمّلها إلى BigQuery، وسنستخدمها في النهاية كأساس لإنشاء وصفاتنا.
  10. أنشئ مجموعة رموز جديدة وأدخِل التعليق أدناه. بعد كتابة التعليق، انتقِل إلى سطر الرمز التالي، وسيظهر لك الاقتراح df.columns. اقبلها ثم نفِّذ الخلية.
    # List the current DataFrame column names
    
    لقد أوضحنا للتو أنّه لديك خياران للحصول على المساعدة من Gemini Code Assist في دفتر ملاحظات Jupyter: خلايا نصية فوق خلايا الرموز، أو تعليقات داخل خلية الرموز نفسها. تعمل التعليقات داخل خلايا الرموز بشكل جيد في دفاتر ملاحظات Jupyter، ولكن يمكن استخدام هذه الطريقة أيضًا في أي بيئة تطوير متكاملة أخرى تتوافق مع Gemini Code Assist من 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 وصفة طعام والعمل عليها. استخدِم أسلوب "الطلب > الرمز البرمجي" لأخذ العيّنة وتخزينها في DataFrame جديد باسم 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"، انقر على قائمة النقاط الثلاث عرض الإجراءات بجانب رقم تعريف مشروعك. ثم انقر على إنشاء مجموعة بيانات.استكشاف إجراءات "طريقة العرض"
  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. استخدِم أسلوب "الطلب > الرمز" لإنشاء مجموعة من الرموز البرمجية التي ستُدرِج DataFrame 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. استخدِم "بحث Google" للانتقال إلى أداة إنشاء العملاء الآليين. افتح مخازن البيانات وإنشاء مخزن بيانات. في هذه المرة، اختَر نوع "مخزن بيانات 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 لتفعيل إنشاء طلب البحث بلغة SQL):
    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 Editor
  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 Editor الطرفية، شغِّل الأمر التالي لاستنساخ مستودع تطبيق الوصفات.
    git clone https://github.com/haggman/recipe-app
    
  2. نفِّذ هذا الأمر لفتح مجلد التطبيق في "محرِّر Cloud Shell".
    cloudshell open-workspace recipe-app/
    
  3. قبل استكشاف المجلد المستنسخ والبدء في العمل على تطبيق الويب، يجب تسجيل الدخول إلى Google Cloud باستخدام إضافة Cloud Code في المحرّر وتفعيل Gemini. لنبدأ الآن. في أسفل يمين أداة التعديل، انقر على Cloud Code - Sign in. إذا لم يظهر الرابط، انتظِر دقيقة وتحقّق مرة أخرى.Cloud Code - تسجيل الدخول
  4. ستعرض نافذة المحطة الطرفية عنوان URL طويلاً. افتح عنوان URL في المتصفّح واتّبِع الخطوات لمنح Cloud Code إذن الوصول إلى بيئة Google Cloud. في مربّع الحوار الأخير، انسخ رمز إثبات الملكية وألصِقه في نافذة الوحدة الطرفية المعلقة في علامة تبويب متصفّح "محرّر Cloud Shell".
  5. بعد بضع لحظات، سيتغيّر رابط Cloud Code في أسفل يمين المحرّر إلى Cloud Code - No Project. انقر على الرابط الجديد لاختيار مشروع. من المفترض أن تفتح لوحة الأوامر في أعلى المحرِّر. انقر على اختيار مشروع على السحابة الإلكترونية واختَر مشروعك. بعد لحظات قليلة، سيتم تعديل الرابط في أسفل يمين المحرّر لعرض رقم تعريف مشروعك. يشير ذلك إلى أنّه تم ربط 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 تتيح إجراء محادثات (متعددة الجولات). يعرف Gemini ما كنا نتحدث عنه لأنّنا في جلسة محادثة. إذا أردت في أي وقت محو سجلّ محادثات Gemini، استخدِم رمز سلة المهملات في أعلى نافذة محادثة Gemini.

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 في جذر مجلد مشروعك. تأكَّد من عدم وضعه عن طريق الخطأ في مجلد الصفحات. افتح الملف لتعديله.
  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 من خلال نافذة المحادثة، ولكن يمكنه أيضًا العمل مباشرةً في ملف الرمز البرمجي باستخدام التعليقات، كما فعلنا في دفتر ملاحظات Data Wrangling، ويمكن أيضًا استدعاؤه باستخدام 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
    
    إذا ظهرت لك رسالة تطلب إنشاء مستودع Artifact Registry، اضغط على 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
    
    ملاحظة: إذا ظهرت لك رسالة خطأ، يعني ذلك أنّك لم تغيّر رقم تعريف المشروع إلى رقم تعريف مشروعك الفعلي، أو أنّك ربما فاتتك الخطوة التي غيّرت فيها معرّف "مخزن بيانات Agent Builder" القديم. تحقَّق من Agent Builder > Data Stores > old-cookbooks لمعرفة رقم تعريف متجر البيانات الفعلي.
  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. (اختياري) ربط صفحة "البحث عن وصفات" بتطبيق "أداة إنشاء الوكلاء" الخاص بميزة "البحث عن وصفات"

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

  1. في "محرِّر Cloud Shell"، افتح صفحة pages/Recipe_Search.py للتعديل. التحقّق من بنية الصفحة
  2. في أعلى الملف، اضبط رقم تعريف مشروعك.
  3. افحص الدالة search_sample. يأتي هذا الرمز البرمجي بشكل أو بآخر مباشرةً من مستندات Discovery Engine هنا. يمكنك العثور على نسخة عاملة في دفتر الملاحظات هذا هنا.التغيير الوحيد الذي أجريته هو عرض response.results بدلاً من النتائج فقط. وبدون ذلك، يكون نوع القيمة التي تم إرجاعها عبارة عن عنصر مصمَّم للتنقل بين النتائج، وهذا ما لا نحتاج إليه في تطبيقنا الأساسي.
  4. انتقِل إلى نهاية الملف وأزِل التعليق من القسم بأكمله أدناه Here are the first 5 recipes I found.
  5. ظلِّل القسم بأكمله الذي أزلت التعليق منه للتو وافتح Gemini Code Chat. اسأل 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 في Data Canvas من BigQuery. أحسنت!

تَنظيم

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

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

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

gcloud projects delete $GOOGLE_CLOUD_PROJECT

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

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