به طور خودکار برنامه وب Node.js Genkit AI مولد را از Version Control تا Cloud Run اجرا کنید

۱. مرور کلی

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

در این آزمایش، شما یک برنامه وب می‌نویسید و Cloud Run را طوری پیکربندی می‌کنید که وقتی تغییری در کد منبع برنامه شما ایجاد می‌شود، به طور خودکار برنامه شما را مستقر کند. سپس برنامه خود را تغییر داده و دوباره آن را مستقر می‌کنید.

آنچه یاد خواهید گرفت

  • با ویرایشگر Cloud Shell یک برنامه وب بنویسید
  • کد برنامه خود را در GitHub ذخیره کنید
  • برنامه خود را به صورت خودکار در Cloud Run مستقر کنید
  • هوش مصنوعی مولد را با استفاده از Genkit به برنامه خود اضافه کنید
  • مدیریت اعلان‌های LLM با استفاده از کتابخانه dotprompt

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

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

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

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

۴. ویرایشگر 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 \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  aiplatform.googleapis.com

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

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

۶. پیکربندی گیت

  1. ایمیل کاربر سراسری گیت خود را تنظیم کنید:
    git config --global user.email "you@example.com"
    
  2. نام کاربری سراسری گیت خود را تنظیم کنید:
    git config --global user.name "Your Name"
    
  3. شاخه پیش‌فرض سراسری گیت خود را روی main تنظیم کنید:
    git config --global init.defaultBranch main
    

۷. کد خود را بنویسید

برای نوشتن یک برنامه در Node.js:

  1. به دایرکتوری خانه بروید:
    cd ~
    
  2. دایرکتوری codelab-genai را ایجاد کنید:
    mkdir codelab-genai
    
  3. به پوشه codelab-genai بروید:
    cd codelab-genai
    
  4. یک فایل index.js ایجاد کنید:
    touch index.js
    
  5. فایل package.json را ایجاد کنید:
    npm init es6 -y
    
  6. express به عنوان یک وابستگی اضافه کنید
    npm install express
    
  7. برای جلوگیری از commit شدن node_modules فایل .gitignore را اضافه کنید.
    echo node_modules/ >> .gitignore
    
  8. فایل index.js را در ویرایشگر Cloud Shell باز کنید:
    cloudshell edit index.js
    
    اکنون باید یک فایل خالی در قسمت بالای صفحه نمایش داده شود. اینجاست که می‌توانید فایل index.js را ویرایش کنید. نمایش اینکه کد در قسمت بالای صفحه نمایش قرار می‌گیرد
  9. کد زیر را کپی کرده و در فایل index.js باز شده قرار دهید:
    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 Editor) کد شما را به طور خودکار ذخیره می‌کند. این کد به درخواست‌های http با خوشامدگویی «سلام دنیا!» ما پاسخ می‌دهد.

کد اولیه شما برای برنامه‌تان تکمیل شده و آماده ذخیره در کنترل نسخه است.

۸. ایجاد یک مخزن

  1. به ترمینال Cloud Shell در پایین صفحه خود برگردید.
  2. مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
    cd ~/codelab-genai
    
  3. مخزن گیت خود را مقداردهی اولیه کنید
    git init -b main
    
  4. وارد رابط خط فرمان گیت‌هاب (GitHub CLI) شوید
    gh auth login
    
    برای پذیرش گزینه‌های پیش‌فرض، Enter فشار دهید و دستورالعمل‌های ابزار GitHub CLI را دنبال کنید، از جمله:
    1. با چه حسابی می‌خواهید وارد شوید؟ GitHub.com
    2. پروتکل ترجیحی شما برای عملیات گیت روی این میزبان چیست؟ HTTPS
    3. آیا گیت را با اطلاعات کاربری گیت‌هاب خود تأیید می‌کنید؟ Y (اگر این مورد نمایش داده نمی‌شود، از آن صرف نظر کنید.)
    4. چگونه می‌خواهید GitHub CLI را احراز هویت کنید؟ Login with a web browser
    5. کد یکبار مصرف خود را کپی کنید
    6. https://github.com/login/device را باز کنید.
    7. کد یکبار مصرف خود را وارد کنید
    8. روی تأیید گیت‌هاب کلیک کنید
    9. ورود خود را تکمیل کنید
  5. تأیید کنید که وارد سیستم شده‌اید:
    gh api user -q ".login"
    
    اگر با موفقیت وارد سیستم شده باشید، باید نام کاربری GitHub شما نمایش داده شود.
  6. یک متغیر GITHUB_USERNAME ایجاد کنید
    GITHUB_USERNAME=$(gh api user -q ".login")
    
  7. تأیید کنید که متغیر محیطی را ایجاد کرده‌اید:
    echo ${GITHUB_USERNAME}
    
    اگر متغیر را با موفقیت ایجاد کرده باشید، باید نام کاربری GitHub شما نمایش داده شود.
  8. یک مخزن خالی GitHub با نام codelab-genai ایجاد کنید:
    gh repo create codelab-genai --private
    
    اگر خطا را دریافت کردید:
    GraphQL: Name already exists on this account (createRepository)
    
    سپس شما از قبل یک مخزن به نام codelab-genai دارید. برای ادامه‌ی این آموزش دو گزینه دارید:
  9. مخزن codelab-genai را به عنوان remote origin اضافه کنید:
    git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
    

