تنفيذ قصص مستخدمي JIRA باستخدام الذكاء الاصطناعي التوليدي

1. نظرة عامة

في هذا الدرس، ستُنشئ حلًا لتشغيل تنفيذ قصص استخدام JIRA آليًا باستخدام الذكاء الاصطناعي التوليدي (GenAI).

5351e028356cd3ac.png

ما ستتعرّف عليه

تتضمّن التجارب عدة أجزاء رئيسية:

  • نشر تطبيق Cloud Run للدمج مع واجهات برمجة تطبيقات Gemini
  • إنشاء تطبيق Atlassian Forge ونشره في JIRA
  • LangChain ReAct Agents لأتمتة مهام GitLab

المتطلبات الأساسية

  • يفترض هذا التمرين أنّك على دراية ببيئة Cloud Console وCloud Shell.

2. الإعداد والمتطلبات

إعداد مشروع على السحابة الإلكترونية

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
  • يكون معرّف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تُنشئ وحدة تحكّم Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً معرفة محتواها. في معظم مختبرات الرموز البرمجية، ستحتاج إلى الإشارة إلى معرّف المشروع (يُعرَف عادةً باسم PROJECT_ID). إذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء معرّف آخر عشوائي. يمكنك بدلاً من ذلك تجربة عنوانك الخاص لمعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى ساريًا طوال مدة المشروع.
  • يُرجى العِلم أنّ هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات عن كلّ من هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تُكلّفك المشاركة في هذا الدليل التعليمي للترميز الكثير، إن لم يكن أيّ تكلفة على الإطلاق. لإيقاف الموارد لتجنُّب تحصيل رسوم بعد انتهاء هذا الدليل التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهّلين للاستفادة من برنامج الفترة التجريبية المجانية التي تقدّم رصيدًا بقيمة 300 دولار أمريكي.

إعداد البيئة

افتح محادثة Gemini.

bc3c899ac8bcf488.png

أو اكتب "السؤال من Gemini" في شريط البحث.

e1e9ad314691368a.png

فعِّل واجهة برمجة التطبيقات Cloud AI Companion API:

66cb6e561e384bbf.png

انقر على Start chatting واتّبِع أحد نماذج الأسئلة أو اكتب طلبك الخاص لتجربته.

5482c153eef23126.png

إليك بعض الطلبات التي يمكن تجربتها:

  • شرح Cloud Run في 5 نقاط رئيسية
  • أنت مدير منتجات Google Cloud Run، وتشرح أداة Cloud Run لطالب في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتجات Google Cloud Run، وتشرح Cloud Run لمطوّر Kubernetes معتمَد في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتجات Google Cloud Run، وتشرح لأحد كبار المطوّرين في 5 نقاط رئيسية قصيرة الحالات التي تستدعي استخدام Cloud Run بدلاً من GKE.

اطّلِع على دليل الطلبات لمعرفة مزيد من المعلومات حول كتابة طلبات أفضل.

كيف يستخدم Gemini لـ 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، وهو مصمّم خصيصًا لتبسيط وتسريع تطوير نماذج الذكاء الاصطناعي التوليدي واستخدامها.

‫Google AI Studio هي أداة مستندة إلى الويب لإنشاء النماذج الأولية والتجربة باستخدام هندسة الطلبات وواجهة برمجة التطبيقات Gemini API.

تطبيق Gemini للويب (gemini.google.com) هو أداة مستندة إلى الويب مصمّمة لمساعدتك في استكشاف إمكانات نماذج الذكاء الاصطناعي في Gemini من Google والاستفادة منها.

4. (قسم اختياري) إنشاء حساب خدمة

تم تنفيذ هذه الخطوات أثناء إعداد الميزات الاختبارية، وليس عليك تنفيذها.

تم تضمين هذه الخطوات لعرض كيفية إعداد حساب خدمة وأدوار إدارة الهوية وإمكانية الوصول.

ارجع إلى Google Cloud Console وفعِّل 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'
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

إذا طُلب منك تفويض، انقر على "تفويض" للمتابعة.

6356559df3eccdda.png

فعِّل الخدمات المطلوبة لاستخدام واجهات برمجة تطبيقات Vertex AI وGemini Chat.

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

فعِّل الخدمات المطلوبة لاستخدام واجهات برمجة تطبيقات Vertex AI و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

(END OF OPTIONAL SECTION)

5- منح إذن الوصول إلى Cloud Workstations

افتح "محطات عمل السحابة الإلكترونية" في Cloud Console.

امنح إذن الوصول إلى Cloud Workstation لطالب Qwiklabs الذي تم توفيره.

انسخ اسم المستخدم أو عنوان البريد الإلكتروني في Qwiklabs الذي تم إنشاؤه لهذا المشروع، واستخدِمه لإضافة مشرف. اختَر محطة العمل وانقر على "PERMISSIONS".

يُرجى مراجعة التفاصيل أدناه.

5cbb861e4f272f7.png

انقر على الزر "ADD PRINCIPAL".

الصِق عنوان البريد الإلكتروني الخاص بالطالب في Qwiklabs واختَر الدور "Cloud Workstations User".

dfe53b74453d80b1.png

انقر على "Start" ثم على "Launch" لفتح محطة العمل ومتابعة الخطوات التالية باستخدام الوحدة الطرفية المضمّنة.

62dccf5c78880ed9.png

استنساخ مستودع 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

انقر على رمز Gemini في أسفل يسار الصفحة، ثم انقر على Login to Google Cloud.

4a7f4640f66037f.png

8d31b61e23ebeea2.png

انقر على الرابط في وحدة التحكّم الطرفية لبدء عملية التفويض.

d8575b4066f67745.png

انقر على "فتح" للانتقال إلى الرابط.

3a7272fcb985ff5.png

اختَر حسابك كطالب على Qwiklabs وانقر على "تسجيل الدخول" في الشاشة التالية.

79dc63009ce0ed49.png

نسخ رمز التحقّق:

403845a5abc53635.png

ارجع إلى وحدة التحكّم الطرفية والصق الرمز.

5931f639fe69f5cb.png

انتظِر اكتمال عملية المصادقة، ثم انقر على "اختيار مشروع على Google".

614beb055f7aa5e8.png

من النافذة المنبثقة، اختَر مشروعك على Qwiklabs.

مثال:

70ae6837db397e2a.png

افتح الملف "devai-api/app/routes.py"، ثم انقر بزر الماوس الأيمن في أي مكان في الملف واختَر "Gemini > Explain this" من قائمة السياقات.

32b902134440b7c3.png

راجِع تفسير Gemini للملف المحدّد.

f78bfee770f6be93.png

7- مجموعات أدوات LangChain

مجموعات أدوات LangChain هي مجموعات من الأدوات المصمّمة لتبسيط تطوير التطبيقات باستخدام LangChain وتحسينه. وتوفّر هذه الأدوات وظائف مختلفة حسب مجموعة الأدوات المحدّدة، ولكن بشكل عام، تساعد في ما يلي:

  • الربط بمصادر بيانات خارجية: يمكنك الوصول إلى المعلومات من واجهات برمجة التطبيقات وقواعد البيانات وغيرها من المصادر الخارجية ودمجها في تطبيقات LangChain.
  • أساليب توجيه الطلبات المتقدّمة: استخدِم طلبات معدّة مسبقًا أو أنشئ طلبات مخصّصة لتحسين التفاعلات مع النماذج اللغوية.
  • إنشاء السلاسل وإدارتها: يمكنك إنشاء سلاسل معقدة بسهولة وإدارتها بكفاءة.
  • التقييم والمراقبة: يمكنك تحليل أداء تطبيقات LangChain وسلاسلها.

تشمل بعض حِزم LangChain Toolkits الشائعة ما يلي:

  • أدوات تنفيذ الوكيل: أدوات لتطوير وكلاء يمكنهم التفاعل مع العالم الواقعي من خلال إجراءات مثل تصفّح الويب أو تنفيذ الرموز البرمجية.
  • مجموعة أدوات هندسة الطلبات: مجموعة من المراجع لإنشاء طلبات فعّالة

مجموعة أدوات GitLab

