1. סקירה כללית
בשיעור ה-Lab הזה תשתמשו במוצרי ה-AI הגנרטיבי של Google כדי לבנות תשתית ב-Google Cloud בעזרת Gemini Cloud Assist, לשלוח שאילתות לנתוני BigQuery באמצעות תכונות של שפה טבעית ל-SQL ב-Data Canvas, לכתוב קוד במחברות Jupyter של Colab Enterprise וב-Eclipse Theia (Visual Studio Code) בעזרת Gemini Code Assist, ולשלב תכונות של חיפוש וצ'אט מבוססות-AI שנבנו על מקורות מידע של Cloud Storage ו-BigQuery ב-Vertex AI Agent Builder.
המטרה שלנו היא ליצור אתר עם מתכונים וטיפים לבישול שנקרא AI Recipe Haven (ממלכת המתכונים של ה-AI). האתר ייבנה ב-Python וב-Streamlit ויכלול שני דפים עיקריים. באתר 'עצות לבישול' יהיה צ'אטבוט שייווצר באמצעות Gemini ו-Vertex AI Agent Builder, עם מקור מידע שקשור לקבוצה של ספרי בישול. הצ'אטבוט יציע עצות לבישול ויענה על שאלות שקשורות לבישול. חיפוש מתכונים יהיה מנוע חיפוש שמבוסס על Gemini, והפעם הוא יתבסס על מסד נתונים של מתכונים ב-BigQuery.
אם נתקלתם בבעיה בקוד כלשהו בתרגיל הזה, הפתרונות לכל קובצי הקוד נמצאים במאגר GitHub של התרגיל בענף solution.
מטרות
בשיעור ה-Lab הזה תלמדו איך לבצע את המשימות הבאות:
- הפעלה ושימוש ב-Gemini Cloud Assist
- יצירת אפליקציית חיפוש ב-Vertex AI Agent Builder לצ'אטבוט למתן עצות לבישול
- טעינה וניקוי של נתונים במחברת Colab Enterprise, בעזרת Gemini Code Assist
- יצירת אפליקציית חיפוש ב-Vertex AI Agent Builder עבור מחולל המתכונים
- תכנון אפליקציית האינטרנט המרכזית ב-Python וב-Streamlit, עם קצת עזרה מ-Gemini
- פריסת אפליקציית האינטרנט ב-Cloud Run
- חיבור הדף 'עצות לבישול' לאפליקציה שלנו ליצירת סוכנים לחיפוש מתכונים
- (אופציונלי) קישור דף החיפוש של המתכונים לאפליקציית הכלי ליצירת סוכנים לחיפוש מתכונים
- (אופציונלי) עיון בבקשה הסופית
2. דרישות מוקדמות
- אם אין לכם חשבון Google, אתם צריכים ליצור חשבון Google.
- משתמשים בחשבון לשימוש אישי במקום בחשבון לצורכי עבודה או בחשבון בית ספרי. יכול להיות שבחשבונות לצורכי עבודה או בחשבונות בית ספריים יש הגבלות שימנעו מכם להפעיל את ממשקי ה-API שנדרשים למעבדה הזו.
3. הגדרת הפרויקט
- נכנסים ל-מסוף Google Cloud.
- מפעילים את החיוב במסוף Cloud.
- העלות של השלמת ה-Lab הזה במשאבי Cloud צריכה להיות פחות מ-1$.
- כדי למחוק משאבים ולמנוע חיובים נוספים, אפשר לבצע את השלבים בסוף ה-Lab הזה.
- משתמשים חדשים זכאים לתקופת ניסיון בחינם בשווי 300$.
- משתתפים באירוע וירטואלי של שיעור Lab מעשי? יכול להיות שתוכלו לקבל קרדיט בסך 5$USD.
- יוצרים פרויקט חדש או בוחרים להשתמש מחדש בפרויקט קיים.
- מוודאים שהחיוב מופעל בדף My projects (הפרויקטים שלי) בחיוב ב-Cloud
- אם הפרויקט החדש מופיע עם הערך
Billing is disabledבעמודהBilling account:- לוחצים על סמל האפשרויות הנוספות (3 נקודות) בעמודה
Actions. - לוחצים על שינוי פרטי החיוב.
- בוחרים את החשבון לחיוב שבו רוצים להשתמש.
- לוחצים על סמל האפשרויות הנוספות (3 נקודות) בעמודה
- אם אתם משתתפים באירוע בשידור חי, סביר להניח שהחשבון ייקרא חשבון לחיוב ב-Google Cloud Platform לניסיון
- אם הפרויקט החדש מופיע עם הערך
4. הפעלה ושימוש ב-Gemini Cloud Assist
במשימה הזו נפעיל את Gemini Cloud Assist ונשתמש בו. בזמן העבודה במסוף Google Cloud, Gemini Cloud Assist יכול להציע לכם עצות, לעזור לכם לבנות, להגדיר ולנטר את תשתית הענן של Google Cloud, ואפילו להציע פקודות gcloud ולכתוב סקריפטים של Terraform.
- כדי להפעיל את Cloud Assist, לוחצים על תיבת החיפוש בחלק העליון של ממשק המשתמש של מסוף Cloud ובוחרים באפשרות יש לך שאלה ל-Gemini? או יש לך שאלה ל-Gemini במסוף Cloud?.
- גוללים לקטע Required API (ה-API הנדרש) בדף ומפעילים את Gemini for Google Cloud API.
- אם ממשק הצ'אט לא מופיע מיד, לוחצים על התחלת צ'אט. מתחילים בכך שמבקשים מ-Gemini להסביר חלק מהיתרונות של השימוש ב-Cloud Shell Editor. כדאי להקדיש כמה דקות כדי לבדוק את התשובה שנוצרה.
- אחר כך, אפשר לשאול על היתרונות של Agent Builder ואיך הוא יכול לעזור להצגת תשובות מבוססות עובדות.
- לבסוף, נבחן השוואה. בחלון הצ'אט של Gemini במסוף Google Cloud, שואלים את השאלה הבאה:
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 משתמש בו כדי לענות על שאלות.
- משתמשים בתיבת החיפוש של Cloud Console כדי לנווט אל Vertex AI. מלוח הבקרה, לוחצים על הפעלת כל ממשקי ה-API המומלצים. הפעולה עשויה להימשך מספר דקות. אם מופיע חלון קופץ שבו מוצגת הודעה על כך שצריך להפעיל את Vertex AI API, צריך גם להפעיל אותו. אחרי שמפעילים את ממשקי ה-API, אפשר לעבור לשלב הבא.
- משתמשים בחיפוש כדי לעבור אל Agent Builder ואז לוחצים על Continue and Activate the API (המשך והפעלת ה-API).
- כפי ש-Gemini הציע לנו קודם, כדי ליצור אפליקציית חיפוש ב-Agent Builder, צריך קודם ליצור מקור נתונים מוסמך. כשמשתמש מחפש, Gemini מבין את השאלה ויודע איך לנסח תשובות חכמות, אבל הוא יחפש את המידע שייכלל בתשובה במקור המעוגן ולא ישלוף אותו מהידע המובנה שלו.בתפריט הימני, עוברים אל מאגרי נתונים ולוחצים על יצירת מאגר נתונים.
- ספרי המתכונים בדומיין הציבורי שבהם אנחנו משתמשים כדי להציג את עצות הבישול בדף שלנו נמצאים כרגע בקטגוריה של Cloud Storage בפרויקט חיצוני. בוחרים את סוג המקור Cloud Storage.
- בודקים את אפשרויות ברירת המחדל שקשורות לסוג המידע שמייבאים, אבל לא משנים אותן. משאירים את סוג הייבוא כתיקייה ובנתיב של מאגר הנתונים משתמשים ב:
labs.roitraining.com/labs/old-cookbooks, ואז לוחצים על המשך. - נותנים שם למאגר הנתונים:
old-cookbooks. לוחצים על עריכה, משנים את המזהה ל-old-cookbooks-idולוחצים על יצירה כדי ליצור את מאגר הנתונים.
כלי בניית הסוכנים של Vertex AI תומך בכמה סוגי אפליקציות, ומאגר הנתונים משמש כמקור האמת לכל אחת מהן. אפליקציות חיפוש מתאימות לשימוש כללי ולחיפוש. אפליקציות ל-Chat מיועדות לתהליכים גנרטיביים באפליקציות של צ'אטבוט או בוט קולי שמבוססות על Dataflow. אפליקציות להמלצות עוזרות ליצור מנועי המלצות טובים יותר. ואפליקציות סוכנים נועדו ליצור סוכנים מבוססי-AI גנרטיבי. בסופו של דבר, סביר להניח שהסוכן ישרת אותנו בצורה הטובה ביותר במה שאנחנו רוצים לעשות, אבל מכיוון שהמוצר נמצא כרגע בגרסת טרום-השקה, נשתמש בסוג אפליקציית החיפוש.
- בתפריט הימני, לוחצים על Apps (אפליקציות) ואז על Create A New App (יצירת אפליקציה חדשה).
- בכרטיס חיפוש האתר שלך, לוחצים על יצירה. נותנים לאפליקציה את השם
cookbook-search. לוחצים על עריכה ומגדירים את מזהה האפליקציה ל-cookbook-search-id. מגדירים את החברה ל-Googleולוחצים על המשך. - בודקים את מאגר הנתונים old-cookbooks שיצרתם לפני כמה שלבים ולוחצים על Create (יצירה) כדי ליצור את אפליקציית החיפוש.
אם תבדקו את הכרטיסייה Activity (פעילות), סביר להניח שתראו שהספרים עדיין מיובאים ומאונדקסים. יעברו יותר מ-5 דקות עד ש-Agent Builder יאנדקס את אלפי הדפים שנמצאים ב-70 ספרי המתכונים שנתנו לו. בזמן שהוא פועל, נטען וננקה חלק מהנתונים של מסד הנתונים של המתכונים בשביל מחולל המתכונים שלנו.
6. טעינה וניקוי של נתונים במחברת Colab Enterprise, בעזרת Gemini Code Assist
יש כמה דרכים עיקריות לעבוד עם מחברות Jupyter ב-Google Cloud. נשתמש במוצר החדש ביותר של Google, Colab Enterprise. חלקכם אולי מכירים את המוצר Colab של Google, שמשמש בדרך כלל אנשים פרטיים וארגונים שרוצים להתנסות בקובצי notebook של Jupyter בסביבה חינמית. Colab Enterprise הוא מוצר מסחרי של Google Cloud שמשולב באופן מלא עם שאר מוצרי הענן של Google, ומנצל באופן מלא את יכולות האבטחה והתאימות של סביבת GCP.
אחת מהתכונות ש-Colab Enterprise מציע היא שילוב עם Gemini Code Assist של Google. אפשר להשתמש ב-Code Assist במספר עורכי קוד שונים, והוא יכול להציע עצות וגם הצעות בתוך השורה בצורה חלקה בזמן שכותבים קוד. נשתמש בעוזר הגנרטיבי הזה כדי לארגן את נתוני המתכונים שלנו.
- משתמשים בחיפוש כדי לנווט אל Colab Enterprise ולוחצים על יצירת מחברת. אם מוצגת לכם הצעה להתנסות בתכונות חדשות של Colab, דחו אותה. כדי להפעיל את זמן הריצה, כוח המחשוב שמאחורי המחברת, לוחצים על Connect (חיבור) בפינה השמאלית העליונה של המחברת החדשה.