۹. کد خود را به اشتراک بگذارید

  1. تأیید کنید که در دایرکتوری صحیح هستید:
    cd ~/codelab-genai
    
  2. تمام فایل‌های موجود در دایرکتوری فعلی را به این کامیت اضافه کنید:
    git add .
    
  3. اولین کامیت را ایجاد کنید:
    git commit -m "add http server"
    
  4. کامیت خود را به شاخه main مخزن origin ارسال کنید:
    git push -u origin main
    

می‌توانید این دستور را اجرا کنید و برای مشاهده کد برنامه خود در GitHub، به URL حاصل مراجعه کنید:

echo -e "\n\nTo see your code, visit this URL:\n \
    https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/index.js \n\n"

۱۰. راه‌اندازی استقرار خودکار

  1. برگه ویرایشگر پوسته ابری را باز بگذارید. بعداً به این برگه باز خواهیم گشت.
  2. در یک برگه جدید، از صفحه Cloud Run دیدن کنید
  3. پروژه صحیح Google Cloud را در کنسول انتخاب کنید منوی کشویی پروژه کنسول ابری گوگل
  4. روی اتصال مخزن کلیک کنید
  5. روی راه‌اندازی با فضای ابری کلیک کنید
    1. گیت‌هاب را به عنوان ارائه‌دهنده مخزن انتخاب کنید
      • اگر در مرورگر وارد حساب GitHub خود نشده‌اید، با اطلاعات کاربری خود وارد شوید.
    2. روی تأیید اعتبار کلیک کنید و سپس روی ادامه کلیک کنید.
    3. پس از ورود، در صفحه Cloud Run پیامی با این مضمون مشاهده خواهید کرد: «برنامه گیت‌هاب روی هیچ یک از مخازن شما نصب نشده است».
    4. روی دکمه‌ی نصب گوگل کلود بیلد (INSTALL GOOGLE CLOUD BUILD) کلیک کنید.
      • در صفحه تنظیمات نصب، گزینه Only select repositories را انتخاب کنید و مخزن codelab-genai را که از طریق CLI ایجاد کرده‌اید، انتخاب کنید.
      • روی نصب کلیک کنید
      • توجه: اگر مخازن گیت‌هاب زیادی دارید، بارگیری این مرحله ممکن است چند دقیقه طول بکشد.
    5. your-user-name/codelab-genai به عنوان مخزن انتخاب کنید.
      • اگر مخزن موجود نیست، روی پیوند مدیریت مخازن متصل کلیک کنید.
    6. شاخه را به عنوان ^main$ رها کنید
    7. از طریق بسته‌های ساخت گوگل کلود، روی Go، Node.js، Python، Java، .NET Core، Ruby یا PHP کلیک کنید.
      • فیلدهای دیگر ( Build context directory ، Entrypoint و Function target ) را به همان صورت که هستند، رها کنید.
    8. روی ذخیره کلیک کنید
  6. به پایین بروید تا به بخش احراز هویت برسید
  7. روی «مجاز کردن فراخوانی‌های احراز هویت نشده» کلیک کنید
  8. روی ایجاد کلیک کنید

پس از اتمام ساخت (که چند دقیقه طول می‌کشد)، این دستور را اجرا کنید و برای مشاهده برنامه در حال اجرا، به URL حاصل مراجعه کنید:

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"

۱۱. کد خود را تغییر دهید

بازگشت به ویرایشگر Cloud Shell

اگر هنوز ویرایشگر 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 اجرا کنید.