في هذا التمرين، ستستخدم مجموعة أدوات GitLab لبرمجة إنشاء طلبات الدمج في GitLab.

تحتوي حزمة أدوات Gitlab على أدوات تتيح لوكيل LLM التفاعل مع مستودع gitlab. الأداة هي حزمة لـ مكتبة python-gitlab.

يمكن لمجموعة أدوات GitLab تنفيذ المهام التالية:

  • إنشاء ملف: لإنشاء ملف جديد في المستودع
  • قراءة ملف: لقراءة ملف من المستودع
  • تعديل الملف: لتعديل ملف في المستودع
  • إنشاء طلب سحب: لإنشاء طلب سحب من فرع العمل الخاص بالبوت إلى الفرع الأساسي
  • الحصول على المشاكل: تُستخدَم هذه الوظيفة لجلب المشاكل من المستودع.
  • الحصول على مشكلة: لعرض تفاصيل عن مشكلة معيّنة.
  • التعليق على مشكلة: لنشر تعليق بشأن مشكلة معيّنة.
  • حذف ملف: لحذف ملف من المستودع

8. إعداد مستودع GitLab ومجموعة الأدوات

افتح GitLab، وأنشئ مشروعًا متاحًا للجميع، واضبط رمز الوصول إلى المشروع ضمن "Settings / Access Tokens".

استخدِم التفاصيل التالية:

  • اسم الرمز المميّز: devai-api-qwiklabs
  • الدور: Maintainer
  • اختَر النطاقات: api

112008c7894c3a19.png

انسخ قيمة رمز الوصول والصقها في ملف مؤقت على الكمبيوتر المحمول، وسيتم استخدامها في الخطوات التالية.

9. الاستعداد لنشر التطبيق على Cloud Run

ارجع إلى مثيل "محطات عمل Cloud" واستخدِم وحدة طرفية حالية أو افتح وحدة طرفية جديدة.

9f9682d2b7317e66.png

الحصول على بيانات اعتماد الوصول إلى حساب المستخدم من خلال عملية تفويض مستندة إلى الويب

انقر على الرابط واتّبِع الخطوات لإنشاء رمز إثبات الملكية.

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، وهي طريقة آمنة لضبط متغيّرات البيئة بدون ظهور القيمة في سجلّ أوامر وحدة التحكّم. بعد تشغيله، عليك لصق القيمة والنقر على مفتاح Enter.

يتطلّب هذا الأمر تعديل معرّف مستخدم 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"

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"
export JIRA_CLOUD=true

12. نشر Devai-API على Cloud Run

تأكَّد من أنّك في المجلد الصحيح.

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

في هذا البرنامج التعليمي، نتّبع أفضل الممارسات ونستخدم مدير الأسرار لتخزين قيم الرمز المميّز للوصول ومفتاح LangChain API والإشارة إليها في Cloud Run.

تخزين رمز JIRA Access Token في 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=-

تخزين مفتاح LangChain API في أداة Secret Manager

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

انشر التطبيق على 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" \
  --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 على جهازك أو إعداد حِزم الإنشاء أو Cloud Build. وهذا يعني أنّ الأمر الوحيد الموضّح أعلاه ينفّذ ما كان سيتطلّب الأمرَين gcloud builds submit وgcloud run deploy.

إذا قدّمت ملف Dockerfile(كما فعلنا في هذا المستودع)، ستستخدمه أداة Cloud Build لإنشاء صور الحاويات بدلاً من الاعتماد على حِزم الإنشاء لرصد صور الحاويات وإنشائها تلقائيًا. لمزيد من المعلومات عن حِزم الإنشاء، اطّلِع على المستندات.

راجِع سجلّات Cloud Build في وحدة التحكّم.

راجِع صورة Docker التي تم إنشاؤها في Artifact Registry.

افتح cloud-run-source-deploy/devai-api وراجِع الثغرات التي تم رصدها تلقائيًا. اطّلِع على المشاكل التي تتوفّر لها حلول، وتعرَّف على كيفية حلّها استنادًا إلى الوصف.

d00c9434b511be44.png

