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

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

בשיעור ה-Lab הזה תבנו פתרון לאוטומציה של הטמעה של סיפורי משתמשים ב-JIRA באמצעות AI גנרטיבי.

a4ba5d8788dc40.png

מה תלמדו

יש כמה חלקים עיקריים במעבדה:

  • פריסת אפליקציית Cloud Run לשילוב עם Gemini APIs
  • יצירה ופריסה של אפליקציית 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. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

הגדרת הסביבה

פותחים צ'אט עם Gemini.

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.

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

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

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

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

3e0c761ca41f315e.png

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

תשתמשו בחשבון השירות הזה כדי לבצע קריאות ל-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 API ובאינטראקציה עם Gemini, צריך להפעיל את השירותים הנדרשים.

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

כדי להשתמש ב-Vertex AI APIs ובאינטראקציה עם Gemini, צריך להפעיל את השירותים הנדרשים.

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. הגדרת מאגר וערכת כלים ב-GitLab

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

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

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

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

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

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

סקירה כללית של ערכת הכלים של GitLab

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

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

  • Create File (יצירת קובץ) – יוצר קובץ חדש במאגר.
  • Read File (קריאת קובץ) – קורא קובץ מהמאגר.
  • Update File (עדכון קובץ) – מעדכן קובץ במאגר.
  • Create Pull Request (יצירת בקשת משיכה) – יוצר בקשת משיכה מענף העבודה של הבוט לענף הבסיס.
  • Get Issues – אחזור בעיות ממאגר.
  • Get Issue (קבלת בעיה) – אחזור פרטים על בעיה ספציפית.
  • Comment on Issue (הוספת תגובה לבעיה) – פרסום תגובה לבעיה ספציפית.
  • מחיקת קובץ – מחיקת קובץ מהמאגר.

הגדרת פרויקט ב-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"

הגדרת מעקב אחרי LLM ב-LangSmith

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

יוצרים חשבון LangSmith ומפיקים מפתח Service API בקטע Settings (הגדרות). 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 ומפתח LangChain API ב-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 Console.

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

בודקים את נקודת הקצה על ידי הרצת פקודת 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

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

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

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

הגדרת הגדרות סביבה ב-Forge

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

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

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

export FORGE_EMAIL=your-email

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

export FORGE_API_TOKEN=your-jira-api-token

מריצים את הפקודה הבאה כדי לבדוק את forge cli. עונים '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

פותחים את הקובץ resolvers/index בכלי העריכה: 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 חדשה בפרויקט JIRA.

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

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

460503e8b2014b52.png

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

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

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

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

9539d2bd3cbdad28.png

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

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

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

מעקבים של מודלים גדולים של שפה (LLM) ב-LangSmith

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

דוגמה לתיעוד עקבות של LLM ב-LangSmith.

1ae0f88ab885f69.png

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

(אופציונלי)

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

חוזרים ל-Cloud Console ומגדירים את שם המשתמש ואת כתובת האימייל של 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 APIs.
  • איך יוצרים ומפעילים אפליקציית Atlassian Forge ל-JIRA.
  • איך משתמשים ב-LangChain ReAct Agents לאוטומציה של משימות ב-GitLab.
  • איך בודקים עקבות של מודלים גדולים של שפה (LLM) ב-LangSmith.

השלב הבא:

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

הסרת המשאבים

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

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

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

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