برنامه های کاربردی ساختمان در عصر هوش مصنوعی

۱. مرور کلی

در این آزمایشگاه، شما از محصولات هوش مصنوعی مولد گوگل برای ساخت زیرساخت در Google Cloud با کمک Gemini Cloud Assist استفاده خواهید کرد، با استفاده از ویژگی‌های زبان طبیعی به SQL در Data Canvas، داده‌های BigQuery را جستجو خواهید کرد، با کمک Gemini Code Assist در نوت‌بوک‌های Colab Enterprise Jupyter و در Eclipse Theia (Visual Studio Code) کد خواهید نوشت و ویژگی‌های جستجو و چت هوش مصنوعی ساخته شده بر روی Cloud Storage و منابع پایه BigQuery را در Vertex AI Agent Builder ادغام خواهید کرد.

هدف ما ایجاد یک وب‌سایت دستور پخت و آشپزی به نام AI Recipe Haven است. این سایت با پایتون و Streamlit ساخته خواهد شد و شامل دو صفحه اصلی خواهد بود. Cooking Advice میزبان یک چت‌بات خواهد بود که ما با استفاده از Gemini و یک منبع مبتنی بر Vertex AI Agent Builder که به گروهی از کتاب‌های آشپزی مرتبط است، ایجاد خواهیم کرد و مشاوره آشپزی ارائه می‌دهد و به سوالات مربوط به آشپزی پاسخ می‌دهد. Recipe Search یک موتور جستجو خواهد بود که توسط Gemini تغذیه می‌شود و این بار مبتنی بر پایگاه داده دستور پخت BigQuery است.

اگر در هر یک از کدهای این تمرین با مشکل مواجه شدید، راه‌حل‌های مربوط به همه فایل‌های کد در مخزن گیت‌هاب تمرین در شاخه راه‌حل قرار دارند.

اهداف

در این آزمایشگاه، شما یاد می‌گیرید که چگونه وظایف زیر را انجام دهید:

  • فعال‌سازی و استفاده از Gemini Cloud Assist
  • یک برنامه جستجو در Vertex AI Agent Builder برای چت‌بات توصیه آشپزی ایجاد کنید
  • بارگذاری و پاکسازی داده‌ها در یک نوت‌بوک Colab Enterprise، با کمک Gemini Code Assist
  • یک برنامه جستجو در Vertex AI Agent Builder برای تولیدکننده دستور پخت ایجاد کنید
  • با کمی کمک Gemini، هسته پایتون و برنامه وب Streamlit را شکل دهید
  • برنامه وب را در Cloud Run مستقر کنید
  • صفحه «نکات آشپزی» را به اپلیکیشن «جستجوی کتاب آشپزی» ما متصل کنید.
  • (اختیاری) صفحه جستجوی دستور پخت را به برنامه جستجوی دستور پخت Agent Builder متصل کنید
  • (اختیاری) بررسی برنامه نهایی

۲. پیش‌نیازها

  1. اگر از قبل حساب گوگل ندارید، باید یک حساب گوگل ایجاد کنید .
    • به جای حساب کاری یا تحصیلی از یک حساب شخصی استفاده کنید. حساب‌های کاری و تحصیلی ممکن است محدودیت‌هایی داشته باشند که مانع از فعال کردن APIهای مورد نیاز برای این آزمایشگاه توسط شما شود.

۳. راه‌اندازی پروژه

  1. وارد کنسول ابری گوگل شوید.
  2. فعال کردن پرداخت در کنسول ابری
    • تکمیل این آزمایشگاه باید کمتر از ۱ دلار آمریکا از طریق منابع ابری هزینه داشته باشد.
    • شما می‌توانید مراحل انتهای این آزمایش را برای حذف منابع دنبال کنید تا از هزینه‌های بیشتر جلوگیری شود.
    • کاربران جدید واجد شرایط استفاده از دوره آزمایشی رایگان ۳۰۰ دلاری هستند.
    • آیا در یک رویداد آزمایشگاهی عملی مجازی شرکت می‌کنید؟ ممکن است یک اعتبار ۵ دلاری در دسترس باشد.
  3. یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید.
  4. تأیید کنید که پرداخت در پروژه‌های من در پرداخت ابری فعال شده است
    • اگر در ستون Billing account در پروژه جدید شما نوشته شده باشد Billing is disabled :
      1. روی سه نقطه در ستون Actions کلیک کنید
      2. روی تغییر صورتحساب کلیک کنید
      3. حساب پرداختی که می‌خواهید استفاده کنید را انتخاب کنید
    • اگر در یک رویداد زنده شرکت می‌کنید، احتمالاً نام حساب کاربری ، حساب پرداخت آزمایشی پلتفرم ابری گوگل خواهد بود.

۴. فعال‌سازی و استفاده از Gemini Cloud Assist