راجِع تفاصيل مثيل 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 Workstation

توفّر "محطات عمل السحابة الإلكترونية" بيئات تطوير مُدارة على Google Cloud مع أمان مضمّن وبيئات تطوير مُعدّة مسبقًا وقابلة للتخصيص. بدلاً من مطالبة المطوّرين بتثبيت البرامج وتشغيل النصوص البرمجية الخاصة بالإعداد، يمكنك إنشاء إعدادات محطة عمل تحدّد بيئتك بطريقة يمكن تكرارها. يتم تطبيق أي تعديلات على إعدادات محطة عمل تلقائيًا على محطات العمل في المرة التالية التي يتم فيها تشغيلها. يمكن للمطوّرين الوصول إلى محطات العمل من خلال بيئة تطوير متكاملة مستندة إلى المتصفّح، أو من خلال عدة محرّرات رموز برمجية محلية (مثل VSCode أو أدوات JetBrains IDE مثل IntelliJ IDEA Ultimate وPyCharm Professional)، أو من خلال بروتوكول SSH.

تستخدم "محطات عمل السحابة الإلكترونية" موارد Google Cloud التالية لإدارة بيئات التطوير:

  • تحدِّد مجموعات محطات العمل مجموعة من محطات العمل في منطقة معيّنة وشبكة VPC التي تكون مرتبطة بها. لا ترتبط مجموعات محطات العمل بمجموعات Google Kubernetes Engine (GKE).
  • تعمل إعدادات محطات العمل كنماذج لمحطاتها. تحدِّد إعدادات محطة العمل تفاصيل مثل نوع مثيل الجهاز الافتراضي لمحطة العمل ومساحة التخزين الثابتة وبيئة تحديد صورة الحاوية وبيئة IDE أو "محرر الرموز البرمجية" المُستخدَمة وغير ذلك. يمكن للمشرفين وفرق المنصة أيضًا استخدام قواعد إدارة الهوية وإمكانية الوصول (IAM) لمنح إذن الوصول إلى الفِرق أو إلى مطوّرين فرديين.
  • محطات العمل هي بيئات تطوير تم إعدادها مسبقًا وتوفّر بيئة تطوير متكاملة (IDE) على السحابة الإلكترونية وأدوات لغوية ومكتبات وغير ذلك. يمكن بدء محطات العمل أو إيقافها عند الطلب، وتشغيلها على الأجهزة الافتراضية في Compute Engine في مشروعك، مع إرفاق قرص دائم لتخزين البيانات بين الجلسات.

ينشئ المشرفون وفرق المنصات إعدادات محطات العمل التي يشاركونها مع فريق التطوير. ينشئ كل مطوّر محطة عمل استنادًا إلى إعدادات محطة العمل.

810ae08acb671f4c.png

في هذا الدرس التطبيقي، ستستخدم بيئة تطوير متكاملة مستندة إلى المتصفّح، ولكن تتيح لك محطات عمل السحابة الإلكترونية أيضًا استخدام واجهات تطوير شائعة أخرى:

  • يمكنك استخدام محرّرات بيئة تطوير البرامج (IDE) المحلية من JetBrains من خلال JetBrains Gateway.
  • إذا كنت تستخدم VSCode على الجهاز، يمكنك أيضًا الوصول إلى محطات العمل لتطوير التطبيقات عن بُعد من خلال بروتوكول النقل الآمن (SSH).
  • يمكنك أيضًا إعداد نفق SSH وحتى نفق TCP إلى محطة العمل من جهازك.

fc95816682f1e3b0.png

(قسم اختياري) إنشاء مجموعة محطات عمل

تم تنفيذ هذه الخطوات أثناء إعداد الميزات الاختبارية، وليس عليك تنفيذها.

تم تضمين هذه الخطوات لعرض كيفية إعداد "مجموعة محطات عمل السحابة الإلكترونية" و"الإعداد" و"محطة العمل".

راجِع هذا القسم وانتقِل إلى قسم "منصّة Forge".

إنشاء مجموعة "محطات عمل Google":

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".

e44784811890cfc8.png