- לוחצים על קובץ > שינוי שם כדי לשנות את השם של ה-notebook ל-
Data Wrangling.
- לוחצים על + טקסט כדי ליצור תיבת טקסט חדשה, ומשתמשים בחץ למעלה כדי להעביר אותה כך שתהיה התא הראשון בדף.

- עורכים את תיבת הטקסט ומזינים:
# Data Wrangling Import the Pandas library - בבלוק הקוד שמתחת לבלוק הטקסט שיצרתם, מתחילים להקליד
impו-Gemini Code Assist אמור להציע את שאר הייבוא באפור. כדי לקבל את ההצעה, מקישים על Tab.import pandas as pd - מתחת לתיבת הקוד לייבוא, יוצרים עוד תיבת טקסט ומזינים:
Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records. - יוצרים ועורכים עוד בלוק קוד. שוב, מתחילים להקליד
df =ובודקים את הקוד שנוצר על ידי Gemini Code Assistant. אם מופיעה רשימה נפתחת של השלמה אוטומטית של מילות מפתח ב-Python מעל ההצעה שנוצרה, לוחצים על Escape כדי לראות את הקוד המוצע באפור בהיר. מקישים שוב על Tab כדי לאשר את ההצעה. אם ההצעה לא כללה אתhead()בקשה להפעלת פונקציה, מוסיפים אותה.df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv') df.head() - לוחצים על תא הקוד הראשון, שבו ייבאתם את Pandas, ומשתמשים בתפריט Commands או במקלדת כדי להריץ את התא שנבחר. במקלדת, לחיצה על Shift+Enter תריץ את התא ותעביר את המיקוד לתא הבא, ותיצור תא אם צריך. מחכים עד שהתא יופעל לפני שממשיכים.הערה: אם התא לא הופעל, יופיעו [ ] מימין לו. בזמן ההרצה של תא, מוצגת אנימציה מסתובבת שמציינת שהפעולה מתבצעת. בסיום התא יופיע מספר, כמו [13].
- מריצים את התא שבו קובץ ה-CSV נטען ל-DataFrame. מחכים שהקובץ ייטען ובודקים את חמש השורות הראשונות של הנתונים. אלה נתוני המתכון שנטען ל-BigQuery, ובסופו של דבר נשתמש בהם כדי להנחות את מחולל המתכונים.
- יוצרים בלוק קוד חדש ומזינים את התגובה שלמטה. אחרי שמקלידים את התגובה, עוברים לשורת הקוד הבאה ומוצגת ההצעה
df.columns. מאשרים את ההודעה ומריצים את התא. הדגמנו עכשיו שיש לכם שתי אפשרויות לקבלת עזרה מ-Gemini Code Assist במחברת Jupyter: תאי טקסט מעל תאי קוד או הערות בתוך תא הקוד עצמו. תגובות בתוך תאי קוד פועלות היטב ב-Jupyter notebooks, אבל הגישה הזו תפעל גם בכל סביבת פיתוח משולבת (IDE) אחרת שתומכת ב-Gemini Code Assist של Google.# List the current DataFrame column names - בואו נבצע ניקוי נתונים קטן של העמודות. משנים את השם של העמודה
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) - מסירים את העמודות
sourceו-NERומשתמשים ב-head()כדי לראות את השורות הראשונות. שוב, מבקשים עזרה מ-Gemini. מריצים את שתי השורות האחרונות ובודקים את התוצאות.# Remove the source and NER columns df.drop(columns=['source', 'NER'], inplace=True) df.head() - בואו נראה כמה רשומות יש במערך הנתונים שלנו. שוב, מתחילים עם טכניקת הנחיה לפי בחירה ובודקים אם Gemini יכול לעזור לכם ליצור את הקוד.
# Count the records in the DataFrame df.shape # count() will also work - 2.23 מיליון רשומות זה כנראה יותר מתכונים ממה שיש לנו זמן לעבור עליהם. תהליך יצירת האינדקס ב-Agent Builder ייקח כנראה יותר מדי זמן לתרגיל שלנו היום. כפשרה, נדגום 150,000 מתכונים ונשתמש בהם. תשתמש בגישה של הנחיה > קוד כדי לקחת את הדוגמה ולאחסן אותה ב-DataFrame חדש בשם
dfs(s בשביל small).# Sample out 150,000 records into a DataFrame named dfs dfs = df.sample(n=150000) - נתוני המקור של המתכון מוכנים לטעינה לתוך BigQuery. לפני שנטען את הנתונים, נעבור ל-BigQuery וניצור מערך נתונים שיכיל את הטבלה. במסוף Google Cloud, משתמשים בתיבת החיפוש כדי לנווט אל BigQuery. אפשר ללחוץ לחיצה ימנית על BigQuery ולפתוח אותו בכרטיסייה חדשה בדפדפן.
- אם היא לא מוצגת, פותחים את חלונית הצ'אט של Gemini AI באמצעות הלוגו של Gemini בפינה השמאלית העליונה של Cloud Console. אם תתבקשו להפעיל את ה-API שוב, לחצו על 'הפעלה' או רעננו את הדף. מריצים את ההנחיה:
What is a dataset used for in BigQuery?אחרי שבודקים את התשובה,How can I create a dataset named recipe_data using the Cloud Console?משווים את התוצאות לכמה השלבים הבאים.
- בחלונית BigQuery Explorer, לוחצים על סמל האפשרויות הנוספות (3 נקודות) View actions (הצגת פעולות) לצד מזהה הפרויקט. לאחר מכן בוחרים באפשרות יצירת מערך נתונים.