در این کار، ما Gemini Cloud Assist را فعال و استفاده خواهیم کرد. در حین کار در کنسول Google Cloud، Gemini Cloud Assist می‌تواند به شما مشاوره ارائه دهد، در ساخت، پیکربندی و نظارت بر زیرساخت Google Cloud شما کمک کند و حتی می‌تواند دستورات gcloud را پیشنهاد دهد و اسکریپت‌های Terraform را بنویسد.

  1. برای فعال کردن Cloud Assist برای استفاده، روی کادر جستجو در بالای رابط کاربری Cloud Console کلیک کنید و Ask Gemini یا Ask Gemini for Cloud console را انتخاب کنید.
  2. به بخش API مورد نیاز در صفحه بروید و Gemini for Google Cloud API را فعال کنید .
  3. اگر بلافاصله رابط چت را مشاهده نکردید، روی شروع چت کلیک کنید. با درخواست از Gemini برای توضیح برخی از مزایای استفاده از Cloud Shell Editor شروع کنید. چند دقیقه وقت بگذارید تا پاسخ تولید شده را بررسی کنید.
  4. در مرحله بعد، درباره مزایای Agent Builder و اینکه چگونه می‌تواند به ایجاد پاسخ‌های سازنده کمک کند، بپرسید.
  5. در نهایت، بیایید به یک مقایسه نگاهی بیندازیم. در پنجره چت Gemini در کنسول ابری گوگل، سوال زیر را بپرسید:
    What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
    

۵. یک برنامه جستجو در Vertex AI Agent Builder برای چت‌بات مشاوره آشپزی ایجاد کنید

وب‌سایتی که ما در حال ساخت آن هستیم، یک صفحه توصیه‌های آشپزی خواهد داشت که شامل یک ربات گفتگو است که برای کمک به کاربران در یافتن پاسخ سوالات مربوط به آشپزی طراحی شده است. این وب‌سایت توسط Gemini پشتیبانی می‌شود که مبتنی بر منبعی شامل ۷۰ کتاب آشپزی عمومی است. این کتاب‌های آشپزی به عنوان منبع حقیقتی عمل می‌کنند که Gemini هنگام پاسخ دادن به سوالات از آن استفاده می‌کند.

  1. از کادر جستجوی Cloud Console برای رفتن به Vertex AI استفاده کنید. از داشبورد، روی Enable All Recommended APIs کلیک کنید. این کار ممکن است چند دقیقه طول بکشد. اگر یک کادر بازشو در مورد نیاز به فعال کردن خود Vertex AI API دریافت کردید، لطفاً آن را نیز فعال کنید . پس از فعال شدن APIها، می‌توانید به مرحله بعدی بروید.
  2. از جستجو برای رفتن به Agent Builder استفاده کنید، سپس ادامه دهید و API را فعال کنید .
  3. همانطور که Gemini در مشاوره قبلی ما پیشنهاد داد، ایجاد یک برنامه جستجو در Agent Builder با ایجاد یک منبع داده معتبر آغاز می‌شود. هنگامی که کاربر جستجو می‌کند، Gemini سوال و نحوه نوشتن پاسخ‌های هوشمند را درک می‌کند، اما به جای استخراج از دانش ذاتی خود، به منبع پایه برای اطلاعات مورد استفاده در آن پاسخ نگاه می‌کند. از منوی سمت چپ، به Data Stores و Create Data Store بروید.
  4. کتاب‌های آشپزی عمومی که ما برای پایه‌گذاری صفحه توصیه‌های آشپزی خود استفاده می‌کنیم، در حال حاضر در یک پروژه خارجی در یک مخزن ذخیره‌سازی ابری قرار دارند. نوع منبع ذخیره‌سازی ابری را انتخاب کنید .
  5. گزینه‌های پیش‌فرض مربوط به نوع اطلاعاتی که وارد می‌کنیم را بررسی کنید اما تغییر ندهید. نوع واردات را روی پوشه (Folder) بگذارید و برای مسیر سطل (batch path) از این مسیر استفاده کنید: labs.roitraining.com/labs/old-cookbooks و سپس ادامه (Continue ).
  6. نام فروشگاه داده را old-cookbooks بگذارید. روی ویرایش کلیک کنید و شناسه را به old-cookbooks-id تغییر دهید و فروشگاه داده را ایجاد کنید .

سازنده‌ی عامل هوش مصنوعی Vertex از چندین نوع برنامه پشتیبانی می‌کند و Data Store به عنوان منبع حقیقت برای هر کدام عمل می‌کند. برنامه‌های جستجو برای استفاده عمومی و جستجو مناسب هستند. برنامه‌های چت برای جریان‌های مولد در برنامه‌های چت‌بات/بات صوتی مبتنی بر Dataflow هستند. برنامه‌های توصیه‌گر به ایجاد موتورهای توصیه‌گر بهتر کمک می‌کنند. و برنامه‌های عامل برای ایجاد عامل‌های مبتنی بر GenAI هستند. در نهایت، عامل احتمالاً در کاری که می‌خواهیم انجام دهیم به بهترین شکل به ما خدمت می‌کند، اما با توجه به اینکه محصول در حال حاضر در مرحله‌ی پیش‌نمایش است، ما به نوع برنامه‌ی جستجو پایبند خواهیم ماند.

  1. از منوی سمت چپ برای رفتن به برنامه‌ها (Apps) استفاده کنید، سپس روی ایجاد یک برنامه جدید (Create A New App) کلیک کنید.
  2. روی «ایجاد» در « جستجوی کارت وب‌سایت» خود کلیک کنید. نام برنامه را cookbook-search بگذارید. روی «ویرایش» کلیک کنید و شناسه برنامه را cookbook-search-id قرار دهید. شرکت را روی Google تنظیم کنید و روی «ادامه» کلیک کنید.
  3. مخزن داده old-cookbooks که چند مرحله پیش ایجاد کردید را بررسی کنید و یک برنامه جستجو ایجاد کنید .

