1. بررسی اجمالی
در این آزمایشگاه، از محصولات هوش مصنوعی مولد Google برای ایجاد زیرساخت در Google Cloud با کمک Gemini Cloud Assist، جستجوی داده های BigQuery با استفاده از زبان طبیعی برای ویژگی های SQL Data Canvas، نوشتن کد در نوت بوک های Colab Enterprise Jupyter و Eclipse Theia استفاده خواهید کرد. کد ویژوال استودیو) با کمک Gemini Code Assist، و ادغام ویژگیهای جستجو و چت هوش مصنوعی مبتنی بر منابع زمینی ذخیره سازی ابری و BigQuery در Vertex AI Agent Builder.
هدف ما ایجاد یک وب سایت دستور العمل و آشپزی به نام AI Recipe Haven است. این سایت در پایتون و استریم لیت ساخته خواهد شد و شامل دو صفحه اصلی خواهد بود. Cooking Advice میزبان چت باتی است که ما با استفاده از Gemini و یک منبع مبتنی بر Vertex AI Agent Builder متصل به گروهی از کتابهای آشپزی ایجاد خواهیم کرد، و توصیههای آشپزی و پاسخ به سؤالات مربوط به آشپزی را ارائه میدهد. Recipe Search یک موتور جستجو خواهد بود که توسط Gemini تغذیه می شود، این بار در پایگاه داده دستور العمل BigQuery پایه گذاری شده است.
اگر به هر کدام از کدهای این تمرین قطع میشوید، راهحلهای همه فایلهای کد در مخزن تمرین GitHub در شاخه راه حل قرار دارند.
اهداف
در این آزمایشگاه می آموزید که چگونه وظایف زیر را انجام دهید:
- Gemini Cloud Assist را فعال کرده و از آن استفاده کنید
- یک برنامه جستجو در Vertex AI Agent Builder برای چت ربات مشاوره آشپزی ایجاد کنید
- با کمک Gemini Code Assist، داده ها را در یک نوت بوک Colab Enterprise بارگیری و پاک کنید
- یک برنامه جستجو در Vertex AI Agent Builder برای مولد دستور غذا ایجاد کنید
- با کمک کمی جمینی، برنامه اصلی Python و Streamlit را قاب کنید
- برنامه وب را در Cloud Run مستقر کنید
- صفحه مشاوره آشپزی را به برنامه سازنده کتاب آشپزی ما وصل کنید
- (اختیاری) صفحه Recipe Search را به برنامه Recipe-search Agent Builder متصل کنید
- (اختیاری) برنامه نهایی را کاوش کنید
2. راه اندازی و الزامات
قبل از اینکه روی دکمه Start Lab کلیک کنید
این دستورالعمل ها را بخوانید. آزمایشگاه ها زمان بندی شده اند و نمی توانید آنها را مکث کنید. تایمر که با کلیک روی Start Lab شروع می شود، نشان می دهد که منابع Google Cloud چه مدت در دسترس شما قرار می گیرند.
این آزمایشگاه عملی Qwiklabs به شما امکان می دهد فعالیت های آزمایشگاهی را خودتان در یک محیط ابری واقعی انجام دهید، نه در یک محیط شبیه سازی یا نمایشی. این کار را با دادن اعتبارنامه های جدید و موقتی به شما انجام می دهد که از آنها برای ورود به سیستم و دسترسی به Google Cloud در طول مدت آزمایشگاه استفاده می کنید.
آنچه شما نیاز دارید
برای تکمیل این آزمایشگاه به موارد زیر نیاز دارید:
- دسترسی به یک مرورگر اینترنت استاندارد (مرورگر کروم توصیه می شود).
- زمان تکمیل آزمایشگاه است.
توجه: اگر قبلاً حساب یا پروژه Google Cloud شخصی خود را دارید، از آن برای این آزمایشگاه استفاده نکنید.
توجه: اگر از Pixelbook استفاده میکنید، یک پنجره ناشناس برای اجرای این آزمایشگاه باز کنید.
چگونه آزمایشگاه خود را راه اندازی کنید و به کنسول ابری گوگل وارد شوید
- روی دکمه Start Lab کلیک کنید. اگر نیاز به پرداخت هزینه آزمایشگاه دارید، یک پاپ آپ برای شما باز می شود تا روش پرداخت خود را انتخاب کنید. در سمت چپ یک پانل پر از اعتبارنامه های موقت است که باید برای این آزمایشگاه استفاده کنید.
- نام کاربری را کپی کنید و سپس روی Open Google Console کلیک کنید. آزمایشگاه منابع را می چرخاند و سپس برگه دیگری را باز می کند که صفحه ورود به سیستم را نشان می دهد.
نکته: برگه ها را در پنجره های جداگانه، کنار هم باز کنید.
اگر صفحه Choose an account را مشاهده کردید، روی Use Another Account کلیک کنید.
- در صفحه ورود ، نام کاربری را که از پانل جزئیات اتصال کپی کردهاید، جایگذاری کنید. سپس رمز عبور را کپی و پیست کنید.
مهم: باید از اعتبارنامه های پانل جزئیات اتصال استفاده کنید. از اعتبار Qwiklabs خود استفاده نکنید. اگر حساب Google Cloud خود را دارید، از آن برای این آزمایشگاه استفاده نکنید (از تحمیل هزینه جلوگیری می کند). 4. روی صفحات بعدی کلیک کنید:
- شرایط و ضوابط را بپذیرید.
- گزینه های بازیابی یا احراز هویت دو مرحله ای را اضافه نکنید (زیرا این یک حساب موقت است).
- برای آزمایش های رایگان ثبت نام نکنید.
پس از چند لحظه، Cloud Console در این تب باز می شود.
توجه: با کلیک بر روی منوی پیمایش در بالا سمت چپ، میتوانید منو را با فهرستی از محصولات و خدمات Google Cloud مشاهده کنید.
3. وظیفه 0. کلاستر ایستگاه کاری خود را بررسی کنید
در بخش بعدی این آزمایشگاه، از یک Google Cloud Workstation برای انجام برخی کارهای توسعه استفاده خواهید کرد. فرآیند راه اندازی این آزمایشگاه باید ایجاد کلاستر ایستگاه کاری شما را آغاز می کرد. قبل از حرکت، بیایید مطمئن شویم که خوشه در حال ساخت است.
- در Google Cloud Console، از کادر جستجو برای پیمایش به ایستگاههای کاری Cloud استفاده کنید.
- از منوی پیمایش سمت چپ برای مشاهده مدیریت کلاستر استفاده کنید.
- اگر خوشهای دارید که در حال بهروزرسانی است، خوب هستید و میتوانید به کار 1 بروید. اگر در هیچ وضعیتی هیچ خوشهای نمیبینید، صفحه را بازخوانی کنید. اگر هنوز یک خوشه بهروزرسانی (ساختمان) را نمیبینید، با استفاده از دکمه سمت چپ بالای این دستورالعملها، این آزمایشگاه را پایان دهید و آزمایشگاه را مجدداً راهاندازی کنید.
4. وظیفه 1. فعال کردن و استفاده از Gemini Cloud Assist
در این کار ما Gemini Cloud Assist را فعال و استفاده می کنیم. هنگام کار در Google Cloud Console، Gemini Cloud Assist می تواند مشاوره ارائه دهد، در ساخت، پیکربندی و نظارت بر زیرساخت Google Cloud به شما کمک کند و حتی می تواند دستورات gcloud
را پیشنهاد دهد و اسکریپت های Terraform بنویسد.
- برای فعال کردن Cloud Assist برای استفاده، روی کادر جستجو در بالای رابط کاربری Cloud Console کلیک کنید و Ask Gemini را انتخاب کنید (یا عبارت ممکن است Ask Gemini for Cloud console باشد).
- به بخش Required API صفحه بروید و Gemini for Google Cloud API را فعال کنید .
- اگر بلافاصله رابط چت را نمیبینید، روی شروع چت کلیک کنید. با درخواست از Gemini برای توضیح برخی از مزایای استفاده از ایستگاه های کاری ابری شروع کنید. چند دقیقه وقت بگذارید تا پاسخ ایجاد شده را بررسی کنید.
- در مرحله بعد، در مورد مزایای 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?
- اکنون، در پنجره غیر ناشناس خود، به وب سایت عمومی Gemini در اینجا بروید، در صورت نیاز وارد شوید و همین سوال را بپرسید. آیا پاسخ ها یکسان هستند یا حداقل مشابه؟ مراحل خاص؟ آیا هر کدام به طور محسوسی بهتر است؟ صرف نظر از این، در حین انجام مراحل بعدی، پاسخ ها را در ذهن داشته باشید.
توجه: اگر سعی کنید مرحله بالا را با استفاده از حساب موقت Qwiklabs خود انجام دهید، مسدود خواهید شد. اگر حساب کاری شما نیز مسدود شده است، زیرا سازمان شما اجازه استفاده از برنامه وب Gemini را نمی دهد، به سادگی از مرحله رد شده و ادامه دهید. این بر توانایی شما برای تکمیل این تمرین تاثیری نخواهد داشت.
5. وظیفه 2. یک برنامه جستجو در Vertex AI Agent Builder برای چت ربات مشاوره آشپزی ایجاد کنید.
وبسایتی که ما در حال ساختن آن هستیم دارای یک صفحه مشاوره آشپزی است که حاوی یک ربات چت است که برای کمک به کاربران در یافتن پاسخ سؤالات مربوط به آشپزی طراحی شده است. این توسط Gemini مبتنی بر منبعی حاوی 70 کتاب آشپزی با دامنه عمومی ارائه می شود. کتابهای آشپزی به عنوان منبع حقیقتی عمل میکنند که جمینی هنگام پاسخ دادن به سؤالات از آن استفاده میکند.
- از کادر جستجوی Cloud Console برای پیمایش به Vertex AI استفاده کنید. از داشبورد، روی Enable All Recommended APIs کلیک کنید. اگر یک کادر بازشو در مورد Vertex AI API دریافت کردید که باید فعال شود، لطفاً آن را نیز فعال کنید .
- برای رفتن به Agent Builder از جستجو استفاده کنید و سپس API را ادامه دهید و فعال کنید .
- همانطور که Gemini در مشاوره قبلی ما پیشنهاد کرد، ایجاد یک برنامه جستجو در Agent Builder با ایجاد یک منبع داده معتبر شروع می شود. هنگامی که کاربر جستجو میکند، جمینی سؤال و نحوه تنظیم پاسخهای هوشمند را میفهمد، اما به جای اینکه از دانش ذاتی خود بیرون بکشد، به دنبال اطلاعاتی است که در آن پاسخ استفاده شده است.
از منوی سمت چپ، به Data Stores و Create Data Store بروید. 4. کتابهای آشپزی با مالکیت عمومی که برای زمینبندی صفحه مشاوره آشپزی خود استفاده میکنیم، در حال حاضر در یک سطل Cloud Storage در یک پروژه خارجی قرار دارند. نوع منبع Cloud Storage را انتخاب کنید. 5. گزینه های پیش فرض مربوط به نوع اطلاعاتی که وارد می کنیم را بررسی کنید اما تغییر ندهید. نوع import را روی Folder بگذارید و برای مسیر سطل از: labs.roitraining.com/labs/old-cookbooks
و سپس Continue استفاده کنید. 6. نام ذخیره داده را بگذارید: old-cookbooks
. شناسه را ویرایش کرده و به old-cookbooks-id
تغییر دهید و ذخیره داده را ایجاد کنید .
سازنده Vertex AI Agent از چندین نوع برنامه پشتیبانی می کند و Data Store به عنوان منبع حقیقت برای هر کدام عمل می کند. برنامه های جستجو برای استفاده عمومی و جستجو خوب هستند. برنامههای چت برای جریانهای مولد در برنامههای چت ربات/ربات صوتی مبتنی بر Dataflow هستند. برنامه های توصیه به ایجاد موتورهای توصیه بهتر کمک می کنند. و برنامههای Agent برای ایجاد عوامل مبتنی بر GenAI هستند. در نهایت، احتمالاً Agent در کاری که میخواهیم انجام دهیم بهترین خدمات را به ما ارائه میدهد، اما با توجه به اینکه محصول در حال حاضر در حال پیشنمایش است، از نوع برنامه جستجو استفاده میکنیم. 7. از منوی سمت چپ برای پیمایش به Apps استفاده کنید، سپس روی Create App کلیک کنید. 8. نوع برنامه جستجو را انتخاب کنید . بررسی کنید اما گزینه های مختلف را تغییر ندهید. نام برنامه: cookbook-search
. شناسه برنامه را ویرایش کرده و روی cookbook-search-id
تنظیم کنید. شرکت را روی Google
و Continue تنظیم کنید. 9. ذخیره اطلاعات old-cookbooks
را که چند قدم پیش ایجاد کردهاید بررسی کنید و برنامه جستجو را ایجاد کنید .
اگر برگه Activity را بررسی کنید، احتمالاً خواهید دید که کتابهای آشپزی همچنان در حال وارد کردن و نمایهسازی هستند. بیش از 5 دقیقه طول می کشد تا Agent Builder هزاران صفحه موجود در 70 کتاب آشپزی را که به آن داده ایم فهرست کند. در حالی که کار می کند، بیایید برخی از داده های پایگاه داده دستور العمل ها را برای مولد دستور غذا بارگیری و پاک کنیم.
6. وظیفه 3. با کمک Gemini Code Assist داده ها را در یک نوت بوک Colab Enterprise بارگیری و پاک کنید.
Google Cloud چند راه اصلی برای کار با نوت بوک های مشتری ارائه می دهد. ما قصد داریم از جدیدترین پیشنهاد Google، Colab Enterprise استفاده کنیم. ممکن است برخی از شما با محصول Google Colab آشنا باشید که معمولاً توسط افراد و سازمانهایی استفاده میشود که میخواهند با نوتبوکهای Jupiter در یک محیط رایگان آزمایش کنند. Colab Enterprise یک پیشنهاد تجاری Google Cloud است که به طور کامل با سایر محصولات ابری Google یکپارچه شده است و از قابلیتهای امنیتی و انطباق محیط GCP بهره میبرد.
یکی از ویژگی هایی که Colab Enterprise ارائه می دهد، ادغام با Gemini Code Assist گوگل است. Code Assist ممکن است در تعدادی از ویرایشگرهای کد مختلف مورد استفاده قرار گیرد و می تواند هنگام کدنویسی، مشاوره و همچنین پیشنهادات درون خطی یکپارچه ارائه دهد. ما از این دستیار مولد استفاده خواهیم کرد در حالی که داده های دستور پخت خود را با هم درگیر می کنیم.
- از جستجو برای پیمایش به Colab Enterprise و ایجاد یک نوت بوک استفاده کنید. اگر پیشنهادی برای آزمایش ویژگیهای جدید Colab دریافت کردید، آن را رد کنید. برای دریافت زمان اجرا، قدرت محاسباتی پشت نوت بوک، بالا و پایین رفتن، Connect را در گوشه سمت راست بالای نوت بوک جدید خود فشار دهید.
- از منوی سه نقطه کنار نام نوت بوک فعلی در پنجره Colab Enterprise Files استفاده کنید تا نام آن را
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 را بررسی کنید. اگر فهرستی از کلیدواژههای پایتون را تکمیل خودکار روی پیشنهاد تولید شده مشاهده کردید، برای مشاهده کد پیشنهادی خاکستری روشن، Escape را بزنید. برای پذیرش پیشنهاد مجدداً برگه را بزنید. اگر پیشنهاد شما شامل فراخوانی تابع head() نبود، آن را اضافه کنید.
df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
df.head()
- روی اولین سلول کد خود، جایی که پانداها را وارد کردید، کلیک کنید و از منوی Commands یا صفحه کلید برای اجرای سلول انتخاب شده استفاده کنید. در صفحه کلید shift+enter سلول را اجرا می کند و فوکوس را به سلول بعدی منتقل می کند و در صورت نیاز یکی ایجاد می کند. قبل از حرکت منتظر بمانید تا سلول اجرا شود.
توجه: هنگامی که یک سلول اجرا نشده باشد، [ ] را فقط در سمت چپ خواهید دید. در حالی که یک سلول در حال اجرا است، یک انیمیشن در حال چرخش و کار خواهید دید. هنگامی که سلول تمام شد، یک عدد ظاهر می شود، مانند [13]. 9. سلولی را که CSV را در DataFrame بارگذاری می کند، اجرا کنید. صبر کنید تا فایل بارگیری شود و پنج ردیف اول داده ها را بررسی کنید. این دادههای دستور پختی است که ما در BigQuery بارگذاری میکنیم و در نهایت از آن برای زمینسازی ژنراتور دستور غذا استفاده میکنیم. 10. یک بلوک کد جدید ایجاد کنید و نظر زیر را وارد کنید. پس از تایپ نظر، به خط کد بعدی بروید و باید پیشنهاد df.columns
را دریافت کنید. آن را بپذیرید و سپس سلول را اجرا کنید.
# List the current DataFrame column names
ما به تازگی نشان دادیم که شما واقعاً دو انتخاب دارید که چگونه از Gemini Code Assist در نوت بوک Jupyter کمک بگیرید: سلولهای متنی بالای سلولهای کد، یا نظرات درون خود سلول کد. نظرات درون سلولهای کد در نوتبوکهای Jupyter به خوبی کار میکنند، اما این رویکرد در هر IDE دیگری که از کمک کد Gemini Google پشتیبانی میکند نیز کار خواهد کرد.
- بیایید یک پاکسازی ستون کوچک انجام دهیم. نام ستون را
Unnamed: 0
بهid
وlink
بهuri
. از تکنیکهای prompt > code برای ایجاد کد استفاده کنید، سپس در صورت رضایت سلول را اجرا کنید.
# 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 احتمالاً برای تمرین امروز ما بسیار طولانی خواهد بود. به عنوان یک مصالحه، بیایید 150000 دستور غذا را نمونه برداری کنیم و با آن کار کنیم. برای گرفتن نمونه و ذخیره آن در یک DataFrame جدید به نام
dfs
(s برای کوچک) از رویکرد prompt > code خود استفاده کنید.
# Sample out 150,000 records into a DataFrame named dfs
dfs = df.sample(n=150000)
- اطلاعات منبع دستور پخت ما برای بارگیری در BigQuery آماده است. قبل از اینکه بارگذاری را انجام دهیم، بیایید به BigQuery برویم و مجموعه داده ای را برای نگهداری جدول خود آماده کنیم. در Google Cloud Console از جعبه جستجو برای پیمایش به BigQuery استفاده کنید. ممکن است روی BigQuery راست کلیک کرده و آن را در یک برگه مرورگر جدید باز کنید.
- اگر از قبل قابل مشاهده نیست، پنل Gemini AI Chat را با استفاده از لوگوی Gemini در سمت راست بالای کنسول Cloud باز کنید. اگر از شما خواسته شد که API را دوباره فعال کنید، یا فعال کردن را فشار دهید یا صفحه را بازخوانی کنید. دستور را اجرا کنید:
What is a dataset used for in BigQuery?
پس از بررسی پاسخ، بپرسید:How can I create a dataset named recipe_data using the Cloud Console?
نتایج را با چند مرحله زیر مقایسه کنید.
- در صفحه BigQuery Explorer، روی منوی سه نقطه مشاهده اقدامات در کنار شناسه پروژه خود کلیک کنید. سپس Create database را انتخاب کنید.
- مجموعه داده و شناسه
recipe_data
را بدهید. نوع مکان را به US بسپارید و مجموعه داده را ایجاد کنید . اگر خطایی دریافت کردید که مجموعه داده از قبل وجود دارد، به سادگی ادامه دهید.
با مجموعه داده ایجاد شده در BigQuery، بیایید به نوت بوک خود برگردیم و درج را انجام دهیم. 19. به نوت بوک Data Wrangling خود در Colab Enterprise برگردید. در یک سلول کد جدید، یک متغیر به نام project_id
ایجاد کنید و از آن برای نگهداری ID پروژه فعلی خود استفاده کنید. در سمت چپ بالای این دستورالعمل ها، زیر دکمه پایان آزمایشگاه نگاه کنید، و ID پروژه فعلی را پیدا خواهید کرد. در صورت تمایل در صفحه اصلی Cloud Console نیز موجود است. مقدار را به متغیر project_id
خود اختصاص دهید و سلول را اجرا کنید.
# Create a variable to hold the current project_id
project_id='YOUR_PROJECT_ID'
- از رویکرد prompt > code برای ایجاد یک بلوک کد استفاده کنید که
dfs
DataFrame را در جدولی به نامrecipes
درrecipe_data
دادهای که ما به تازگی ایجاد کردیم، وارد میکند. سلول را اجرا کنید.
dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
7. وظیفه 4. ایجاد یک برنامه جستجو در Vertex AI Agent Builder برای ژنراتور دستور العمل
بسیار عالی، با جدول دادههای دستور پخت ما، بیایید از آن برای ایجاد یک منبع داده پایه برای تولیدکننده دستور غذا استفاده کنیم. رویکردی که ما استفاده خواهیم کرد مشابه کاری است که برای چت ربات آشپزی خود انجام دادیم. ما از Vertex AI Agent Builder برای ایجاد یک فروشگاه داده استفاده می کنیم و سپس از آن به عنوان منبع حقیقت برای یک برنامه جستجو استفاده می کنیم.
اگر دوست دارید، از Gemini در Google Cloud Console بخواهید تا مراحل ایجاد یک برنامه جستجوی Agent Builder را به شما یادآوری کند، یا می توانید مراحل ذکر شده در زیر را دنبال کنید.
- برای رفتن به Agent Builder از Search استفاده کنید. Data Stores را باز کنید و Data Store را ایجاد کنید . این بار نوع BigQuery Data Store را انتخاب کنید .
- در سلول انتخاب جدول، Browse را فشار دهید و
recipes
را جستجو کنید. دکمه رادیویی کنار میز خود را انتخاب کنید. اگر دستور العملهایی از سایر پروژههای qwiklabs-gcp-... میبینید، حتماً موردی را که متعلق به شماست انتخاب کنید .
توجه: اگر به جای انتخاب دکمه رادیویی کنار آن، روی recipes
کلیک کنید، یک تب جدید در مرورگر شما باز می شود و شما را به صفحه نمای کلی جدول در BigQuery می برد. فقط تب مرورگر را ببندید و دکمه رادیویی را در Agent Builder انتخاب کنید. 3. بررسی کنید اما بقیه گزینه های پیش فرض را تغییر ندهید، سپس Continue . 4. در صفحه بررسی طرحواره، تنظیمات پیش فرض اولیه را بررسی کنید، اما چیزی را تغییر ندهید. ادامه 5. نام datastore recipe-data
را بگذارید. شناسه datastore را ویرایش کنید و آن را روی recipe-data-id
تنظیم کنید. فروشگاه داده را ایجاد کنید . 6. با استفاده از منوی پیمایش سمت چپ و ایجاد برنامه به Apps بروید. 7. یک بار دیگر برنامه جستجو را انتخاب کنید . برنامه recipe-search
نام گذاری کنید و شناسه را روی recipe-search-id
تنظیم کنید. نام شرکت را روی Google
و Continue قرار دهید. 8. این بار، منابع داده دستور العمل را بررسی کنید. برنامه را ایجاد کنید .
مدتی طول می کشد تا جدول پایگاه داده ما نمایه شود. در حالی که این کار را می کند، بیایید با Data Canvas جدید BigQuery آزمایش کنیم و ببینیم آیا می توانیم یک یا دو دستور العمل جالب پیدا کنیم. 9. از کادر جستجو برای پیمایش به BigQuery استفاده کنید. در بالای استودیو BigQuery، روی فلش رو به پایین در کنار برگه سمت راست کلیک کنید و Data canvas را انتخاب کنید. منطقه را روی us-central1 تنظیم کنید.
- در کادر جستجوی بوم داده،
recipes
را جستجو کنید و به جدول خود اضافه کنید . - یک نمایش تصویری از جدول دستور العمل های شما در بوم BigQuery Data بارگذاری می شود. میتوانید طرحواره جدول را بررسی کنید، دادههای موجود در جدول را پیشنمایش کنید و جزئیات دیگر را بررسی کنید. در زیر نمایش جدول، روی Query کلیک کنید.
- بوم یک گفتگوی کم و بیش معمولی پرس و جوی 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?
(فراموش نکنید پرس و جوی جدید را اجرا کنید) فهرستی از دستور العمل های فلفل قرمز را برگرداندم اما مواد را کنار گذاشتم تا زمانی که آن را به این صورت تغییر دادم:
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. وظیفه 5. با کمک کمی جمینی، برنامه اصلی Python و Streamlit را قاب کنید.
با نمایه سازی هر دو فروشگاه داده Vertex AI Agent Builder و با برنامه های جستجوی ما که تقریباً آماده انتشار هستند، بیایید به ساخت برنامه وب خود بپردازیم.
ما در حین کار از Gemini Code Assist استفاده خواهیم کرد. برای اطلاعات بیشتر در مورد استفاده از Gemini Code Assist در Visual Studio Code، مستندات را اینجا ببینید
ما توسعه خود را در یک ایستگاه کاری Google Cloud انجام خواهیم داد. یک محیط توسعه مبتنی بر ابر، در مورد ما، از پیش بارگذاری شده با Eclipse Theia (کد ویژوال استودیو منبع باز). یک اسکریپت خودکار در این تمرین، کلاستر و پیکربندی Cloud Workstation را برای ما ایجاد کرده است، اما ما همچنان باید خود ایستگاه کاری ابری را ایجاد کنیم. اگر اطلاعات بیشتری در مورد ایستگاه های کاری ابری و استفاده از آنها می خواهید، باید از Gemini Cloud Assist بپرسید:-)
- از جستجو برای پیمایش به Cloud Workstation و سپس Create Workstation استفاده کنید. نام Workstation
dev-env
را بگذارید و از پیکربندی my-config استفاده کنید. ایستگاه کاری را ایجاد کنید . - پس از چند دقیقه، ایستگاه کاری جدید خود را در لیست ایستگاه های کاری من خواهید دید.
dev-env
را راه اندازی کنید و پس از اجرا، محیط توسعه را راه اندازی کنید . - ویرایشگر ایستگاه کاری در یک تب جدید مرورگر باز می شود و پس از چند لحظه، باید یک رابط آشنای Theia (Visual Studio Code) را مشاهده کنید. در سمت چپ رابط، برگه Source Control را گسترش دهید و Clone Repository را فشار دهید.
- برای URL مخزن
https://github.com/haggman/recipe-app
را وارد کنید. مخزن را در پوشهuser
خود کلون کنید، سپس مخزن کلون شده را برای ویرایش باز کنید . - قبل از کاوش در پوشه کلون شده و شروع به کار بر روی برنامه وب خود، باید افزونه Cloud Code ویرایشگر را وارد Google Cloud کنیم و باید Gemini را فعال کنیم. حالا این کار را بکنیم. در پایین سمت چپ ویرایشگر خود، روی Cloud Code - Sign in کلیک کنید. اگر لینک را نمی بینید، یک دقیقه صبر کنید و دوباره بررسی کنید.
- پنجره ترمینال یک URL طولانی نمایش می دهد. URL را در مرورگر باز کنید و مراحل دسترسی به Cloud Code به محیط Google Cloud خود را طی کنید. هنگام احراز هویت، مطمئن شوید که از حساب
student-...
تمرینی خود استفاده می کنید و نه از حساب شخصی Google Cloud. در گفتگوی نهایی، کد تأیید را کپی کرده و دوباره در پنجره ترمینال انتظار در برگه مرورگر Cloud Workstation خود قرار دهید. - پس از چند لحظه، پیوند Cloud Code در پایین سمت چپ ویرایشگر شما به Cloud Code - No Project تغییر می کند. برای انتخاب پروژه روی پیوند جدید کلیک کنید. پالت فرمان باید در بالای ویرایشگر باز شود. روی Select a Google Cloud project کلیک کنید و پروژه qwiklabs-gcp-... خود را انتخاب کنید. پس از چند لحظه، پیوند در سمت چپ پایین ویرایشگر شما به روز می شود تا شناسه پروژه شما نمایش داده شود. این نشان می دهد که Cloud Code با موفقیت به پروژه کاری شما متصل شده است.
- با اتصال Cloud Code به پروژه خود، اکنون می توانید Gemini Code Assist را فعال کنید. در سمت راست پایین رابط ویرایشگر خود، روی نشانواره جمینی خط خورده کلیک کنید. پنجره Gemini Chat در سمت چپ ویرایشگر باز می شود. روی Select a Google Cloud Project کلیک کنید. وقتی پالت فرمان باز شد، پروژه qwiklabs-gcp-... خود را انتخاب کنید. اگر مراحل را به درستی دنبال کرده اید (و گوگل چیزی را تغییر نداده است)، اکنون باید یک پنجره چت فعال Gemini را ببینید.
- در نهایت، اجازه دهید پنجره ترمینال ویرایشگر را به همان اندازه پیکربندی کنیم. از منوی همبرگر > View > Terminal برای باز کردن پنجره ترمینال استفاده کنید.
gcloud init
اجرا کنید. یک بار دیگر، از پیوند استفاده کنید تا ترمینال Cloud Shell در برابر پروژهqwiklabs-gcp-...
شما کار کند. در صورت درخواست، گزینه عددی پروژهqwiklabs-gcp-...
خود را انتخاب کنید. - بسیار عالی، با تنظیمات ترمینال، چت Gemini و Cloud Code ما، برگه Explorer را باز کنید و چند دقیقه برای کاوش فایلها در پروژه فعلی وقت بگذارید.
- در 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 چارچوبی برای ساخت برنامه های وب مبتنی بر داده در پایتون است. حالا بپرس:
Does the current project's folder structure seem appropriate for a Streamlit app?s
این جایی است که جوزا تمایل به مشکلات دارد. 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
پاسخ بهتری دریافت کنید؟
- بیایید اطلاعات بیشتری در مورد Streamlit بدست آوریم:
What can you tell me about Streamlit?
خوب است، بنابراین می توانیم ببینیم که Gemini یک نمای کلی خوب از جمله مزایا و معایب را به ما ارائه می دهد.
- اگر می خواهید معایب آن را بررسی کنید، می توانید بپرسید:
What are the major downsides or shortcomings?
توجه کنید، لازم نیست بگوییم "از Streamlit"، زیرا چت Gemini مکالمه ای است (چند چرخشی). جمینی می داند که ما در مورد چه چیزی صحبت کرده ایم زیرا در یک جلسه چت هستیم. اگر در هر زمانی می خواهید تاریخچه چت Gemini را پاک کنید، از نماد سطل زباله در بالای پنجره چت کد Gemini استفاده کنید.
9. وظیفه 6: برنامه وب را در Cloud Run مستقر کنید
بسیار عالی، ما ساختار برنامه اصلی خود را داریم، اما آیا همه اینها کار خواهند کرد؟ بهتر از این، کجا باید آن را در Google Cloud میزبانی کنیم؟
- در پنجره چت Gemini، بپرسید:
If I containerize this application, what compute technologies
in Google Cloud would be best for hosting it?
- به یاد داشته باشید، اگر قبلاً در IDE خود کار نمیکردید، میتوانید از 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 و در ویرایشگر کد می تواند شما را بسیار کارآمدتر کند.
- برای یک برنامه وب کانتینری با عمر کوتاه بدون حالت، Cloud Run یک گزینه عالی خواهد بود. در پنجره چت Gemini ویرایشگر کد خود، دستور زیر را امتحان کنید:
What steps would be required to run this application in
Cloud Run?
- به نظر می رسد اولین کاری که باید انجام دهیم ایجاد یک Dockerfile است. با استفاده از ویرایشگر، فایلی به نام
Dockerfile
در ریشه پوشه پروژه خود ایجاد کنید. مطمئن شوید که به طور تصادفی آن را در پوشه pages قرار ندهید. فایل را برای ویرایش باز کنید. - بیایید از پنل چت کناری 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 خواستم، فایل دقیقی را دریافت کردم که به شما پیشنهاد می کنم استفاده کنید. همین الان این پیشنهاد را دریافت کردم:
```docker
# 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"]
That's a heck of a Dockerfile. I'd simplify it a bit. We don't need the apt-get section as anything needed for Python is already in our base image. Also, using a virtual environment in a Python container is a waste of space, so I'd remove that. The expose command isn't strictly necessary, but it's fine. Also, it's trying to start main.py which I don't have.
6. Tweak the Dockerfile so it resembles the following:
FROM python:3.11-slim-bookworm
WORKDIR / برنامه
نیازهای کپی.txt. اجرای نصب پیپ –بدون کش-دیر – ارتقاء پیپ و&
pip install –no-cache-dir -r requires.txt
کپی کنید. .
CMD ["streamlit"، "run"، "Home.py"]
7. We need a place in Google cloud where we can store our container image. Let's get a little help from Gemini. In the Google Cloud Console Gemini Cloud Assist ask:
بهترین مکان در Google Cloud برای ذخیره تصاویر Docker کجاست؟
8. If one of the answers you received is the Google Container Registry, then I guess Gemini hasn't gotten word that GCR is deprecated. Again, just like human assistants, you may get out of date or simply wrong answers (hallucinations). Always make sure to consider your choices carefully, even when Gemini is recommending something.
Let's go with Artifact Registry. Ask Gemini Cloud Assist how to create a docker registry in Artifact Registry named cooking-images.
چگونه می توانم از gcloud برای ایجاد یک رجیستری docker در Artifact Registry استفاده کنم؟
9. Now ask Gemini how you could use Cloud Build to build a new image named `recipe-web-app` from the Dockerfile in the current folder.
چگونه می توانم از gcloud برای ایجاد یک سرویس Cloud Run جدید با نام recipe-web-app از تصویری به همین نام از مخزن Artifact Registry که به تازگی ایجاد کردیم استفاده کنم؟
10. To save you a little time, I've created a script that will create the Artifact Registry repo (if needed), use Cloud Build to build and push the image to the repo, and finally to deploy the application to Cloud Run. In your code editor use the **Explorer** view to open `build.sh` and explore the file.
11. Gemini can operate via the chat window, but it can also work directly in your code file using comments, like we used in the Data Wrangling notebook, and it also may be invoked using Control+i on Windows or Command+i on Mac. Click somewhere in the build.sh script file, activate Gemini using the appropriate Command+i / Control+i command.
<img src="img/61ac2c9a245a3695.png" alt="61ac2c9a245a3695.png" width="624.00" />
12. At the prompt enter the below. Examine and **Accept** the change.
لطفا فایل فعلی را نظر دهید.
How cool is that?! How many times have you had to work with someone elses code, only to have to waste time gaining a base understanding of their commentless work before you can even start making your changes. Gemini to the rescue!
13. Let's build and deploy our application. In the terminal window execute the `build.sh` file.
. build.sh
14. If you watch the build process, first it will build the Artifact Registry docker repo. Then, it uses Cloud Build to create the container image from the Dockerfile in the local folder (since we didn't supply a `cloudbuild.yaml`). Lastly, the docker image will be deployed into a new Cloud Run service. At the end of the script you'll get a Cloud Run test URL to use.
Open the returned link in a new tab of your browser. Take a moment and explore the application's structure and pages. Nice, now we need a hook in our generative AI functionality.
## Task 7: Connect the Cooking Advice page to our cookbook-search Agent Builder app
We have the framework for the web application running, but we need to connect the two work pages to our two Vertex AI Agent Builder search apps. Let's start with Cooking Advice.
1. In the Google Cloud console use search to navigate to **Chat** in Vertex AI.
2. In the right hand settings page pane set the model to **gemini-1.5-flash-002**. Slide the output token limit up to the max so the model can return longer answers if needed. Open the **Safety Filter Settings**. Set Hate speech, Sexually explicit content, and Harassment content to **Block some**. Set Dangerous content to **Block few** and **Save**. We're setting Dangerous Content a bit lower because talking about knives and cutting can be misinterpreted by Gemini as violence.
3. Slide on the toggle to enable **Grounding** then click **Customize**. Set the grounding source to **Vertex AI search** and for the datastore path use the following. Change YOUR_PROJECT_ID to the project ID found up near the End Lab button in these instructions, then **Save** the grounding settings
projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
**Note:** If you get an error then you either didn't change the project ID to your actual project ID, or you may have missed the step where you changed the old-cookbooks Agent Builder Data Store ID. Check your Agent Builder > Data Stores > old-cookbooks for its actual Data store ID.
4. Test a couple of chat messages. Perhaps start with the below. Try a few others if you like.
چگونه می توانم بفهمم که گوجه فرنگی رسیده است؟
5. The model works, now let's experiment with the code. Click **Clear Conversation** so our conversations don't become part of the code then click **Get Code**.
<img src="img/dce8ad7ee006cca1.png" alt="dce8ad7ee006cca1.png" width="624.00" />
6. At the top of the code window, press Open Notebook so we can experiment and perfect the code in Colab Enterprise before integrating it into our app.
7. Take a few minutes to familiarize yourself with the code. Let's make a couple of changes to adapt it to what we want. Before we start, run the first code cell to connect to the compute and install the AI Platform SDK. After the block runs you will be prompted to restart the session. Go ahead and do that.
8. Move to the code we pulled out of Vertex AI Studio. Change the name of the method *multiturn_generate_content* to `start_chat_session`.
9. Scroll to the `model = GenerativeModel(` method call. The existing code defines the `generation_config` and `safety_settings` but doesn't actually use them. Modify the creation of the `GenerativeModel` so it resembles:
model = GenerativeModel( "gemini-1.5-flash-002"، tools=tools، generation_config=generation_config، safe_settings=safety_settings، )
10. Lastly, add a final line to the method, just below `chat = model.start_chat()`, so the function returns the `chat` object. The finished function should look like the below.
**Note:** DO NOT COPY this code into your notebook. It is simply here as a sanity check.
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 = Generative-1.(-" flash-002"، tools=tools، Generation_config=generation_config, safe_settings=safety_settings, ) chat = model.start_chat() بازگشت چت
11. Scroll to the bottom of the code cell and change the final line calling the old function so it calls the new function name and stores the returned object in a variable `chat`. Once you are satisfied with your changes, run the cell.
چت = start_chat_session()
12. Create a new code cell and add the comment `# Use chat to invoke Gemini and print out the response`. Move to the next line and type resp and Gemini should auto complete the block for you. Update the prompt to `How can I tell if a tomato is ripe?`. Run the cell
answer = chat.send_message("چگونه می توانم بفهمم گوجه فرنگی رسیده است؟") print(response)
13. That's the response alright, but the part we really want is that nested text field. Modify the codeblock to print just that section, like:
answer = chat.send_message ("چگونه می توانم بفهمم گوجه فرنگی رسیده است؟") print(response.candidates[0].content.parts[0].text)
14. Good, now that we have working chat code, let's integrate it into our web application. Copy all the contents of the code cell that creates the `start_chat_session` function (we won't need the test cell). If you click into the cell you can click the triple dot menu in the upper right corner and copy from there
<img src="img/17bf8d947393d4b.png" alt="17bf8d947393d4b.png" width="326.00" />
15. Switch to your Cloud Workstation editor and open pages\Cooking_Advice.py for editing.
16. Locate the comment:
کدی را که از نوت بوک خود کپی کرده اید در زیر این پیام اضافه کنید
17. Paste your copied code just below the above comment. Nice, now we have the section which drives the chat engine via a grounded call to Gemini. Now let's integrate it into Streamlit.
18. Locate section of commented code directly below the comment:
در اینجا کد تنظیم متغیرهای جلسه شما آمده است
وقتی دستور داده شد، این بلوک را از نظر خارج کنید
19. Uncomment this section of code (Up till the next `Setup done, let's build the page UI` section) and explore it. It creates or retrieves the chat and history session variables.
20. Next, we need to integrate the history and chat functionality into the UI. Scroll in the code until you locate the below comment.
در اینجا کد ایجاد رابط چت است
وقتی دستور داده شد، کد زیر را از نظر خارج کنید
21. Uncomment the rest of the code below the comment and take a moment to explore it. If you like, highlight it and get Gemini to explain its functionality.
22. Excellent, now let's build the application and deploy it. When the URL comes back, launch the application and give the Cooking Advisor page a try. Perhaps ask it about ripe tomatoes, or the bot knows a good way to prepare brussels sprouts.
. build.sh
How cool is that! Your own personal AI cooking advisor :-)
## Task 8: (Optional) Connect the Recipe Search page to the recipe-search Agent Builder app
When we connected the Cooking Advice page to its grounded source, we did so using the Gemini API directly. For Recipe Search, let's connect to the Vertex AI Agent Builder search app directly.
1. In your Cloud Workstation editor, open the `pages/Recipe_Search.py` page for editing. Investigate the structure of the page.
2. Towards the top of the file, set your project ID.
3. Examine the `search_sample` function. This code more or less comes directly from the Discovery Engine documentation [here](https://cloud.google.com/generative-ai-app-builder/docs/preview-search-results#genappbuilder_search-python). You can find a working copy in this notebook [here](https://github.com/GoogleCloudPlatform/generative-ai/blob/main/search/create_datastore_and_search.ipynb).
4. The only change I made was to return the `response.results` instead of just the results. Without this, the return type is an object designed to page through results, and that's something we don't need for our basic application.
5. Scroll to the very end of the file and uncomment the entire section below `Here are the first 5 recipes I found`.
6. Highlight the whole section you just uncommented and open Gemini Code chat. Ask, `Explain the highlighted code`. If you don't have something selected, Gemini can explain the whole file. If you highlight a section and ask Gemini to explain, or comment, or improve it, Gemini will.
Take a moment and read through the explanation. For what it's worth, using a Colab Enterprise notebook is a great way to explore the Gemini APIs before you integrate them into your application. It's especially helpful at exploring some of the newer APIs which may not be documented as well as they could be.
7. At your editor terminal window, run `build.sh` to deploy the final application. Wait until the new version is deployed before moving to the next step.
## Task 9: (Optional) Explore the final application
Take a few minutes to explore the final application.
1. In the Google Cloud console, use search to navigate to **Cloud Run**, then click into your **recipe-web-app**.
2. Locate the application test URL (towards the top) and open it in a new browser tab.
3. The application home page should appear. Note the basic layout and navigation provided by Streamlit, with the python files from the `pages` folder displayed as navigational choices, and the `Home.py` loaded as the home page. Navigate to the **Cooking Advice** page.
4. After a few moments the chat interface will appear. Again, note the nice core layout provided by Streamlit.
5. Try a few cooking related questions and see how the bot functions. Something like:
آیا توصیه ای برای تهیه کلم بروکلی دارید؟
طرز تهیه سوپ مرغ کلاسیک چطور است؟
از مرنگ بگو
6. Now let's find a recipe or two. Navigate to the Recipe Search page and try a few searches. Something like:
فلفل قرمز
فلفل قرمز، ذرت، برنج
پای مرنگ لیمویی
دسر حاوی توت فرنگی
## Congratulations!
You have created an application leveraging Vertex AI Agent Builder applications. Along the way you've explored Gemini Cloud Assist, Gemini Code Assist, and the natural language to SQL features of BigQuery's Data Canvas. Fantastic job!