فعِّل الرمز "Gemini" في أسفل يسار الصفحة، واتّبِع خطوات تسجيل الدخول في علامة التبويب الجديدة للمتصفّح وانسخ الرمز الذي تم إنشاؤه مرة أخرى إلى وحدة التحكّم لإكمال عملية تسجيل الدخول.

افتح محادثة "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?".

8c3af1ad4e612f15.png

(END OF OPTIONAL SECTION)

13. منصة Forge

Forge هي منصّة تتيح للمطوّرين إنشاء تطبيقات مدمجة مع منتجات Atlassian، مثل Jira وConfluence وCompass وBitbucket.

eda6f59ff15df25e.png

تثبيت 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

في هذا الدرس التطبيقي، سنستخدم متغيّرات البيئة لتسجيل الدخول.

e4e4e59cf8622e3f.png

إعداد مشروع JIRA

استخدام حسابك الشخصي لإنشاء مشاريع JIRA أو عرضها

راجِع مشاريع JIRA الحالية: https://admin.atlassian.com/

أنشئ مشروع JIRA جديدًا باستخدام حسابك الشخصي.

انتقِل إلى https://team.atlassian.com/your-work وانقر على 8654143154cb8665.png، ثم اختَر 47b253090a08932.png. بعد ذلك، اختَر "JIRA Software" (برنامج JIRA) - "Try it now" (تجربته الآن). اتّبِع التعليمات لإكمال عملية إنشاء المشروع أو الموقع الإلكتروني.

5bab2a96e3b81383.png

اختَر JIRA Software.

785bc4d8bf920403.png

أنشئ مشروعًا جديدًا.

8a6e7cdc8224ffa0.png

14. الرمز المميّز لواجهة برمجة تطبيقات Atlassian

أنشئ رمزًا مميزًا حاليًا لواجهة برمجة التطبيقات Atlassian API أو استخدِمه لتسجيل الدخول إلى واجهة سطر الأوامر.

تستخدِم واجهة سطر الأوامر الرمز المميّز عند تنفيذ الأوامر.

  1. انتقِل إلى https://id.atlassian.com/manage/api-tokens.
  2. انقر على إنشاء رمز مميّز لواجهة برمجة التطبيقات.
  3. أدخِل تصنيفًا لوصف الرمز المميّز لواجهة برمجة التطبيقات. على سبيل المثال، forge-api-token.
  4. انقر على إنشاء.
  5. انقر على النسخ إلى الحافظة وأغلق مربّع الحوار.

نفِّذ الأمر أدناه في وحدة طرفية "محطات عمل السحابة الإلكترونية".

سجِّل الدخول إلى وحدة تحكّم سطر الأوامر في Forge لبدء استخدام أوامر Forge.

اضبط عنوان بريدك الإلكتروني على JIRA/FORGE. استبدِل هذا العنوان بعنوان بريدك الإلكتروني.

export FORGE_EMAIL=your-email

اضبط الرمز المميّز لواجهة برمجة التطبيقات في Forge. استبدِل الرمز المميّز لواجهة برمجة تطبيقات 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

تأكَّد من أنّك في مجلّد "~/github/genai-for-developers".

يمكنك تنفيذ الأمر لإنشاء تطبيق Forge.

forge create

استخدِم القيم التالية عند طلبها:

  • اسم التطبيق: devai-jira-ui-qwiklabs
  • اختَر فئة: UI Kit
  • اختَر منتجًا: Jira
  • اختَر نموذجًا: jira-issue-panel

bc94e2da059f15cf.png

انتقِل إلى مجلد التطبيق.

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
  • أدخِل عنوان 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".

انقر على الزر وراجِع التغييرات في واجهة المستخدم.

88f6dd543827543.png

عرض سجلّات الخلفية في Forge

forge logs

Atlassian Developer Console

يمكنك أيضًا عرض التطبيقات المنشورة وإدارتها في Atlassian Developer Console.

6a0e6ea177054fe6.png

مراجعة السجلات: التبديل إلى بيئة Development

56a7f74de6d2a01d.png

مراجعة بيان تطبيق Forge ورمز المصدر

افتح الملف "devai-jira-ui-qwiklabs/manifest.yml" واستخدِم ميزة "مساعدة ترميز Gemini" لتوضيحه.

4a4377922ab9a927.png

راجِع التفسير.

5dd53138212dc686.png

افتح الملفات التالية واطلب من Gemini Code Assist شرحها:

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

c99f48a5bf624501.png

تعديل تطبيق Forge باستخدام نقطة نهاية DevAI API Cloud Run

تحقَّق مما إذا تم ضبط رقم تعريف مشروع Google Cloud Platform:

gcloud config get project

إذا لم يكن الأمر كذلك، يمكنك إعداد مشروعك على Google Cloud Platform باستخدام معرّف المشروع من صفحة مختبر 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

مثال على الإخراج

fb337c19c9009ac5.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/generate # replace with YOUR CLOUD RUN URL

افتح ملفّ المراجعات/الفهرس في المحرِّر: 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;
});

افتح ملف الواجهة الأمامية/الفهرس في المحرِّر: 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>
);

إعادة نشر تطبيق 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.

تطبيق Test Forge

افتح مهمة JIRA حالية أو أنشئ مهمة جديدة في مشروع JIRA.

عليك إزالة اللوحة السابقة إذا سبق أن تمت إضافتها.

انقر على ... واختَر إزالة من القائمة. بعد ذلك، يمكنك النقر على الزر مرة أخرى.

1adca6205af0f0c6.png

الاطّلاع على تعليقات Jira

بعد تلقّي ردّ من DEVAI API، ستتم إضافة تعليقَين على مشكلة JIRA.

  • طلب الدمج في GitLab
  • تفاصيل تنفيذ قصة مستخدم Gemini

يمكنك التبديل بين علامتَي التبويب "History" و "Comments" لإعادة تحميل البيانات.

e3f38114330d504f.png

تفعيل إنشاء طلبات الدمج في 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)

إعادة نشر تطبيق 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"
export JIRA_CLOUD=true

ستستخدم حزمة أدوات GitLab فرع "devai" لدفع التغييرات لطلب الدمج.

تأكَّد من أنّك أنشأت هذا الفرع من قبل.

انشر التطبيق على 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" \
  --min-instances=1 \
  --max-instances=3

التحقّق من الدمج التام بين الخدمات

ابدأ العملية من مهمة JIRA بالنقر على الزر مرة أخرى والتحقّق من الإخراج في مستودع GitLab، ضمن قسم "طلب الدمج" وLangSmith.

تفاصيل طلب الدمج في GitLab

1cd438a10b4ce2b3.png

db6dc6c9a46e8f7b.png

عمليات تتبُّع نموذج LangSmith اللغوي الكبير

افتح بوابة LangSmith وراجِع تتبُّع LLM لمكالمة إنشاء مشكلة JIRA.

مثال على تتبُّع النموذج اللغوي الكبير LangSmith

1ae0f88ab885f69.png

(قسم اختياري) دفع التغييرات إلى مستودع GitHub

انتقِل إلى الموقع الإلكتروني GitHub وأنشئ مستودعًا جديدًا لدفع التغييرات في هذا الدرس إلى مستودعك الشخصي.

ارجع إلى مثيل Cloud Workstations واضبط اسم مستخدم 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 ~/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 للدمج مع واجهات برمجة تطبيقات Gemini
  • كيفية إنشاء تطبيق Atlassian Forge ونشره في JIRA
  • كيفية استخدام LangChain ReAct Agents لأتمتة مهام GitLab
  • كيفية مراجعة عمليات تتبُّع النماذج اللغوية الكبيرة في LangSmith

الخطوة التالية:

  • سنقدّم المزيد من الجلسات التدريبية قريبًا.

تَنظيم

لتجنُّب تحصيل رسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا الدليل التعليمي، يمكنك إما حذف المشروع الذي يحتوي على الموارد أو الاحتفاظ بالمشروع وحذف الموارد الفردية.

حذف المشروع

إنّ أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته للدليل التعليمي.

©2024 Google LLC. جميع الحقوق محفوظة. ‫Google وشعار Google هما علامتان تجاريتان (TM) تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.