1. بررسی اجمالی
در این آزمایشگاه، راه حلی برای خودکارسازی اجرای داستان های استفاده از JIRA با GenAI خواهید ساخت.
آنچه خواهید آموخت
چندین بخش اصلی در آزمایشگاه وجود دارد:
- برنامه Cloud Run را برای ادغام با API های Gemini اجرا کنید
- برنامه Atlassian Forge را برای JIRA ایجاد و اجرا کنید
- LangChain ReAct Agents برای اتوماسیون وظایف GitLab
پیش نیازها
- این آزمایشگاه آشنایی با محیط های Cloud Console و Cloud Shell را فرض می کند.
2. راه اندازی و الزامات
راه اندازی پروژه ابری
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
راه اندازی محیط
چت Gemini را باز کنید.
یا «Ask Gemini» را در نوار جستجو تایپ کنید.
فعال کردن Cloud AI Companion API:
روی " Start chatting
" کلیک کنید و یکی از نمونه سوالات را دنبال کنید یا درخواست خود را تایپ کنید تا آن را امتحان کنید.
درخواست برای امتحان کردن:
- Cloud Run را در 5 نکته کلیدی توضیح دهید.
- شما مدیر محصول Google Cloud Run هستید، Cloud Run را در 5 نکته کلیدی کوتاه برای دانش آموز توضیح دهید.
- شما مدیر محصول Google Cloud Run هستید، در 5 نکته کلیدی کوتاه، Cloud Run را به یک توسعه دهنده معتبر Kubernetes توضیح دهید.
- شما مدیر محصول Google Cloud Run هستید، توضیح دهید که چه زمانی از Cloud Run در مقابل GKE برای یک برنامه نویس ارشد در 5 نکته کلیدی کوتاه استفاده می کنید.
برای کسب اطلاعات بیشتر در مورد نوشتن دستورات بهتر ، راهنمای درخواست را بررسی کنید.
Gemini for Google Cloud چگونه از داده های شما استفاده می کند
تعهد حریم خصوصی Google
Google یکی از اولین شرکتهایی در این صنعت بود که تعهد حفظ حریم خصوصی AI/ML را منتشر کرد، که این اعتقاد ما را نشان میدهد که مشتریان باید بالاترین سطح امنیت و کنترل را بر دادههای ذخیرهشده در ابر داشته باشند.
داده هایی که ارسال و دریافت می کنید
به سؤالاتی که از Gemini میپرسید، از جمله اطلاعات ورودی یا کدی که برای تجزیه و تحلیل یا تکمیل به Gemini ارسال میکنید، درخواستها گفته میشود. پاسخ ها یا تکمیل کدهایی که از جمینی دریافت می کنید، پاسخ نامیده می شوند. Gemini از دستورات یا پاسخ های شما به عنوان داده برای آموزش مدل های خود استفاده نمی کند .
رمزگذاری دستورات
هنگامی که درخواستهایی را به Gemini ارسال میکنید، دادههای شما در حین انتقال به عنوان ورودی مدل اصلی در Gemini رمزگذاری میشوند .
داده های برنامه تولید شده از Gemini
Gemini روی کدهای Google Cloud شخص اول و همچنین کدهای شخص ثالث منتخب آموزش دیده است. شما مسئول امنیت، آزمایش و اثربخشی کد خود هستید ، از جمله هر گونه تکمیل، تولید یا تجزیه و تحلیل کدی که Gemini به شما ارائه می دهد.
بیشتر بیاموزید که چگونه Google با درخواستهای شما برخورد میکند.
3. گزینه هایی برای آزمایش فرمان ها
شما چندین گزینه برای آزمایش دستورات دارید.
Vertex AI Studio بخشی از پلتفرم Vertex AI Google Cloud است که به طور خاص برای ساده سازی و تسریع توسعه و استفاده از مدل های هوش مصنوعی مولد طراحی شده است.
Google AI Studio یک ابزار مبتنی بر وب برای نمونه سازی و آزمایش با مهندسی سریع و Gemini API است.
- برنامه وب جمینی (gemini.google.com)
برنامه وب Google Gemini (gemini.google.com) یک ابزار مبتنی بر وب است که برای کمک به شما در کشف و استفاده از قدرت مدلهای هوش مصنوعی Gemini Google طراحی شده است.
- اپلیکیشن موبایل گوگل جمینی برای اندروید و اپلیکیشن گوگل در iOS
4. (بخش اختیاری) حساب سرویس ایجاد کنید
این مراحل در طول راه اندازی آزمایشگاه اجرا شدند - نیازی به اجرای آنها ندارید.
این مراحل برای نشان دادن نحوه راهاندازی حساب سرویس و نقشهای IAM گنجانده شدهاند.
به Google Cloud Console برگردید و Cloud Shell را با کلیک بر روی نماد سمت راست نوار جستجو فعال کنید.
در ترمینال باز شده، دستورات زیر را برای ایجاد یک حساب سرویس و کلیدهای جدید اجرا کنید.
از این حساب سرویس برای برقراری تماس های 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'
KEY_FILE_NAME='vertex-client-key'
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"
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
اگر از شما خواسته شد که مجوز دهید، برای ادامه روی "مجوز" کلیک کنید.
برای استفاده از Vertex AI API و Gemini، سرویس های مورد نیاز را فعال کنید.
gcloud services enable \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
برای استفاده از Vertex AI API و 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
(پایان بخش اختیاری)
5. اجازه دسترسی به ایستگاه های کاری ابری
ایستگاه های کاری Cloud را در Cloud Console باز کنید.
به دانشجوی Qwiklabs ارائه شده به Cloud Workstation اجازه دسترسی بدهید.
نام کاربری/ایمیل Qwiklabs که برای این پروژه ایجاد شده است را کپی کنید و از آن برای اضافه کردن یک اصل استفاده کنید. ایستگاه کاری را انتخاب کنید و روی " PERMISSIONS
" کلیک کنید.
جزئیات را در زیر ببینید.
روی دکمه " ADD PRINCIPAL
" کلیک کنید.
ایمیل دانشجوی Qwiklabs را جایگذاری کنید و نقش « Cloud Workstations User
» را انتخاب کنید.
روی " Start
" و سپس " Launch
" کلیک کنید تا ایستگاه کاری باز شود و مراحل زیر را با استفاده از ترمینال داخلی ادامه دهید.
کلون کردن مخزن GitHub
یک پوشه ایجاد کنید و مخزن GitHub را کلون کنید.
mkdir github
cd github
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
با استفاده از آیتم منو " File / Open Folder
"، " github/genai-for-developers
" را باز کنید.
6. Gemini Code Assist را فعال کنید
روی نماد "جمینی" کلیک کنید، در گوشه سمت راست پایین، روی " Login to Google Cloud
" کلیک کنید.
برای شروع جریان مجوز روی پیوند در ترمینال کلیک کنید.
برای دنبال کردن پیوند، روی "باز کردن" کلیک کنید.
حساب دانشجویی Qwiklabs خود را انتخاب کنید و روی "ورود به سیستم" در صفحه بعدی کلیک کنید.
کپی کد تایید:
به ترمینال برگردید و کد را جایگذاری کنید.
منتظر بمانید تا احراز هویت کامل شود و سپس روی «انتخاب یک پروژه Google» کلیک کنید.
از پنجره بازشو، پروژه Qwiklabs خود را انتخاب کنید.
مثال:
فایل " devai-api/app/routes.py
" را باز کنید و سپس در هر نقطه از فایل کلیک راست کرده و " Gemini > Explain
this"
را از منوی زمینه انتخاب کنید.
توضیحات Gemini را برای فایل انتخابی مرور کنید.
7. جعبه ابزار LangChain
LangChain Toolkits مجموعهای از ابزارها هستند که برای سادهسازی و بهبود توسعه برنامهها با LangChain طراحی شدهاند. آنها بسته به جعبه ابزار خاص عملکردهای مختلفی را ارائه می دهند، اما به طور کلی در موارد زیر کمک می کنند:
- اتصال به منابع داده خارجی : به اطلاعات APIها، پایگاههای داده و سایر منابع خارجی دسترسی پیدا کرده و در برنامههای LangChain خود قرار دهید.
- تکنیکهای پیشنهادی پیشرفته : از دستورات از پیش ساخته شده استفاده کنید یا موارد سفارشی را برای بهینهسازی تعامل با مدلهای زبان ایجاد کنید.
- ایجاد و مدیریت زنجیره : زنجیره های پیچیده را به راحتی بسازید و آنها را به طور موثر مدیریت کنید.
- ارزیابی و نظارت : عملکرد برنامه ها و زنجیره های LangChain خود را تجزیه و تحلیل کنید.
برخی از ابزارهای محبوب LangChain عبارتند از:
- Agent Executor Toolkits : ابزارهایی برای توسعه عواملی که می توانند از طریق اقداماتی مانند مرور وب یا اجرای کد با دنیای واقعی تعامل داشته باشند.
- جعبه ابزار مهندسی سریع : مجموعه ای از منابع برای ایجاد اعلان های مؤثر.
جعبه ابزار GitLab
در این آزمایشگاه، از GitLab Toolkit برای خودکارسازی درخواست ادغام GitLab استفاده خواهید کرد.
جعبه ابزار Gitlab شامل ابزارهایی است که یک عامل LLM را قادر می سازد با یک مخزن gitlab تعامل داشته باشد. این ابزار یک پوشش برای کتابخانه python-gitlab
است.
جعبه ابزار GitLab می تواند وظایف زیر را انجام دهد:
- ایجاد فایل - یک فایل جدید در مخزن ایجاد می کند.
- Read File - فایلی را از مخزن می خواند.
- به روز رسانی فایل - یک فایل را در مخزن به روز می کند.
- ایجاد درخواست کشش - یک درخواست کشش از شاخه کاری ربات به شاخه پایه ایجاد می کند.
- دریافت Issue s - مسائل را از مخزن واکشی می کند.
- دریافت مشکل - جزئیات مربوط به یک مشکل خاص را واکشی می کند.
- نظر در مورد مسئله - نظری را در مورد یک موضوع خاص ارسال می کند.
- حذف فایل - یک فایل را از مخزن حذف می کند.
8. مخزن GitLab و پیکربندی Toolkit
GitLab را باز کنید، یک پروژه عمومی جدید ایجاد کنید و Token Access Token را در قسمت " Settings / Access Tokens
" راه اندازی کنید.
از جزئیات زیر استفاده کنید:
- نام رمز:
devai-api-qwiklabs
- نقش:
Maintainer
- دامنه ها را انتخاب کنید:
api
مقدار Access Token را در یک فایل موقت روی لپتاپ خود کپی و جایگذاری کنید، در مراحل بعدی استفاده میشود.
یک شاخه جدید " devai
" از شاخه " main
" در زیر " Code / Branches
" ایجاد کنید.
9. برای استقرار برنامه در Cloud Run آماده شوید
به نمونه Cloud Workstations برگردید و از یک ترمینال موجود یا باز کردن یک ترمینال جدید استفاده کنید.
اعتبار دسترسی برای حساب کاربری خود را از طریق یک جریان مجوز مبتنی بر وب دریافت کنید.
روی لینک کلیک کنید و مراحل تولید کد تایید را دنبال کنید.
gcloud auth login
جزئیات پروژه را با استفاده از جزئیات پروژه 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
است. این روشی مطمئن برای تنظیم متغیرهای محیطی بدون نمایش مقدار در تاریخچه دستورات کنسول است. پس از اجرای آن باید مقدار را Paste کرده و اینتر را بزنید.
این دستور از شما می خواهد که نام کاربری و نام مخزن GitLab خود را به روز کنید.
مثال: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"
export GITLAB_REPOSITORY="USERID/REPOSITORY"
بقیه متغیرهای محیط را تنظیم کنید:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
10. پیکربندی ردیابی LangSmith LLM
یک حساب LangSmith ایجاد کنید و یک کلید Service API در بخش تنظیمات ایجاد کنید. https://docs.smith.langchain.com/
متغیرهای محیطی مورد نیاز برای ادغام LangSmith را تنظیم کنید.
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
11. پیکربندی 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"
12. Devai-API را در Cloud Run اجرا کنید
بررسی کنید که در پوشه مناسب هستید.
cd ~/github/genai-for-developers/devai-api
برای این آزمایشگاه، ما بهترین شیوهها را دنبال میکنیم و از Secret Manager برای ذخیره و ارجاع به Access Token و LangChain API Key در Cloud Run استفاده میکنیم.
رمز دسترسی JIRA را در Secret Manager ذخیره کنید.
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
رمز دسترسی GitLab را در Secret Manager ذخیره کنید.
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
کلید API LangChain را در مدیر مخفی ذخیره کنید.
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
استقرار برنامه در Cloud Run
gcloud beta 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 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" \
--min-instances=1 \
--max-instances=3 \
--service-min-instances=1
برای ایجاد مخزن Artifact Registry Docker به Y
پاسخ دهید.
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=.
جریان زیر بیشتر بدانید .
در پشت صحنه، این دستور buildpacks
های Google Cloud و Cloud Build
برای ساخت خودکار تصاویر کانتینر از کد منبع شما بدون نیاز به نصب Docker بر روی دستگاه یا تنظیم buildpacks یا Cloud Build استفاده می کند. یعنی فرمان واحدی که در بالا توضیح داده شد، کاری را انجام می دهد که در غیر این صورت gcloud builds submit
و دستورات gcloud run deploy
نیاز دارد.
اگر Dockerfile را ارائه کردهاید (که ما در این مخزن انجام دادیم)، Cloud Build از آن برای ساخت تصاویر کانتینر در مقابل تکیه بر بستههای ساخت برای شناسایی و ساخت خودکار تصاویر کانتینر استفاده میکند. برای کسب اطلاعات بیشتر در مورد buildpack ها، مستندات را بررسی کنید.
گزارشهای Cloud Build را در کنسول مرور کنید.
تصویر داکر ایجاد شده را در آرتیفکت رجیستری بررسی کنید.
cloud-run-source-deploy/devai-api
را باز کنید و آسیب پذیری هایی را که به طور خودکار شناسایی شده اند بررسی کنید. مواردی را که دارای رفع مشکل هستند بررسی کنید و ببینید که چگونه می توان بر اساس توضیحات آن را برطرف کرد.
جزئیات نمونه Cloud Run را در Cloud Console مرور کنید.
نقطه پایانی را با اجرای دستور curl تست کنید.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "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."}' \
$(gcloud run services list --filter="(devai-api)" --format="value(URL)")/generate
(بخش اختیاری) ایستگاه کاری Cloud را راه اندازی کنید
Cloud Workstations محیط های توسعه مدیریت شده را در Google Cloud با امنیت داخلی و محیط های توسعه از پیش پیکربندی شده و در عین حال قابل تنظیم ارائه می دهد. به جای اینکه توسعه دهندگان خود را ملزم به نصب نرم افزار و اجرای اسکریپت های راه اندازی کنید، می توانید یک پیکربندی ایستگاه کاری ایجاد کنید که محیط شما را به روشی تکرارپذیر مشخص کند. هر بهروزرسانی پیکربندی ایستگاه کاری بهطور خودکار در دفعه بعد که ایستگاههای کاری شروع به کار میکنند، اعمال میشود. توسعه دهندگان از طریق یک IDE مبتنی بر مرورگر، از چندین ویرایشگر کد محلی (مانند VSCode یا JetBrains IDE مانند IntelliJ IDEA Ultimate و PyCharm Professional) یا از طریق SSH به ایستگاه های کاری دسترسی دارند.
Cloud Workstation از منابع Google Cloud زیر برای مدیریت محیط های توسعه شما استفاده می کند:
- خوشه های ایستگاه کاری گروهی از ایستگاه های کاری را در یک منطقه خاص و شبکه VPC که به آن متصل هستند تعریف می کنند. خوشههای ایستگاه کاری به خوشههای Google Kubernetes Engine (GKE) مرتبط نیستند.
- پیکربندی ایستگاه های کاری به عنوان الگو برای ایستگاه های کاری عمل می کند. پیکربندی ایستگاه کاری جزئیاتی مانند نوع نمونه ماشین مجازی ایستگاه کاری (VM)، ذخیره سازی دائمی، محیط تعریف کننده تصویر ظرف، IDE یا ویرایشگر کد برای استفاده و موارد دیگر را تعریف می کند. مدیران و تیمهای پلتفرم همچنین میتوانند از قوانین مدیریت هویت و دسترسی (IAM) برای اعطای دسترسی به تیمها یا توسعهدهندگان فردی استفاده کنند.
- ایستگاه های کاری محیط های توسعه از پیش پیکربندی شده ای هستند که یک IDE ابری، ابزار زبان، کتابخانه ها و موارد دیگر را ارائه می کنند. ایستگاههای کاری میتوانند در صورت تقاضا راهاندازی یا متوقف شوند، و در پروژه شما روی ماشینهای مجازی موتور محاسباتی اجرا شوند، با یک دیسک دائمی که برای ذخیره دادهها بین جلسات متصل است.
مدیران و تیمهای پلتفرم پیکربندیهای ایستگاه کاری را ایجاد میکنند که با تیم توسعه خود به اشتراک میگذارند. هر توسعه دهنده یک ایستگاه کاری بر اساس پیکربندی ایستگاه کاری ایجاد می کند.
در این آزمایشگاه شما از IDE مبتنی بر مرورگر استفاده میکنید، اما ایستگاههای کاری ابری از دیگر رابطهای توسعه رایج نیز پشتیبانی میکنند:
- شما می توانید از طریق JetBrains Gateway از IDE های JetBrains محلی خود استفاده کنید
- اگر از VSCode محلی استفاده میکنید، میتوانید از طریق SSH به ایستگاههای کاری خود برای توسعه از راه دور نیز دسترسی داشته باشید.
- شما همچنین می توانید تونل های SSH و حتی TCP را در ایستگاه کاری خود از دستگاه محلی خود راه اندازی کنید
(بخش اختیاری) خوشه ایستگاه های کاری را ایجاد کنید
این مراحل در طول راه اندازی آزمایشگاه اجرا شدند - نیازی به اجرای آنها ندارید.
این مراحل برای نشان دادن نحوه تنظیم Cloud Workstations Cluster، Configuration و Workstation گنجانده شده است.
این بخش را مرور کنید و به بخش Forge Platform بروید.
ایجاد خوشه ایستگاه های کاری:
gcloud workstations clusters create ws-cluster --region=us-central1
ایجاد تنظیمات ایستگاه های کاری
gcloud workstations configs create devai-config \
--cluster=ws-cluster \
--machine-type=e2-standard-8 \
--region=us-central1 \
--running-timeout=21600 \
--idle-timeout=1800 \
--container-predefined-image=codeoss \
--pd-disk-size=200 \
--pd-disk-type=pd-standard \
--service-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com \
--pool-size=1
ایجاد ایستگاه کاری
gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1
ایستگاه های کاری موجود را در Cloud Console مشاهده کنید. " devai-workstation
" را شروع و راه اندازی کنید.
" Gemini
" را در گوشه سمت راست پایین فعال کنید، جریان ورود به سیستم را در برگه مرورگر جدید دنبال کنید و کد تولید شده را دوباره در کنسول کپی کنید تا ورود به سیستم کامل شود.
چت « Gemini
» را در پنل سمت چپ باز کنید و از جمینی بپرسید:
" You are a Cloud Workstations Product Manager, tell me about Cloud Workstations
".
" You are Cloud Workstations Product Manager, Can I create my custom Cloud Workstations image with my company tools so new developers can onboard in minutes?
".
(پایان بخش اختیاری)
13. سکوی فورج
Forge پلتفرمی است که به توسعه دهندگان این امکان را می دهد تا برنامه هایی بسازند که با محصولات Atlassian مانند Jira، Confluence، Compass و Bitbucket یکپارچه شوند.
Forge CLI را نصب کنید
دستورات زیر را در ترمینال اجرا کنید.
Node Version Manager ( nvm ) را دانلود کنید و آن را در مسیر در جلسه ترمینال فعلی در دسترس قرار دهید.
cd ~/github/genai-for-developers
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm را نصب کنید.
آخرین نسخه Node.js LTS را با اجرای موارد زیر در ترمینال انتخاب کنید:
nvm install --lts
nvm use --lts
Forge CLI را با اجرای:
npm install -g @forge/cli
برای این آزمایشگاه، از متغیرهای محیطی برای ورود استفاده خواهیم کرد.
راه اندازی پروژه JIRA
از حساب شخصی خود برای ایجاد/مشاهده پروژه های JIRA استفاده کنید.
پروژه های JIRA موجود خود را مرور کنید: https://admin.atlassian.com/
با استفاده از حساب شخصی خود یک پروژه جدید JIRA ایجاد کنید.
به https://team.atlassian.com/your-work بروید و کلیک کنید و سپس انتخاب کنید
. پس از آن، "JIRA Software" - "Try it now" را انتخاب کنید. برای تکمیل ساخت پروژه/سایت، دستورات را دنبال کنید.
نرم افزار JIRA را انتخاب کنید.
یک پروژه جدید ایجاد کنید.
14. توکن Atlassian API
یک نشانه Atlassian API برای ورود به CLI ایجاد یا استفاده کنید.
CLI هنگام اجرای دستورات از رمز شما استفاده می کند.
- به https://id.atlassian.com/manage/api-tokens بروید.
- روی ایجاد نشانه API کلیک کنید.
- یک برچسب برای توصیف نشانه API خود وارد کنید. مثلا forge-api-token.
- روی ایجاد کلیک کنید.
- روی Copy to clipboard کلیک کنید و کادر گفتگو را ببندید.
دستور زیر را در ترمینال Cloud Workstations اجرا کنید.
برای شروع استفاده از دستورات Forge وارد Forge CLI شوید.
آدرس ایمیل JIRA/FORGE خود را تنظیم کنید. با آدرس ایمیل خود جایگزین کنید.
export FORGE_EMAIL=your-email
رمز Forge API را تنظیم کنید. با توکن JIRA API خود جایگزین کنید.
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
بررسی کنید که در پوشه " ~/github/genai-for-developers
" هستید.
برای ایجاد یک برنامه Forge دستور را اجرا کنید.
forge create
در صورت درخواست از مقادیر زیر استفاده کنید:
- نام برنامه:
devai-jira-ui-qwiklabs
- یک دسته را انتخاب کنید:
UI Kit
- انتخاب یک محصول:
Jira
- یک الگو را انتخاب کنید:
jira-issue-panel
به پوشه برنامه تغییر دهید.
cd devai-jira-ui-qwiklabs/
دستور استقرار را اجرا کنید.
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
- آدرس سایت را وارد کنید:
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
" را خواهید دید.
روی دکمه کلیک کنید و تغییرات را در UI بررسی کنید.
مشاهده سیاهههای مربوط به جعل باطن.
forge logs
کنسول توسعه دهنده Atlassian
همچنین میتوانید برنامههای مستقر شده را در Atlassian Developer Console مشاهده و مدیریت کنید.
بررسی گزارشها - تغییر به محیط Development
،
مانیفست برنامه Forge و کد منبع را مرور کنید
فایل " devai-jira-ui-qwiklabs/manifest.yml
" را باز کنید و از Gemini Code Assist برای توضیح آن استفاده کنید.
توضیح بررسی
فایل های زیر را باز کنید و از Gemini Code Assist بخواهید که آنها را توضیح دهد:
-
devai-jira-ui-qwiklabs/src/frontend/index.jsx
-
devai-jira-ui-qwiklabs/src/resolvers/index.js
برنامه Forge را با DevAI API Cloud Run بهروزرسانی کنید
بررسی کنید که آیا GCP PROJECT ID تنظیم شده است:
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
با اجرای دستور زیر تایید کنید:
forge variables list
خروجی نمونه
مانیفست و کد برنامه 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/generate # replace with YOUR CLOUD RUN URL
باز کردن فایل Resolvers/index در ویرایشگر: devai-jira-ui-qwiklabs/src/resolvers/index.js
خطوط زیر را بعد از تابع getText
موجود اضافه کنید.
resolver.define('getApiKey', (req) => {
return process.env.LLM_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 apiKey = 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 genAI = new GoogleGenerativeAI(apiKey);
// const model = genAI.getGenerativeModel({ model: "gemini-pro"});
// const prompt = `You are principal software engineer at Google and given requirements below to implement.\nPlease provide implementation details and documentation.\n\nREQUIREMENTS:\n\n${data.fields.description}`
// const result = await model.generateContent(prompt);
// const text = result.response.text();
// const jsonText = JSON.stringify(text);
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/generate',
{
body: bodyGenerateData,
method: 'post',
headers: { 'Content-Type': 'application/json' },
}
)
const resData = await generateRes.text();
const jsonText = JSON.stringify(resData);
const bodyData = `{
"body": ${jsonText}
}`;
console.log("bodyData", bodyData)
// Add Gemini response as a comment on the JIRA issue
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
// 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>
);
Redeploy برنامه Forge
استقرار برنامه به روز شده:
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
خروجی نمونه:
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 خود ایجاد کنید.
اگر پنل قبلی اضافه شده باشد، باید آن را حذف کنید.
روی « ...
» کلیک کنید و از منوی حذف را انتخاب کنید. پس از آن، می توانید دوباره بر روی دکمه کلیک کنید.
نظرات جیرا را بررسی کنید
پس از دریافت پاسخ از DEVAI API، دو نظر در مورد JIRA اضافه خواهد شد.
- درخواست ادغام GitLab
- جزئیات پیاده سازی داستان کاربر Gemini
برای تازه کردن نما، بین برگههای « History
» و « Comments
» جابهجا شوید.
ایجاد درخواست ادغام GitLab را فعال کنید
فایل devai-api/app/routes.py
را باز کنید و خطوط زیر را از نظر خارج کنید به روش generate_handler
:
print(f"{response.text}\n")
# resp_text = response.candidates[0].content.parts[0].text
# pr_prompt = f"""Create GitLab merge request using provided details below.
# Create new files, commit them and push them to opened merge request.
# When creating new files, remove the lines that start with ``` before saving the files.
# DETAILS:
# {resp_text}
# """
# print(pr_prompt)
# agent.invoke(pr_prompt)
Redeploy برنامه Cloud Run
بررسی کنید که در پوشه مناسب هستید.
cd ~/github/genai-for-developers/devai-api
اگر از همان جلسه ترمینال استفاده می کنید، ممکن است همه متغیرهای محیطی هنوز تنظیم شده باشند.
با اجرای " echo $GITLAB_REPOSITORY
" در ترمینال آن را بررسی کنید.
اگر جلسه ترمینال جدیدی باز شد، این مراحل را دنبال کنید تا آنها را بازنشانی کنید.
قبل از استقرار مجدد برنامه، مطمئن شوید که متغیرهای محیط مورد نیاز را بازنشانی کنید.
این دستور از شما می خواهد که نام کاربری و نام مخزن GitLab خود را به روز کنید.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
بقیه متغیرهای محیط را تنظیم کنید:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
export PROJECT_ID=$(gcloud config get-value project)
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
جعبه ابزار GitLab از شاخه " devai
" برای فشار دادن تغییرات برای درخواست ادغام استفاده خواهد کرد.
بررسی کنید که قبلاً آن شعبه را ایجاد کرده اید.
استقرار برنامه در Cloud Run
gcloud beta 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 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" \
--min-instances=1 \
--max-instances=3 \
--service-min-instances=1
ادغام پایان به انتها را تأیید کنید
با کلیک مجدد روی دکمه، فرآیند را از کار JIRA شروع کنید و خروجی را در مخزن GitLab، در بخش درخواست Merge و LangSmith تأیید کنید.
جزئیات درخواست ادغام GitLab.
ردیابی لانگ اسمیت LLM
پورتال LangSmith را باز کنید و ردیابی LLM را برای فراخوان ایجاد شماره JIRA بررسی کنید.
نمونه ردیابی LangSmith LLM.
GitLab Toolkit شاخههای جدیدی ایجاد نمیکند و اگر میخواهید فرآیند را دوباره اجرا کنید، باید به صورت دستی کارهای زیر را انجام دهید.
- بستن درخواست ادغام در GitLab
- شعبه "
devai
" موجود در مخزن GitLab را حذف کنید و سپس یک شاخه جدید ایجاد کنید.
(بخش اختیاری) تغییرات خود را به مخزن GitHub فشار دهید
به وب سایت GitHub بروید و یک مخزن جدید ایجاد کنید تا تغییرات مربوط به این آزمایشگاه را در مخزن شخصی خود اعمال کنید.
به نمونه Cloud Workstations برگردید و نام کاربری و ایمیل Git را در ترمینال تنظیم کنید.
قبل از اجرای دستورات، مقادیر را به روز کنید.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
کلید SSH را تولید کنید و آن را در مخزن GitHub اضافه کنید.
قبل از اجرای دستورات ایمیل خود را به روز کنید.
عبارت عبور را وارد نکنید و چندین بار اینتر را بزنید تا تولید کلید کامل شود.
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 ~/github/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
15. تبریک می گویم!
تبریک می گویم، شما آزمایشگاه را تمام کردید!
آنچه ما پوشش داده ایم:
- نحوه استقرار برنامه های Cloud Run برای ادغام با API های Gemini.
- نحوه ایجاد و استقرار برنامه Atlassian Forge برای JIRA.
- نحوه استفاده از LangChain ReAct Agents برای اتوماسیون وظایف GitLab.
- نحوه بررسی ردیابی های LLM در LangSmith.
بعدش چیه:
- جلسات عملی بیشتری در راه است!
پاک کن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، یا پروژه حاوی منابع را حذف کنید یا پروژه را نگه دارید و منابع فردی را حذف کنید.
حذف پروژه
ساده ترین راه برای حذف صورتحساب، حذف پروژه ای است که برای آموزش ایجاد کرده اید.
©2024 Google LLC همه حقوق محفوظ است. Google و لوگوی Google علائم تجاری Google LLC هستند. همه نامهای شرکت و محصولات دیگر ممکن است علائم تجاری شرکتهای مربوطه باشند که با آنها مرتبط هستند.