- תציין את מערך הנתונים ואת המזהה של
recipe_data. משאירים את סוג המיקום כ-US ולוחצים על Create Dataset (יצירת מערך נתונים). אם מופיעה שגיאה שמערך הנתונים כבר קיים, פשוט ממשיכים הלאה.אחרי שיצרנו את מערך הנתונים ב-BigQuery, נחזור למחברת ונבצע את ההוספה. - חוזרים אל מחברת ניהול הנתונים ב-Colab Enterprise. בתא קוד חדש, יוצרים משתנה בשם
project_idומשתמשים בו כדי לאחסן את מזהה הפרויקט הנוכחי. מזהה הפרויקט הנוכחי מופיע בפינה הימנית העליונה של ההוראות האלה, מתחת ללחצן End Lab. אפשר גם למצוא אותו בדף הבית של Cloud Console. מקצים את הערך למשתנהproject_idומריצים את התא.# Create a variable to hold the current project_id project_id='YOUR_PROJECT_ID' - משתמשים בגישת ההנחיה > קוד כדי ליצור בלוק קוד שיכניס את 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 להזכיר לכם את השלבים ליצירת אפליקציית חיפוש ב-Agent Builder, או לפעול לפי השלבים שמפורטים בהמשך.
- משתמשים בחיפוש כדי לנווט אל הכלי ליצירת סוכנים. פותחים את מאגרי הנתונים ולוחצים על יצירת מאגר נתונים. הפעם, בוחרים את סוג מאגר הנתונים BigQuery.
- בתא הבחירה של הטבלה, לוחצים על עיון ומחפשים את
recipes. לוחצים על לחצן הבחירה לצד הטבלה. אם מופיעים מתכונים מפרויקטים אחרים מסוג qwiklabs-gcp-..., צריך לוודא שבוחרים את המתכון ששייך לכם.הערה: אם לוחצים עלrecipesבמקום לסמן את כפתור הבחירה שלידו, ייפתח כרטיסייה חדשה בדפדפן ותועברו לדף הסקירה הכללית של הטבלה ב-BigQuery. פשוט סוגרים את כרטיסיית הדפדפן ובוחרים את לחצן האפשרויות ב-Agent Builder. - בודקים את שאר אפשרויות ברירת המחדל, אבל לא משנים אותן, ואז לוחצים על המשך.
- בדף סקירת הסכימה, בודקים את הגדרות ברירת המחדל הראשוניות, אבל לא משנים שום דבר. המשך
- נותנים למאגר הנתונים את השם
recipe-data. עורכים את מזהה מאגר הנתונים ומגדירים אותו ל-recipe-data-id. יוצרים את מאגר הנתונים. - בתפריט הניווט הימני, עוברים אל Apps (אפליקציות) ולוחצים על Create A New App (יצירת אפליקציה חדשה).
- בכרטיס חיפוש האתר שלך, לוחצים על יצירה. נותנים לאפליקציה שם
recipe-searchולוחצים על עריכה כדי להגדיר את המזהה ל-recipe-search-id. מגדירים את שם החברה ל-Googleולוחצים על המשך. - הפעם, בודקים את מקורות הנתונים recipe-data. יוצרים את האפליקציה.
ייקח זמן עד שטבלת מסד הנתונים שלנו תאונדקס. בזמן הזה, ננסה את קנבס הנתונים החדש של BigQuery ונראה אם נוכל למצוא מתכון מעניין או שניים.
- משתמשים בתיבת החיפוש כדי לעבור אל BigQuery. בחלק העליון של BigQuery Studio, לוחצים על החץ למטה לצד הכרטיסייה הכי ימנית ובוחרים באפשרות Data canvas (קנבס נתונים). מגדירים את האזור ל-us-central1.

