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

1. نظرة عامة

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

699d5f6035abbc3a.png

ما ستتعلمه

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

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

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

  • يفترض هذا الدرس الإلمام ببيئتَي Cloud Console وCloud Shell.

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

إعداد مشروع Cloud

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهو عبارة عن سلسلة أحرف لا تستخدمها Google APIs. يمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع فريد بين جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تُنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم الدروس التطبيقية حول الترميز، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. بدلاً من ذلك، يمكنك تجربة رقم تعريف خاص بك ومعرفة ما إذا كان متاحًا. لا يمكن تغييره بعد هذه الخطوة ويظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام مراجع Cloud أو واجهات برمجة التطبيقات. لن يكلّفك إكمال هذا الدرس التطبيقي حول الترميز الكثير، إن لم يكن مجانيًا تمامًا. لإيقاف المراجع لتجنُّب تكبّد رسوم فوترة بعد هذا البرنامج التعليمي، يمكنك حذف المراجع التي أنشأتها أو حذف المشروع. يمكن لمستخدمي 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 في Google Cloud" بياناتك؟

التزام Google بالخصوصية

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

البيانات التي ترسلها وتتلقّاها

الأسئلة التي تطرحها على 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.

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

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

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

3e0c761ca41f315e.png

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

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

إذا طُلب منك منح الإذن، انقر على "منح الإذن" للمتابعة.

6356559df3eccdda.png

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

ستستخدم حساب الخدمة هذا لإجراء طلبات إلى Vertex AI Gemini API من مسارات التعلّم "الدمج المستمر" (CI) أو "النشر المستمر" (CD).

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 كمالك.

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

6. تفعيل سير عمل إجراءات GitHub

افتح مستودع 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

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

تم ضبط سير العمل ليتم تشغيله عند الطلب.

da11273b4b54f7b6.png

9. مراجعة ناتج سير العمل

cf49aa41980aacc5.png

نظرة عامة على أوامر مسار الإجراءات

إعداد سير عمل إجراءات GitHub: devai-review.yml

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

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

يحلّل أمر devai review testcoverage الرموز البرمجية ومجموعة الاختبار المرتبطة بها، إذا كانت متاحة، باستخدام نموذج ذكاء اصطناعي توليدي، وهو Gemini. ويقيّم تغطية الاختبار للرموز البرمجية المقدَّمة، ويحدّد الملفات والطرق التي تتضمّن اختبارات الوحدة وتلك التي لا تتضمّنها. بعد ذلك، يستفيد الأمر من النموذج لتقديم ملخّص للتغطية، بما في ذلك مقاييس مثل الأسطر والفروع أو الشروط التي تمّت تغطيتها. استنادًا إلى التحليل، يقدّم اقتراحات لتحسين تغطية الاختبار، ويقترح اختبارات محدّدة لإضافتها ويقدّم نصائح عامة حول أفضل ممارسات الاختبار. أخيرًا، يعرض ردّ نموذج Gemini الذي يتضمّن تفاصيل مثل الملفات التي لا تتضمّن تغطية واقتراحات لتحسين الاختبارات الحالية للمستخدم من خلال سطر الأوامر.

3b21bd4639524763.png

نتائج أمر مراجعة الرموز البرمجية:

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

يُجري أمر devai review code مراجعة شاملة للرموز البرمجية لمقتطف رمز برمجية مقدَّم باستخدام نموذج ذكاء اصطناعي توليدي. ويستخدم الرمز البرمجي الذي تتم مراجعته كإدخال (سياق) وتفضيل تنسيق الإخراج (الإخراج). ويستفيد من نموذج لغوي كبير لتحليل الرموز البرمجية من حيث الدقة والكفاءة وقابلية الصيانة والأمان والالتزام بأفضل الممارسات. ينشئ الأمر طلبًا تفصيليًا يوجّه Gemini بشأن كيفية إجراء المراجعة، ثم يرسله إلى النموذج لتقييم الرموز البرمجية المقدَّمة. أخيرًا، يعالج ردّ Gemini، ويُنسّقه بتنسيق Markdown أو JSON أو جدول وفقًا لتفضيلات المستخدم، ويعرض نتائج المراجعة.

4876dbc2e0042943.png

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

devai review compliance -c ${{ github.workspace }}/sample-app/k8s --config ${{ github.workspace }}/devai-cli/gemini/styleguide.md

يحلّل أمر devai review compliance الرموز البرمجية استنادًا إلى مجموعة من أفضل الممارسات، عادةً لإعدادات Kubernetes. ويستخدم نموذج Gemini لمراجعة الرموز البرمجية المقدَّمة (context) ومقارنتها بالمعايير المحدّدة في ملف إعداد منفصل (config). يستفيد الأمر من طلب لتوجيه نموذج Gemini للعمل كمهندس Kubernetes خبير وتقديم تقرير امتثال. بعد ذلك، يُنسّق النتائج كشرح موجز، مع التركيز على عيّنات الرموز البرمجية التي توضّح كيفية معالجة أي مشاكل تم تحديدها. أخيرًا، يطبع الأمر ناتج مراجعة الامتثال من Gemini إلى وحدة التحكّم. يسمح ذلك للمستخدم بتدقيق الرموز البرمجية بسهولة للتأكّد من الامتثال.

fa3d8b23a3af57cd.png

10. إنشاء نسخة طبق الأصل من المستودع

ارجع إلى الوحدة الطرفية في Cloud Shell وأنشِئ نسخة طبق الأصل من المستودع.

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

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

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

cd genai-for-developers

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

انتظِر حتى يظهر ملف الإعداد في بيئة التطوير المتكاملة.

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

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

88bec44bbfd450e4.png

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

4fe902fd2f0d3ae1.png

12. تطوير DevAI CLI

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

للبدء، اضبط بيئة python الظاهرية وثبِّت المتطلبات وشغِّل الأمر النموذجي.

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

اضبط متغيّرات البيئة المطلوبة.

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

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

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

cloudshell edit code-review.md

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

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

9587123b62f12a55.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

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

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

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

cloudshell edit testcoverage.md

أمر مراجعة الامتثال

devai review compliance --context ~/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md

cloudshell edit k8s-review.md

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

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

cloudshell edit performance-review.md

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

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

cloudshell edit security-review.md

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

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" > image-review.md

cloudshell edit image-review.md

إخراج:

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 > image-diff-review.md

cloudshell edit image-diff-review.md

إخراج:

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 review video \
  -f "/tmp/video.mp4" \
  -p "Review user journey video and create unit tests using jest framework"

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

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 Editor:

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

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

14. تهانينا!

تهانينا، لقد أكملت الدرس التطبيقي حول الترميز.

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

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

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

  • سنعلن قريبًا عن جلسات عملية إضافية.

إخلاء مساحة

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

حذف المشروع

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

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