Genkit و Vertex AI را به برنامه خود اضافه کنید

  1. به ترمینال Cloud Shell در پایین صفحه خود برگردید.
  2. مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
    cd ~/codelab-genai
    
  3. نصب SDK مربوط به Node.js Genkit:
    npm install @genkit-ai/ai
    
  4. نصب Node.js Genkit SDK برای Vertex AI:
    npm install @genkit-ai/vertexai
    
  5. index.js در ویرایشگر Cloud Shell دوباره باز کنید.
    cloudshell edit ~/codelab-genai/index.js
    
  6. کد موجود در فایل index.js خود را با کد زیر جایگزین کنید:
    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 هستید:
    cd ~/codelab-genai
    
  2. این دستورات را اجرا کنید تا نسخه جدیدی از برنامه خود را در مخزن محلی git خود قرار دهید:
    git add .
    git commit -m "add latest changes"
    
  3. تغییرات را به گیت‌هاب ارسال کنید:
    git push
    
  4. پس از اتمام ساخت، این دستور را اجرا کنید و برنامه‌ی مستقر شده‌ی خود را مشاهده کنید:
    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"
    

ممکن است چند دقیقه طول بکشد تا ساخت تمام شود و بتوانید تغییرات خود را ببینید.

می‌توانید تاریخچه‌ی تمام ویرایش‌ها را اینجا ببینید: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

۱۲. (اختیاری) استفاده از فایل‌های .prompt با Genkit

  1. به ترمینال Cloud Shell در پایین صفحه خود برگردید.
  2. مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
    cd ~/codelab-genai
    
  3. یک پوشه برای ذخیره prompts ایجاد کنید:
    mkdir prompts
    
  4. برای ایجاد اولین اعلان خود، یک فایل animal-facts.prompt ایجاد کنید:
    touch prompts/animal-facts.prompt
    
  5. فایل animal-facts.prompt را در ویرایشگر Cloud Shell باز کنید:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  6. فایل animal-facts.prompt را ویرایش کنید و کد زیر را در آن قرار دهید:
    ---
    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 را در ویرایشگر Cloud Shell باز کنید:
    cloudshell edit ~/codelab-genai/index.js
    
  8. کد موجود در فایل index.js خود را با کد زیر جایگزین کنید:
    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 هستید:
    cd ~/codelab-genai
    
  2. این دستورات را اجرا کنید تا نسخه جدیدی از برنامه خود را در مخزن محلی git خود قرار دهید:
    git add .
    git commit -m "add latest changes"
    
  3. تغییرات را به گیت‌هاب ارسال کنید:
    git push
    
  4. پس از اتمام ساخت، این دستور را اجرا کنید و برنامه‌ی مستقر شده‌ی خود را مشاهده کنید:
    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"
    

ممکن است چند دقیقه طول بکشد تا ساخت تمام شود و بتوانید تغییرات خود را ببینید.

می‌توانید تاریخچه‌ی تمام ویرایش‌ها را اینجا ببینید: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

۱۳. (اختیاری) استفاده از اعلان‌های سیستم

این مرحله فرض می‌کند که شما قبلاً فایل‌های .prompt را در مرحله قبل اضافه کرده‌اید.

  1. به ترمینال Cloud Shell در پایین صفحه خود برگردید.
  2. مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
    cd ~/codelab-genai
    
  3. فایل animal-facts.prompt را در ویرایشگر Cloud Shell باز کنید:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  4. فایل animal-facts.prompt را ویرایش کنید و کد زیر را در آن قرار دهید:
    ---
    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 هستید:
    cd ~/codelab-genai
    
  2. این دستورات را اجرا کنید تا نسخه جدیدی از برنامه خود را در مخزن محلی git خود قرار دهید:
    git add .
    git commit -m "add latest changes"
    
  3. تغییرات را به گیت‌هاب ارسال کنید:
    git push
    
  4. پس از اتمام ساخت، این دستور را اجرا کنید و برنامه‌ی مستقر شده‌ی خود را مشاهده کنید:
    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"
    

ممکن است چند دقیقه طول بکشد تا ساخت تمام شود و بتوانید تغییرات خود را ببینید.

می‌توانید تاریخچه‌ی تمام ویرایش‌ها را اینجا ببینید: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

۱۴. تبریک

در این آزمایش، شما یک برنامه وب نوشتید و Cloud Run را طوری پیکربندی کردید که وقتی تغییری در کد منبع برنامه شما ایجاد می‌شود، به طور خودکار برنامه شما را مستقر کند. سپس برنامه خود را اصلاح کردید و دوباره آن را مستقر کردید.

اگر از این آزمایش لذت بردید، می‌توانید دوباره آن را با زبان یا چارچوب کدنویسی دیگری امتحان کنید:

در اینجا چند گزینه برای ادامه تحصیل شما وجود دارد: