הטמעת סיפורי משתמשים ב-JIRA באמצעות GenAI

הטמעת סיפורי משתמשים ב-JIRA באמצעות GenAI

מידע על Codelab זה

subjectהעדכון האחרון: מרץ 24, 2025
account_circleנכתב על ידי Andrey Shakirov

1.‏ סקירה כללית

במעבדה הזו תלמדו איך ליצור פתרון לאוטומציה של הטמעת סיפורי משתמשים ב-JIRA באמצעות GenAI.

a4ba5d8788dc40.png

הסדנה מורכבת מכמה חלקים עיקריים:

  • פריסה של אפליקציית Cloud Run לשילוב עם ממשקי Gemini API
  • יצירת אפליקציה של Atlassian Forge ל-JIRA ופריסה שלה
  • שימוש ב-LangChain ReAct Agents לאוטומציה של משימות ב-GitLab

דרישות מוקדמות

  • ההנחה בשיעור ה-Lab הזה היא שיש לכם היכרות עם סביבות Cloud Console ו-Cloud Shell.

2.‏ הגדרה ודרישות

הגדרת פרויקט ב-Cloud

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך כל פרק הזמן של הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
  1. בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.

הגדרת הסביבה

פותחים את Gemini Chat.

bc3c899ac8bcf488.png

אפשר גם להקליד 'יש לך שאלה ל-Gemini?' בסרגל החיפוש.

e1e9ad314691368a.png

מפעילים את Gemini for Google Cloud API:

990a0ceea7d05531.png

לוחצים על 'Start chatting' ופועלים לפי אחת מהשאלות לדוגמה או מקלידים הנחיה משלכם כדי לנסות את התכונה.

ed120d672468b412.png

הנחיות שאפשר לנסות:

  • הסבר על Cloud Run ב-5 נקודות עיקריות.
  • אתם מנהלי מוצרים ב-Google Cloud Run, ואתם צריכים להסביר לתלמיד/ה על Cloud Run ב-5 נקודות עיקריות קצרות.
  • אתם מנהלי מוצרים ב-Google Cloud Run, ואתם צריכים להסביר את Cloud Run למפתח Kubernetes מוסמך ב-5 נקודות עיקריות קצרות.
  • אתם מנהלי מוצר של Google Cloud Run, ואתם צריכים להסביר למפתח בכיר מתי כדאי להשתמש ב-Cloud Run לעומת GKE, ב-5 נקודות מפתח קצרות.

במדריך להנחיות מוסבר איך לכתוב הנחיות טובות יותר.

איך Gemini for Google Cloud משתמש בנתונים שלכם

המחויבות של Google לפרטיות

Google הייתה אחת מהחברות הראשונות בתחום שפרסמתה מחויבות לפרטיות ב-AI/ML, שבה אנו מבטאים את האמונה שלנו שללקוחות צריכה להיות רמה הגבוהה ביותר של אבטחה ושליטה על הנתונים שלהם שמאוחסנים בענן.

נתונים שאתם שולחים ומקבלים

השאלות שאתם שואלים את Gemini, כולל כל פרטי הקלט או הקוד שאתם שולחים ל-Gemini לצורך ניתוח או השלמה, נקראות הנחיות. התשובות או השלמות הקוד שאתם מקבלים מ-Gemini נקראות תגובות. Gemini לא משתמש בהנחיות שלכם או בתשובות שלו כנתונים לאימון המודלים שלו.

הצפנה של הנחיות

כששולחים הנחיות ל-Gemini, הנתונים מוצפנים במעבר כקלט למודל הבסיסי ב-Gemini.

נתוני תוכנית שנוצרו מ-Gemini

‫Gemini מאומן על קוד מ-Google Cloud (מצד ראשון) ועל קוד נבחר של צד שלישי. אתם אחראים על האבטחה, הבדיקה והיעילות של הקוד שלכם, כולל כל השלמה, יצירה או ניתוח של קוד ש-Gemini מציעה לכם.

מידע נוסף על האופן שבו Google מטפלת בהנחיות

3.‏ אפשרויות לבדיקה של הנחיות

יש כמה דרכים לבדוק את ההנחיות.

Vertex AI Studio הוא חלק מפלטפורמת Vertex AI של Google Cloud, שמיועדת במיוחד לפשט ולהאיץ את הפיתוח והשימוש במודלים של AI גנרטיבי.

Google AI Studio הוא כלי מבוסס-אינטרנט ליצירת אב טיפוס ולניסויים בתכנון הנחיות וב-Gemini API.

אפליקציית האינטרנט של Google Gemini‏ (gemini.google.com) היא כלי מבוסס-אינטרנט שמיועד לעזור לכם לגלות את מלוא הפוטנציאל של מודלי ה-AI של Gemini מבית Google ולהשתמש בו.

4.‏ בדיקת הבקשה

יצירת חשבון שירות

חוזרים למסוף Google Cloud ומפעילים את Cloud Shell בלחיצה על הסמל שמשמאל לסרגל החיפוש.

3e0c761ca41f315e.png

במסוף שנפתח, מריצים את הפקודות הבאות כדי ליצור חשבון שירות ומפתחות חדשים.

תשתמשו בחשבון השירות הזה כדי לבצע קריאות API ל-Vertex AI Gemini API מאפליקציית Cloud Run.

מגדירים את פרטי הפרויקט באמצעות פרטי הפרויקט ב-Qwiklabs.

לדוגמה: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

יוצרים חשבון שירות.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME
='vertex-client'
DISPLAY_NAME
='Vertex Client'

gcloud iam service
-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --display-name "$DISPLAY_NAME"

מקצים תפקידים.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"

אם מתבקשים לאשר, לוחצים על 'אישור' כדי להמשיך.

6356559df3eccdda.png

מפעילים את השירותים הנדרשים כדי להשתמש ב-Vertex AI APIs וב-Gemini Chat.

gcloud services enable \
    generativelanguage
.googleapis.com \
    aiplatform
.googleapis.com \
    cloudaicompanion
.googleapis.com \
    run
.googleapis.com \
    cloudresourcemanager
.googleapis.com
 

מפעילים את השירותים הנדרשים כדי להשתמש ב-Vertex AI APIs וב-Gemini Chat.

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

שכפול של מאגר GitHub

משכפלים את המאגר ב-GitHub.

git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git

פתיחת Cloud Shell Editor

7e71f46b6c7b67ca.png

באמצעות פריט התפריט File / Open Folder, פותחים את genai-for-developers.

פותחים את הקובץ devai-api/app/routes.py, לוחצים לחיצה ימנית במקום כלשהו בקובץ ובוחרים באפשרות Gemini > Explain this" בתפריט ההקשר.

34054e1fad005ff8.png

קוראים את ההסבר של Gemini לגבי הקובץ שנבחר.

f73af988a723142.png

5.‏ הגדרת מאגר ו-Toolkit של GitLab

במעבדה הזו נשתמש ב-GitLabToolkit כדי ליצור בקשות מיזוג ב-GitLab באופן אוטומטי.

סקירה כללית על ערכות הכלים של LangChain

LangChain Toolkits הם ערכות כלים שנועדו לייעל ולשפר את הפיתוח של אפליקציות באמצעות LangChain. הן מציעות פונקציות שונות בהתאם לערכת הכלים הספציפית, אבל באופן כללי הן עוזרות בנושאים הבאים:

  • קישור למקורות נתונים חיצוניים: גישה למידע מממשקי API, ממסדי נתונים וממקורות חיצוניים אחרים, ושילוב המידע הזה באפליקציות של LangChain.
  • שיטות מתקדמות להנחיה: שימוש בהנחיות שהוגדרו מראש או יצירה של הנחיות בהתאמה אישית כדי לבצע אופטימיזציה של האינטראקציות עם מודלים של שפה.
  • יצירה וניהול של שרשורים: אפשר ליצור שרשורים מורכבים בקלות ולנהל אותם ביעילות.
  • הערכה ומעקב: ניתוח הביצועים של האפליקציות והשרשראות של LangChain.

ערכות כלים פופולריות של LangChain כוללות:

  • ערכות כלים להפעלת סוכנים: כלים לפיתוח סוכנים שיכולים לקיים אינטראקציה עם העולם האמיתי באמצעות פעולות כמו גלישה באינטרנט או ביצוע קוד.
  • ערכת הכלים לתכנון הנחיות: אוסף משאבים ליצירת הנחיות יעילות.

סקירה כללית על GitLab Toolkit

ערכת הכלים של Gitlab מכילה כלים שמאפשרים לסוכן LLM לקיים אינטראקציה עם מאגר Gitlab. הכלי הוא מעטפת לספרייה python-gitlab.

ערכת הכלים של GitLab יכולה לבצע את המשימות הבאות:

  • Create File – יצירת קובץ חדש במאגר.
  • קריאת קובץ – קריאת קובץ מהמאגר.
  • עדכון קובץ – עדכון קובץ במאגר.
  • Create Pull Request – יצירת בקשת משיכה מההסתעפות הפעילה של הרובוט להסתעפות הבסיסית.
  • Get Issues – אחזור בעיות מהמאגר.
  • Get Issue – אחזור פרטים על בעיה ספציפית.
  • תגובה על בעיה – פרסום תגובה לגבי בעיה ספציפית.
  • Delete File – מחיקה של קובץ מהמאגר.

הגדרת פרויקט ב-GitLab

פותחים את GitLab, יוצרים פרויקט חדש ומגדירים את אסימון הגישה לפרויקט בקטע Settings / Access Tokens.

יש להשתמש בפרטים הבאים:

  • שם הטוקן: devai-api-qwiklabs
  • תפקיד: Maintainer
  • בוחרים את ההיקפים: api

c205fd7524c456dc.png

מעתיקים את הערך של אסימון הגישה ומדביקים אותו בקובץ זמני במחשב הנייד. הערך הזה ישמש בשלבים הבאים.

6.‏ הכנה לפריסה של אפליקציה ב-Cloud Run

חוזרים ל-Cloud Shell Editor ומשתמשים בטרמינל קיים או פותחים טרמינל חדש.

941f0c1692037664.png

מגדירים את פרטי הפרויקט באמצעות פרטי הפרויקט ב-Qwiklabs.

לדוגמה: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

מגדירים את שאר משתני הסביבה:

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api

מגדירים את משתני הסביבה הנדרשים לשילוב עם GitLab.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

כדי להימנע מחשיפת מידע רגיש במסוף, מומלץ להשתמש ב-read -s GITLAB_PERSONAL_ACCESS_TOKEN. זוהי דרך מאובטחת להגדיר משתני סביבה בלי שהערך יופיע בהיסטוריית הפקודות של המסוף. אחרי ההפעלה, צריך להדביק את הערך וללחוץ על Enter. צריך לייצא גם את משתנה הסביבה: export GITLAB_PERSONAL_ACCESS_TOKEN

כדי להשתמש בפקודה הזו, צריך לעדכן את מזהה המשתמש ואת שם המאגר ב-GitLab.

לדוגמה: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

export GITLAB_REPOSITORY="USERID/REPOSITORY"

מגדירים את שאר משתני הסביבה:

export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"

הגדרת המעקב של LangSmith LLM

מגדירים את החשבון אם רוצים להציג את פרטי המעקב אחר הסוכן ב-LangSmith, אחרת מריצים את הפקודות כפי שהן.

יוצרים חשבון LangSmith ויוצרים מפתח Service API בקטע 'הגדרות'. https://smith.langchain.com/settings

מגדירים את משתני הסביבה הנדרשים לשילוב עם LangSmith.

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

export LANGCHAIN_API_KEY=langchain-service-api-key

הגדרת JIRA

לא נעשה שימוש בערכים האלה במעבדה הזו, לכן אין צורך לעדכן אותם לערכי הפרויקט הספציפיים שלכם ב-JIRA לפני שמריצים את הפקודות.

הגדרת משתני הסביבה הנדרשים לפריסה של שירות Cloud Run.

export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true

יצירת מפתח API

יוצרים מפתח API חדש בקטע Cloud Console / API & Services / Credentials.

המפתח הזה ישמש לאימות קריאות ל-JIRA API באפליקציה של Cloud Run.

בסביבת הייצור, צריך להגדיר הגבלות על אפליקציות וממשקי API למפתח ה-API שנוצר. הגבלות על אפליקציות מגבילות את השימוש במפתח API לאתרים ספציפיים(למשל, המכונה שלכם ב-JIRA).

הגדרת משתני הסביבה הנדרשים לפריסה של שירות Cloud Run.

export DEVAI_API_KEY=your-api-key

יצירת סודות ב-Secret Manager

במעבדה הזו, אנחנו פועלים לפי השיטות המומלצות ומשתמשים ב-Secret Manager כדי לאחסן את הערכים של אסימוני הגישה, מפתח ה-API ומפתח ה-API של LangChain ב-Cloud Run, ולהפנות אליהם.

יצירה ואחסון של סודות נדרשים ב-Secret Manager.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY
\
 
--data-file=-

echo
-n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN
\
 
--data-file=-

echo
-n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN
\
 
--data-file=-

echo
-n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY
\
 
--data-file=-

7.‏ פריסה של Devai-API ב-Cloud Run

מוודאים שנמצאים בתיקייה הנכונה.

cd ~/genai-for-developers/devai-api

פריסת האפליקציה ב-Cloud Run.

gcloud run deploy "$SERVICE_NAME" \
  --source=. \
  --region="$LOCATION" \
  --allow-unauthenticated \
  --service-account vertex-client \
  --set-env-vars PROJECT_ID="$PROJECT_ID" \
  --set-env-vars LOCATION="$LOCATION" \
  --set-env-vars GITLAB_URL="$GITLAB_URL" \
  --set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
  --set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
  --set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
  --set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
  --set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
  --set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
  --set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
  --set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
  --update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
  --update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
  --update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
  --update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
  --min-instances=1 \
  --max-instances=3

משיבים Y כדי ליצור מאגר Docker ב-Artifact Registry.

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in 
region [us-central1] will be created.

Do you want to continue (Y/n)?  y

בהמשך מפורט התהליך של gcloud run deploy SERVICE_NAME --source=.. מידע נוסף

5c122a89dd11822e.png

מאחורי הקלעים, הפקודה הזו משתמשת ב-buildpacks וב-Cloud Build של Google Cloud כדי ליצור באופן אוטומטי קובצי אימג' של קונטיינרים מקוד המקור, בלי שתצטרכו להתקין את Docker במכונה או להגדיר buildpacks או Cloud Build. כלומר, הפקודה היחידה שמתוארת למעלה מבצעת את הפעולה שנדרשות לה אחרת הפקודות gcloud builds submit ו-gcloud run deploy.

אם סיפקתם קובץ Dockerfile(כפי שעשינו במאגר הזה), Cloud Build ישתמש בו כדי ליצור קובצי אימג' של קונטיינרים, במקום להסתמך על ה-buildpacks כדי לזהות קובצי אימג' של קונטיינרים וליצור אותם באופן אוטומטי. מידע נוסף על buildpacks זמין במסמכי התיעוד.

בודקים את היומנים של Cloud Build במסוף.

בודקים את קובץ האימג' של Docker שנוצר ב-Artifact Registry.

בודקים את פרטי המכונה של Cloud Run במסוף Cloud.

אפליקציית בדיקה

בודקים את נקודת הקצה על ידי הרצת הפקודה curl.

לפני שמריצים את הפקודה, צריך לעדכן את כתובת ה-URL של שירות Cloud Run.

דוגמה:

curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test

8.‏ הטמעה אוטומטית של סטורי

Forge היא פלטפורמה שמאפשרת למפתחים ליצור אפליקציות שמשולבות עם מוצרי Atlassian, כמו Jira, ‏ Confluence, ‏ Compass ו-Bitbucket.

eda6f59ff15df25e.png

התקנת Forge CLI

כדי להתקין את Forge CLI באופן גלובלי, מריצים את הפקודה:

npm install -g @forge/cli

בשיעור ה-Lab הזה נשתמש במשתני סביבה כדי להתחבר.

e4e4e59cf8622e3f.png

הגדרת פרויקט ב-JIRA

שימוש בחשבון האישי ליצירה או לצפייה בפרויקטים ב-JIRA

בודקים את הפרויקטים הקיימים ב-JIRA: https://admin.atlassian.com/

יוצרים פרויקט חדש ב-JIRA באמצעות החשבון האישי.

עוברים אל https://team.atlassian.com/your-work ולוחצים על 8654143154cb8665.png ואז על 47b253090a08932.png. לאחר מכן, בוחרים באפשרות 'JIRA Software' – 'Try it now'. פועלים לפי ההוראות כדי להשלים את יצירת הפרויקט או האתר.

5bab2a96e3b81383.png

בוחרים באפשרות JIRA Software.

785bc4d8bf920403.png

יוצרים פרויקט חדש.

8a6e7cdc8224ffa0.png

יצירת טוקן API של Atlassian

יוצרים אסימון API קיים של Atlassian או משתמשים בו כדי להתחבר ל-CLI.

ה-CLI משתמש באסימון שלכם כשמריצים פקודות.

  1. עוברים לכתובת https://id.atlassian.com/manage/api-tokens.
  2. לוחצים על Create API token.
  3. מזינים תווית לתיאור של טוקן ה-API. לדוגמה, forge-api-token.
  4. לוחצים על יצירה.
  5. לוחצים על העתקה ללוח וסוגרים את תיבת הדו-שיח.

הגדרת הגדרות הסביבה של Forge

חוזרים ל-Cloud Console ומריצים את הפקודות הבאות בטרמינל.

כדי להתחיל להשתמש בפקודות של Forge, צריך להתחבר ל-CLI של Forge.

מגדירים את כתובת האימייל ב-JIRA או ב-FORGE. מחליפים את הכתובת בכתובת האימייל שלכם.

export FORGE_EMAIL=your-email

מגדירים את טוקן ה-API של Forge. מחליפים את הטוקן של JIRA API.

export FORGE_API_TOKEN=your-jira-api-token

מריצים את הפקודה הבאה כדי לבדוק את ה-CLI של Forge. עונים No כשמתבקשים לאסוף נתוני ניתוח.

forge settings set usage-analytics false

בודקים אם אתם מחוברים לחשבון.

forge whoami

פלט לדוגמה.

Logged in as John Green (johngreen@email.com)
Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd

יצירת אפליקציה ב-Forge

בודקים שאתם נמצאים בתיקייה ~/genai-for-developers.

מריצים את הפקודה כדי ליצור אפליקציה ב-Forge.

forge create

כשמוצגת בקשה, מזינים את הערכים הבאים:

  • שם האפליקציה: devai-jira-ui-qwiklabs
  • בוחרים קטגוריה: UI Kit
  • בוחרים מוצר: Jira
  • בוחרים תבנית: jira-issue-panel

bc94e2da059f15cf.png

עוברים לתיקיית האפליקציה.

cd devai-jira-ui-qwiklabs/

מריצים את הפקודה כדי להתקין את יחסי התלות.

npm install

מריצים את פקודת הפריסה.

forge deploy

פלט לדוגמה:

Deploying your app to the development environment.
Press Ctrl+C to cancel.

Running forge lint...
No issues found.

✔ Deploying devai-jira-ui-qwiklabs to development...

ℹ Packaging app files
ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

מתקינים את האפליקציה.

forge install

כשמוצגת בקשה, מזינים את הערכים הבאים:

  • בוחרים מוצר: Jira
  • מזינים את כתובת ה-URL של האתר: your-domain.atlassian.net

פלט לדוגמה:

Select the product your app uses.

? Select a product: Jira

Enter your site. For example, your-domain.atlassian.net

? Enter the site URL: genai-for-developers.atlassian.net

Installing your app onto an Atlassian site.
Press Ctrl+C to cancel.

? Do you want to continue? Yes

✔ Install complete!

Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net

פותחים את אתר JIRA ויוצרים משימה חדשה ב-JIRA עם התיאור הבא:

Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.

כשפותחים את המשימה, מופיע הלחצן devai-jira-ui-qwiklabs.

לוחצים על הלחצן ובודקים את השינויים בממשק המשתמש.

a64378e775125654.png

הצגת יומני הקצה העורפי של Forge.

forge logs

Atlassian Developer Console

אפשר גם להציג ולנהל אפליקציות שנפרסו ב-Atlassian Developer Console.

10281496d8181597.png

בדיקת היומנים – עוברים לסביבה Development,

d5c3b1a18dee166e.png

בדיקת המניפסט וקוד המקור של אפליקציית Forge

