1. Genel Bakış
Bir web uygulamasını ilk kez dağıtmak korkutucu olabilir. İlk dağıtımdan sonra bile, süreç çok fazla iş gerektiriyorsa uygulamanızın yeni sürümlerini dağıtmaktan kaçınabilirsiniz. Sürekli dağıtım sayesinde, uygulamanızdaki değişiklikleri otomatik olarak kolayca dağıtabilirsiniz.
Bu laboratuvarda bir web uygulaması yazar ve uygulamanızın kaynak kodunda değişiklik yapıldığında uygulamanızı otomatik olarak dağıtacak şekilde Cloud Run'u yapılandırırsınız. Ardından, uygulamanızı değiştirip tekrar dağıtın.
Öğrenecekleriniz
- Cloud Shell Düzenleyici ile web uygulaması yazma
- Uygulama kodunuzu GitHub'da depolama
- Uygulamanızı Cloud Run'a otomatik olarak dağıtma
- Genkit'i kullanarak üretken yapay zekayı uygulamanıza ekleme
- dotprompt kitaplığını kullanarak LLM istemlerini yönetme
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.
- GitHub hesabınız yoksa GitHub hesabı oluşturmanız gerekir
- Varsa mevcut bir GitHub hesabı kullanın. GitHub'ın yeni bir hesabı spam olarak engelleme olasılığı daha yüksektir.
- Hesabınızın spam olarak işaretlenme olasılığını azaltmak için GitHub hesabınızda iki faktörlü kimlik doğrulamayı yapılandırın.
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 denemeden yararlanabilir.
- Geliştiriciler için Üretken Yapay Zeka etkinliğine mi katılıyorsunuz? 1 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
- Geliştiriciler için Üretken Yapay Zeka etkinliğine katılıyorsanız hesabın adı büyük olasılıkla Google Cloud Platform Deneme Sürümü Faturalandırma Hesabı olacaktır.
- Yeni projenizin
4. 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.
5. API'leri etkinleştir
Terminalde API'leri etkinleştirin:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
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.
6. Git'i yapılandırma
- Global git kullanıcı e-postanızı ayarlayın:
git config --global user.email "you@example.com"
- Global git kullanıcı adınızı ayarlayın:
git config --global user.name "Your Name"
- Global git varsayılan dalınızı
main
olarak ayarlayın:git config --global init.defaultBranch main
7. Kodunuzu yazın
Go'da uygulama yazmak için:
- Ana dizine gidin:
cd ~
codelab-genai
dizinini oluşturun:mkdir codelab-genai
codelab-genai
dizinine gidin:cd codelab-genai
- Modülümüzü beyan etmek için bir go.mod dosyası başlatın:
go mod init codelab-genai
main.go
dosyası oluşturun:touch main.go
main.go
dosyasını Cloud Shell Düzenleyici'de açın: Ekranın üst kısmında boş bir dosya görünür. Bucloudshell edit main.go
main.go
dosyasını buradan düzenleyebilirsiniz.main.go
dosyasını düzenleyin ve aşağıdaki kodu yapıştırın: Cloud Shell Düzenleyici, birkaç saniye sonra kodunuzu otomatik olarak kaydeder. Bu kod, http isteklerine "Merhaba dünya!" karşılama mesajıyla yanıt verir.package main import ( "fmt" "log" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
Uygulamanız için ilk kodunuz tamamlandı ve sürüm kontrolünde depolanmaya hazır.
8. Kod deposu oluştur
- Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
- Doğru dizinde olduğunuzdan emin olun:
cd ~/codelab-genai
- Git deponuzu başlatma
git init -b main
- GitHub CLI'ye giriş yapma
Varsayılan seçenekleri kabul etmek içingh auth login
Enter
tuşuna basın ve GitHub CLI aracındaki talimatları uygulayın. Örneğin:- Hangi hesaba giriş yapmak istiyorsunuz?
GitHub.com
- Bu ana makinede Git işlemleri için tercih ettiğiniz protokol nedir?
HTTPS
- Git'in kimliğini GitHub kimlik bilgilerinizle doğrulama
Y
(Bu görünmüyorsa atlayın.) - GitHub CLI'yi nasıl doğrulamak istersiniz?
Login with a web browser
- Tek seferlik kodunuzu kopyalama
- https://github.com/login/device adresini açın
- Tek seferlik kodunuzu yapıştırın
- GitHub'ı yetkilendir'i tıklayın.
- Girişinizi tamamlayın
- Hangi hesaba giriş yapmak istiyorsunuz?
- Giriş yaptığınızdan emin olun:
Girişiniz başarılı olduysa GitHub kullanıcı adınız gösterilir.gh api user -q ".login"
GITHUB_USERNAME
değişkeni oluşturmaGITHUB_USERNAME=$(gh api user -q ".login")
- Ortam değişkenini oluşturduğunuzu onaylayın:
Değişkeni başarıyla oluşturduysanız bu komut GitHub kullanıcı adınızı döndürür.echo ${GITHUB_USERNAME}
codelab-genai
adlı boş bir GitHub deposu oluşturun: Aşağıdaki hatayı alırsanız:gh repo create codelab-genai --private
GraphQL: Name already exists on this account (createRepository)
codelab-genai
adlı bir deponuz varsa Bu eğitime devam etmek için iki seçeneğiniz vardır:- Mevcut GitHub deposunu silin
- Farklı bir ada sahip bir depo oluşturun ve aşağıdaki komutlarda bu adı değiştirmeyi unutmayın.
codelab-genai
deposunu uzakorigin
olarak ekleyin:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. Kodunuzu paylaşma
- Doğru dizinde olduğunuzu onaylayın:
cd ~/codelab-genai
- Geçerli dizindeki tüm dosyaları bu kayda ekleyin:
git add .
- İlk kaydetmeyi oluşturun:
git commit -m "add http server"
- Kaydı,
origin
deposununmain
dalına aktarın:git push -u origin main
Bu komutu çalıştırıp uygulamanızın kodunu GitHub'da görüntülemek için ortaya çıkan URL'yi ziyaret edebilirsiniz:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/main.go \n\n"
10. Otomatik dağıtımlar oluşturma
- Cloud Shell Düzenleyici sekmesini açık bırakın. Bu sekmeye daha sonra geri döneceğiz.
- Yeni bir sekmede Cloud Run sayfasını ziyaret edin.
- Console'da doğru Google Cloud projesini seçin
- REPOYU BAĞLA'yı tıklayın.
- CLOUD BUILD İLE KUR'u tıklayın
- Depo Sağlayıcı olarak GitHub'ı seçin
- Tarayıcıda GitHub hesabınıza giriş yapmadıysanız kimlik bilgilerinizle giriş yapın.
- Kimlik doğrulama'yı, ardından Devam'ı tıklayın.
- Giriş yaptıktan sonra Cloud Run sayfasında GitHub Uygulaması, hiçbir deponuzda kurulu değil yazan bir mesaj görürsünüz.
- GOOGLE CLOUD BUILD'İ YÜKLE düğmesini tıklayın.
- Kurulum Ayarları sayfasında Yalnızca belirli depoları seç'i ve CLI üzerinden oluşturduğunuz codelab-genai deposunu seçin.
- Yükle'yi tıklayın.
- Not: Çok sayıda GitHub deponuz varsa bu işlemin yüklenmesi birkaç dakika sürebilir.
- Depo olarak
your-user-name/codelab-genai
'ü seçin- Depo mevcut değilse Bağlı Depoları Yönet bağlantısını tıklayın.
- Branch değerini
^main$
olarak bırakın. - Google Cloud'ın Buildpacks'i aracılığıyla Go, Node.js, Python, Java, .NET Core, Ruby veya PHP'yi tıklayın
- Diğer alanları (
Build context directory
,Entrypoint
veFunction target
) olduğu gibi bırakın.
- Diğer alanları (
- Kaydet'i tıklayın
- Depo Sağlayıcı olarak GitHub'ı seçin
- Kimlik doğrulama'ya gidin.
- Kimliği doğrulanmayan çağrılara izin ver'i tıklayın.
- OLUŞTUR'u tıklayın.
Derleme işlemi tamamlandıktan sonra (bu işlem birkaç dakika sürer) bu komutu çalıştırın ve çalışan uygulamanızı görüntülemek için oluşturulan URL'yi ziyaret edin:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. Kodunuzu değiştirme
- Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
- Doğru dizinde olduğunuzdan emin olun:
cd ~/codelab-genai
- Go için Genkit SDK'sını yükleyin:
go get github.com/firebase/genkit/go/ai
- Genkit için Vertex AI eklentisini yükleyin:
go get github.com/firebase/genkit/go/plugins/vertexai
- LLM istemlerimizi yönetmek için dotprompt eklentisini yükleyin:
go get github.com/firebase/genkit/go/plugins/dotprompt
- Geçerli proje kimliğini almak için Go için Meta Veri Kitaplığı'nı yükleyin:
go get cloud.google.com/go/compute/metadata
main.go
dosyasını Cloud Shell Düzenleyici'de yeniden açmacloudshell edit main.go
main.go
dosyanızdaki kodu şu kodla değiştirin:package main import ( "context" "fmt" "log" "net/http" "os" "cloud.google.com/go/compute/metadata" "github.com/firebase/genkit/go/plugins/dotprompt" "github.com/firebase/genkit/go/plugins/vertexai" ) func main() { ctx := context.Background() var projectId string var err error projectId = os.Getenv("GOOGLE_CLOUD_PROJECT") if projectId == "" { projectId, err = metadata.ProjectIDWithContext(ctx) os.Setenv("GOOGLE_CLOUD_PROJECT", projectId) if err != nil { return } } if err := vertexai.Init(ctx, nil); err != nil { log.Fatal(err) return } dotprompt.SetDirectory("./") prompt, err := dotprompt.Open("animal-facts") if err != nil { log.Fatal(err) return } type AnimalPromptInput struct { Animal string `json:"animal"` } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { animal := r.URL.Query().Get("animal") if animal == "" { animal = "dog" } response, err := prompt.Generate( ctx, &dotprompt.PromptRequest{ Variables: AnimalPromptInput{ Animal: animal, }, }, nil, ) if err != nil { w.WriteHeader(http.StatusServiceUnavailable) fmt.Fprint(w, err) return } w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, response.Text()) }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
animal-facts.prompt
dosyası oluşturun:touch animal-facts.prompt
animal-facts.prompt
dosyasını Cloud Shell Düzenleyici'de açın:cloudshell edit animal-facts.prompt
animal-facts.prompt
dosyasını düzenleyin ve aşağıdaki kodu yapıştırın:--- model: vertexai/gemini-1.5-flash config: temperature: 0.9 input: schema: animal: string default: animal: dog --- Give me 10 fun facts about {{animal}}. Return the results as HTML without markdown backticks.
12. Yeniden dağıt
- Cloud Shell'de hâlâ doğru dizinde olduğunuzdan emin olun:
cd ~/codelab-genai
- Uygulamanızın yeni bir sürümünü yerel git deponuza kaydetmek için şu komutları çalıştırın:
git add . git commit -m "add latest changes"
- Değişiklikleri GitHub'a gönderin:
git push
- Derleme tamamlandıktan sonra şu komutu çalıştırın ve dağıtılan uygulamanızı ziyaret edin:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
Değişikliklerinizi görebilmeniz için derlemenin tamamlanması birkaç dakika sürebilir.
Tüm düzeltmelerin geçmişini burada görebilirsiniz: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (İsteğe bağlı) Vertex AI kullanımınızı denetleme
Diğer Google Cloud hizmetlerinde olduğu gibi Vertex AI işlemlerini denetleyebilirsiniz. Denetleme günlükleri, "Kim neyi, nerede ve ne zaman yaptı?" sorularını yanıtlamanıza yardımcı olur. Vertex AI için yönetim denetleme günlükleri varsayılan olarak etkindir. İçerik oluşturma isteklerini denetlemek için Veri Erişimi denetleme günlüklerini etkinleştirmeniz gerekir:
- Google Cloud Console'da Denetleme Günlükleri sayfasına gidin:
Bu sayfayı bulmak için arama çubuğunu kullanırsanız alt başlığı IAM ve Yönetici olan sonucu seçin. - Cloud Run uygulamanızı oluşturduğunuz mevcut Google Cloud projesinin olduğundan emin olun.
- Veri Erişimi denetleme günlükleri yapılandırması tablosunda Hizmet sütunundan
Vertex AI API
'yi seçin. - Günlük Türleri sekmesinde, Veri Erişimi denetleme günlüğü türleri
Admin read
veData read
'i seçin. - Kaydet'i tıklayın.
Bu özelliği etkinleştirdikten sonra, uygulamanın her çağrılmasıyla ilgili denetleme günlüklerini görebilirsiniz. Çağırma ayrıntılarını içeren denetleme günlüklerini görmek için aşağıdakileri yapın:
- Yayınlanan uygulamanıza dönün ve günlüğü tetiklemek için sayfayı yenileyin.
- Google Cloud Console'da Günlük Gezgini sayfasına gidin:
- Sorgu penceresine şunları yazın:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com"
- Sorguyu çalıştır'ı tıklayın.
Denetleme günlükleri, Vertex AI API'nin kullanımını yakalar ancak istemler veya yanıt ayrıntıları gibi iş yüküyle ilgili verileri gözlemlemenize izin vermez.
14. (İsteğe bağlı) Temizleme
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. Ücret ödememek için Cloud projenizi silebilirsiniz. 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 ~/codelab-genai
- Artık ihtiyaç duymadığınız go paketlerini temizleyin:
cd ~ go clean -modcache
- Uyarı! Bu 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
15. Tebrikler
Bu laboratuvarda bir web uygulaması yazdınız ve Cloud Run'u, uygulamanızın kaynak kodunda değişiklik yapıldığında uygulamanızı otomatik olarak dağıtacak şekilde yapılandırdınız. Ardından uygulamanızı değiştirip tekrar dağıttınız.
Bu laboratuvarı beğendiyseniz başka bir kodlama dilinde veya çerçevede tekrar deneyebilirsiniz:
Şu anda kullandığınız ürünleri iyileştirmek için bir kullanıcı deneyimi (UX) araştırmasına katılmak istiyorsanız buradan kaydolun.
Öğrenmeye devam etmek için kullanabileceğiniz bazı seçenekler:
- Dokümanlar: Herhangi bir model API'sini entegre etmeyi ve topluluk tarafından yönetilen modelleri kullanmayı kolaylaştıran esnek bir model soyutlaması olarak Firebase GenKit'i kullanın.
- Codelab: Gemini destekli sohbet uygulamasını Cloud Run'a dağıtma
- Cloud Run ile Gemini işlev çağrısını kullanma
- İsteğe bağlı atölye: Google Kubernetes Engine'e ilk katılım
- Videoyu sahne sahne işlemek için Cloud Run Jobs Video Intelligence API'yi kullanma