اگر تب Activity را بررسی کنید، احتمالاً خواهید دید که کتاب‌های آشپزی هنوز در حال وارد کردن و فهرست‌بندی هستند. بیش از ۵ دقیقه طول می‌کشد تا Agent Builder هزاران صفحه موجود در ۷۰ کتاب آشپزی که به آن داده‌ایم را فهرست‌بندی کند. در حالی که کار می‌کند، بیایید برخی از داده‌های پایگاه داده دستور پخت را برای تولیدکننده دستور پخت خود بارگذاری و پاک کنیم.

۶. بارگذاری و پاکسازی داده‌ها در یک دفترچه یادداشت Colab Enterprise، با کمک Gemini Code Assist

گوگل کلود چند روش اصلی برای کار با ژوپیتر نوت‌بوکز ارائه می‌دهد. ما قصد داریم از جدیدترین محصول گوگل، یعنی Colab Enterprise، استفاده کنیم. برخی از شما ممکن است با محصول Colab گوگل آشنا باشید که معمولاً توسط افراد و سازمان‌هایی که مایل به آزمایش ژوپیتر نوت‌بوکز در یک محیط رایگان هستند، استفاده می‌شود. Colab Enterprise یک محصول تجاری گوگل کلود است که کاملاً با سایر محصولات ابری گوگل یکپارچه شده و از قابلیت‌های امنیتی و انطباق محیط GCP به طور کامل بهره می‌برد.