פותחים את הקובץ devai-jira-ui-qwiklabs/manifest.yml ומשתמשים ב-Gemini Code Assist כדי להסביר את ההגדרה.

8710dc7cd343a6a4.png

קוראים את ההסבר.

e4c9052a0337527d.png

פותחים את הקבצים הבאים ומבקשים מ-Gemini Code Assist להסביר אותם:

  • devai-jira-ui-qwiklabs/src/frontend/index.jsx
  • devai-jira-ui-qwiklabs/src/resolvers/index.js

3283420f190cda21.png

עדכון אפליקציית Forge באמצעות נקודת קצה של DevAI API ב-Cloud Run

בודקים אם מזהה הפרויקט ב-GCP מוגדר:

gcloud config get project

אם לא, מגדירים את פרויקט GCP באמצעות מזהה הפרויקט שבדף של סדנת Qwiklabs:

לדוגמה: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

מגדירים את כתובת ה-URL של שירות Cloud Run:

export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")

forge variables set DEVAI_API_URL $DEVAI_API_URL

מגדירים את מפתח ה-API של DEVAI:

export DEVAI_API_KEY=api-key-that-you-created

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

מאשרים על ידי הפעלת הפקודה הבאה:

forge variables list

פלט לדוגמה

f63a751f0d6211ff.png

עדכון המניפסט והקוד של אפליקציית Forge

קטעי הקוד האלה נמצאים במאגר בתיקייה sample-devai-jira-ui.

פותחים את קובץ המניפסט בעורך: devai-jira-ui-qwiklabs/manifest.yml

מוסיפים את השורות הבאות בסוף הקובץ – מחליפים את נקודת הקצה של Cloud Run בנקודה שהפרסתם.

permissions:
  scopes:
    - read:jira-work
    - write:jira-work
  external:
    fetch:
      client:
        - devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # replace with YOUR CLOUD RUN URL

פותחים את קובץ המפַתח/האינדקס בעורך: devai-jira-ui-qwiklabs/src/resolvers/index.js

מוסיפים את השורות הבאות אחרי הפונקציה getText הקיימת.

resolver.define('getApiKey', (req) => {
 
return process.env.DEVAI_API_KEY;
});

resolver
.define('getDevAIApiUrl', (req) => {
 
return process.env.DEVAI_API_URL;
});

פותחים את הקובץ frontend/index בעורך: devai-jira-ui-qwiklabs/src/frontend/index.jsx

מחליפים את index.jsx בתוכן שבהמשך. מעדכנים את הקישור למזהה המשתמש או למאגר ב-GitLab.

יש שני מקומות שבהם צריך לעדכן את YOUR-GIT-USERID ואת YOUR-GIT-REPO.

מחפשים את השורה הזו בקובץ ומבצעים את השינויים:

https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests

import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';

const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")


const App = () => {
 
const context = useProductContext();

 
const [description, setDescription] = React.useState();

 
const fetchDescriptionForIssue = async () => {
   
const issueId = context?.extension.issue.id;
 
   
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
   
const data = await res.json();
   
   
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

   
const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
     
{
       
body: bodyGenerateData,
       
method: 'post',
       
headers: {
         
'Content-Type': 'application/json',
         
'x-devai-api-key': devAIApiKey,
         
},
     
}
   
)

   
const resData = await generateRes.text();

   
// Add link to the GitLab merge request page as a comment
   
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
     
method: 'POST',
     
headers: {
       
'Accept': 'application/json',
       
'Content-Type': 'application/json'
     
},
     
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
   
});


   
return "Response will be added as a comment. Please refresh in a few moments.";
 
};

 
React.useEffect(() => {
   
if (context) {
     
fetchDescriptionForIssue().then(setDescription);
   
}
 
}, [context]);

 
return (
    <>
      <
Text>{description}</Text>
      <
Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
   
</>
 
);
};

ForgeReconciler.render(
  <
React.StrictMode>
    <
App />
 
</React.StrictMode>
);

פריסה מחדש של אפליקציית Forge

מוסיפים יחסי תלות בקובץ package.json:

"@forge/api": "4.0.0",

מריצים את הפקודה כדי להתקין את יחסי התלות:

npm install

