1. Genel Bakış
Bu laboratuvarda, Gemini Cloud Assist'in yardımıyla Google Cloud'da altyapı oluşturmak için Google'ın üretken yapay zeka ürünlerini kullanacak, Data Canvas'ın doğal dil SQL özelliklerini kullanarak BigQuery verilerini sorgulayacaksınız. Ayrıca, Gemini Code Assist'in yardımıyla Colab Enterprise Jupyter not defterlerinde ve Eclipse Theia'da (Visual Studio Code) kod yazacak ve Cloud Storage ile BigQuery temel kaynaklarına dayalı yapay zeka arama ve sohbet özelliklerini Vertex AI Agent Builder'a entegre edeceksiniz.
Amacımız, AI Recipe Haven adlı bir yemek tarifleri ve yemek pişirme web sitesi oluşturmaktır. Site, Python ve Streamlit'te oluşturulacak ve iki ana sayfa içerecektir. Yemek Pişirme Önerileri, Gemini ve bir yemek kitabı grubuna bağlı Vertex AI Agent Builder kaynaklı bir chatbot'u barındıracak. Bu chatbot, yemek pişirmeyle ilgili tavsiyeler sunacak ve yemek pişirmeyle ilgili soruları yanıtlayacak. Recipe Search, Gemini tarafından beslenen bir arama motoru olacak. Bu sefer BigQuery yemek tarifi veritabanına dayalı olacak.
Bu alıştırmadaki kodlardan herhangi birinde takılırsanız tüm kod dosyalarının çözümleri, alıştırma GitHub deposundaki solution dalında yer alır.
Hedefler
Bu laboratuvarda, aşağıdaki görevleri nasıl gerçekleştireceğinizi öğreneceksiniz:
- Gemini Cloud Assist'i etkinleştirme ve kullanma
- Yemek tarifi önerisi veren chatbot için Vertex AI Agent Builder'da arama uygulaması oluşturma
- Gemini Code Assist'in yardımıyla Colab Enterprise not defterine veri yükleme ve temizleme
- Tarif oluşturucu için Vertex AI Agent Builder'da arama uygulaması oluşturma
- Gemini'nin yardımıyla temel Python ve Streamlit web uygulamasını çerçeve içine alma
- Web uygulamasını Cloud Run'a dağıtma
- Yemek Tarifi sayfasını yemek kitabı araması yapan Agent Builder uygulamamıza bağlama
- (İsteğe bağlı) Yemek tarifi arama sayfasını yemek tarifi arama Agent Builder uygulamasına bağlama
- (İsteğe bağlı) Nihai başvuruyu keşfetme
2. Ön koşullar
- Google Hesabınız yoksa Google Hesabı oluşturmanız gerekir.
- İş veya okul hesabı yerine kişisel hesap kullanıyorsanız. İş ve okul hesaplarında, bu laboratuvar için gereken API'leri etkinleştirmenizi engelleyen kısıtlamalar olabilir.
3. Proje ayarlama
- Google Cloud Console'da oturum açın.
- Cloud Console'da faturalandırmayı etkinleştirin.
- Bu laboratuvarı tamamlamak, bulut kaynaklarında 1 ABD dolarından az maliyete mal olur.
- Daha fazla ödeme alınmaması için bu laboratuvarın sonundaki adımları uygulayarak kaynakları silebilirsiniz.
- Yeni kullanıcılar 300 ABD doları tutarındaki ücretsiz deneme sürümünden yararlanabilir.
- Sanal uygulamalı laboratuvar etkinliğine mi katılıyorsunuz? 5 ABD doları kredi alabilirsiniz.
- Yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanmayı seçin.
- Cloud Faturalandırma'daki Projelerim bölümünde faturalandırmanın etkinleştirildiğini onaylayın
- Yeni projenizin
Billing account
sütunundaBilling is disabled
yazıyorsa:Actions
sütunundaki üç noktayı tıklayın- Faturalandırmayı değiştir'i tıklayın.
- Kullanmak istediğiniz faturalandırma hesabını seçin
- Canlı bir etkinliğe katılıyorsanız hesabın adı büyük olasılıkla Google Cloud Platform Deneme Sürümü Faturalandırma Hesabı şeklinde olacaktır.
- Yeni projenizin
4. Gemini Cloud Assist'i etkinleştirme ve kullanma
Bu görevde Gemini Cloud Assist'i etkinleştirip kullanacağız. Google Cloud Console'da çalışırken Gemini Cloud Assist size tavsiye verebilir, Google Cloud altyapınızı oluşturma, yapılandırma ve izleme konusunda yardımcı olabilir, hatta gcloud
komutları önerebilir ve Terraform komut dosyaları yazabilir.
- Cloud Assist'i kullanmak için Cloud Console kullanıcı arayüzünün üst kısmındaki arama kutusunu tıklayın ve Gemini'ye sor veya Cloud Console için Gemini'ye sor'u seçin.
- Sayfanın Gerekli API bölümüne gidin ve Google Cloud için Gemini API'yi etkinleştirin.
- Sohbet arayüzü hemen görünmüyorsa Sohbet başlat'ı tıklayın. Gemini'den Cloud Shell Düzenleyici'yi kullanmanın bazı avantajlarını açıklamasını isteyerek başlayın. Oluşturulan yanıtı incelemek için birkaç dakikanızı ayırın.
- Ardından, Agent Builder'ın avantajları ve üretken yanıtlar oluşturmaya nasıl yardımcı olabileceği hakkında bilgi verin.
- Son olarak, bir karşılaştırmaya bakalım. Google Cloud Console'un Gemini sohbet penceresinde aşağıdaki soruyu sorun:
What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
5. Yemek tarifi önerisi veren chatbot için Vertex AI Agent Builder'da arama uygulaması oluşturma
Hazırladığımız web sitesinde, kullanıcıların yemek pişirmeyle ilgili sorularına yanıt bulmalarına yardımcı olmak için tasarlanmış bir chatbot içeren bir yemek pişirme tavsiyeleri sayfası olacak. Gemini tarafından desteklenecek bu uygulama, 70 adet herkese açık yemek kitabı içeren bir kaynaktan yararlanacak. Yemek kitapları, Gemini'nin soruları yanıtlarken kullandığı bilgi kaynağı görevi görür.
- Vertex AI'a gitmek için Cloud Console arama kutusunu kullanın. Kontrol panelinde Önerilen Tüm API'leri Etkinleştir'i tıklayın. Bu işlem birkaç dakika sürebilir. Vertex AI API'nin etkinleştirilmesi gerektiğine dair bir pop-up kutusu görürseniz lütfen bunu da etkinleştirin. API'ler etkinleştirildikten sonra sonraki adıma geçebilirsiniz.
- Arama özelliğini kullanarak Agent Builder'a, ardından Devam ve API'yi Etkinleştir'e gidin.
- Gemini'nin daha önceki bir tavsiye isteğimizde önerdiği gibi, Agent Builder'da arama uygulaması oluşturmak, yetkili bir veri kaynağının oluşturulmasıyla başlar. Kullanıcı arama yaptığında Gemini, soruyu ve akıllı yanıtların nasıl oluşturulacağını anlar ancak bu yanıtta kullanılan bilgiler için kendi bilgisini kullanmak yerine temel kaynağa bakar.Soldaki menüden Veri Depoları'na ve Veri Deposu Oluştur'a gidin.
- Yemek pişirme önerileri sayfamızı temellendirmek için kullandığımız herkese açık yemek kitapları şu anda harici bir projedeki Cloud Storage paketinde bulunuyor. Cloud Storage kaynak türünü seçin.
- İçe aktardığımız bilgi türüyle ilgili varsayılan seçenekleri inceleyin ancak değiştirmeyin. İçe aktarma türünü Klasör olarak ayarlayın ve paket yolu için
labs.roitraining.com/labs/old-cookbooks
kullanın. Ardından Devam'ı tıklayın. - Veri deposuna ad verin:
old-cookbooks
. DÜZENLE'yi tıklayın ve kimliğiold-cookbooks-id
olarak değiştirin ve veri deposunu Oluştur.
Vertex AI Agent Builder, çeşitli uygulama türlerini destekler ve Veri Deposu, her biri için doğru bilgi kaynağı olarak işlev görür. Arama uygulamaları genel kullanım ve arama için iyidir. Chat uygulamaları, Dataflow destekli chatbot/sesli bot uygulamalarındaki üretken akışlar içindir. Öneri uygulamaları, daha iyi öneri motorları oluşturmanıza yardımcı olur. Temsilci uygulamaları ise GenAI destekli temsilciler oluşturmak için kullanılır. Temsilci, yapmak istediğimiz şey için en iyi hizmeti sunacaktır. Ancak ürün şu anda önizleme aşamasında olduğu için Arama uygulaması türünü kullanmaya devam edeceğiz.
- Sol taraftaki menüden Uygulamalar'a gidin, ardından Yeni Uygulama Oluştur'u tıklayın.
- Web sitenizi arayın kartında Oluştur'u tıklayın. Uygulamaya
cookbook-search
adını verin. Düzenle'yi tıklayın ve uygulama kimliğinicookbook-search-id
olarak ayarlayın. ŞirketiGoogle
olarak ayarlayın ve Devam'ı tıklayın. - Birkaç adım önce oluşturduğunuz old-cookbooks veri deposunu kontrol edin ve arama uygulamasını Oluştur.
Etkinlik sekmesini incelerseniz yemek kitaplarının hâlâ içe aktarıldığını ve dizine eklendiğini görebilirsiniz. Agent Builder'ın, kendisine verdiğimiz 70 yemek kitabındaki binlerce sayfayı dizine eklemesi 5 dakikadan uzun sürer. Bu işlem devam ederken yemek tarifi üreticimiz için bazı yemek tarifi veritabanı verilerini yükleyip temizleyelim.
6. Gemini Code Assist'in yardımıyla Colab Enterprise not defterine veri yükleme ve temizleme
Google Cloud, Jupyter not defterleriyle çalışmanın birkaç önemli yolunu sunar. Google'ın en yeni ürünü olan Colab Enterprise'ı kullanacağız. Bazılarınız, Google'ın Colab ürününü biliyor olabilir. Bu ürün, Jupyter not defterlerini ücretsiz bir ortamda denemek isteyen kişiler ve kuruluşlar tarafından yaygın olarak kullanılır. Colab Enterprise, Google'ın diğer bulut ürünleriyle tamamen entegre olan ve GCP ortamının güvenlik ve uygunluk özelliklerinden tam olarak yararlanan ticari bir Google Cloud teklifidir.
Colab Enterprise'ın sunduğu özelliklerden biri, Google'ın Gemini Code Assist ile entegrasyonudur. Code Assist, çeşitli kod düzenleyicilerde kullanılabilir ve kod yazarken hem tavsiyeler hem de sorunsuz satır içi öneriler sunabilir. Tarif verilerimizde düzenlemeler yaparken bu üretken asistandan yararlanacağız.
- Arama özelliğini kullanarak Colab Enterprise'a gidin ve Not defteri oluştur'u tıklayın. Yeni Colab özelliklerini deneme teklifi alırsanız teklifi reddedin. Not defterinin arkasındaki bilgi işlem gücünü (çalışma zamanı) kullanmak için yeni not defterinizin sağ üst köşesindeki Bağlan'ı tıklayın.
- Not defterini
Data Wrangling
olarak yeniden adlandırmak için Dosya > Yeniden adlandır'ı tıklayın. - Yeni bir metin kutusu oluşturmak için + Metin'i tıklayın ve yukarı oku kullanarak sayfadaki ilk hücreye taşıyın.
- Metin kutusunu düzenleyip şunları girin:
# Data Wrangling Import the Pandas library
- Az önce oluşturduğunuz metin bloğunun altındaki kod bloğuna
imp
yazmaya başlayın. Gemini Code Assist, içe aktarma işleminin geri kalanını gri renkte önerir. Öneriyi kabul etmek için sekme tuşuna basın.import pandas as pd
- İçe aktarma kodu kutusunun altına başka bir metin kutusu oluşturun ve şunu girin:
Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
- Başka bir kod bloğu oluşturun ve düzenleyin. Tekrar
df =
yazmaya başlayın ve Gemini Code Assistant tarafından oluşturulan kodu inceleyin. Oluşturulan önerinin üzerinde Python anahtar kelimelerinin yer aldığı bir otomatik tamamlama açılır listesi görürseniz önerilen açık gri kodu görmek için Esc tuşuna basın. Öneriyi kabul etmek için tekrar sekme tuşuna basın. Önerinizdehead()
işlev çağrısı yoksa işlev çağrısını ekleyin.df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv') df.head()
- Pandas'ı içe aktardığınız ilk kod hücrenizi tıklayın ve seçili hücreyi çalıştırmak için Komutlar menüsünü veya klavyeyi kullanın. Klavyede üst karakter+enter tuşlarına basıldığında hücre çalıştırılır ve odak sonraki hücreye kaydırılır. Gerekirse yeni bir hücre oluşturulur. Devam etmeden önce hücrenin yürütülmesini bekleyin.NOT: Bir hücre yürütülmediğinde hemen solda [ ] işaretini görürsünüz. Bir hücre yürütülürken dönen, çalışan bir animasyon görürsünüz. Hücre tamamlandığında [13] gibi bir sayı görünür.
- CSV'yi DataFrame'e yükleyen hücreyi yürütün. Dosyanın yüklenmesini bekleyin ve verilerin ilk beş satırını inceleyin. Bunlar, BigQuery'ye yükleyeceğimiz ve nihayetinde yemek tarifi oluşturucumuzu temellendirmek için kullanacağımız yemek tarifi verileridir.
- Yeni bir kod bloğu oluşturun ve aşağıdaki yorumu girin. Yorumu yazdıktan sonra bir sonraki kod satırına geçin.
df.columns
önerisini alırsınız. Kabul ettikten sonra hücreyi çalıştırın. Jupyter not defterinde Gemini Code Assist'ten yardım alma konusunda iki seçeneğiniz olduğunu gösterdik: kod hücrelerinin üzerindeki metin hücreleri veya kod hücresinin içindeki yorumlar. Kod hücrelerindeki yorumlar Jupyter not defterlerinde iyi çalışır ancak bu yaklaşım, Google'ın Gemini kod yardımı özelliğini destekleyen diğer tüm IDE'lerde de işe yarar.# List the current DataFrame column names
- Sütunları biraz temizleyelim.
Unnamed: 0
sütununuid
,link
sütununu iseuri
olarak yeniden adlandırın. İstem > kod teknikleri seçiminizi kullanarak kodu oluşturun, ardından tatmin edici bir sonuç elde ettiğinizde hücreyi çalıştırın.# Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri' df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True)
source
veNER
sütunlarını kaldırın ve ilk birkaç satırı görüntülemek içinhead()
simgesini kullanın. Gemini'den yardım alın. Son iki satırı çalıştırın ve sonuçları inceleyin.# Remove the source and NER columns df.drop(columns=['source', 'NER'], inplace=True) df.head()
- Veri kümemizde kaç kayıt olduğunu görelim. Yine, istem tekniği seçiminizle başlayın ve Gemini'nin kodu oluşturmanıza yardımcı olup olamayacağını öğrenin.
# Count the records in the DataFrame df.shape # count() will also work
- 2,23 milyon kayıt, muhtemelen zaman ayırabileceğimizden daha fazla yemek tarifi. Agent Builder'daki dizine ekleme işlemi, bugünkü alıştırmamız için muhtemelen çok uzun sürer. Bir uzlaşma olarak 150.000 tarifi örnekleyelim ve bu örnekle çalışalım. Sana sor > kod yaklaşımınızı kullanarak örnek alın ve
dfs
(küçük için s) adlı yeni bir DataFrame'de depolayın.# Sample out 150,000 records into a DataFrame named dfs dfs = df.sample(n=150000)
- Tarif kaynak verileri BigQuery'ye yüklenmeye hazır. Yüklemeyi yapmadan önce BigQuery'ye gidip tablomuzu barındıracak bir veri kümesi hazırlayalım. Google Cloud Console'da, BigQuery'ye gitmek için arama kutusunu kullanın. BigQuery'yi sağ tıklayıp yeni bir tarayıcı sekmesinde açabilirsiniz.
- Henüz görünmüyorsa Cloud Console'un sağ üst köşesindeki Gemini logosunu kullanarak Gemini AI Chat panelini açın. API'yi tekrar etkinleştirmeniz istenirse etkinleştir'e basın veya sayfayı yenileyin. İstemleri çalıştırın:
What is a dataset used for in BigQuery?
Yanıtı inceledikten sonraHow can I create a dataset named recipe_data using the Cloud Console?
Sonuçları aşağıdaki birkaç adımla karşılaştırın. - BigQuery Gezgin bölmesinde, proje kimliğinizin yanındaki üç noktalı İşlemleri göster menüsünü tıklayın. Ardından Veri kümesi oluştur'u seçin.
recipe_data
veri kümesini ve kimliğini belirtin. Konum türünü US olarak bırakın ve Veri Kümesi Oluştur'u tıklayın. Veri kümesinin zaten mevcut olduğuyla ilgili bir hata alırsanız devam edin.BigQuery'de oluşturulan veri kümesiyle not defterimize geri dönüp ekleme işlemini yapalım.- Colab Enterprise'daki Veri Düzenleme not defterinize geri dönün. Yeni bir kod hücresinde
project_id
adlı bir değişken oluşturun ve mevcut proje kimliğinizi saklamak için kullanın. Mevcut proje kimliğini, bu talimatların sol üst kısmındaki "Laboratuvarı sonlandır" düğmesinin altında bulabilirsiniz. Dilerseniz Cloud Console ana sayfasında da bulabilirsiniz. Değeriproject_id
değişkeninize atayın ve hücreyi çalıştırın.# Create a variable to hold the current project_id project_id='YOUR_PROJECT_ID'
dfs
adlı DataFrame'i, az önce oluşturduğumuzrecipe_data
veri kümesindekirecipes
adlı bir tabloya ekleyebilecek bir kod bloğu oluşturmak için istem > kod yaklaşımını kullanın. Hücreyi çalıştırın.dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
7. Tarif oluşturucu için Vertex AI Agent Builder'da arama uygulaması oluşturma
Mükemmel. Tarif verileri tablomuzu oluşturduk. Şimdi tarif oluşturucumuz için sağlam bir veri kaynağı oluşturmak üzere bu tabloyu kullanalım. Kullanacağımız yaklaşım, yemek pişirme chatbot'umuz için uyguladığımıza benzer olacak. Vertex AI Agent Builder'ı kullanarak bir Veri Deposu oluşturacağız ve ardından bunu bir arama uygulaması için doğruluk kaynağı olarak kullanacağız.
İsterseniz Google Cloud Console'da Gemini'den Agent Builder arama uygulaması oluşturma adımlarını hatırlatmasını isteyebilir veya aşağıda listelenen adımları uygulayabilirsiniz.
- Temsilci Oluşturucu'ya gitmek için aramayı kullanın. Veri Depoları'nı ve Veri Deposu Oluştur'u açın. Bu kez BigQuery Veri Deposu türünü seçin.
- Tablo seçim hücresinde Göz at'a basın ve
recipes
değerini arayın. Tablonuzun yanındaki radyo düğmesini seçin. Diğer qwiklabs-gcp-... projelerinden tarifler görürseniz size ait olanı seçme unutmayın.NOT: Yanındaki radyo düğmesini seçmek yerinerecipes
simgesini tıklarsanız tarayıcınızda yeni bir sekme açılır ve BigQuery'deki tabloya genel bakış sayfasına yönlendirilirsiniz. Tarayıcı sekmesini kapatıp Agent Builder'da radyo düğmesini seçmeniz yeterlidir. - Varsayılan seçeneklerin geri kalanını inceleyin ancak değiştirmeyin, ardından Devam'ı tıklayın.
- Şema inceleme sayfasında ilk varsayılan yapılandırmaları inceleyin ancak hiçbir şeyi değiştirmeyin. Devam
- Veri deposuna
recipe-data
adını verin. Veri deposu kimliğini düzenleyiprecipe-data-id
olarak ayarlayın. Veri deposunu oluşturun. - Soldaki gezinme menüsünü kullanarak Uygulamalar'a ve Yeni Uygulama Oluştur'a gidin.
- Web sitenizi arayın kartında Oluştur'u tıklayın. Uygulamayı
recipe-search
olarak adlandırın ve kimliğirecipe-search-id
olarak ayarlamak için DÜZENLE'yi tıklayın. Şirket adınıGoogle
olarak ayarlayın ve Devam'ı tıklayın. - Bu kez recipe-data veri kaynaklarını kontrol edin. Uygulamayı oluşturun.
Veritabanı tablomuzun dizine eklenmesi biraz zaman alır. Bu işlem devam ederken BigQuery'nin yeni Veri Kanvası'nı deneyelim ve birkaç ilginç tarif bulabilecek miyiz bir bakalım.
- Arama kutusunu kullanarak BigQuery'ye gidin. BigQuery Studio'nun en üstünde, en sağdaki sekmenin yanındaki aşağı oku tıklayın ve Veri kanvası'nı seçin. Bölgeyi us-central1 olarak ayarlayın.
- Veri arama'yı tıklayın. Veri kanvası arama kutusuna
recipes
yazın, arama yapmak içinEnter/Return
tuşuna basın ve tablo adınızın yanındaki Kanvaya ekle düğmesini tıklayın. - Tarifler tablonuzun görsel bir temsili BigQuery veri kanvasına yüklenir. Tablonun şemasını keşfedebilir, tablodaki verileri önizleyebilir ve diğer ayrıntıları inceleyebilirsiniz. Tablo temsilinin altında Sorgula'yı tıklayın.
- Tuvalde, bir ek içeren, aşağı yukarı tipik bir BigQuery sorgu iletişim kutusu yüklenir: Sorgu penceresinin üzerinde, Gemini'den yardım istemek için kullanabileceğiniz bir metin kutusu bulunur. Örneğimizde pasta tarifi bulup bulamayacağımıza bakalım. Aşağıdaki istemi çalıştırın (SQL oluşturmayı tetiklemek için metni yazıp
Enter/Return
tuşuna basarak):Please select the title and ingredients for all the recipes with a title that contains the word cake.
- Oluşturulan SQL'e bakın. İstediğiniz sonucu aldığınızda sorguyu Çalıştırın.
- Fena değil. Devam etmeden önce birkaç istem ve sorguyla denemeler yapabilirsiniz. Deneme yaparken neyin işe yarayıp neyin yaramadığını görmek için daha genel istemler deneyin. Örneğin, şu istem:
(Yeni sorguyu çalıştırmayı unutmayın) Acı biber tariflerinin listesini döndürür ancak şu şekilde değiştirene kadar malzemeleri çıkarır:Do I have any chili recipes?
(Evet, istekte bulunurken lütfen diyorum. Annem çok gurur duyardı.) Bir biber tarifinde mantar olduğunu fark ettim. Kim biberde mantar ister? Gemini'den bu tarifleri hariç tutmama yardım etmesini istedim.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 Düzenleyici'yi açma
- Cloud Shell Düzenleyici'ye gidin
- Terminal ekranın alt kısmında görünmüyorsa açın:
- Hamburger menüsünü
tıklayın.
- Terminal'i tıklayın.
- Yeni Terminal'i tıklayın
- Hamburger menüsünü
- Terminalde projenizi şu komutla ayarlayın:
- Biçim:
gcloud config set project [PROJECT_ID]
- Örnek:
gcloud config set project lab-project-id-example
- Proje kimliğinizi hatırlamıyorsanız:
- Tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Tüm proje kimliklerinizi şu komutla listeleyebilirsiniz:
- Biçim:
- Yetkilendirme isteğinde bulunulursa devam etmek için Yetkilendir'i tıklayın.
- Aşağıdaki mesajı görürsünüz:
Updated property [core/project].
WARNING
görüyorsanız veDo you want to continue (Y/N)?
soruyorsanız proje kimliğini yanlış girdiğiniz muhtemeldir.N
,Enter
tuşlarına basın vegcloud config set project
komutunu tekrar çalıştırmayı deneyin.
9. API'leri etkinleştir
Terminalde API'leri etkinleştirin:
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
Yetkilendirme isteğinde bulunulursa devam etmek için Yetkilendir'i tıklayın.
Bu komutun tamamlanması birkaç dakika sürebilir ancak sonunda şuna benzer bir başarılı mesaj gösterilir:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
10. Gemini'nin yardımıyla temel Python ve Streamlit web uygulamasını çerçeve içine alma
Her iki Vertex AI Agent Builder veri depomuzun da dizine eklenmesiyle ve arama uygulamalarımız kullanıma hazır olduğu için web uygulamamızı oluşturmaya başlayalım.
Çalışmalarımız sırasında Gemini Code Assist'ten yararlanacağız. Visual Studio Code'ta Gemini Code Assist'i kullanma hakkında daha fazla bilgi için buradaki dokümanları inceleyin.
- Cloud Shell Düzenleyici terminalinde, yemek tarifi uygulaması deposunu klonlamak için bu komutu çalıştırın.
git clone https://github.com/haggman/recipe-app
- Cloud Shell Düzenleyici'de uygulama klasörünü açmak için bu komutu çalıştırın.
cloudshell open-workspace recipe-app/
- Klonlanmış klasörü keşfedip web uygulamamız üzerinde çalışmaya başlamadan önce düzenleyicinin Cloud Code eklentisinin Google Cloud'da oturum açmasını sağlamamız ve Gemini'yi etkinleştirmemiz gerekir. Şimdi bunu yapalım. Düzenleyicinizin sol alt kısmında Cloud Code - Oturum aç'ı tıklayın. Bağlantıyı görmüyorsanız bir dakika bekleyip tekrar kontrol edin.
- Terminal penceresinde uzun bir URL gösterilir. URL'yi tarayıcıda açın ve Cloud Code'a Google Cloud ortamınıza erişim izni vermek için adımları uygulayın. Son iletişim kutusunda doğrulama kodunu kopyalayın ve Cloud Shell Düzenleyici tarayıcı sekmesindeki bekleme terminali penceresine yapıştırın.
- Birkaç dakika sonra, düzenleyicinizin sol alt kısmındaki Cloud Code bağlantısı Cloud Code - No Project (Cloud Code - Proje Yok) olarak değişir. Proje seçmek için yeni bağlantıyı tıklayın. Komut paleti, düzenleyicinin üst kısmında açılır. Bir Google Cloud projesi seçin'i tıklayın ve projenizi seçin. Birkaç dakika sonra düzenleyicinizin sol alt kısmındaki bağlantı, proje kimliğinizi gösterecek şekilde güncellenir. Bu, Cloud Code'un çalışma projenize başarıyla eklendiğini gösterir.
- Cloud Code projenize bağlıyken artık Gemini Code Assist'i etkinleştirebilirsiniz. Düzenleyici arayüzünüzün sağ alt kısmında, üzeri çizili Gemini logosunu tıklayın. Gemini Chat bölmesi, düzenleyicinin sol tarafında açılır. Bir Google Cloud projesi seçin'i tıklayın. Komut paleti açıldığında projenizi seçin. Adımları doğru bir şekilde uyguladıysanız (ve Google herhangi bir değişiklik yapmadıysa) etkin bir Gemini sohbet penceresi görmelisiniz.
- Mükemmel. Terminalimiz, Gemini sohbetimiz ve Cloud Code yapılandırmalarımız hazır. Gezgin sekmesini açın ve mevcut projedeki dosyaları keşfetmek için birkaç dakikanızı ayırın.
- Gezgin'de düzenlemek için
requirements.txt
dosyanızı açın. Gemini sohbet bölmesine geçin ve şunu sorun:From the dependencies specified in the requirements.txt file, what type of application are we building?
- Python ve Streamlit'i kullanarak Vertex AI ve Discovery Engine ile etkileşime geçen etkileşimli bir web uygulaması oluşturuyoruz. Şimdilik web uygulaması bileşenlerine odaklanalım. Gemini'nin de belirttiği gibi Streamlit, Python'da veri odaklı web uygulamaları oluşturmaya yönelik bir çerçevedir. Şimdi şunu sorun:
Gemini'nin sorun yaşama olasılığı bu aşamada artar. Gemini, düzenleyicide şu anda açık olan dosyaya erişebilir ancak projenin tamamını göremez. Şunu sormayı deneyin:Does the current project's folder structure seem appropriate for a Streamlit app?
Daha iyi bir yanıt almak ister misiniz?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 hakkında daha fazla bilgi edinelim:
Güzel. Gemini'nin avantajları ve dezavantajları içeren güzel bir genel bakış sunduğunu görüyoruz.What can you tell me about Streamlit?
- Dezavantajları öğrenmek isterseniz şu soruları sorabilirsiniz:
Gemini sohbeti sohbet biçiminde (çoklu turlu) olduğundan "Streamlit\'ten" dememiz gerekmedi. Gemini, sohbet oturumunda olduğumuz için ne hakkında konuştuğumuzu bilir. Gemini sohbet geçmişini herhangi bir zamanda silmek isterseniz Gemini kod sohbet penceresinin üst kısmındaki çöp kutusu simgesini kullanın.What are the major downsides or shortcomings?
11. Web uygulamasını Cloud Run'a dağıtma
Mükemmel. Temel uygulama yapımızı oluşturduk. Ancak tüm bu yapı çalışacak mı? Daha da iyisi, Google Cloud'da nerede barındırmalıyız?
- Gemini sohbet penceresinde şunları sorabilirsiniz:
If I containerize this application, what compute technologies in Google Cloud would be best for hosting it?
- IDE'nizde çalışmıyorsanız Google Cloud Asistan'ı da kullanabileceğinizi unutmayın. Google Cloud Console'u, ardından Gemini Cloud Assist'i açın ve şunları sorun:
İki tavsiye de aynı mıydı? Tavsiyelerden herhangi birine katılıyor musunuz yoksa katılmıyor musunuz? Gemini'nin üretken yapay zeka asistanı olduğunu ve insan asistanlar gibi her zaman söyledikleriyle aynı fikirde olmayacağınızı unutmayın. Yine de Google Cloud'da ve kod düzenleyicinizde çalışırken bu yardımcının her zaman yanınızda olması, işinizi çok daha verimli hale getirebilir.If I have a containerized web application, where would be the best place to run it in Google Cloud?
- Durum bilgisi olmayan, kısa ömürlü, container mimarisine alınmış bir web uygulaması için Cloud Run mükemmel bir seçenektir. Kod düzenleyicinizin Gemini sohbet penceresinde şu isteği deneyin:
What steps would be required to run this application in Cloud Run?
- Öncelikle bir Dockerfile oluşturmamız gerekiyor. Düzenleyiciyi kullanarak proje klasörünüzün kökünde
Dockerfile
adlı bir dosya oluşturun. Dosyayı yanlışlıkla sayfalar klasörüne yerleştirmediğinizden emin olun. Düzenlemek için dosyayı açın. - Dockerfile'imizi oluşturmak için yan Gemini sohbet panelini kullanalım. Aşağıdaki gibi bir istem kullanın. Sonuçlar sohbette gösterildiğinde, önerilen kodu Dockerfile'e eklemek için önerilen Dockerfile'in hemen üzerindeki kopyalama simgesinin yanındaki + simgesini kullanın.
Gemini, aynı istem için her zaman aynı yanıtı vermez. Gemini'den ilk kez Dockerfile istediğimde, kullanmanızı önereceğim dosyayı aldım. Az önce şu öneriyi aldım: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.
Bu gerçekten çok iyi bir Dockerfile. Bunu biraz basitleştireceğim. Python için gereken her şey temel görüntümüzde zaten bulunduğundan apt-get bölümüne ihtiyacımız yoktur. Ayrıca, Python kapsayıcısında sanal ortam kullanmak yer kaybına neden olur. Bu nedenle, sanal ortamı kaldırırdım. expose komutu zorunlu değildir ancak kullanabilirsiniz. Ayrıca, main.py dosyasını başlatmaya çalışıyor ama bu dosya benim bilgisayarımda yok.# 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
klasöründeDockerfile
adlı bir dosya oluşturun ve aşağıdaki içerikleri yapıştırın: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, sohbet penceresi üzerinden çalışabilir ancak Data Wrangling not defterinde kullandığımız gibi yorumları kullanarak doğrudan kod dosyanızda da çalışabilir. Ayrıca Windows'da Control+i veya Mac'te Command+i komutunu kullanarak da çağrılabilir.
Dockerfile
içinde bir yeri tıklayın, uygun Command+i / Control+i komutunu kullanarak Gemini'yi etkinleştirin. - İstemde aşağıdakileri girin. Değişikliği inceleyip Kabul et'i tıklayın.
Ne kadar güzel değil mi? Başka birinin koduyla çalışmanız gerektiğinde, değişiklik yapmaya başlamadan önce yorumsuz çalışmaları hakkında temel bir bilgi edinmek için ne kadar zaman harcamanız gerekti? Gemini imdada yetişir.Please comment the current file.
- Şimdi Gemini'den, mevcut klasördeki Dockerfile'den
recipe-web-app
adlı yeni bir görüntü oluşturmak ve dağıtmak için Cloud Run'u nasıl kullanabileceğinizi sorun.How could I use gcloud to build a new Cloud Run service named recipe-web-app from the current directory?
- Uygulamamızı derleyip dağıtalım. Terminal penceresinde
gcloud run deploy
komutunu çalıştırın Artifact Registry deposu oluşturmanızı isteyen bir istem görürsenizgcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501
enter/return
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named cloud-run-source-deploy in region us-central1 will be created. Do you want to continue (Y/n)?
- Derleme sürecini izlerseniz önce Artifact Registry docker deposu oluşturulur. Ardından, yerel klasördeki Dockerfile'den container görüntüsünü oluşturmak için Cloud Build'i kullanır. Son olarak, Docker görüntüsü yeni bir Cloud Run hizmetine dağıtılır. Komut dosyasının sonunda, kullanabileceğiniz bir Cloud Run test URL'si alırsınız.
Döndürülen bağlantıyı tarayıcınızın yeni bir sekmesinde açın. Bir süre ayırıp uygulamanın yapısını ve sayfalarını keşfedin. Güzel. Şimdi üretken yapay zeka işlevimizi bağlamamız gerekiyor.
12. Yemek Tarifi sayfasını yemek kitabı araması yapan Agent Builder uygulamamıza bağlama
Web uygulamasının çerçevesi çalışıyor ancak iki çalışma sayfasını iki Vertex AI Agent Builder arama uygulamamıza bağlamamız gerekiyor. Yemek Tarifleri ile başlayalım.
- Cloud Shell Düzenleyici sekmesini açık bırakın. Google Cloud Console'da arama özelliğini kullanarak Vertex AI'da Chat'e gidin.
- Sağ taraftaki ayarlar sayfası bölmesinde modeli gemini-1.5-flash-002 olarak ayarlayın. Modelin gerektiğinde daha uzun yanıtlar döndürülebilmesi için çıkış jetonu sınırını maksimuma kaydırın. Güvenlik Filtresi Ayarları'nı açın. Nefret söylemi, Müstehcen içerik ve Taciz içeriği için Bazılarını engelle'yi seçin. Tehlikeli içerik ayarını Azını engelle olarak ayarlayın ve Kaydet'i tıklayın. Bıçak ve kesme hakkında konuşmak Gemini tarafından şiddet olarak yanlış yorumlanabileceği için Tehlikeli İçerik'in puanını biraz düşürüyoruz.
- Topraklama'yı etkinleştirmek için açma/kapatma düğmesini kaydırın, ardından Özelleştir'i tıklayın. Temellendirme kaynağını Vertex AI arama olarak ayarlayın ve veri kümesi yolu için aşağıdakileri kullanın. PROJE_KİMLİĞİNİZ ifadesini bu talimatlardaki Bitir Laboratuvarı düğmesinin yanında bulunan proje kimliğiyle değiştirin, ardından topraklama ayarlarını Kaydet
NOT: Hata alırsanız proje kimliğini gerçek proje kimliğinizle değiştirmemiş veya eski yemek kitaplarındaki Agent Builder veri deposu kimliğini değiştirdiğiniz adımı atlamış olabilirsiniz. Gerçek veri kümesi kimliğini öğrenmek için Agent Builder > Veri Depoları > eski yemek kitapları bölümüne bakın.projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
- Birkaç sohbet mesajını test edin. Aşağıdakilerden başlayabilirsiniz. İsterseniz birkaçını daha deneyin.
How can I tell if a tomato is ripe?
- Model çalışıyor. Şimdi kodla denemeler yapalım. Görüşmelerimizin koda dahil edilmemesi için Görüşmeyi Temizle'yi ve ardından Kodu Al'ı tıklayın.
- Uygulamamıza entegre etmeden önce kodu Colab Enterprise'da deneyip mükemmelleştirebilmemiz için kod penceresinin üst kısmında Not Defterini Aç'a basın.
- Kodu incelemek için birkaç dakikanızı ayırın. İstediğimize uyarlamak için birkaç değişiklik yapalım. Başlamadan önce, hesaplama makinesine bağlanmak ve AI Platform SDK'sını yüklemek için ilk kod hücresini çalıştırın. Engelleme çalıştıktan sonra oturumu yeniden başlatmanız istenir. Devam edip bu işlemi gerçekleştirin.
- Vertex AI Studio'dan aldığımız koda geçin. multiturn_generate_content yönteminin adını
start_chat_session
olarak değiştirin. model = GenerativeModel(
yöntem çağrısına gidin. Mevcut kod,generation_config
vesafety_settings
öğelerini tanımlar ancak bunları kullanmaz.GenerativeModel
öğesinin oluşturulmasını aşağıdaki gibi değiştirin:model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, )
- Son olarak, işlevin
chat
nesnesini döndürmesi için yöntemechat = model.start_chat()
'ün hemen altına bir son satır ekleyin. Bitmiş işlev aşağıdaki gibi görünmelidir.NOT: Bu kodu not defterinize KOPYALAMAYIN. Bu, yalnızca doğrulama amacıyla sağlanmıştır.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
- Kod hücresinin en altına gidin ve eski işlevi çağıran son satırı, yeni işlev adını çağıracak ve döndürülen nesneyi
chat
değişkeninde saklayacak şekilde değiştirin. Değişikliklerinizden memnun kaldığınızda hücreyi çalıştırın.chat = start_chat_session()
- Yeni bir kod hücresi oluşturun ve
# Use chat to invoke Gemini and print out the response
yorumunu ekleyin. Sonraki satıra gidipresp
yazın. Gemini, bloğu sizin için otomatik olarak tamamlar. İstemiHow can I tell if a tomato is ripe?
olarak güncelleyin. Hücreyi çalıştırmaresponse = chat.send_message("How can I tell if a tomato is ripe?") print(response)
- Bu yanıt doğru ancak asıl istediğimiz, iç içe yerleştirilmiş
text
alanıdır. Kod bloğunu yalnızca bu bölümü yazdıracak şekilde değiştirin. Örneğin:response = chat.send_message("How can I tell if a tomato is ripe?") print(response.candidates[0].content.parts[0].text)
- Güzel. Çalışan bir sohbet kodumuz olduğuna göre bunu web uygulamamıza entegre edelim.
start_chat_session
işlevini oluşturan kod hücresinin tüm içeriğini kopyalayın (test hücresine ihtiyacımız yoktur). Hücreyi tıklayıp sağ üst köşedeki üç noktalı menüyü tıklayarak kopyalayabilirsiniz - Cloud Shell Düzenleyici sekmesine geçin ve düzenleme için
pages\Cooking_Advice.py
dosyasını açın. - Yorumu bulun:
# # Add the code you copied from your notebook below this message #
- Kopyaladığınız kodu Kodu ekle yorumunun hemen altına yapıştırın. Güzel. Artık Gemini'ye yapılan bir çağrı üzerinden sohbet motorunu çalıştıran bölüme sahibiz. Şimdi bunu Streamlit'e entegre edelim.
- Yorum yapılan kodun doğrudan yorumun altındaki bölümünü bulun:
# # Here's the code to setup your session variables # Uncomment this block when instructed #
- Bu kod bölümünün yorumunu kaldırın (Sonraki
Setup done, let's build the page UI
bölümüne kadar) ve bu bölümü keşfedin. Sohbet ve geçmiş oturumu değişkenlerini oluşturur veya alır. - Ardından, geçmiş ve sohbet işlevini kullanıcı arayüzüne entegre etmemiz gerekiyor. Aşağıdaki yorumu bulana kadar kodu kaydırın.
# # Here's the code to create the chat interface # Uncomment the below code when instructed #
- Yorumların altındaki kodun geri kalanının yorumunu kaldırın ve biraz zaman ayırıp kodu inceleyin. İsterseniz bu özelliği vurgulayarak Gemini'den işlevini açıklamasını isteyebilirsiniz.
- Mükemmel. Şimdi uygulamayı derleyip dağıtalım. URL tekrar geldiğinde uygulamayı başlatın ve Yemek Önerileri sayfasını deneyin. Olgun domatesler hakkında bilgi isteyebilirsiniz. Bot, Brüksel lahanası hazırlamanın iyi bir yolunu da bilir.
gcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501
Mükemmel değil mi? Kendi kişisel yapay zeka yemek danışmanınız :-)
13. (İsteğe bağlı) Yemek tarifi arama sayfasını yemek tarifi arama Agent Builder uygulamasına bağlama
Yemek Tarifleri sayfasını, temel kaynağına bağlarken doğrudan Gemini API'yi kullandık. Tarif araması için doğrudan Vertex AI Agent Builder arama uygulamasına bağlanalım.
- Cloud Shell Düzenleyici'nizde, düzenleme için
pages/Recipe_Search.py
sayfasını açın. Sayfanın yapısını inceleyin. - Dosyanın üst kısmına doğru proje kimliğinizi ayarlayın.
search_sample
işlevini inceleyin. Bu kod, aşağı yukarı doğrudan buradaki Discovery Engine dokümanlarından alınmıştır. Çalışan bir kopyasını buradaki not defterinde bulabilirsiniz.Yaptığım tek değişiklik, yalnızca sonuçları döndürmek yerineresponse.results
değerini döndürmek oldu. Bu olmadan, döndürülen tür, sonuçları sayfalamak için tasarlanmış bir nesnedir ve bu, temel uygulamamız için ihtiyaç duymadığımız bir şeydir.- Dosyanın en sonuna gidin ve
Here are the first 5 recipes I found
altındaki bölümün tamamının yorumunu kaldırın. - Yorumunu kaldırdığınız bölümün tamamını vurgulayın ve Gemini Code sohbet oturumunu açın.
Explain the highlighted code
'e sorun. Seçtiğiniz bir şey yoksa Gemini, dosyanın tamamını açıklayabilir. Bir bölümü vurgulayıp Gemini'den açıklama yapmasını, yorum eklemesini veya bölümü iyileştirmesini isterseniz Gemini bunu yapar.Bir dakikanızı ayırıp açıklamayı okuyun. Gemini API'lerini uygulamanıza entegre etmeden önce Colab Enterprise not defteri kullanmak, bu API'leri keşfetmenin mükemmel bir yoludur. Özellikle, yeterince iyi belgelenmemiş olabilecek bazı yeni API'leri keşfetmede faydalıdır. - Nihai uygulamayı dağıtmak için düzenleyici terminal pencerenizde
build.sh
komutunu çalıştırın. Sonraki adıma geçmeden önce yeni sürümün dağıtılmasını bekleyin.
14. (İsteğe bağlı) Nihai başvuruyu keşfetme
Son uygulamayı keşfetmek için birkaç dakikanızı ayırın.
- Google Cloud Console'da aramayı kullanarak
Cloud Run
'e gidin, ardından recipe-web-app uygulamanızı tıklayın. - Uygulama testi URL'sini (üst kısımda) bulun ve yeni bir tarayıcı sekmesinde açın.
- Uygulama ana sayfası görünür. Streamlit tarafından sağlanan temel düzene ve gezinme sistemine dikkat edin.
pages
klasöründeki Python dosyaları gezinme seçenekleri olarak gösterilir veHome.py
ana sayfa olarak yüklenir. Pişirme Önerileri sayfasına gidin. - Birkaç dakika sonra sohbet arayüzü görünür. Streamlit'in sağladığı güzel temel düzene tekrar dikkat edin.
- Yemek pişirmeyle ilgili birkaç soru sorarak botun nasıl çalıştığını öğrenin. Örneğin:
Do you have any advice for preparing broccoli? How about a classic chicken soup recipe? Tell me about meringue.
- Şimdi birkaç yemek tarifi bulalım. Tarif Arama sayfasına gidin ve birkaç arama yapmayı deneyin. Örneğin:
Chili con carne Chili, corn, rice Lemon Meringue Pie A dessert containing strawberries
15. Tebrikler!
Vertex AI Agent Builder uygulamalarından yararlanan bir uygulama oluşturdunuz. Bu süreçte Gemini Cloud Assist, Gemini Code Assist ve BigQuery'nin Data Canvas'ındaki doğal dilden SQL'ye özellikler hakkında bilgi edindiniz. Tebrikler!
Temizleme
Cloud SQL'in ücretsiz bir katmanı yoktur ve kullanmaya devam ederseniz sizden ücret alınır. Ek ücret ödememek için Cloud projenizi silebilirsiniz.
Cloud Run, hizmet kullanılmadığında ücret almaz ancak container görüntüsünü Artifact Registry'de depolamak için sizden ücret alınabilir. Cloud projenizi sildiğinizde, söz konusu projede kullanılan tüm kaynakların faturalandırması durdurulur.
İsterseniz projeyi silin:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Gereksiz kaynakları CloudShell diskinizden de silebilirsiniz. Şunları yapabilirsiniz:
- Codelab proje dizinini silin:
rm -rf ~/task-app
- Uyarı! Sonraki işlem geri alınamaz. Yer açmak için Cloud Shell'inizdeki her şeyi silmek istiyorsanız ana dizininizi tamamen silebilirsiniz. Saklamak istediğiniz her şeyin başka bir yere kaydedildiğinden emin olun.
sudo rm -rf $HOME