یکی از ویژگی‌هایی که Colab Enterprise ارائه می‌دهد، ادغام با Gemini Code Assist گوگل است. Code Assist را می‌توان در تعدادی از ویرایشگرهای کد مختلف استفاده کرد و می‌تواند در حین کدنویسی، مشاوره و همچنین پیشنهادهای درون‌خطی یکپارچه‌ای ارائه دهد. ما از این دستیار مولد در حین بررسی داده‌های دستور پخت خود استفاده خواهیم کرد.

  1. از جستجو برای رفتن به Colab Enterprise استفاده کنید و روی ایجاد دفترچه یادداشت کلیک کنید. اگر پیشنهادی برای آزمایش ویژگی‌های جدید Colab دریافت کردید، آن را رد کنید. برای راه‌اندازی و فعال‌سازی زمان اجرا، یعنی قدرت محاسباتی پشت دفترچه یادداشت، روی اتصال (Connect) در گوشه سمت راست بالای دفترچه یادداشت جدید خود کلیک کنید. اتصال
  2. برای تغییر نام دفترچه یادداشت به Data Wrangling ، روی File > Rename کلیک کنید. تغییر نام با سه نقطه
  3. برای ایجاد یک کادر متن جدید، روی + متن کلیک کنید و از فلش بالا برای جابجایی آن استفاده کنید تا به اولین سلول صفحه تبدیل شود. + متن و فلش بالا
  4. کادر متن را ویرایش کنید و وارد کنید:
    # Data Wrangling
    
    Import the Pandas library
    
  5. در بلوک کد زیر بلوک متنی که ایجاد کرده‌اید، شروع به تایپ imp کنید و Gemini Code Assist باید بقیه‌ی ایمپورت را با رنگ خاکستری پیشنهاد دهد. برای پذیرش پیشنهاد، کلید tab را فشار دهید.
    import pandas as pd
    
  6. در زیر کادر کد واردات، یک کادر متن دیگر ایجاد کنید و وارد کنید:
    Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
    
  7. یک بلوک کد دیگر ایجاد و ویرایش کنید. دوباره، شروع به تایپ df = کنید و کد تولید شده توسط Gemini Code Assistant را بررسی کنید. اگر یک لیست کشویی تکمیل خودکار از کلمات کلیدی پایتون را روی پیشنهاد تولید شده مشاهده کردید، کلید escape را بزنید تا کد پیشنهادی خاکستری روشن را ببینید. دوباره کلید tab را بزنید تا پیشنهاد پذیرفته شود. اگر پیشنهاد شما شامل فراخوانی تابع head() نبود، آن را اضافه کنید.
    df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
    df.head()
    
  8. روی اولین سلول کد خود، جایی که Pandas را وارد کرده‌اید، کلیک کنید و از منوی Commands یا صفحه کلید برای اجرای سلول انتخاب شده استفاده کنید. در صفحه کلید، کلید shift+enter سلول را اجرا می‌کند و در صورت نیاز، سلول بعدی را ایجاد می‌کند. قبل از ادامه کار، منتظر اجرای سلول باشید. توجه: وقتی سلولی اجرا نشده باشد، علامت [ ] را درست در سمت چپ خواهید دید. در حالی که یک سلول در حال اجرا است، یک انیمیشن در حال چرخش خواهید دید. پس از اتمام سلول، عددی مانند [13] ظاهر می‌شود.
  9. سلولی که CSV را در DataFrame بارگذاری می‌کند، اجرا کنید. منتظر بمانید تا فایل بارگذاری شود و پنج ردیف اول داده‌ها را بررسی کنید. این داده‌های دستور پخت است که ما در BigQuery بارگذاری خواهیم کرد و در نهایت از آن برای راه‌اندازی مولد دستور پخت خود استفاده خواهیم کرد.
  10. یک بلوک کد جدید ایجاد کنید و عبارت زیر را در آن وارد کنید. پس از تایپ عبارت، به خط کد بعدی بروید و باید پیشنهاد df.columns را دریافت کنید. آن را بپذیرید و سپس سلول را اجرا کنید.
    # List the current DataFrame column names
    
    ما به تازگی نشان دادیم که شما واقعاً دو انتخاب برای نحوه دریافت کمک از Gemini Code Assist در یک Jupyter notebook دارید: سلول‌های متنی بالای سلول‌های کد، یا کامنت‌ها درون خود سلول کد. کامنت‌های درون سلول‌های کد در Jupyter notebooks به خوبی کار می‌کنند، اما این رویکرد در هر IDE دیگری که از Gemini Code assist گوگل پشتیبانی می‌کند نیز کار خواهد کرد.
  11. بیایید کمی ستون را پاکسازی کنیم. نام ستون Unnamed: 0 را به id تغییر دهید و آن را به uri link . از تکنیک‌های دلخواه خود برای ایجاد کد استفاده کنید، سپس وقتی به نتیجه رسیدید، سلول را اجرا کنید.
    # 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. احتمالاً ۲.۲۳ میلیون رکورد، دستور پخت‌های بیشتری نسبت به زمانی است که داریم. فرآیند ایندکس‌گذاری در Agent Builder برای تمرین امروز ما احتمالاً خیلی طول می‌کشد. به عنوان یک راه حل، بیایید ۱۵۰،۰۰۰ دستور پخت را نمونه‌برداری کنیم و با آن کار کنیم. از رویکرد prompt > code خود برای گرفتن نمونه و ذخیره آن در یک DataFrame جدید به نام dfs (s برای small) استفاده کنید.
    # Sample out 150,000 records into a DataFrame named dfs
    dfs = df.sample(n=150000)
    
  15. داده‌های منبع دستور پخت ما آماده بارگذاری در BigQuery است. قبل از بارگذاری، بیایید به BigQuery برویم و یک مجموعه داده برای نگهداری جدول خود آماده کنیم. در کنسول Google Cloud از کادر جستجو برای رفتن به BigQuery استفاده کنید. می‌توانید روی BigQuery کلیک راست کرده و آن را در یک برگه مرورگر جدید باز کنید.
  16. اگر هنوز قابل مشاهده نیست، پنل گفتگوی هوش مصنوعی Gemini را با استفاده از لوگوی Gemini در سمت راست بالای کنسول ابری باز کنید. اگر از شما خواسته شد که دوباره API را فعال کنید، یا دکمه فعال‌سازی را فشار دهید یا صفحه را رفرش کنید. اعلان را اجرا کنید: What is a dataset used for in BigQuery? پس از بررسی پاسخ، از من بپرسید: How can I create a dataset named recipe_data using the Cloud Console? نتایج را با چند مرحله زیر مقایسه کنید. دستیار ابری جمینی را باز کنید
  17. در پنل BigQuery Explorer، روی منوی سه‌نقطه‌ای View actions در کنار شناسه پروژه خود کلیک کنید. سپس Create dataset را انتخاب کنید. کاوش مشاهده اقدامات
  18. مجموعه داده و شناسه recipe_data را وارد کنید. نوع مکان را US بگذارید و مجموعه داده را ایجاد کنید . اگر خطایی مبنی بر وجود مجموعه داده دریافت کردید، به مرحله بعد بروید. با مجموعه داده ایجاد شده در BigQuery، به دفترچه یادداشت خود برمی‌گردیم و عملیات درج را انجام می‌دهیم.
  19. به دفترچه‌ی Data Wrangling خود در Colab Enterprise برگردید. در یک سلول کد جدید، متغیری به نام project_id ایجاد کنید و از آن برای نگهداری شناسه‌ی پروژه‌ی فعلی خود استفاده کنید. در سمت چپ بالای این دستورالعمل‌ها، زیر دکمه‌ی End Lab، نگاه کنید تا شناسه‌ی پروژه‌ی فعلی را پیدا کنید. در صورت تمایل، این شناسه در صفحه‌ی اصلی Cloud Console نیز موجود است. مقدار را به متغیر project_id خود اختصاص دهید و سلول را اجرا کنید.
    # Create a variable to hold the current project_id
    project_id='YOUR_PROJECT_ID'
    
  20. از رویکرد prompt > code برای ایجاد یک بلوک کد استفاده کنید که dfs DataFrame را در جدولی به نام recipes در مجموعه داده‌ای که اخیراً recipe_data ایجاد کرده‌ایم، درج کند. سلول را اجرا کنید.
    dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
    

۷. یک برنامه جستجو در Vertex AI Agent Builder برای تولیدکننده دستور پخت ایجاد کنید

عالی شد، حالا که جدول داده‌های دستور پخت ما ایجاد شده، بیایید از آن برای ساخت یک منبع داده پایه برای مولد دستور پخت خود استفاده کنیم. رویکردی که استفاده خواهیم کرد مشابه کاری است که برای چت‌بات آشپزی خود انجام دادیم. ما از Vertex AI Agent Builder برای ایجاد یک فروشگاه داده استفاده خواهیم کرد و سپس از آن به عنوان منبع داده برای یک برنامه جستجو استفاده خواهیم کرد.

اگر مایل باشید، می‌توانید از Gemini در کنسول Google Cloud بخواهید مراحل ایجاد یک برنامه جستجوی Agent Builder را به شما یادآوری کند، یا می‌توانید مراحل ذکر شده در زیر را دنبال کنید.

  1. از جستجو برای یافتن Agent Builder استفاده کنید. Data Stores را باز کنید و Create Data Store را انتخاب کنید . این بار، نوع BigQuery Data Store را انتخاب کنید .
  2. در سلول انتخاب جدول، دکمه مرور (Browse) را فشار دهید و recipes را جستجو کنید. دکمه رادیویی کنار جدول خود را انتخاب کنید. اگر دستور پخت‌هایی از پروژه‌های دیگر qwiklabs-gcp-... را مشاهده می‌کنید، حتماً دستور پختی را که متعلق به شماست انتخاب کنید . توجه: اگر به جای انتخاب دکمه رادیویی کنار recipes ، روی آنها کلیک کنید، یک برگه جدید در مرورگر شما باز می‌شود و شما را به صفحه نمای کلی جدول در BigQuery می‌برد. کافیست برگه مرورگر را ببندید و دکمه رادیویی را در Agent Builder انتخاب کنید.
  3. بقیه گزینه‌های پیش‌فرض را بررسی کنید اما تغییر ندهید، سپس ادامه دهید .
  4. در صفحه بررسی طرحواره، پیکربندی‌های پیش‌فرض اولیه را بررسی کنید، اما چیزی را تغییر ندهید. ادامه
  5. نام پایگاه داده را recipe-data بگذارید. شناسه پایگاه داده را ویرایش کنید و آن را روی recipe-data-id تنظیم کنید. پایگاه داده را ایجاد کنید .
  6. با استفاده از منوی ناوبری سمت چپ به بخش برنامه‌ها (Apps) بروید و یک برنامه جدید (Create A New App) ایجاد کنید .
  7. روی «ایجاد» در « جستجوی کارت وب‌سایت» کلیک کنید. نام برنامه را recipe-search » بگذارید و روی «ویرایش» کلیک کنید تا شناسه آن را recipe-search-id تنظیم کنید. نام شرکت را Google بگذارید و «ادامه» را بزنید.
  8. این بار، منابع داده recipe-data را بررسی کنید. برنامه را ایجاد کنید .

مدتی طول می‌کشد تا جدول پایگاه داده ما ایندکس شود. در این مدت، بیایید با Data Canvas جدید BigQuery آزمایش کنیم و ببینیم آیا می‌توانیم یک یا دو دستور غذای جالب پیدا کنیم.

  1. از کادر جستجو برای رفتن به BigQuery استفاده کنید. در بالای BigQuery Studio، روی فلش رو به پایین کنار سمت راست‌ترین تب کلیک کنید و Data canvas را انتخاب کنید. ناحیه را روی us-central1 تنظیم کنید. بوم داده را باز کنید
  2. روی جستجوی داده‌ها کلیک کنید. در کادر جستجوی بوم داده، recipes را جستجو کنید، برای جستجو Enter/Return را فشار دهید و روی دکمه افزودن به بوم در کنار نام جدول خود کلیک کنید.
  3. یک نمایش بصری از جدول دستور پخت‌های شما در بوم داده BigQuery بارگذاری خواهد شد. می‌توانید طرح جدول را بررسی کنید، داده‌های موجود در جدول را پیش‌نمایش کنید و سایر جزئیات را بررسی کنید. در زیر نمایش جدول، روی Query کلیک کنید.
  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.
    
    (بله، وقتی از شما خواهش می‌کنم، می‌گویم لطفاً. مامانم خیلی به من افتخار می‌کند.) متوجه شدم که یکی از دستورهای پخت چیلی حاوی قارچ است، و چه کسی می‌خواهد قارچ هم در چیلی باشد؟ از جمینی خواستم در حذف آن دستورها به من کمک کند.
    Do I have any chili recipes?  Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
    

۸. ویرایشگر Cloud Shell را باز کنید

  1. به ویرایشگر Cloud Shell بروید
  2. اگر ترمینال در پایین صفحه نمایش داده نشد، آن را باز کنید:
    • روی منوی همبرگری کلیک کنید آیکون منوی همبرگری
    • روی ترمینال کلیک کنید
    • روی ترمینال جدید کلیک کنید باز کردن ترمینال جدید در ویرایشگر Cloud Shell
  3. در ترمینال، پروژه خود را با این دستور تنظیم کنید:
    • قالب:
      gcloud config set project [PROJECT_ID]
      
    • مثال:
      gcloud config set project lab-project-id-example
      
    • اگر نمی‌توانید شناسه پروژه خود را به خاطر بیاورید:
      • شما می‌توانید تمام شناسه‌های پروژه خود را با دستور زیر فهرست کنید:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      شناسه پروژه را در ترمینال ویرایشگر Cloud Shell تنظیم کنید
  4. اگر از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید. برای تأیید Cloud Shell کلیک کنید
  5. شما باید این پیام را ببینید:
    Updated property [core/project].
    
    اگر یک WARNING مشاهده کردید و از شما پرسیده شد Do you want to continue (Y/N)? احتمالاً شناسه پروژه را اشتباه وارد کرده‌اید. N را فشار دهید، Enter را بزنید و دوباره سعی کنید دستور gcloud config set project اجرا کنید.

۹. فعال کردن 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

اگر از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید. برای تأیید Cloud Shell کلیک کنید

تکمیل این دستور ممکن است چند دقیقه طول بکشد، اما در نهایت باید پیامی مشابه این پیام موفقیت‌آمیز نمایش داده شود:

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

۱۰. چارچوب‌بندی هسته پایتون و برنامه وب Streamlit را با کمی کمک Gemini مشخص کنید

