1. סקירה כללית
פריסה של אפליקציית אינטרנט בפעם הראשונה יכולה להיראות מרתיעה. גם אחרי הפריסה הראשונה, אם התהליך קשה מדי, יכול להיות שלא תפרסו גרסאות חדשות של האפליקציה. בעזרת פריסה רציפה, אפשר לפרוס שינויים באפליקציה בקלות ובאופן אוטומטי.
במעבדה הזו תכינו אפליקציית אינטרנט ותגדירו את Cloud Run לפריסה אוטומטית של האפליקציה כשיבוצע שינוי בקוד המקור שלה. לאחר מכן משנים את האפליקציה ופורסים אותה שוב.
מה תלמדו
- כתיבת אפליקציית אינטרנט באמצעות Cloud Shell Editor
- אחסון קוד האפליקציה ב-GitHub
- פריסת האפליקציה ב-Cloud Run באופן אוטומטי
- הוספת AI גנרטיבי לאפליקציה באמצעות Genkit
- ניהול הנחיות LLM באמצעות ספריית dotprompt
2. דרישות מוקדמות
- אם עדיין אין לכם חשבון Google, עליכם ליצור חשבון Google.
- משתמשים בחשבון אישי במקום בחשבון לצורכי עבודה או בחשבון בית ספרי. יכול להיות שבחשבונות לצורכי עבודה ובחשבונות בית ספריים יש הגבלות שמונעות מכם להפעיל את ממשקי ה-API הנדרשים לסדנה הזו.
- אם עדיין אין לכם חשבון GitHub, עליכם ליצור חשבון GitHub
- אם יש לכם חשבון GitHub, השתמשו בו. יש סיכוי גבוה יותר ש-GitHub יחסום חשבון חדש כספאם.
- מגדירים אימות דו-שלבי בחשבון GitHub כדי לצמצם את הסיכוי שהחשבון שלכם יסומן כספאם.
3. הגדרת הפרויקט
- נכנסים למסוף Google Cloud.
- מפעילים את החיוב במסוף Cloud.
- השלמת ה-Lab אמורה לעלות פחות מ-1 $בארה"ב במשאבי Cloud.
- כדי למנוע חיובים נוספים, תוכלו לפעול לפי השלבים שמפורטים בסוף שיעור ה-Lab הזה כדי למחוק את המשאבים.
- משתמשים חדשים זכאים לתקופת ניסיון בחינם בשווי 300$.
- יש לכם כוונה להשתתף באירוע של AI גנרטיבי למפתחים? יכול להיות שתהיה לך אפשרות לקבל זיכוי בסך 1$.
- יוצרים פרויקט חדש או בוחרים לעשות שימוש חוזר בפרויקט קיים.
- מוודאים שהחיוב מופעל בקטע My projects (הפרויקטים שלי) בדף החיוב ב-Cloud
- אם בעמודה
Billing account
מופיע הערךBilling is disabled
בפרויקט החדש:- לוחצים על שלוש הנקודות בעמודה
Actions
. - לוחצים על שינוי פרטי החיוב.
- בוחרים את החשבון לחיוב שבו רוצים להשתמש.
- לוחצים על שלוש הנקודות בעמודה
- אם אתם משתתפים באירוע Gen AI for Devs, סביר להניח שהשם של החשבון יהיה Google Cloud Platform Trial Billing Account
- אם בעמודה
4. פתיחת Cloud Shell Editor
- עוברים אל Cloud Shell Editor.
- אם מסוף ה-CLI לא מופיע בחלק התחתון של המסך, פותחים אותו:
- לוחצים על תפריט שלושת הקווים
.
- לוחצים על Terminal (מסוף).
- לוחצים על מסוף חדש
- לוחצים על תפריט שלושת הקווים
- בטרמינל, מגדירים את הפרויקט באמצעות הפקודה הבאה:
- פורמט:
gcloud config set project [PROJECT_ID]
- דוגמה:
gcloud config set project lab-project-id-example
- אם לא זוכרים את מזהה הפרויקט:
- אפשר להציג את כל מזהי הפרויקטים באמצעות:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- אפשר להציג את כל מזהי הפרויקטים באמצעות:
- פורמט:
- אם מתבקשים לאשר, לוחצים על Authorize (מתן הרשאה) כדי להמשיך.
- אמורה להופיע ההודעה הבאה:
אם מופיעUpdated property [core/project].
WARNING
ונשאלת השאלהDo you want to continue (Y/N)?
, סביר להניח שהזנתם את מזהה הפרויקט בצורה שגויה. לוחצים עלN
, לוחצים עלEnter
ומנסים להריץ שוב את הפקודהgcloud config set project
.
5. הפעלת ממשקי API
מפעילים את ממשקי ה-API בטרמינל:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
השלמת הפקודה עשויה להימשך כמה דקות, אבל בסופו של דבר אמורה להופיע הודעה על השלמה, בדומה להודעה הבאה:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. הגדרת Git
- מגדירים את כתובת האימייל של משתמש ה-git ברמת המערכת:
git config --global user.email "you@example.com"
- מגדירים את שם המשתמש הגלובלי ב-git:
git config --global user.name "Your Name"
- מגדירים את ההסתעפות
main
כברירת המחדל הגלובלית ב-git:git config --global init.defaultBranch main
7. כתיבת הקוד
כדי לכתוב אפליקציה ב-Node.js:
- מנווטים לספריית הבית:
cd ~
- יוצרים את הספרייה
codelab-genai
:mkdir codelab-genai
- מנווטים לספרייה
codelab-genai
:cd codelab-genai
- יוצרים קובץ
index.js
:touch index.js
- יוצרים את הקובץ
package.json
:npm init es6 -y
- הוספה של
express
כיחס תלותnpm install express
- הוספת קובץ
.gitignore
כדי למנוע ביצוע commit שלnode_modules
echo node_modules/ >> .gitignore
- פותחים את הקובץ
index.js
ב-Cloud Shell Editor: עכשיו אמור להופיע קובץ ריק בחלק העליון של המסך. כאן אפשר לערוך את הקובץcloudshell edit index.js
index.js
. - מעתיקים את הקוד הבא ומדביקים אותו בקובץ
index.js
הפתוח: כעבור כמה שניות, הקוד יישמר באופן אוטומטי ב-Cloud Shell Editor. הקוד הזה מגיב לבקשות http עם הודעת הפתיחה 'Hello world!'.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}`); });
הקוד הראשוני של האפליקציה שלכם מוכן ונשמר במערכת לניהול גרסאות.
8. יצירת מאגר
- חוזרים לטרמינל של Cloud Shell שבחלק התחתון של המסך.
- מוודאים שאתם עדיין בספרייה הנכונה:
cd ~/codelab-genai
- איך מפעילים את מאגר ה-Git
git init -b main
- התחברות ל-GitHub CLI
מקישים עלgh auth login
Enter
כדי לאשר את אפשרויות ברירת המחדל ופועלים לפי ההוראות בכלי GitHub CLI, כולל:- לאיזה חשבון ברצונך להתחבר?
GitHub.com
- מהו הפרוטוקול המועדף עליך לפעולות Git במארח הזה?
HTTPS
- אימות Git באמצעות פרטי הכניסה ל-GitHub?
Y
(דילוג אם הסמל הזה לא מופיע). - איך היית רוצה לאמת את GitHub CLI?
Login with a web browser
- מעתיקים את הקוד החד-פעמי
- פותחים את https://github.com/login/device
- מדביקים את הקוד החד-פעמי
- לוחצים על Authorize github (מתן הרשאה ל-GitHub).
- השלמת ההתחברות
- לאיזה חשבון ברצונך להתחבר?
- מוודאים שנכנסתם לחשבון:
אם נכנסתם לחשבון בהצלחה, שם המשתמש שלכם ב-GitHub אמור להופיע בתוצאה.gh api user -q ".login"
- יצירת משתנה
GITHUB_USERNAME
GITHUB_USERNAME=$(gh api user -q ".login")
- מוודאים שיצרתם את משתנה הסביבה:
אם יצרתם את המשתנה בהצלחה, שם המשתמש שלכם ב-GitHub אמור להופיע בתוצאה.echo ${GITHUB_USERNAME}
- יוצרים מאגר ריק ב-GitHub בשם
codelab-genai
: אם מופיעה הודעת השגיאה:gh repo create codelab-genai --private
כלומר, כבר יש לכם מאגר בשםGraphQL: Name already exists on this account (createRepository)
codelab-genai
. יש שתי אפשרויות להמשך המדריך:- מחיקת המאגר הקיים ב-GitHub
- יוצרים מאגר עם שם אחר, וצריך לזכור לשנות אותו בפקודות הבאות.
- מוסיפים את המאגר
codelab-genai
בתור המאגר המרוחקorigin
:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. שיתוף הקוד
- מוודאים שאתם נמצאים בספרייה הנכונה:
cd ~/codelab-genai
- מוסיפים את כל הקבצים בספרייה הנוכחית ל-commit:
git add .
- יוצרים את השמירה הראשונה:
git commit -m "add http server"
- מעבירים את השמירה להסתעפות
main
במאגרorigin
:git push -u origin main
אפשר להריץ את הפקודה הזו ולעבור לכתובת ה-URL שנוצרה כדי לראות את קוד האפליקציה ב-GitHub:
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. הגדרת פריסות אוטומטיות
- משאירים את הכרטיסייה של Cloud Shell Editor פתוחה. נשוב לכרטיסייה הזו בהמשך.
- בכרטיסייה חדשה, נכנסים אל הדף של Cloud Run.
- בוחרים את הפרויקט הנכון ב-Google Cloud במסוף
- לוחצים על CONNECT REPO (קישור המאגר).
- לוחצים על SET UP WITH CLOUD BUILD (הגדרה באמצעות Cloud Build).
- בוחרים ב-GitHub בתור ספק המאגר
- אם אתם לא מחוברים לחשבון GitHub בדפדפן, צריך להיכנס באמצעות פרטי הכניסה.
- לוחצים על אימות ואז על המשך.
- אחרי ההתחברות, תופיע בדף Cloud Run ההודעה The GitHub App is not installed on any of your repositories (אפליקציית GitHub לא מותקנת באף אחד מהמאגרים שלך).
- לוחצים על הלחצן INSTALL GOOGLE CLOUD BUILD.
- בדף Installation Setup (הגדרת ההתקנה), בוחרים באפשרות Only select repositories (רק מאגרים נבחרים) ובוחרים את המאגר codelab-genai שיצרתם באמצעות CLI.
- לוחצים על התקנה.
- הערה: אם יש לכם הרבה מאגרים ב-GitHub, תהליך הטעינה עשוי להימשך כמה דקות.
- בוחרים ב-
your-user-name/codelab-genai
בתור המאגר- .
- אם המאגר לא מופיע, לוחצים על הקישור Manage Connected Repositories.
- משאירים את Branch כ-
^main$
- לוחצים על Go, Node.js, Python, Java, .NET Core, Ruby או PHP באמצעות buildpacks של Google Cloud
- משאירים את שאר השדות (
Build context directory
,Entrypoint
ו-Function target
) כפי שהם.
- משאירים את שאר השדות (
- לוחצים על שמירה.
- בוחרים ב-GitHub בתור ספק המאגר
- גוללים למטה לקטע Authentication (אימות).
- לוחצים על Allow unauthenticated invocations (אישור הפעלות לא מאומתות).
- לוחצים על יצירה.
בסיום ה-build (הפעולה תימשך כמה דקות), מריצים את הפקודה הזו ונכנסים לכתובת ה-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"
11. שינוי הקוד
חזרה ל-Cloud Shell Editor
אם עדיין לא סגרתם את Cloud Shell Editor, אתם יכולים לדלג על השלבים האלה.
- עוברים אל Cloud Shell Editor.
- אם מסוף ה-CLI לא מופיע בחלק התחתון של המסך, פותחים אותו:
- לוחצים על תפריט שלושת הקווים
.
- לוחצים על Terminal (מסוף).
- לוחצים על מסוף חדש
- לוחצים על תפריט שלושת הקווים
- בטרמינל, מגדירים את הפרויקט באמצעות הפקודה הבאה:
- פורמט:
gcloud config set project [PROJECT_ID]
- דוגמה:
gcloud config set project lab-project-id-example
- אם לא זוכרים את מזהה הפרויקט:
- אפשר להציג את כל מזהי הפרויקטים באמצעות:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- אפשר להציג את כל מזהי הפרויקטים באמצעות:
- פורמט:
- אם מתבקשים לאשר, לוחצים על Authorize (מתן הרשאה) כדי להמשיך.
- אמורה להופיע ההודעה הבאה:
אם מופיעUpdated property [core/project].
WARNING
ונשאלת השאלהDo you want to continue (Y/N)?
, סביר להניח שהזנתם את מזהה הפרויקט בצורה שגויה. לוחצים עלN
, לוחצים עלEnter
ומנסים להריץ שוב את הפקודהgcloud config set project
.
הוספת Genkit ו-Vertex AI לאפליקציה
- חוזרים לטרמינל של Cloud Shell שבחלק התחתון של המסך.
- מוודאים שאתם עדיין בספרייה הנכונה:
cd ~/codelab-genai
- מתקינים את Node.js Genkit SDK:
npm install @genkit-ai/ai
- מתקינים את Node.js Genkit SDK ל-Vertex AI:
npm install @genkit-ai/vertexai
- פותחים מחדש את
index.js
ב-Cloud Shell Editorcloudshell edit ~/codelab-genai/index.js
- מחליפים את הקוד בקובץ
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}`); });
- מוודאים שאתם עדיין בספרייה הנכונה ב-Cloud Shell:
cd ~/codelab-genai
- מריצים את הפקודות הבאות כדי לבצע השמירה של גרסה חדשה של האפליקציה במאגר ה-git המקומי:
git add . git commit -m "add latest changes"
- מעבירים את השינויים ל-GitHub:
git push
- בסיום ה-build, מריצים את הפקודה הבאה ונכנסים לאפליקציה שנפרסה:
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"
יכול להיות שיחלפו כמה דקות עד שה-build יושלם ותוכלו לראות את השינויים.
אפשר לראות את ההיסטוריה של כל הגרסאות כאן: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
12. (אופציונלי) שימוש בקבצים מסוג prompt .עם Genkit
- חוזרים לטרמינל של Cloud Shell שבחלק התחתון של המסך.
- מוודאים שאתם עדיין בספרייה הנכונה:
cd ~/codelab-genai
- יוצרים תיקייה
prompts
כדי לאחסן את ההנחיות:mkdir prompts
- יוצרים קובץ
animal-facts.prompt
כדי ליצור את ההנחיה הראשונה:touch prompts/animal-facts.prompt
- פותחים את הקובץ
animal-facts.prompt
ב-Cloud Shell Editor:cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
- עורכים את הקובץ
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.
- פותחים את הקובץ
index.js
ב-Cloud Shell Editor:cloudshell edit ~/codelab-genai/index.js
- מחליפים את הקוד בקובץ
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}`); });
- מוודאים שאתם עדיין בספרייה הנכונה ב-Cloud Shell:
cd ~/codelab-genai
- מריצים את הפקודות הבאות כדי לבצע השמירה של גרסה חדשה של האפליקציה במאגר ה-git המקומי:
git add . git commit -m "add latest changes"
- מעבירים את השינויים ל-GitHub:
git push
- בסיום ה-build, מריצים את הפקודה הבאה ונכנסים לאפליקציה שנפרסה:
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"
יכול להיות שיחלפו כמה דקות עד שה-build יושלם ותוכלו לראות את השינויים.
אפשר לראות את ההיסטוריה של כל הגרסאות כאן: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (אופציונלי) שימוש בהנחיות המערכת
בשלב הזה נניח שכבר הוספתם קובצי .prompt
בשלב הקודם.
- חוזרים לטרמינל של Cloud Shell שבחלק התחתון של המסך.
- מוודאים שאתם עדיין בספרייה הנכונה:
cd ~/codelab-genai
- פותחים את הקובץ
animal-facts.prompt
ב-Cloud Shell Editor:cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
- עורכים את הקובץ
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}}
- מוודאים שאתם עדיין בספרייה הנכונה ב-Cloud Shell:
cd ~/codelab-genai
- מריצים את הפקודות הבאות כדי לבצע השמירה של גרסה חדשה של האפליקציה במאגר ה-git המקומי:
git add . git commit -m "add latest changes"
- מעבירים את השינויים ל-GitHub:
git push
- בסיום ה-build, מריצים את הפקודה הבאה ונכנסים לאפליקציה שנפרסה:
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"
יכול להיות שיחלפו כמה דקות עד שה-build יושלם ותוכלו לראות את השינויים.
אפשר לראות את ההיסטוריה של כל הגרסאות כאן: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
14. מזל טוב
במעבדה הזו כתבתם אפליקציית אינטרנט והגדרתם את Cloud Run לפרוס את האפליקציה באופן אוטומטי כשמתבצע שינוי בקוד המקור של האפליקציה. לאחר מכן שיניתם את האפליקציה ופרסמתם אותה שוב.
אם נהניתם מהסדנה הזו, תוכלו לנסות אותה שוב בשפת תכנות או בסביבת פיתוח אחרת:
ריכזנו כאן כמה אפשרויות להמשך הלמידה:
- מסמכי Genkit: תחילת העבודה
- Codelab להוספת יכולת תצפית לאפליקציית Node.js: שיטות מעשיות למעקב אחרי אפליקציות AI גנרטיבי ב-JavaScript
- Codelab להוספת ממשק לקצה לאפליקציה באמצעות Next.js: פריסה אוטומטית של אפליקציית אינטרנט מבוססת AI גנרטיבי ב-Next.js ממערכת בקרת גרסאות ל-Cloud Run
- Codelab שמראה איך להשתמש בקריאה לפונקציה: איך משתמשים בקריאה לפונקציה של Gemini עם Cloud Run
- Codelab לשימוש ב-AI לעיבוד תוכן וידאו: איך משתמשים ב-Video Intelligence API של Cloud Run Jobs כדי לעבד סרטון סצנה אחר סצנה