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.
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
- 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.
- Şu mesajı görürsünüz:
Updated property [core/project].
WARNING
görüyorsanız veDo you want to continue (Y/N)?
soruyorsa proje kimliğini yanlış girmiş olabilirsiniz.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ı ayarlama:
git config --global user.email "you@example.com"
- Global git kullanıcı adınızı ayarlayın:
git config --global user.name "Your Name"
- Genel git varsayılan dalınızı
main
olarak ayarlayın:git config --global init.defaultBranch main
7. Kodunuzu yazın
Node.js'de uygulama yazmak için:
- Ana dizine gidin:
cd ~
codelab-genai
dizinini oluşturun:mkdir codelab-genai
codelab-genai
dizinine gidin:cd codelab-genai
index.js
dosyası oluşturun:touch index.js
package.json
dosyasını oluşturun:npm init es6 -y
- Bağımlılık olarak
express
ekleyinnpm install express
node_modules
dosyasının kaydetmesini önlemek içinecho node_modules/ >> .gitignore
.gitignore
dosyası ekleme- Cloud Shell Düzenleyici'de
index.js
dosyasını açın:
Artık ekranın üst kısmında boş bir dosya görünecektir. Bucloudshell edit index.js
index.js
dosyasını buradan düzenleyebilirsiniz. - Aşağıdaki kodu kopyalayıp açılan
index.js
dosyasına 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.import express from 'express'; const app = express(); app.get('/', async (req, res) => { res.send('Hello world!'); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
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.
- Hâlâ doğru dizinde olduğunuzdan emin olun:
cd ~/codelab-genai
- Git deponuzu başlatma
git init -b main
- GitHub CLI'ye giriş yapın
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?
- Oturum açtığınızı onaylayın:
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 GitHub kullanıcı adınız gösterilir.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 depo zaten mevcuttur. 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 commit'i 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/index.js \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 KURULUMU YAP'ı 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ğrula'yı ve 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
Cloud Shell Düzenleyici'ye dönme
Cloud Shell Düzenleyici hâlâ açıksa bu adımları atlayabilirsiniz.
- 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
- 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.
- Şu mesajı görürsünüz:
Updated property [core/project].
WARNING
görüyorsanız veDo you want to continue (Y/N)?
soruyorsa proje kimliğini yanlış girmiş olabilirsiniz.N
,Enter
tuşlarına basın vegcloud config set project
komutunu tekrar çalıştırmayı deneyin.
Vertex AI'ı uygulamanıza ekleme
- Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
- Hâlâ doğru dizinde olduğunuzdan emin olun:
cd ~/codelab-genai
- Node.js Genkit SDK'sını yükleyin:
npm install @genkit-ai/ai
- Vertex AI için Node.js Genkit SDK'sını yükleyin:
npm install @genkit-ai/vertexai
- Node.js Google Auth SDK'sını yükleyin:
npm install google-auth-library
index.js
dosyasını Cloud Shell Düzenleyici'de yeniden açıncloudshell edit ~/codelab-genai/index.js
index.js
dosyanızın içindeki kodu şu kodla değiştirin:import express from 'express'; const app = express(); import { generate } from '@genkit-ai/ai'; import { gemini15Flash, vertexAI } from '@genkit-ai/vertexai'; import { GoogleAuth } from 'google-auth-library'; const auth = new GoogleAuth(); app.get('/', async (req, res) => { const project = await auth.getProjectId(); const animal = req.query.animal || 'dog'; const prompt = `Give me 10 fun facts about ${animal}. Return this as html without backticks.` const result = await generate({ plugins: [ vertexAI({ projectId: project, location: 'us-central1' }), ], model: gemini15Flash, prompt, }); const html = result.text; res.send(html); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
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 işlemi 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
'ı 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 şunu 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ı) Yapay zeka iş yükünüzün gözlemlenebilirliğini artırma
Denetleme günlükleri, iş yüküyle ilgili bilgileri yakalamaz. İş yüklerinizin gözlemlenebilirliğini artırmak için bu bilgileri açıkça günlüğe kaydetmeniz gerekir. Bunu yapmak için favori günlük kaydı çerçevenizi kullanabilirsiniz. Aşağıdaki adımlarda, yerel Node.js günlük kaydı mekanizması kullanılarak bunun nasıl yapılacağı gösterilmektedir.
index.js
dosyasını Cloud Shell Düzenleyici'de yeniden açıncloudshell edit ~/codelab-genai/index.js
await generativeModel.generateContent(prompt)
çağrısından (19. satır) sonra aşağıdaki satırı ekleyin:
Bu kod, oluşturulan içerikle ilgili bilgileri yapılandırılmış günlük kaydı biçimini kullanarakconsole.log(JSON.stringify({ severity: 'DEBUG', message: 'Content is generated', prompt: prompt, response: resp.response, }));
stdout
dosyasına yazar. Cloud Run'daki bir günlük kaydı aracısı,stdout
üzerine yazdırılan çıkışı yakalar ve bu biçimi Cloud Logging'e yazar.- Cloud Shell'i yeniden açın ve doğru dizinde olduğunuzdan emin olmak için aşağıdaki komutu yazın:
cd ~/codelab-genai
- Değişiklikleri kaydetme:
git commit -am "observe generated content"
- Değiştirilen sürümün yeniden dağıtılmasını tetiklemek için değişiklikleri GitHub'a aktarın:
git push
Yeni sürüm dağıtıldıktan sonra Vertex AI'a yapılan çağrılarla ilgili hata ayıklama bilgilerini gözlemleyebilirsiniz.
Uygulama günlüklerinizi görmek için şunları yapın:
- Google Cloud Console'da Günlük Gezgini sayfasına gidin:
- Sorgu penceresine şunu yazın:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG
- Sorguyu çalıştır'ı tıklayın.
Sorgunun sonucu, güvenlik uygulamalarını izlemek için kullanılabilecek "güvenlik derecelendirmeleri" içeren istem ve Vertex AI yanıtını içeren günlükleri gösterir.
15. (İ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
- Uyarı! Bu işlem geri alınamaz. Yer açmak için Cloud Shell'ınızdaki her şeyi silmek istiyorsanız tüm ana dizininizi silebilirsiniz. Saklamak istediğiniz her şeyin başka bir yere kaydedildiğinden emin olun.
sudo rm -rf $HOME
16. 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
- Videoyu sahne sahne işlemek için Cloud Run Jobs Video Intelligence API'yi kullanma
- İsteğe bağlı atölye: Google Kubernetes Engine'e ilk katılım