حالا که هر دو مخزن داده‌ی Vertex AI Agent Builder ما ایندکس شده‌اند و برنامه‌های جستجوی ما تقریباً آماده‌ی اجرا هستند، بیایید به سراغ ساخت برنامه‌ی وب خود برویم.

ما در حین کار از Gemini Code Assist استفاده خواهیم کرد. برای اطلاعات بیشتر در مورد استفاده از Gemini Code Assist در Visual Studio Code، به مستندات اینجا مراجعه کنید.

  1. در ترمینال ویرایشگر Cloud Shell، این دستور را اجرا کنید تا مخزن برنامه دستور پخت را کلون کنید.
    git clone https://github.com/haggman/recipe-app
    
  2. این دستور را طوری تنظیم کنید که پوشه برنامه در ویرایشگر Cloud Shell باز شود.
    cloudshell open-workspace recipe-app/
    
  3. قبل از اینکه پوشه کلون شده را بررسی کنیم و شروع به کار بر روی برنامه وب خود کنیم، باید افزونه Cloud Code ویرایشگر را در Google Cloud وارد کنیم و Gemini را فعال کنیم. بیایید همین حالا این کار را انجام دهیم. در پایین سمت چپ ویرایشگر خود، روی Cloud Code - Sign in کلیک کنید. اگر لینک را نمی‌بینید، یک دقیقه صبر کنید و دوباره بررسی کنید. کد ابری - ورود
  4. پنجره ترمینال یک URL طولانی نمایش می‌دهد. URL را در مرورگر باز کنید و مراحل اعطای دسترسی Cloud Code به محیط Google Cloud خود را اجرا کنید. در پنجره آخر، کد تأیید را کپی کرده و دوباره آن را در پنجره ترمینال منتظر در تب مرورگر Cloud Shell Editor خود جایگذاری کنید.
  5. پس از چند لحظه، لینک Cloud Code در پایین سمت چپ ویرایشگر شما به Cloud Code - No Project تغییر خواهد کرد. برای انتخاب یک پروژه، روی لینک جدید کلیک کنید. پالت فرمان باید در بالای ویرایشگر باز شود. روی Select a Google Cloud project کلیک کنید و پروژه خود را انتخاب کنید. پس از چند لحظه، لینک موجود در پایین سمت چپ ویرایشگر شما به‌روزرسانی می‌شود تا شناسه پروژه شما نمایش داده شود. این نشان می‌دهد که Cloud Code با موفقیت به پروژه کاری شما متصل شده است.
  6. با اتصال Cloud Code به پروژه خود، اکنون می‌توانید Gemini Code Assist را فعال کنید. در پایین سمت راست رابط ویرایشگر خود، روی لوگوی Gemini که خط خورده است کلیک کنید. پنجره Gemini Chat در سمت چپ ویرایشگر باز می‌شود. روی Select a Google Cloud Project کلیک کنید. وقتی پالت فرمان باز شد، پروژه خود را انتخاب کنید. اگر مراحل را به درستی دنبال کرده باشید (و گوگل چیزی را تغییر نداده باشد)، اکنون باید یک پنجره چت Gemini فعال را ببینید. جمینی معلول
  7. عالی، حالا که تنظیمات ترمینال، چت جمینی و Cloud Code ما انجام شده، تب اکسپلورر را باز کنید و چند دقیقه‌ای وقت بگذارید و فایل‌های پروژه فعلی را بررسی کنید. اکسپلورر
  8. در اکسپلورر، فایل requirements.txt خود را برای ویرایش باز کنید. به پنل چت Gemini بروید و بپرسید:
    From the dependencies specified in the requirements.txt file, what type of application are we building?
    
  9. خب، ما در حال ساخت یک برنامه وب تعاملی با استفاده از پایتون و Streamlit هستیم که با Vertex AI و Discovery Engine در تعامل است، عالیه. فعلاً، بیایید روی اجزای برنامه وب تمرکز کنیم. همانطور که Gemini می‌گوید، Streamlit چارچوبی برای ساخت برنامه‌های وب داده‌محور در پایتون است. حالا بپرسید:
    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 استفاده کنید.

۱۱. برنامه وب را روی Cloud Run مستقر کنید

