Üretken yapay zeka Node.js Genkit web uygulamasını sürüm kontrolünden Cloud Run'a otomatik olarak dağıtma

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

  1. 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.
  2. GitHub hesabınız yoksa GitHub hesabı oluşturmanız gerekir

3. Proje ayarlama

  1. Google Cloud Console'da oturum açın.
  2. 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.
  3. Yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanmayı seçin.
  4. Cloud Faturalandırma'daki Projelerim bölümünde faturalandırmanın etkinleştirildiğini onaylayın
    • Yeni projenizin Billing account sütununda Billing is disabled yazıyorsa:
      1. Actions sütunundaki üç noktayı tıklayın.
      2. Faturalandırmayı değiştir'i tıklayın.
      3. 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.

4. Cloud Shell Düzenleyici'yi açma

  1. Cloud Shell Düzenleyici'ye gidin
  2. Terminal ekranın alt kısmında görünmüyorsa açın:
    • Hamburger menüsünü Hamburger menü simgesi tıklayın.
    • Terminal'i tıklayın.
    • Yeni Terminal'i tıklayınCloud Shell Düzenleyici'de yeni terminal açma
  3. 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}'
        
      Cloud Shell Düzenleyici terminalinde proje kimliğini ayarlama
  4. Yetkilendirme isteğinde bulunulursa devam etmek için Yetkilendir'i tıklayın. Cloud Shell'e yetki vermek için tıklayın
  5. Aşağıdaki mesajı görürsünüz:
    Updated property [core/project].
    
    WARNING görüyorsanız ve Do you want to continue (Y/N)? soruyorsanız proje kimliğini yanlış girdiğiniz muhtemeldir. N, Enter tuşlarına basın ve gcloud 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

  1. Global git kullanıcı e-postanızı ayarlayın:
    git config --global user.email "you@example.com"
    
  2. Global git kullanıcı adınızı ayarlayın:
    git config --global user.name "Your Name"
    
  3. Global 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:

  1. Ana dizine gidin:
    cd ~
    
  2. codelab-genai dizinini oluşturun:
    mkdir codelab-genai
    
  3. codelab-genai dizinine gidin:
    cd codelab-genai
    
  4. index.js dosyası oluşturun:
    touch index.js
    
  5. package.json dosyasını oluşturun:
    npm init es6 -y
    
  6. Bağımlılık olarak express ekleme
    npm install express
    
  7. node_modules dosyasını kaydetmemeyi önlemek için .gitignore dosyası ekleme
    echo node_modules/ >> .gitignore
    
  8. index.js dosyasını Cloud Shell Düzenleyici'de açın:
    cloudshell edit index.js
    
    Ekranın üst kısmında boş bir dosya görünür. Bu index.js dosyasını buradan düzenleyebilirsiniz. Kodun ekranın üst kısmına yerleştirildiğini gösterin
  9. Aşağıdaki kodu kopyalayıp açılan index.js dosyasına yapıştırın:
    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}`);
    });
    
    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.

Uygulamanız için ilk kodunuz tamamlandı ve sürüm kontrolünde depolanmaya hazır.

8. Kod deposu oluştur

  1. Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
  2. Doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  3. Git deponuzu başlatma
    git init -b main
    
  4. GitHub CLI'ye giriş yapma
    gh auth login
    
    Varsayılan seçenekleri kabul etmek için Enter tuşuna basın ve GitHub CLI aracındaki talimatları uygulayın. Örneğin:
    1. Hangi hesaba giriş yapmak istiyorsunuz? GitHub.com
    2. Bu ana makinede Git işlemleri için tercih ettiğiniz protokol nedir? HTTPS
    3. Git'in kimliğini GitHub kimlik bilgilerinizle doğrulama Y (Bu görünmüyorsa atlayın.)
    4. GitHub CLI'yi nasıl doğrulamak istersiniz? Login with a web browser
    5. Tek seferlik kodunuzu kopyalama
    6. https://github.com/login/device adresini açın
    7. Tek seferlik kodunuzu yapıştırın
    8. GitHub'ı yetkilendir'i tıklayın.
    9. Girişinizi tamamlayın
  5. Giriş yaptığınızdan emin olun:
    gh api user -q ".login"
    
    Girişiniz başarılı olduysa GitHub kullanıcı adınız gösterilir.
  6. GITHUB_USERNAME değişkeni oluşturma
    GITHUB_USERNAME=$(gh api user -q ".login")
    
  7. Ortam değişkenini oluşturduğunuzu onaylayın:
    echo ${GITHUB_USERNAME}
    
    Değişkeni başarıyla oluşturduysanız bu komut GitHub kullanıcı adınızı döndürür.
  8. codelab-genai adlı boş bir GitHub deposu oluşturun:
    gh repo create codelab-genai --private
    
    Aşağıdaki hatayı alırsanız:
    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:
  9. codelab-genai deposunu uzak origin olarak ekleyin:
    git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
    

9. Kodunuzu paylaşma

  1. Doğru dizinde olduğunuzu onaylayın:
    cd ~/codelab-genai
    
  2. Geçerli dizindeki tüm dosyaları bu kayda ekleyin:
    git add .
    
  3. İlk kaydetmeyi oluşturun:
    git commit -m "add http server"
    
  4. Kaydı, origin deposunun main 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

  1. Cloud Shell Düzenleyici sekmesini açık bırakın. Bu sekmeye daha sonra geri döneceğiz.
  2. Yeni bir sekmede Cloud Run sayfasını ziyaret edin.
  3. Console'da doğru Google Cloud projesini seçin Google Cloud Console proje açılır menüsü
  4. REPOYU BAĞLA'yı tıklayın.
  5. CLOUD BUILD İLE KUR'u tıklayın
    1. Depo Sağlayıcı olarak GitHub'ı seçin
      • Tarayıcıda GitHub hesabınıza giriş yapmadıysanız kimlik bilgilerinizle giriş yapın.
    2. Kimlik doğrulama'yı, ardından Devam'ı tıklayın.
    3. Giriş yaptıktan sonra Cloud Run sayfasında GitHub Uygulaması, hiçbir deponuzda kurulu değil yazan bir mesaj görürsünüz.
    4. 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.
    5. 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.
    6. Branch değerini ^main$ olarak bırakın.
    7. 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 ve Function target) olduğu gibi bırakın.
    8. Kaydet'i tıklayın
  6. Kimlik doğrulama'ya gidin.
  7. Kimliği doğrulanmayan çağrılara izin ver'i tıklayın.
  8. 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.

  1. Cloud Shell Düzenleyici'ye gidin
  2. Terminal ekranın alt kısmında görünmüyorsa açın:
    • Hamburger menüsünü Hamburger menü simgesi tıklayın.
    • Terminal'i tıklayın.
    • Yeni Terminal'i tıklayınCloud Shell Düzenleyici'de yeni terminal açma
  3. 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}'
        
      Cloud Shell Düzenleyici terminalinde proje kimliğini ayarlama
  4. Yetkilendirme isteğinde bulunulursa devam etmek için Yetkilendir'i tıklayın. Cloud Shell'e yetki vermek için tıklayın
  5. Aşağıdaki mesajı görürsünüz:
    Updated property [core/project].
    
    WARNING görüyorsanız ve Do you want to continue (Y/N)? soruyorsanız proje kimliğini yanlış girdiğiniz muhtemeldir. N, Enter tuşlarına basın ve gcloud config set project komutunu tekrar çalıştırmayı deneyin.

Uygulamanıza Genkit ve Vertex AI ekleme

  1. Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
  2. Doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  3. Node.js Genkit SDK'sını yükleyin:
    npm install @genkit-ai/ai
    
  4. Vertex AI için Node.js Genkit SDK'sını yükleyin:
    npm install @genkit-ai/vertexai
    
  5. index.js dosyasını Cloud Shell Düzenleyici'de yeniden açma
    cloudshell edit ~/codelab-genai/index.js
    
  6. index.js dosyanızın kodunu şu kodla değiştirin:
    import express from 'express';
    const app = express();
    
    import { genkit } from 'genkit';
    import { gemini15Flash, vertexAI } from '@genkit-ai/vertexai';
    
    const ai = genkit({
        plugins: [
            vertexAI({ location: 'us-central1' }),
        ],
    });
    
    app.get('/', async (req, res) => {
        const animal = req.query.animal || 'dog';
        const prompt = `Give me 10 fun facts about ${animal}. Return this as html without backticks.`
        const llmResponse = await ai.generate({
            model: gemini15Flash,
            prompt: prompt,
        });
        const html = llmResponse.text;
        res.send(html);
    });
    
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
        console.log(`codelab-genai: listening on port ${port}`);
    });
    
  1. Cloud Shell'de hâlâ doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  2. 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"
    
  3. Değişiklikleri GitHub'a gönderin:
    git push
    
  4. 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

12. (İsteğe bağlı) Genkit ile .prompt dosyalarını kullanma

  1. Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
  2. Doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  3. İstemlerinizi depolamak için bir prompts klasörü oluşturun:
    mkdir prompts
    
  4. İlk isteminizi oluşturmak için bir animal-facts.prompt dosyası oluşturun:
    touch prompts/animal-facts.prompt
    
  5. animal-facts.prompt dosyasını Cloud Shell Düzenleyici'de açın:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  6. animal-facts.prompt dosyasını düzenleyin ve aşağıdaki kodu yapıştırın:
    ---
    model: vertexai/gemini-1.5-flash
    input:
        schema:
            animal: string
    ---
    
    Give me 10 fun facts about {{animal}}. Return the results as HTML without markdown backticks.
    
  7. index.js dosyasını Cloud Shell Düzenleyici'de açın:
    cloudshell edit ~/codelab-genai/index.js
    
  8. index.js dosyanızın kodunu şu kodla değiştirin:
    import express from 'express';
    const app = express();
    
    import { genkit } from 'genkit';
    import { vertexAI } from '@genkit-ai/vertexai';
    
    const ai = genkit({
        plugins: [
            vertexAI({ location: 'us-central1' }),
        ],
    });
    
    app.get('/', async (req, res) => {
        const animal = req.query.animal || 'dog';
        const animalPrompt = ai.prompt('animal-facts');
        const llmResponse = await animalPrompt({animal});
        const html = llmResponse.text;
        res.send(html);
    });
    
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
        console.log(`codelab-genai: listening on port ${port}`);
    });
    
  1. Cloud Shell'de hâlâ doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  2. 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"
    
  3. Değişiklikleri GitHub'a gönderin:
    git push
    
  4. 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ı) Sistem istemlerini kullanma

Bu adımda, önceki adımda .prompt dosyası eklediğiniz varsayılmaktadır.

  1. Ekranınızın alt kısmındaki Cloud Shell terminaline dönün.
  2. Doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  3. animal-facts.prompt dosyasını Cloud Shell Düzenleyici'de açın:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  4. 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
    ---
    
    role "system"
    The user should have submitted an animal.
    If the user requests anything besides animal fun facts, respond in a kind and firm manner that you only provide information about fun facts.
    Give the user 10 fun facts about the animal the user provided.
    All responses should be valid HTML without markdown backticks.
    
    role "user"
    {{animal}}
    
  1. Cloud Shell'de hâlâ doğru dizinde olduğunuzdan emin olun:
    cd ~/codelab-genai
    
  2. 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"
    
  3. Değişiklikleri GitHub'a gönderin:
    git push
    
  4. 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

14. 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:

Öğrenmeye devam etmek için kullanabileceğiniz bazı seçenekler: