GitHub - التشغيل الآلي لمراجعة الرمز البرمجي باستخدام الذكاء الاصطناعي التوليدي

1. نظرة عامة

في هذا التمرين، ستُعدّ سير عمل إجراءات GitHub وتدمجها مع Gemini لأتمتة خطوات مراجعة الرمز البرمجي.

2bab73f63b927f93.png

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

في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ ما يلي:

  • كيفية إضافة خطوات التشغيل الآلي لمراجعة الرموز البرمجية من خلال الذكاء الاصطناعي التوليدي في GitHub
  • كيفية تشغيل devai cli محليًا لأتمتة عمليات مراجعة الرموز البرمجية

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

  • يفترض هذا التمرين أنّك على دراية ببيئة 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- خيارات لاختبار طلبات المساعدة

إذا كنت تريد تغيير طلبات devai cli الحالية أو تمديدها، لديك عدة خيارات لذلك.

Vertex AI Studio هو جزء من منصة Vertex AI من Google Cloud، وهو مصمّم خصيصًا لتبسيط وتسريع تطوير نماذج الذكاء الاصطناعي التوليدي واستخدامها.

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

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

4. إنشاء حساب خدمة

فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

3e0c761ca41f315e.png

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

gcloud services enable \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    cloudresourcemanager.googleapis.com \
    secretmanager.googleapis.com

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

6356559df3eccdda.png

نفِّذ الأوامر التالية لإنشاء حساب خدمة ومفاتيح جديدة.

ستستخدم حساب الخدمة هذا لإجراء طلبات بيانات من واجهة برمجة التطبيقات إلى واجهة برمجة التطبيقات Vertex AI Gemini API من مسارات CICD.

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 --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" --condition None

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

gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

5- إنشاء نسخة من مستودع GitHub في مستودعك الشخصي على GitHub

انتقِل إلى https://github.com/GoogleCloudPlatform/genai-for-developers/fork واختَر رقم تعريف مستخدمك على GitHub بصفتك مالكًا.

أزِل العلامة من المربّع بجانب خيار نسخ الفرع "main" فقط.

انقر على "Create fork".

6- تفعيل سير عمل GitHub Actions

افتح مستودع GitHub المنشعب في المتصفّح وانتقِل إلى علامة التبويب "Actions" لتفعيل سير العمل.

1cd04db9b37af7cf.png

7- إضافة مفاتيح سرية للمستودع

أنشئ سرًا للمستودع ضمن "Settings / Secrets and variables / Actions" في مستودع GitHub المشتق.

أضِف مفتاحًا سريًا للمستودع باسم "GOOGLE_API_CREDENTIALS".

94cbe2778bef25eb.png

انتقِل إلى نافذة/علامة تبويب Google Cloud Shell ونفِّذ الأمر أدناه في وحدة طرفية Cloud Shell.

cat ~/vertex-client-key.json

انسخ محتوى الملف والصقه كقيمة للمفتاح السري.

915579a97f8f2ced.png

أضِف مفتاح PROJECT_ID السري مع رقم تعريف مشروعك على Qwiklabs كقيمة:

4fa92833ce615a36.png

8. تشغيل سير عمل GitHub Actions

انتقِل إلى مستودع GitHub في المتصفّح وشغِّل سير العمل.

تم ضبط سير العمل لتشغيله من خلال دفع الرمز أو التنفيذ اليدوي.

da11273b4b54f7b6.png

مراجعة النتائج:

cf49aa41980aacc5.png

نتائج الأمر "تغطية الاختبار":

devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

3b21bd4639524763.png

نتائج الأمر "مراجعة الرمز":

devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

4876dbc2e0042943.png

نتائج الأمر "مراجعة الأداء":

devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

98dd2472b2e819bf.png

نتائج الأمر "مراجعة الأمان":

devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

7d180a763db92d56.png

مراجعة نتائج الأمر "المحظورون":

devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

726175e874aefcf.png

9. استنساخ المستودع

ارجع إلى وحدة طرفية Cloud Shell وانسخ المستودع.

غيِّر YOUR-GITHUB-USERID إلى رقم تعريف مستخدمك على GitHub قبل تنفيذ الأوامر.

git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git 

غيِّر المجلد وافتح ملف سير العمل في محرِّر Cloud Shell.

cd genai-for-developers

cloudshell edit .github/workflows/devai-review.yml 

انتظِر إلى أن يظهر ملف الإعداد في IDE.

9e81e5a79d421eac.png

10. تفعيل ميزة Gemini Code Assist

انقر على رمز "Gemini" في أسفل يسار الشاشة 7c891e32c055c0e4.png.

انقر على "Login to Google Cloud" و "Select a Google Cloud Project".

f5318f22c91ecaa8.png

6b7203ffdd8485fa.png

fb8d42a6bc8a260f.png

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

f661047956a6d6f9.png

11. شرح الرمز البرمجي باستخدام ميزة Gemini Code Assist

انقر بزر الماوس الأيمن على أي مكان في ملف devai-review.yml واختَر Gemini Code Assist > Explain هذا.

41fb7da002bdf43.png

شرح المراجعة:

7724d52e54918c00.png

12. تشغيل DEVAI CLI محليًا

ارجع إلى وحدة طرفية Cloud Shell ونفِّذ الأوامر أدناه لتثبيت devai محليًا.

pip3 install devai-cli

تم تثبيت واجهة برمجة التطبيقات، ولكنها ليست في PATH.

WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

نفِّذ الأمر أدناه لتعديل متغيّر البيئة PATH. استبدِل "الاسم" باسم المجلد الرئيسي للمستخدم. مثلاً: student_00_478dfeb8df15

export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin

يمكنك تنفيذ الأمر devai cli لإجراء مراجعة للرمز على الجهاز. راجِع ناتج سطر الأوامر.

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1

cd ~/genai-for-developers

devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

افتح نص المراجعة من خلال تنفيذ الأمر أدناه:

cloudshell edit devai-cli/src/devai/commands/review.py

انقر بزر الماوس الأيمن على أي مكان في ملف review.py واختَر Gemini Code Assist > Explain هذا.

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

30e3baf4c272c8ab.png

13. تطوير DevAI CLI

في هذا القسم، ستُجري تغييرات على devai cli.

للبدء، عليك إعداد python virtualenv وتثبيت المتطلبات وتنفيذ نموذج الأمر.

cd ~/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo

أعِد تشغيل الأمر "مراجعة التعليمات البرمجية" للتأكّد من أنّ كل شيء يعمل على ما يرام:

devai review code -c ~/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

راجِع النتائج باستخدام ميزة معاينة Markdown في "محرر Cloud Shell".

أنشئ ملفًا جديدًا والصق ردّ Gemini.

بعد ذلك، استخدِم لوحة الأوامر واختَر "Markdown: Open Preview".

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

14. استكشاف أوامر devai cli

أمر مراجعة الرمز البرمجي

devai review code -c ~/genai-for-developers/sample-app/src/main/java

طلب مراجعة الأداء

devai review performance -c ~/genai-for-developers/sample-app/src/main/java

الأمر الخاص بمراجعة الأمان

devai review security -c ~/genai-for-developers/sample-app/src/main/java

أمر مراجعة تغطية الاختبار

devai review testcoverage -c ~/genai-for-developers/sample-app/src

أوامر مراجعة المحظورات

devai review blockers -c ~/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/genai-for-developers/sample-app/setup.md

مراجعة الصور أو المخططات البيانية وتلخيصها:

مخطّط إدخال البيانات[~/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

مراجعة الأمر:

devai review image \
  -f ~/genai-for-developers/images/extension-diagram.png \
  -p "Review and summarize this diagram"

إخراج:

The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts. 

**Process Flow:**

1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud. 
3. **Vertex AI Review:**  Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally: 
    - Create new JIRA issues directly from the IDE based on the review prompts.
    - Generate new issues in a GitLab repository.

**Key Components:**

* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):**  Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.

**Benefits:**

* **Automated Review Assistance:**  Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews. 
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.

تحليل اختلافات الصور:

devai review imgdiff \
  -c ~/genai-for-developers/images/devai-api.png \
  -t ~/genai-for-developers/images/devai-api-slack.png  

إخراج:

The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image:

1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 
2. **Storage Bucket:**  The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 
3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI."
4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image.

**Decision Explanation:**

The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.

أمر إنشاء المستندات:

devai document readme -c ~/genai-for-developers/sample-app/src/main/

إخراج:

# Bank of Anthos - Balance Reader Service

## Description

The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster.

## Features
...

راجِع أوامر devai cli المتاحة في محرِّر Cloud Shell:

cloudshell edit ~/genai-for-developers/devai-cli/README.md

أو راجِع README.md في مستودع GitHub.

15. تهانينا!

تهانينا، لقد أكملت دورة codelab.

في ما يلي المواضيع التي تناولناها:

  • إضافة خطوات التشغيل الآلي لمراجعة الرموز البرمجية من خلال الذكاء الاصطناعي التوليدي في GitHub
  • تشغيل devai cli محليًا

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

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

تَنظيم

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

حذف المشروع

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

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