- לוחצים על חיפוש נתונים. בתיבת החיפוש של קנבס נתונים, מחפשים את
recipes, מקישים עלEnter/Returnכדי לחפש ולוחצים על הלחצן הוספה לקנבס לצד שם הטבלה. - ייצוג חזותי של טבלת המתכונים ייטען אל קנבס נתונים ב-BigQuery. אתם יכולים לעיין בסכימה של הטבלה, לראות תצוגה מקדימה של הנתונים בטבלה ולבדוק פרטים אחרים. מתחת לייצוג הטבלה, לוחצים על שאילתה.
- בשטח העבודה יופיע דו-שיח של שאילתת BigQuery, בתוספת אחת: מעל חלון השאילתה יש תיבת טקסט שבה אפשר להזין הנחיה ל-Gemini כדי לקבל עזרה. ננסה למצוא מתכונים לעוגות בדוגמה שלנו. מריצים את ההנחיה הבאה (מקלידים את הטקסט ולוחצים על
Enter/Returnכדי להפעיל את יצירת ה-SQL):Please select the title and ingredients for all the recipes with a title that contains the word cake. - בודקים את ה-SQL שנוצר. כשמרוצים מהתוצאה, מריצים את השאילתה.
- לא רע בכלל! מומלץ לנסות עוד כמה הנחיות ושאילתות לפני שממשיכים. כשעורכים ניסויים, כדאי לנסות הנחיות פחות ספציפיות כדי לראות מה עובד ומה לא. לדוגמה, ההנחיה הזו:
(אל תשכח להריץ את השאילתה החדשה) קיבלתי רשימה של מתכוני צ'ילי, אבל בלי המצרכים, עד ששיניתי אותה ל:Do I have any chili recipes? (כן, אני אומר בבקשה כשאני נותן הנחיה. My Mama would be so proud.)I noticed that one chili recipe contained mushrooms, and who wants that in chili? ביקשתי מ-Gemini לעזור לי להוציא את המתכונים האלה.Do I have any chili recipes? Please include their title and ingredients.Do I have any chili recipes? Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
8. פתיחת Cloud Shell Editor
- עוברים אל Cloud Shell Editor.
- אם הטרמינל לא מופיע בתחתית המסך, פותחים אותו:
- לוחצים על סמל האפשרויות הנוספות (3 קווים)
. - לוחצים על Terminal (מסוף).
- לוחצים על New Terminal (טרמינל חדש)
.
- לוחצים על סמל האפשרויות הנוספות (3 קווים)
- בטרמינל, מגדירים את הפרויקט באמצעות הפקודה הבאה:
- פורמט:
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.
9. הפעלת ממשקי ה-API
בטרמינל, מפעילים את ממשקי ה-API:
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
אם מתבקשים לאשר, לוחצים על אישור כדי להמשיך. 
השלמת הפקודה עשויה להימשך כמה דקות, אבל בסופו של דבר אמורה להתקבל הודעה על הצלחה שדומה להודעה הבאה:
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 זמין במסמכי העזרה כאן.
- במסוף של Cloud Shell Editor, מריצים את הפקודה הבאה כדי לשכפל את מאגר האפליקציה של המתכון.
git clone https://github.com/haggman/recipe-app - מריצים את הפקודה הזו כדי לפתוח את תיקיית האפליקציה ב-Cloud Shell Editor.
cloudshell open-workspace recipe-app/ - לפני שנתחיל לעבוד על אפליקציית האינטרנט שלנו, נבדוק את התיקייה המשוכפלת ונדאג שתוסף Cloud Code של העורך יהיה מחובר ל-Google Cloud ושהוא יופעל ב-Gemini. בואו נעשה את זה עכשיו. בפינה הימנית התחתונה של העורך, לוחצים על Cloud Code - Sign in (Cloud Code – כניסה). אם הקישור לא מופיע, צריך לחכות דקה ולבדוק שוב.