عالی، ما ساختار اصلی برنامه خود را آماده کرده‌ایم، اما آیا همه چیز کار خواهد کرد؟ بهتر است بگوییم، کجا باید آن را در Google Cloud میزبانی کنیم؟

  1. در پنجره چت Gemini، بپرسید:
    If I containerize this application, what compute technologies in Google Cloud would be best for hosting it?
    
  2. به یاد داشته باشید، اگر قبلاً در 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 و در ویرایشگر کد خود کار می‌کنید، می‌تواند شما را بسیار کارآمدتر کند.
  3. برای یک برنامه وب کانتینر شده بدون وضعیت و کوتاه مدت، Cloud Run گزینه بسیار خوبی خواهد بود. در پنجره چت Gemini ویرایشگر کد خود، دستور زیر را امتحان کنید:
    What steps would be required to run this application in Cloud Run?
    
  4. به نظر می‌رسد اولین کاری که باید انجام دهیم ایجاد یک Dockerfile است. با استفاده از ویرایشگر، فایلی با نام Dockerfile در ریشه پوشه پروژه خود ایجاد کنید. مطمئن شوید که آن را به طور تصادفی در پوشه pages قرار نمی‌دهید. فایل را برای ویرایش باز کنید.
  5. بیایید از پنل چت جانبی Gemini برای ایجاد Dockerfile خود استفاده کنیم. از یک اعلان مانند تصویر زیر استفاده کنید. وقتی نتایج در چت نمایش داده شد، از علامت + کنار آیکون کپی درست بالای Dockerfile پیشنهادی برای وارد کردن کد پیشنهادی در Dockerfile استفاده کنید.
    Create a Dockerfile for the application in the current folder. The dependencies are defined in requirements.txt and I want you to use the Python 3 slim bookworm base image.
    
    جمینی همیشه به یک درخواست، پاسخ یکسانی نمی‌دهد. اولین باری که از جمینی یک فایل داکر خواستم، دقیقاً همان فایلی را که به شما پیشنهاد می‌کنم استفاده کنید، دریافت کردم. همین الان این پیشنهاد را دریافت کردم:
    # 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 نیازی نداریم زیرا هر چیزی که برای پایتون لازم است از قبل در ایمیج پایه ما وجود دارد. همچنین، استفاده از یک محیط مجازی در یک کانتینر پایتون اتلاف فضا است، بنابراین من آن را حذف می‌کنم. دستور 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 در ویندوز یا Command+i در مک فراخوانی کرد. در جایی از 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. اگر فرآیند ساخت را مشاهده کنید، ابتدا مخزن داکر Artifact Registry را می‌سازد. سپس، از Cloud Build برای ایجاد تصویر کانتینر از Dockerfile در پوشه محلی استفاده می‌کند. در نهایت، تصویر داکر در یک سرویس Cloud Run جدید مستقر می‌شود. در پایان اسکریپت، یک URL آزمایشی Cloud Run برای استفاده دریافت خواهید کرد.

لینک برگشتی را در یک تب جدید از مرورگر خود باز کنید. لحظه‌ای وقت بگذارید و ساختار و صفحات برنامه را بررسی کنید. عالی است، حالا به یک قلاب در عملکرد هوش مصنوعی مولد خود نیاز داریم.

۱۲. صفحه «نکات آشپزی» را به اپلیکیشن «جستجوی کتاب آشپزی» ما متصل کنید.

ما چارچوب برنامه وب را اجرا کرده‌ایم، اما باید دو صفحه کاری را به دو برنامه جستجوی Vertex AI Agent Builder خود متصل کنیم. بیایید با Cooking Advice شروع کنیم.

  1. تب ویرایشگر پوسته ابری خود را باز بگذارید. در کنسول گوگل کلود، از جستجو برای رفتن به چت در Vertex AI استفاده کنید.
  2. در صفحه تنظیمات سمت راست، مدل را روی gemini-1.5-flash-002 تنظیم کنید. محدودیت توکن خروجی را تا حداکثر افزایش دهید تا مدل در صورت نیاز بتواند پاسخ‌های طولانی‌تری را برگرداند. تنظیمات فیلتر ایمنی را باز کنید. گفتار نفرت‌پراکن، محتوای صریح جنسی و محتوای آزار و اذیت را روی مسدود کردن برخی تنظیم کنید. محتوای خطرناک را روی مسدود کردن تعداد کمی تنظیم کنید و ذخیره کنید . ما محتوای خطرناک را کمی پایین‌تر تنظیم می‌کنیم زیرا صحبت کردن در مورد چاقو و بریدن می‌تواند توسط Gemini به عنوان خشونت تعبیر شود.
  3. برای فعال کردن Grounding، روی ضامن بکشید و سپس روی Customize کلیک کنید. منبع grounding را روی Vertex AI search تنظیم کنید و برای مسیر datastore از موارد زیر استفاده کنید. YOUR_PROJECT_ID را به شناسه پروژه‌ای که در نزدیکی دکمه End Lab در این دستورالعمل‌ها یافت می‌شود، تغییر دهید، سپس تنظیمات grounding را ذخیره کنید.
    projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
    
    نکته: اگر با خطا مواجه شدید، یا شناسه پروژه را به شناسه واقعی پروژه خود تغییر نداده‌اید، یا ممکن است مرحله‌ای که شناسه فروشگاه داده agent builder مربوط به old-cookbooks را تغییر می‌دادید، از قلم انداخته باشید. برای یافتن شناسه فروشگاه داده واقعی، به مسیر Agent Builder > Data Stores > old-cookbooks مراجعه کنید.
  4. چند پیام چت را امتحان کنید. شاید بهتر باشد با موارد زیر شروع کنید. اگر دوست دارید، چند مورد دیگر را هم امتحان کنید.
    How can I tell if a tomato is ripe?
    
  5. مدل کار می‌کند، حالا بیایید با کد آزمایش کنیم. برای اینکه مکالمات ما بخشی از کد نشوند، روی «پاک کردن مکالمه» کلیک کنید، سپس روی «دریافت کد» کلیک کنید. مکالمه را پاک کنید و کد را دریافت کنید
  6. در بالای پنجره کد، روی «باز کردن دفترچه یادداشت» کلیک کنید تا بتوانیم کد را در Colab Enterprise قبل از ادغام در برنامه خود، آزمایش و تکمیل کنیم.
  7. چند دقیقه وقت بگذارید تا با کد آشنا شوید. بیایید چند تغییر ایجاد کنیم تا آن را با آنچه می‌خواهیم تطبیق دهیم. قبل از شروع، اولین سلول کد را برای اتصال به کامپیوتر و نصب SDK پلتفرم هوش مصنوعی اجرا کنید. پس از اجرای بلوک، از شما خواسته می‌شود که جلسه را مجدداً راه‌اندازی کنید. این کار را انجام دهید.
  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. به برگه ویرایشگر پوسته ابری خود بروید و 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 برگشت، برنامه را اجرا کنید و صفحه Cooking Advisor را امتحان کنید. شاید از آن در مورد گوجه فرنگی رسیده بپرسید، یا اینکه ربات روش خوبی برای تهیه کلم بروکسل می‌داند.
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    

چقدر باحاله! مشاور آشپزی هوش مصنوعی شخصی شما :-)

۱۳. (اختیاری) صفحه جستجوی دستور پخت را به برنامه سازنده دستور پخت با جستجوی عامل (Agent Builder) متصل کنید.

وقتی صفحه Cooking Advice را به منبع زمینی آن متصل کردیم، این کار را مستقیماً با استفاده از Gemini API انجام دادیم. برای جستجوی دستور پخت، بیایید مستقیماً به برنامه جستجوی Vertex AI Agent Builder متصل شویم.

  1. در ویرایشگر Cloud Shell خود، صفحه pages/Recipe_Search.py ​​را برای ویرایش باز کنید. ساختار صفحه را بررسی کنید.
  2. در بالای فایل، شناسه پروژه خود را تنظیم کنید.
  3. تابع search_sample بررسی کنید. این کد کم و بیش مستقیماً از مستندات موتور اکتشاف (Discovery Engine) در اینجا آمده است. می‌توانید یک نسخه از آن را در این دفترچه یادداشت در اینجا پیدا کنید. تنها تغییری که من ایجاد کردم این بود که به جای فقط نتایج (results)، response.results را برگردانم. بدون این، نوع بازگشتی یک شیء است که برای پیمایش نتایج طراحی شده است و این چیزی است که ما برای برنامه اصلی خود به آن نیاز نداریم.
  4. به انتهای فایل بروید و کل بخش زیر را از حالت کامنت خارج کنید Here are the first 5 recipes I found .
  5. کل بخشی را که از حالت کامنت خارج کرده‌اید، هایلایت کنید و چت کد Gemini را باز کنید. بپرسید، Explain the highlighted code . اگر چیزی را انتخاب نکرده‌اید، Gemini می‌تواند کل فایل را توضیح دهد. اگر بخشی را هایلایت کنید و از Gemini بخواهید آن را توضیح دهد، یا نظر بدهد یا بهبود بخشد، Gemini این کار را انجام خواهد داد. لحظه‌ای وقت بگذارید و توضیحات را بخوانید. به هر حال، استفاده از یک دفترچه یادداشت Colab Enterprise راهی عالی برای بررسی APIهای Gemini قبل از ادغام آنها در برنامه شماست. این کار به ویژه در بررسی برخی از APIهای جدیدتر که ممکن است به خوبی مستند نشده باشند، مفید است.
  6. در پنجره ترمینال ویرایشگر خود، build.sh اجرا کنید تا برنامه نهایی مستقر شود. قبل از رفتن به مرحله بعدی، صبر کنید تا نسخه جدید مستقر شود.

۱۴. (اختیاری) بررسی درخواست نهایی

چند دقیقه وقت بگذارید تا برنامه نهایی را بررسی کنید.

  1. در کنسول Google Cloud، از جستجو برای رفتن به Cloud Run استفاده کنید، سپس روی recipe-web-app خود کلیک کنید.
  2. آدرس اینترنتی (URL) تست برنامه (در بالای صفحه) را پیدا کنید و آن را در یک برگه جدید مرورگر باز کنید.
  3. صفحه اصلی برنامه باید ظاهر شود. به طرح‌بندی و ناوبری اولیه ارائه شده توسط Streamlit توجه کنید، فایل‌های پایتون از پوشه pages به عنوان گزینه‌های ناوبری نمایش داده می‌شوند و Home.py به عنوان صفحه اصلی بارگذاری می‌شود. به صفحه Cooking Advice بروید.
  4. بعد از چند لحظه رابط چت ظاهر می‌شود. دوباره، به طرح‌بندی اصلی خوب ارائه شده توسط Streamlit توجه کنید.
  5. چند سوال مربوط به آشپزی را امتحان کنید و ببینید ربات چگونه کار می‌کند. چیزی شبیه به:
    Do you have any advice for preparing broccoli?
    
    How about a classic chicken soup recipe?
    
    Tell me about meringue.
    
  6. Now let's find a recipe or two. Navigate to the Recipe Search page and try a few searches. Something like:
    Chili con carne
    
    Chili, corn, rice
    
    Lemon Meringue Pie
    
    A dessert containing strawberries
    

15. 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!

تمیز کردن

Cloud SQL does not have a free tier and will charge you if you continue to use it. You can delete your Cloud project to avoid incurring additional charges.

While Cloud Run does not charge when the service is not in use, you might still be charged for storing the container image in Artifact Registry. Deleting your Cloud project stops billing for all the resources used within that project.

اگر مایلید، پروژه را حذف کنید:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

You may also wish to delete unnecessary resources from your cloudshell disk. You can:

  1. Delete the codelab project directory:
    rm -rf ~/task-app
    
  2. Warning! This next action is can't be undone! If you would like to delete everything on your Cloud Shell to free up space, you can delete your whole home directory . Be careful that everything you want to keep is saved somewhere else.
    sudo rm -rf $HOME