פורסים את האפליקציה המעודכנת:

forge deploy

פלט לדוגמה:

ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

We've detected new scopes or egress URLs in your app.
Run forge install --upgrade and restart your tunnel to put them into effect.

התקנת האפליקציה המעודכנת:

forge install --upgrade

ef17c7da9b2962d8.png

פלט לדוגמה:

Upgrading your app on the Atlassian site.

Your app will be upgraded with the following additional scopes:
- read:jira-work
- write:jira-work

Your app will exchange data with the following urls:
- devai-api-7su2ctuqpq-uc.a.run.app

? Do you want to continue? Yes

✔ Upgrade complete!

Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.

בדיקת אפליקציית Forge

פותחים משימה קיימת ב-JIRA או יוצרים משימה חדשה בפרויקט ב-JIRA.

אם כבר הוספתם את הלוח הקודם, תצטרכו להסיר אותו.

לוחצים על ... ובוחרים באפשרות 'הסרה' בתפריט. לאחר מכן, אפשר ללחוץ שוב על הלחצן.

460503e8b2014b52.png

בדיקת התגובות ב-Jira

לאחר קבלת תשובה מ-DEVAI API, תתווסף תגובה לבקשה ב-JIRA.

  • קישור לבקשת המיזוג ב-GitLab

עוברים בין הכרטיסיות History ו-Comments כדי לרענן את התצוגה.

9539d2bd3cbdad28.png

אימות בקשת המיזוג ב-GitLab

פותחים את GitLab ובודקים אם יש בקשות מיזוג חדשות בפרויקט.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

מעקבים של LangSmith LLM

אם הגדרתם מעקב LLM, פותחים את LangSmith portal ובודקים את המעקב של LLM בקריאה ליצירת בקשת מיזוג ב-GitLab.

דוגמה למעקב אחר LLM של LangSmith.

1ae0f88ab885f69.png

9.‏ דחיפת השינויים למאגר ב-GitHub

(קטע אופציונלי)

נכנסים לאתר של GitHub ויוצרים מאגר חדש כדי לדחוף את השינויים של הסדנה הזו למאגר האישי שלכם.

חוזרים למסוף Cloud ומגדירים את שם המשתמש ואת כתובת האימייל של Git.

מעדכנים את הערכים לפני שמריצים את הפקודות.

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

יוצרים מפתח SSH ומוסיפים אותו למאגר ב-GitHub.

מעדכנים את כתובת האימייל לפני שמריצים את הפקודות.

אין להזין ביטוי סיסמה ולהקיש על Enter כמה פעמים כדי להשלים את יצירת המפתח.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"

ssh
-add ~/.ssh/id_ed25519

cat
~/.ssh/id_ed25519.pub

מוסיפים את המפתח הציבורי שנוצר לחשבון GitHub.

פותחים את https://github.com/settings/keys ולוחצים על New SSH key.

בשם המפתח, מזינים 'qwiklabs-key' ומעתיקים/מדביקים את הפלט מהפקודה האחרונה.

חוזרים לטרמינל, שומרים את השינויים ודוחפים אותם.

cd ~/genai-for-developers

git remote rm origin

מגדירים את המקור המרוחק באמצעות המאגר שנוצר למעלה.

מחליפים את הכתובת בכתובת ה-URL של המאגר.

git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git

מוסיפים, שומרים ודוחפים את השינויים.

git add .

git commit
-m "lab changes"

git push
-u origin main

10.‏ מעולה!

כל הכבוד, סיימת את שיעור ה-Lab!

הנושאים שעסקנו בהם:

  • איך לפרוס אפליקציות של Cloud Run כדי לשלב אותן עם ממשקי Gemini API.
  • איך יוצרים ומפרסים אפליקציה של Atlassian Forge ל-JIRA.
  • איך משתמשים ב-LangChain ReAct Agents לאוטומציה של משימות ב-GitLab.
  • איך בודקים את עקבות ה-LLM ב-LangSmith.

השלב הבא:

  • בקרוב נוסיף עוד סשנים מעשיים.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

©2024 Google LLC כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. שמות של חברות ומוצרים אחרים עשויים להיות סימנים מסחריים של החברות, בהתאמה, שאליהן הם משויכים.