- בחלון הטרמינל תוצג כתובת URL ארוכה. פותחים את כתובת ה-URL בדפדפן ומבצעים את השלבים כדי להעניק ל-Cloud Code גישה לסביבת Google Cloud. בתיבת הדו-שיח האחרונה, לוחצים על העתקה של קוד האימות ומדביקים אותו בחזרה בחלון הטרמינל שממתין בכרטיסייה בדפדפן של Cloud Shell Editor.
- אחרי כמה רגעים, הקישור Cloud Code בפינה הימנית התחתונה של העורך ישתנה ל-Cloud Code - No Project. לוחצים על הקישור החדש כדי לבחור פרויקט. לוח הפקודות אמור להיפתח בחלק העליון של העורך. לוחצים על Select a Google Cloud project (בחירת פרויקט ב-Google Cloud) ובוחרים את הפרויקט. אחרי כמה רגעים, הקישור בפינה הימנית התחתונה של הכלי לעריכה יתעדכן ויציג את מזהה הפרויקט. המשמעות היא ש-Cloud Code צורף בהצלחה לפרויקט הפעיל.
- אחרי שחיברתם את Cloud Code לפרויקט, אתם יכולים להפעיל את Gemini Code Assist. בפינה השמאלית התחתונה של ממשק העורך, לוחצים על הלוגו של Gemini עם הקו שחוצה אותו. החלונית של Gemini Chat תיפתח בצד ימין של העורך. לוחצים על בחירת פרויקט ב-Google Cloud. כשלוח הפקודות נפתח, בוחרים את הפרויקט. אם ביצעתם את השלבים בצורה נכונה (ו-Google לא שינתה שום דבר), אמור להופיע חלון פעיל של Gemini Chat.

- מצוין, אחרי שסיימנו להגדיר את הטרמינל, את Gemini בצ'אט ואת Cloud Code, פותחים את הכרטיסייה Explorer (סייר) ומקדישים כמה דקות לעיון בקבצים בפרויקט הנוכחי.

- בסייר, פותחים את הקובץ
requirements.txtלעריכה. עוברים לחלונית הצ'אט של Gemini ושואלים:From the dependencies specified in the requirements.txt file, what type of application are we building? - לכן, אנחנו בונים אפליקציית אינטרנט אינטראקטיבית באמצעות Python ו-Streamlit, שמתקשרת עם Vertex AI ו-Discovery Engine. בשלב הזה, נתמקד ברכיבים של אפליקציית האינטרנט. כמו ש-Gemini אומר, Streamlit הוא פלטפורמה ליצירת אפליקציות אינטרנט מבוססות-נתונים ב-Python. עכשיו שואלים:
בשלב הזה בדרך כלל מתעוררות בעיות ב-Gemini. Gemini יכול לגשת לקובץ שפתוח כרגע בכלי העריכה, אבל הוא לא יכול לראות את כל הפרויקט. אפשר לנסות לשאול:Does the current project's folder structure seem appropriate for a Streamlit app? רוצה לקבל תשובה טובה יותר?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 - כדאי לקבל מידע נוסף על Streamlit:
יפה, אפשר לראות ש-Gemini מציע לנו סקירה כללית טובה שכוללת יתרונות וחסרונות.What can you tell me about Streamlit? - אם רוצים לבדוק את החסרונות, אפשר לשאול:
שימו לב שלא היינו צריכים להגיד 'של Streamlit', כי Gemini Chat הוא שיחתי (מרובה תפניות). Gemini יודע על מה דיברנו כי אנחנו בשיחת צ'אט. אם בשלב כלשהו תרצו למחוק את היסטוריית הצ'אטים עם Gemini, תוכלו להשתמש בסמל של פח האשפה בחלק העליון של חלון הצ'אט עם Gemini.What are the major downsides or shortcomings?
11. פריסת אפליקציית האינטרנט ב-Cloud Run
מעולה, יש לנו את מבנה האפליקציה הבסיסי, אבל האם הכול יעבוד? עוד יותר טוב, איפה כדאי לארח אותו ב-Google Cloud?
- בחלון הצ'אט עם Gemini, שואלים:
If I containerize this application, what compute technologies in Google Cloud would be best for hosting it? - חשוב לזכור שאם לא עבדתם כבר בסביבת הפיתוח המשולבת, אתם יכולים גם לבקש עזרה מ-Google Cloud Assist. פותחים את מסוף Google Cloud, פותחים את Gemini Cloud Assist ושואלים:
האם שתי קבוצות העצות היו זהות? האם יש לך הסתייגויות לגבי העצות שקיבלת? חשוב לזכור ש-Gemini הוא עוזר אישי מבוסס-AI גנרטיבי, וכמו עוזר אנושי, לא תמיד תסכימו עם כל מה שהוא אומר. עם זאת, העובדה שהעוזר תמיד לצידכם בזמן שאתם עובדים ב-Google Cloud ובכלי לעריכת קוד יכולה לשפר משמעותית את היעילות שלכם.If I have a containerized web application, where would be the best place to run it in Google Cloud? - אם מדובר באפליקציית אינטרנט בקונטיינר ללא שמירת מצב ולזמן קצר, Cloud Run היא אפשרות מצוינת. בחלון הצ'אט עם Gemini בכלי לעריכת קוד, מנסים את ההנחיה:
What steps would be required to run this application in Cloud Run? - נראה שהדבר הראשון שצריך לעשות הוא ליצור קובץ Dockerfile. בעזרת העורך, יוצרים קובץ בשם
Dockerfileבתיקיית השורש של הפרויקט. חשוב לוודא שלא העברתם אותו בטעות לתיקייה pages. פותחים את הקובץ לעריכה. - נשתמש בחלונית הצדדית של Gemini כדי ליצור את קובץ Dockerfile. אפשר להשתמש בהנחיה כמו זו שבהמשך. כשהתוצאות מוצגות בצ'אט, משתמשים בסמל + שמופיע לצד סמל ההעתקה, ממש מעל קובץ ה-Dockerfile המוצע, כדי להוסיף את הקוד המוצע לקובץ ה-Dockerfile.
Gemini לא תמיד יחזיר את אותה תשובה לאותה הנחיה. בפעם הראשונה שביקשתי מ-Gemini קובץ 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. זה קובץ Docker מדהים. אני רוצה לפשט את זה קצת. אנחנו לא צריכים את הקטע apt-get כי כל מה שנדרש ל-Python כבר נמצא בתמונת הבסיס שלנו. בנוסף, שימוש בסביבה וירטואלית במאגר Python הוא בזבוז של מקום, ולכן כדאי להסיר את זה. הפקודה expose לא הכרחית, אבל אפשר להשתמש בה. בנוסף, הוא מנסה להפעיל את main.py, שלא קיים אצלי.# 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"] - בתיקייה
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"] - אפשר להשתמש ב-Gemini דרך חלון הצ'אט, אבל אפשר גם להשתמש בו ישירות בקובץ הקוד באמצעות הערות, כמו שעשינו במחברת Data Wrangling. אפשר גם להפעיל אותו באמצעות Control+i ב-Windows או Command+i ב-Mac. לוחצים במקום כלשהו ב-
Dockerfileומפעילים את Gemini באמצעות הפקודה המתאימה Command+i / Control+i. - מזינים את הטקסט הבא בהנחיה. בודקים את השינוי ומאשרים אותו.
מגניב, נכון?! כמה פעמים נאלצתם לעבוד עם קוד של מישהו אחר, ורק אחרי שביזבזתם זמן כדי להבין את העבודה שלו (שלא כללה הערות) יכולתם להתחיל לבצע את השינויים שלכם? Gemini בא לעזרה!Please comment the current file. - עכשיו יש לך שאלה ל-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? - נתחיל לבנות ולפרוס את האפליקציה. בחלון הטרמינל, מריצים את הפקודה
gcloud run deploy. אם מוצגת לכם הנחיה ליצור מאגר Artifact Registry, מקישים עלgcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501enter/returnDeploying 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)?
- אם תצפו בתהליך ה-build, קודם הוא ייצור את מאגר Docker של Artifact Registry. לאחר מכן, המערכת משתמשת ב-Cloud Build כדי ליצור את קובץ אימג' של קונטיינר מקובץ Docker בתיקייה המקומית. לבסוף, תתבצע פריסה של תמונת ה-Docker בשירות חדש של Cloud Run. בסוף הסקריפט תקבלו כתובת URL לבדיקה ב-Cloud Run שתוכלו להשתמש בה.
פותחים את הקישור שמוחזר בכרטיסייה חדשה בדפדפן. כדאי לעיין במבנה ובדפים של האפליקציה. מעולה, עכשיו צריך להוסיף את הפונקציונליות של ה-AI הגנרטיבי.
12. חיבור הדף 'עצות לבישול' לאפליקציה שלנו ליצירת סוכנים לחיפוש מתכונים
יש לנו את המסגרת להפעלת אפליקציית האינטרנט, אבל אנחנו צריכים לקשר בין שני דפי העבודה לשתי אפליקציות החיפוש שלנו ב-Vertex AI Agent Builder. נתחיל עם עצות לבישול.
- משאירים את הכרטיסייה של Cloud Shell Editor פתוחה. במסוף Google Cloud, משתמשים בחיפוש כדי לעבור אל Chat ב-Vertex AI.
- בחלונית ההגדרות בצד שמאל, מגדירים את המודל gemini-1.5-flash-002. מגדילים את מגבלת הטוקנים של הפלט עד למקסימום, כדי שהמודל יוכל להחזיר תשובות ארוכות יותר אם צריך. פותחים את ההגדרות של מסנן הבטיחות. מגדירים את האפשרויות 'דברי שטנה', 'תוכן מיני בוטה' ו'תוכן שכולל הטרדה' לחסימה חלקית. מגדירים את האפשרות 'תוכן מסוכן' לחסימה של חלק מהתוכן ולוחצים על שמירה. אנחנו מגדירים את התוכן המסוכן ברמה נמוכה יותר כי Gemini עלול לפרש שיחה על סכינים וחיתוך כשיחה על אלימות.
- מזיזים את המתג כדי להפעיל את ההגדרה הצגת תשובות מבוססות-מידע ואז לוחצים על התאמה אישית. מגדירים את מקור ההארקה לחיפוש ב-Vertex AI ומשתמשים בנתיב הבא למאגר הנתונים. משנים את YOUR_PROJECT_ID למזהה הפרויקט שמופיע ליד הלחצן End Lab בהוראות האלה, ואז לוחצים על Save כדי לשמור את הגדרות ההארקה.
הערה: אם מופיעה שגיאה, יכול להיות שלא שיניתם את מזהה הפרויקט למזהה הפרויקט בפועל, או שדילגתם על השלב שבו משנים את מזהה מאגר הנתונים של Agent Builder של ספרי הבישול הישנים. בודקים את מזהה מאגר הנתונים בפועל ב-Agent Builder > מאגרי נתונים > old-cookbooks.projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id - בודקים כמה הודעות בצ'אט. אולי כדאי להתחיל עם ההודעה הבאה. אם רוצים, אפשר לנסות עוד כמה.
How can I tell if a tomato is ripe? - המודל פועל, ועכשיו ננסה לשחק עם הקוד. לוחצים על ניקוי השיחה כדי שהשיחות שלנו לא יהפכו לחלק מהקוד, ואז לוחצים על קבלת קוד.

- בחלק העליון של חלון הקוד, לוחצים על Open Notebook כדי שנוכל להתנסות בקוד ולשפר אותו ב-Colab Enterprise לפני שמשלבים אותו באפליקציה שלנו.
- כדאי להקדיש כמה דקות כדי להכיר את הקוד. בואו נבצע כמה שינויים כדי להתאים אותו למה שאנחנו רוצים. לפני שמתחילים, מריצים את תא הקוד הראשון כדי להתחבר למחשוב ולהתקין את AI Platform SDK. אחרי שהחסימה תפעל, תופיע בקשה להפעיל מחדש את הסשן. אפשר לעשות את זה.
- עוברים לקוד שחילצנו מ-Vertex AI Studio. משנים את השם של ה-method multiturn_generate_content ל-
start_chat_session. - גוללים אל הפעלת ה-method
model = GenerativeModel(. הקוד הקיים מגדיר אתgeneration_configואתsafety_settingsאבל לא משתמש בהם בפועל. משנים את היצירה שלGenerativeModelכך שתהיה דומה ל:model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, ) - לבסוף, מוסיפים שורה אחרונה לשיטה, ממש מתחת ל-
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 - גוללים לתחתית של תא הקוד ומשנים את השורה האחרונה שקוראת לפונקציה הישנה, כך שהיא תקרא לשם הפונקציה החדשה ותאחסן את האובייקט המוחזר במשתנה
chat. כשמרוצים מהשינויים, מריצים את התא.chat = start_chat_session() - יוצרים תא קוד חדש ומוסיפים את התגובה
# 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) - זו התשובה, אבל החלק שאנחנו באמת רוצים הוא השדה
textהמקונן. משנים את בלוק הקוד כדי להדפיס רק את הקטע הזה, למשל:response = chat.send_message("How can I tell if a tomato is ripe?") print(response.candidates[0].content.parts[0].text) - מעולה, עכשיו שיש לנו קוד צ'אט תקין, נשלב אותו באפליקציית האינטרנט שלנו. מעתיקים את כל התוכן של תא הקוד שיוצר את הפונקציה
start_chat_session(לא נצטרך את תא הבדיקה). אם לוחצים על התא, אפשר ללחוץ על סמל האפשרויות הנוספות (3 נקודות) בפינה השמאלית העליונה ולהעתיק משם
- עוברים לכרטיסייה Cloud Shell Editor ופותחים את הקובץ
pages\Cooking_Advice.pyלעריכה. - מאתרים את התגובה:
# # Add the code you copied from your notebook below this message # - מדביקים את הקוד שהעתקתם ממש מתחת להערה Add the code (הוספת הקוד). מעולה, עכשיו יש לנו את הקטע שמפעיל את מנוע הצ'אט באמצעות קריאה מבוססת ל-Gemini. עכשיו נשלב אותו ב-Streamlit.
- מאתרים את הקטע של הקוד עם ההערות ישירות מתחת להערה:
# # Here's the code to setup your session variables # Uncomment this block when instructed # - מסירים את ההערה מקטע הקוד הזה (עד לקטע
Setup done, let's build the page UIהבא) ומעיינים בו. הפונקציה יוצרת או מאחזרת את משתני הסשן של הצ'אט וההיסטוריה. - לאחר מכן, צריך לשלב את ההיסטוריה ואת פונקציית הצ'אט בממשק המשתמש. גוללים בקוד עד שמאתרים את ההערה הבאה.
# # Here's the code to create the chat interface # Uncomment the below code when instructed # - מסירים את סימן ההערה משאר הקוד שמתחת להערה ומקדישים רגע לבדיקה שלו. אם רוצים, אפשר לסמן אותו ולבקש מ-Gemini להסביר את הפונקציונליות שלו.
- מצוין, עכשיו ניצור את האפליקציה ונפרוס אותה. כשכתובת ה-URL חוזרת, מפעילים את האפליקציה ומנסים להשתמש בדף של יועץ הבישול. אולי כדאי לשאול אותו על עגבניות בשלות, או אם הוא מכיר דרך טובה להכנת כרוב ניצנים.
gcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501
נכון שזה מגניב?! יועץ בישול אישי מבוסס-AI :-)
13. (אופציונלי) קישור דף החיפוש של המתכונים לאפליקציית הכלי ליצירת סוכנים לחיפוש מתכונים
כדי לקשר את הדף 'עצות לבישול' למקור המבוסס שלו, השתמשנו ישירות ב-Gemini API. במקרה של Recipe Search, נתחבר ישירות לאפליקציית החיפוש של Vertex AI Agent Builder.
- ב-Cloud Shell Editor, פותחים את הדף
pages/Recipe_Search.pyלעריכה. בודקים את מבנה הדף. - בחלק העליון של הקובץ, מגדירים את מזהה הפרויקט.
- בודקים את הפונקציה
search_sample. הקוד הזה מגיע ישירות ממאמר העזרה בנושא Discovery Engine כאן. כאן אפשר למצוא עותק עובד של המחברת הזו.השינוי היחיד שביצעתי היה להחזיר אתresponse.resultsבמקום רק את התוצאות. בלי זה, סוג ההחזרה הוא אובייקט שנועד להעביר את התוצאות מדף לדף, וזה משהו שלא צריך באפליקציה הבסיסית שלנו. - גללו עד הסוף של הקובץ ובטלו את ההערה של כל המקטע שמתחת ל-
Here are the first 5 recipes I found. - מסמנים את כל הקטע שביטלתם את ההערה שלו ופותחים את Gemini Code Chat. אפשר לשאול את
Explain the highlighted code. אם לא בוחרים כלום, Gemini יכול להסביר את כל הקובץ. אם תסמנו קטע ותבקשו מ-Gemini להסביר אותו, להוסיף לו תגובה או לשפר אותו, Gemini יעשה זאת.כדאי לקרוא את ההסבר. למען הסר ספק, שימוש במחברת Colab Enterprise הוא דרך מצוינת לבחון את Gemini APIs לפני שמשלבים אותם באפליקציה. הוא שימושי במיוחד כשרוצים לבדוק ממשקי API חדשים יותר, שאולי התיעוד שלהם לא מפורט מספיק. - בחלון המסוף של העורך, מריצים את הפקודה
build.shכדי לפרוס את האפליקציה הסופית. צריך לחכות עד שהגרסה החדשה תופעל לפני שעוברים לשלב הבא.
14. (אופציונלי) עיון בבקשה הסופית
כדאי להקדיש כמה דקות כדי לבדוק את האפליקציה הסופית.
- במסוף Google Cloud, משתמשים בחיפוש כדי לעבור אל
Cloud Run, ואז לוחצים על recipe-web-app. - מאתרים את כתובת ה-URL של בדיקת האפליקציה (בחלק העליון) ופותחים אותה בכרטיסייה חדשה בדפדפן.
- דף הבית של האפליקציה אמור להופיע. שימו לב לפריסה הבסיסית ולניווט ש-Streamlit מספקת, כשקובצי ה-Python מהתיקייה
pagesמוצגים כאפשרויות ניווט, והקובץHome.pyנטען כדף הבית. עוברים לדף Cooking Advice (טיפים לבישול). - אחרי כמה רגעים יופיע ממשק הצ'אט. שוב, שימו לב לפריסה הבסיסית הנאה ש-Streamlit מספקת.
- נסו לשאול כמה שאלות שקשורות לבישול כדי להבין איך הצ'אטבוט פועל. למשל:
Do you have any advice for preparing broccoli? How about a classic chicken soup recipe? Tell me about meringue. - עכשיו נחפש מתכון או שניים. עוברים לדף החיפוש של מתכונים ומנסים כמה חיפושים. למשל:
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
אפשר גם למחוק משאבים מיותרים מהדיסק של Cloud Shell. אתם יכולים:
- מוחקים את ספריית הפרויקט של ה-codelab:
rm -rf ~/task-app - אזהרה! אי אפשר לבטל את הפעולה הבאה! אם רוצים למחוק את כל מה שיש ב-Cloud Shell כדי לפנות מקום, אפשר למחוק את כל ספריית הבית. חשוב לוודא שכל מה שרוצים לשמור נשמר במקום אחר.
sudo rm -rf $HOME