जेन एआई की मदद से कोड रिव्यू ऑटोमेशन

1. खास जानकारी

इस लैब में, आपको सीआईसीडी पाइपलाइन सेट अप करनी होगी. साथ ही, कोड की समीक्षा के चरणों को ऑटोमेट करने के लिए, Gemini के साथ इंटिग्रेट करना होगा.

9dde56ad139b9553.png

आपको क्या सीखने को मिलेगा

इस लैब में, आपको ये काम करने का तरीका पता चलेगा:

  • GitHub, GitLab, और CircleCI में GenAI कोड की समीक्षा के ऑटोमेशन चरण जोड़ने का तरीका
  • GitLab की समस्या पर टिप्पणी करने और JIRA टिकट खोलने जैसे टास्क को अपने-आप पूरा करने के लिए, LangChain ReAct एजेंट और टूलकिट का इस्तेमाल करने का तरीका

ज़रूरी शर्तें

  • इस लैब में यह माना गया है कि आपको Cloud Console और Cloud Shell के एनवायरमेंट के बारे में पता है.

2. सेटअप और ज़रूरी शर्तें

Cloud प्रोजेक्ट का सेटअप

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे PROJECT_ID के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद का कोई दूसरा नाम चुनने का विकल्प भी है. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहता है.
  • आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.

एनवायरमेंट सेटअप करना

Gemini Chat खोलें.

bc3c899ac8bcf488.png

इसके अलावा, खोज बार में "Gemini से पूछें" लिखें.

e1e9ad314691368a.png

Cloud AI Companion API को चालू करने के लिए:

66cb6e561e384bbf.png

"Start chatting" पर क्लिक करें और सैंपल के तौर पर दिए गए सवालों में से किसी एक का इस्तेमाल करें या अपना प्रॉम्प्ट टाइप करें.

5482c153eef23126.png

ये प्रॉम्प्ट आज़माएँ:

  • Cloud Run के बारे में पांच मुख्य बातों में बताएं.
  • आप Google Cloud Run के प्रॉडक्ट मैनेजर हैं. किसी छात्र को Cloud Run के बारे में पांच मुख्य बातों में बताएं.
  • आप Google Cloud Run के प्रॉडक्ट मैनेजर हैं. आपको सर्टिफ़ाइड Kubernetes डेवलपर को पांच मुख्य बातों में Cloud Run के बारे में बताना है.
  • आप Google Cloud Run के प्रॉडक्ट मैनेजर हैं. आपको किसी सीनियर डेवलपर को पांच मुख्य बातों में यह बताना है कि Cloud Run और GKE में से किसका इस्तेमाल कब किया जाना चाहिए.

बेहतर प्रॉम्प्ट लिखने के बारे में ज़्यादा जानने के लिए, प्रॉम्प्ट गाइड देखें.

Google Cloud के लिए Gemini आपके डेटा का इस्तेमाल कैसे करता है

निजता को लेकर Google की प्रतिबद्धता

Google, इंडस्ट्री में एआई/एमएल से जुड़ी निजता से जुड़ी प्रतिबद्धता पब्लिश करने वाली पहली कंपनियों में से एक है. इससे पता चलता है कि हमारा मानना है कि क्लाउड में सेव किए गए ग्राहकों के डेटा को सबसे सुरक्षित तरीके से रखा जाना चाहिए और ग्राहकों के पास इसका कंट्रोल होना चाहिए.

आपका सबमिट किया गया और पाया गया डेटा

Gemini से पूछे गए सवालों को प्रॉम्प्ट कहा जाता है. इनमें, विश्लेषण करने या पूरा करने के लिए Gemini को सबमिट की गई कोई भी इनपुट जानकारी या कोड भी शामिल है. Gemini से मिलने वाले जवाबों या कोड को पूरा करने की सुविधा को जवाब कहा जाता है. Gemini, अपने मॉडल को ट्रेनिंग देने के लिए, आपके प्रॉम्प्ट या उनके जवाबों का इस्तेमाल नहीं करता है.

प्रॉम्प्ट को एन्क्रिप्ट (सुरक्षित) करना

Gemini में प्रॉम्प्ट सबमिट करने पर, Gemini में मौजूद मॉडल के इनपुट के तौर पर, आपका डेटा ट्रांज़िट के दौरान एन्क्रिप्ट (सुरक्षित) किया जाता है.

Gemini से जनरेट किया गया प्रोग्राम डेटा

Gemini को पहले पक्ष के Google Cloud कोड के साथ-साथ, चुने गए तीसरे पक्ष के कोड पर ट्रेनिंग दी गई है. अपने कोड की सुरक्षा, जांच, और असरदार होने की ज़िम्मेदारी आपकी है. इसमें, Gemini की मदद से कोड पूरा करना, जनरेट करना या उसका विश्लेषण करना भी शामिल है.

Google आपके प्रॉम्प्ट को कैसे मैनेज करता है, इसके बारे में ज़्यादा जानें.

3. प्रॉम्प्ट की जांच करने के विकल्प

अगर आपको मौजूदा devai cli प्रॉम्प्ट बदलने/बढ़ाने हैं, तो आपके पास इसके लिए कई विकल्प हैं.

Vertex AI Studio, Google Cloud के Vertex AI प्लैटफ़ॉर्म का हिस्सा है. इसे खास तौर पर, जनरेटिव एआई मॉडल के डेवलपमेंट और इस्तेमाल को आसान बनाने और तेज़ करने के लिए डिज़ाइन किया गया है.

Google AI Studio, वेब पर काम करने वाला एक टूल है. इसका इस्तेमाल, प्रॉम्प्ट इंजीनियरिंग और Gemini API के साथ प्रोटोटाइप बनाने और एक्सपेरिमेंट करने के लिए किया जाता है. 10 लाख टोकन वाली कॉन्टेक्स्ट विंडो के साथ Gemini 1.5 Pro के लिए साइन-अप करें या ज़्यादा जानें.

Google Gemini का वेब ऐप्लिकेशन (gemini.google.com), वेब पर काम करने वाला टूल है. इसे Google के Gemini एआई मॉडल को एक्सप्लोर करने और उनका इस्तेमाल करने में आपकी मदद करने के लिए डिज़ाइन किया गया है.

4. सेवा खाता बनाएं

सर्च बार की दाईं ओर मौजूद आइकॉन पर क्लिक करके, Cloud Shell चालू करें.

3e0c761ca41f315e.png

खुले हुए टर्मिनल में, Vertex AI API और Gemini Chat का इस्तेमाल करने के लिए ज़रूरी सेवाएं चालू करें.

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

अगर आपसे अनुमति देने के लिए कहा जाता है, तो जारी रखने के लिए "अनुमति दें" पर क्लिक करें.

6356559df3eccdda.png

नया सेवा खाता और कुंजियां बनाने के लिए, ये कमांड चलाएं.

आपको इस सेवा खाते का इस्तेमाल, CICD पाइपलाइन से Vertex AI Gemini API को एपीआई कॉल करने के लिए करना होगा.

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 Actions वर्कफ़्लो चालू करना

ब्राउज़र में फ़ोक्ड किया गया GitHub रिपॉज़िटरी खोलें और वर्कफ़्लो चालू करने के लिए, "Actions" टैब पर स्विच करें.

1cd04db9b37af7cf.png

7. डेटा स्टोर करने की जगह के लिए पासकोड जोड़ना

फ़ोक की गई GitHub रिपॉज़िटरी में, "Settings / Secrets and variables / Actions" में जाकर रिपॉज़िटरी का पासवर्ड बनाएं.

"GOOGLE_API_CREDENTIALS" नाम वाला रिपॉज़िटरी सीक्रेट जोड़ें.

94cbe2778bef25eb.png

Google Cloud Shell विंडो/टैब पर स्विच करें और Cloud Shell टर्मिनल में नीचे दिया गया निर्देश चलाएं.

cat ~/vertex-client-key.json

फ़ाइल का कॉन्टेंट कॉपी करें और उसे सीक्रेट की वैल्यू के तौर पर चिपकाएं.

915579a97f8f2ced.png

वैल्यू के तौर पर, अपने Qwiklabs प्रोजेक्ट आईडी के साथ PROJECT_ID सीक्रेट जोड़ें 4fa92833ce615a36.png

8. GitHub Actions वर्कफ़्लो चलाना

ब्राउज़र में अपनी GitHub रिपॉज़िटरी पर जाएं और वर्कफ़्लो चलाएं.

वर्कफ़्लो को कोड पुश या मैन्युअल तरीके से चलाने के लिए कॉन्फ़िगर किया गया है.

सभी वर्कफ़्लो में जाकर, "GenAI For Developers" चुनें. इसके बाद, "main" शाखा का इस्तेमाल करके, "Run workflow" पर क्लिक करें.

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 टर्मिनल पर वापस जाएं और रिपॉज़िटरी को क्लोन करें.

GitHub रिपॉज़िटरी के लिए फ़ोल्डर बनाएं.

mkdir github
cd github

निर्देश चलाने से पहले, YOUR-GITHUB-USERID को अपने GitHub यूज़र आईडी में बदलें.

टर्मिनल में Git उपयोगकर्ता का नाम और ईमेल पता सेट करें.

निर्देश चलाने से पहले, वैल्यू अपडेट करें.

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
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 

जब तक आईडीई में कॉन्फ़िगरेशन फ़ाइल न दिखे, तब तक इंतज़ार करें.

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 एडिटर पर वापस जाएं और नया टर्मिनल खोलें.

149218baaf30865f.png

Cloud Shell टर्मिनल पर वापस जाएं और devai को स्थानीय तौर पर इंस्टॉल करने के लिए, नीचे दिए गए निर्देशों का पालन करें.

pip3 install devai-cli

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 ~/github/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 सीएलआई डेवलपमेंट

इस सेक्शन में, आपको devai cli में बदलाव करने होंगे.

शुरू करने के लिए, python virtualenv सेट अप करें, ज़रूरी शर्तें इंस्टॉल करें, और सैंपल कमांड चलाएं.

cd ~/github/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 testcoverage -c ~/github/genai-for-developers/sample-app/src

Cloud Shell एडिटर में, Markdown की झलक का इस्तेमाल करके नतीजों की समीक्षा करें.

एक नई फ़ाइल बनाएं और Gemini का जवाब चिपकाएं.

इसके बाद, कमांड पैलेट का इस्तेमाल करके "Markdown: Open Preview" चुनें.

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

76858be03d73abd0.png

14. devai cli के निर्देशों के बारे में जानकारी

कोड की समीक्षा करने का निर्देश

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

परफ़ॉर्मेंस की समीक्षा करने का निर्देश

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

सुरक्षा की समीक्षा करने का निर्देश

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

कवरेज की समीक्षा करने का निर्देश

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

ब्लॉक करने वाले टूल की समीक्षा करने के लिए निर्देश

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

इमेज/डायग्राम की समीक्षा और खास जानकारी:

डायग्राम डालें[~/github/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

निर्देश की समीक्षा करें:

devai review image \
  -f ~/github/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 ~/github/genai-for-developers/images/devai-api.png \
  -t ~/github/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 ~/github/genai-for-developers/sample-app/src/main/

आउटपुट:

# Bank of Anthos - Balance Reader Service

## Table of Contents
- [Description](#description)
- [Features](#features)
- [Technologies Used](#technologies-used)
- [Installation](#installation)
- [Configuration](#configuration)
- [Usage](#usage)
- [Health Checks](#health-checks)
- [Metrics and Tracing](#metrics-and-tracing)
- [Contributing](#contributing)
- [License](#license)

## 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

- Securely retrieves account balances using JWT authentication.
- Leverages a local cache for fast balance retrieval.
- Asynchronously processes transactions from a central ledger.
- Provides health check endpoints for Kubernetes liveness and readiness probes.
- Exposes metrics to Stackdriver for monitoring and observability.
- Supports distributed tracing with Zipkin.

## Technologies Used

- Java
- Spring Boot
- Spring Data JPA
- Hibernate
- Google Cloud SQL (PostgreSQL)
- JWT (JSON Web Token)
- Guava Cache
- Micrometer
- Stackdriver
- Zipkin

## Installation

1. **Prerequisites:**
   - Java 17 or later
   - Maven 3.5 or later
   - Docker (for containerization)
   - Kubernetes cluster (for deployment)
   - Google Cloud account (for Stackdriver and other GCP services)

Cloud Shell Editor में, devai cli के उपलब्ध निर्देशों की समीक्षा करें:

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

इसके अलावा, GitHub रिपॉज़िटरी में README.md देखें.

15. किसी फ़ाइल में सभी एनवायरमेंट वैरिएबल को ट्रैक करना

आपको जो भी एनवायरमेंट वैरिएबल बनाने हैं उनका ट्रैक रखने के लिए, एक नई फ़ाइल बनाएं. जैसे, एपीआई कुंजियां, एपीआई टोकन वगैरह.

लैब में काम करते समय, आपको अलग-अलग सिस्टम के लिए कई बार इनका इस्तेमाल करना होगा. इसलिए, इन्हें एक ही जगह पर रेफ़र करना आसान होगा.

16. LangSmith LLM ट्रैकिंग कॉन्फ़िगरेशन

LangSmith खाता बनाएं और सेटिंग सेक्शन में जाकर, सेवा एपीआई पासकोड जनरेट करें. https://docs.smith.langchain.com/

LangSmith इंटिग्रेशन के लिए ज़रूरी एनवायरमेंट वैरिएबल सेट करें. निर्देश चलाने से पहले, सेवा की एपीआई कुंजी बदलें.

export LANGCHAIN_API_KEY=langsmith-service-api-key

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

टर्मिनल में संवेदनशील जानकारी को ज़ाहिर होने से रोकने के लिए, read -s का इस्तेमाल करना सबसे सही तरीका है. यह एनवायरमेंट वैरिएबल सेट करने का सुरक्षित तरीका है. इससे कंसोल के कमांड इतिहास में वैल्यू नहीं दिखती. इसे चलाने के बाद, आपको वैल्यू चिपकाकर Enter दबाना होगा.

17. JIRA कमांड कॉन्फ़िगरेशन

अगर आपके पास JIRA खाता नहीं है, तो उसे बनाएं.

अपने प्रोजेक्ट के लिए JIRA API टोकन बनाएं. https://id.atlassian.com/manage-profile/security/api-tokens

JIRA इंटिग्रेशन के लिए ज़रूरी इन एनवायरमेंट वैरिएबल को सेट करें. इसके लिए, निर्देशों को चलाने से पहले वैल्यू बदलें.

export JIRA_API_TOKEN=your-token-value
export JIRA_USERNAME="email that you used to register with JIRA"
export JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="JIRA project key"
export JIRA_CLOUD=true

review.py फ़ाइल खोलने के लिए:

cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py

review.py फ़ाइल की समीक्षा करें:

    source=source.format(format_files_as_string(context))

    code_chat_model = GenerativeModel(model_name)
    code_chat = code_chat_model.start_chat()
    code_chat.send_message(qry)
    response = code_chat.send_message(source)
    ...
    else:
        click.echo(response.text) 

इस लाइन के नीचे मौजूद लाइन ढूंढें और उससे टिप्पणी हटाएं:

# Uncomment after configuring JIRA and GitLab env variables - see README.md for details

फ़ाइल में सबसे ऊपर JIRA कमांड इंपोर्ट करना

# from devai.commands.jira import create_jira_issue

code तरीके से JIRA समस्या बनाने का तरीका

#create_jira_issue("Code Review Results", response.text)

कोड की समीक्षा करने वाला कमांड फिर से चलाएं और एजेंट का आउटपुट देखें:

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

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

आउटपुट का सैंपल:

(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead.
  warn_deprecated(
Response from Model: ```java
// Class: TransactionRepository
// Method: findBalance

// Efficiency
- Consider using a native SQL query to improve performance for complex database operations.
- Use prepared statements to avoid SQL injection vulnerabilities.

// Best Practices
- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account.

/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function __call__ was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. इसके बजाय, invoke. warn_deprecated(

नई AgentExecutor चेन में जा रहा है... सोच: सवाल में जानकारी दी गई है, इसलिए कार्रवाई के बारे में सोचने की ज़रूरत नहीं है:

{
  "action": "create_issue",
  "action_input": {
    "description": "Class: TransactionRepository\nMethod: findBalance\n\nEfficiency\n- Consider using a native SQL query to improve performance for complex database operations.\n- Use prepared statements to avoid SQL injection vulnerabilities.\n\nBest Practices\n- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account."
  }
}

कुंजी के साथ नई समस्या बनाई गई: CYMEATS-117

जानकारी: कुंजी के साथ नई समस्या बनाई गई: CYMEATS-117 सुझाव:आखिरी जवाब: CYMEATS-117

चेन पूरी हो गई है.

Open your JIRA project in the browser and review the created issue.

Sample JIRA issue view.

<img src="img/9a93a958c30f0b51.png" alt="9a93a958c30f0b51.png"  width="624.00" />

Open  [LangSmith portal](https://smith.langchain.com/) and review LLM trace for JIRA issue creation call.

Sample LangSmith LLM trace.

<img src="img/6222ee1653a5ea54.png" alt="6222ee1653a5ea54.png"  width="624.00" />


## Import GitHub repo to GitLab repo



Go to  [https://gitlab.com/projects/new](https://gitlab.com/projects/new) and select "`Import project`" / "`Repository by URL`" option:

Git repository url:

https://github.com/GoogleCloudPlatform/genai-for-developers.git

Or

Your personal GitHub project that you created earlier in this lab.

Under Project URL - select your GitLab userid

Set Visibility to `Public`.

Click - "`Create Project`" to start the import process.

If you see an error about invalid GitHub Repository URL,  [create a new GitHub token](https://github.com/settings/tokens)(fine-grained) with Public repositories read-only access, and retry import again providing your GitHub userid and token.


## Clone GitLab repo and setup SSH key



Return to Google Cloud Shell terminal and set up a new SSH key. 

Update your email before running the commands. Hit enter multiple times to accept defaults.

ssh-keygen -t ed25519 -C "your-email-address"

eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

Add a public key to your GitLab account.

Open  [https://gitlab.com/-/profile/keys](https://gitlab.com/-/profile/keys) and click "Add new key".

For the key value copy/paste the output of the last command.

Go back to the terminal and clone the repository. 

cd ~ mkdir gitlab cd gitlab

Replace with your GitLab userid and repository url that was just created.

```console
git clone git@gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git

डायरेक्ट्री बदलें और .gitlab-ci.yml फ़ाइल खोलें.

cd genai-for-developers

cloudshell edit .gitlab-ci.yml

अगर आपने पहले ऐसा नहीं किया है, तो Cloud Shell Editor में Gemini चालू करें.

4a7f4640f66037f.png

.gitlab-ci.yml फ़ाइल में कहीं भी राइट क्लिक करें और "Gemini Code Assist > Explain this"" चुनें.

154838a0100389a9.png

18. GitLab कमांड कॉन्फ़िगरेशन

GitLab खोलें और पिछले चरणों में बनाए गए GitLab रिपॉज़िटरी में "Settings / Access Tokens" में जाकर, प्रोजेक्ट का ऐक्सेस टोकन बनाएं.

अगले चरणों में इस्तेमाल करने के लिए, ऐक्सेस टोकन की वैल्यू कॉपी करके सेव करें.

यहां दी गई जानकारी का इस्तेमाल करें:

  • टोकन का नाम: devai-cli-qwiklabs
  • भूमिका: Maintainer
  • दायरा: api

1865de233277f11c.png

GitLab इंटिग्रेशन के लिए ज़रूरी एनवायरमेंट वैरिएबल सेट करें.

इस निर्देश के लिए, आपको अपना GitLab ऐक्सेस टोकन अपडेट करना होगा.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token

इस कमांड के लिए, आपको अपना GitLab उपयोगकर्ता आईडी और रिपॉज़िटरी का नाम अपडेट करना होगा.

export GITLAB_REPOSITORY="USERID/REPOSITORY"

बाकी एनवायरमेंट वैरिएबल सेट करें:

export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"

GitLab की वेबसाइट खोलें और अपने प्रोजेक्ट में "CICD AI Insights" टाइटल के साथ एक नई GitLab समस्या बनाएं.

63a13948f6864074.png

इसके अलावा, नीचे दिए गए curl कमांड का इस्तेमाल भी किया जा सकता है. इसके लिए, आपके पास GitLab प्रोजेक्ट आईडी होना चाहिए. इसे "Settings / General" सेक्शन में देखा जा सकता है.

export GITLAB_PROJECT_ID=56390153 # replace

curl --request POST \
  --header "PRIVATE-TOKEN: $GITLAB_PERSONAL_ACCESS_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"title":"CICD AI Insights"}' \
  https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/issues

Cloud Shell पर वापस जाएं और review.py फ़ाइल खोलें:

cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py

नीचे दिए गए कोड को ढूंढें और उससे टिप्पणी हटाएं

GitLab कमांड इंपोर्ट करने के लिए लाइन

# from devai.commands.gitlab import create_gitlab_issue_comment

GitLab की समस्या पर टिप्पणी करने का तरीका

# create_gitlab_issue_comment(response.text)

19. DevAI CLI का डेवलपमेंट

GitLab repo/directory पर स्विच करने के बाद. आपको सेटअप करने के लिए, यहां दिया गया तरीका फिर से अपनाना होगा.

टर्मिनल में, अपना python virtualenv सेट अप करें, ज़रूरी शर्तें इंस्टॉल करें, और सैंपल कमांड चलाएं.

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

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

cli की जगह की पुष्टि की जा सकती है - इस बार यह GitLab फ़ोल्डर में होना चाहिए.

 which devai

टर्मिनल में कोड की समीक्षा करने का निर्देश फिर से चलाएं:

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

आउटपुट का सैंपल - कुछ सेक्शन छोटे किए गए हैं:

(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
.
.
Response from Model: **Class: Transaction**

**Method: toString**

**Maintainability:**

* The formatting of the string representation could be more clear and concise. Consider using a dedicated method for formatting the amount, e.g., `formatAmount()`.
.
.

> Entering new AgentExecutor chain...
Thought: I need to first get the issue ID using the Get Issues tool, then I can comment on the issue using the Comment on Issue tool.
Action: Get Issues
Action Input: 
Observation: Found 1 issues:
[{'title': 'CICD AI Insights', 'number': 1}]
Thought:Thought: I found the issue ID, so now I can add the comment to the issue.
Action: Comment on Issue
Action Input: 1


Action: Get Issue
Action Input: 1
Observation: {"title": "CICD AI Insights", "body": "", "comments": "[{'body': '**Transaction.java**\\n\\n\\n**Class:** Transaction\\n\\n\\n* **Security:** Consider using a custom date format like \\\\\"yyyy-MM-dd HH:mm:ss.SSS\\\\\" to handle timestamps more robustly.\\n\\n\\n**JWTVerifierGenerator.java**\\n\\n\\n* .
.
Thought:Now I can use the Comment on Issue tool to add the comment to the issue.

Action: Comment on Issue
Action Input: 
1

**Class: Transaction**

**Method: toString**

**Maintainability:**
.
.
.
Observation: Commented on issue 1
Thought:I have now completed the necessary actions and added the comment to the issue 'CICD AI Insights'.

Final Answer: Comment added to issue 'CICD AI Insights'

> Finished chain.

GitLab वेबसाइट खोलें और अपडेट की गई समस्या की समीक्षा करें.

9da39bf6070d9447.png

LangSmith में एलएलएम ट्रेस की समीक्षा करें.

एलएलएम ट्रैक का सैंपल.

f32eed34f3a3b040.png

20. GitLab रिपॉज़िटरी में बदलावों को पुश करना

Google Cloud Shell एडिटर पर वापस जाएं.

"Source Control" टैब पर स्विच करें.

review.py फ़ाइल को अपडेट करने के लिए, किए गए बदलावों को स्टेज करें, कमिट करें, और उन्हें पुश करें.

b838a11f362454ce.png

21. GitLab CICD कॉन्फ़िगरेशन

इसके बाद, आपको GitLab CICD पाइपलाइन को चालू करना होगा, ताकि जब बदलावों को रिपॉज़िटरी में पुश किया जाए, तब कोड की समीक्षा की जा सके.

GitLab की वेबसाइट खोलें और "Settings / CICD" सेक्शन" पर जाएं.

Variables सेक्शन को बड़ा करें और "Add variable" पर क्लिक करें.

वैरिएबल जोड़ते समय, सभी चेकबॉक्स से सही का निशान हटाना न भूलें. उदाहरण:

68b3ed732b6a8fe9.png

अपने नोट का इस्तेमाल करके, JIRA, GitLab, और LangSmith के लिए एनवायरमेंट वैरिएबल जोड़ें.

PROJECT_ID=qwiklabs-project-id
LOCATION=us-central1
GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json

LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
LANGCHAIN_API_KEY=your-service-api-key

JIRA_API_TOKEN=your-token
JIRA_USERNAME="email that you used to register with JIRA"
JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
JIRA_PROJECT_KEY="JIRA project key"
JIRA_CLOUD=true

GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token
GITLAB_URL="https://gitlab.com"
GITLAB_REPOSITORY="USERID/REPOSITORY"
GITLAB_BRANCH="devai"
GITLAB_BASE_BRANCH="main"

GOOGLE_CLOUD_CREDENTIALS वैरिएबल की वैल्यू के लिए, ऊपर दिए गए सेक्शन में बनाई गई सेवा खाता कुंजी का इस्तेमाल करें.

cat ~/vertex-client-key.json

सीआई/सीडी वैरिएबल व्यू:

2f4594ce72be4834.png

22. GitLab CICD पाइपलाइन चलाना

GitLab के यूज़र इंटरफ़ेस (यूआई) में "Build / Pipelines" खोलें और "Run Pipeline" पर क्लिक करें.

a7518e37dde42366.png

23. GitLab पाइपलाइन के आउटपुट की समीक्षा करना

GitLab यूज़र इंटरफ़ेस (यूआई) में "Build / Jobs" खोलें और पाइपलाइन के आउटपुट की समीक्षा करें.

985e4b322fb73b1c.png

GitLab की वेबसाइट खोलें और "CICD Insights" समस्या के बारे में अपडेट की गई टिप्पणियों की समीक्षा करें.

GitLab वर्कफ़्लो को बंद करना

Google Cloud Shell एडिटर पर वापस जाएं. कोड पुश इवेंट पर GitLab वर्कफ़्लो को बंद करने के लिए, लाइनों से कम्यूट हटाएं. हालांकि, अब भी मांग पर यूज़र इंटरफ़ेस (यूआई) से वर्कफ़्लो को चलाया जा सकता है.

# workflow:
#   rules:
#     - if: $CI_PIPELINE_SOURCE == "web"

प्रोजेक्ट के रूट में .gitlab-ci.yml खोलें और इन लाइनों से कम्यूट हटाएं:

cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml

"Source Control" टैब पर स्विच करें - इस बदलाव को स्टेज करें, कमिट करें, और उसे पुश करें.

a9d52beb8c642982.png

24. CircleCI इंटिग्रेशन

CircleCI क्या है?

CircleCI, क्लाउड-आधारित CI/CD प्लैटफ़ॉर्म है. इसकी मदद से, टीमें अपने सॉफ़्टवेयर डेवलपमेंट और डिप्लॉयमेंट प्रोसेस को ऑटोमेट कर सकती हैं. यह GitHub, Bitbucket, और GitLab जैसे वर्शन कंट्रोल सिस्टम के साथ इंटिग्रेट होता है. इससे टीमों को अपने-आप चलने वाले टेस्ट और बिल्ड चलाकर, कोड में किए गए बदलावों की पुष्टि रीयल-टाइम में करने में मदद मिलती है. लगातार डिलीवरी के लिए, CircleCI, AWS, Google Cloud, और Azure जैसे अलग-अलग क्लाउड एनवायरमेंट में सॉफ़्टवेयर को अपने-आप डिप्लॉय कर सकता है.

सेटअप

CircleCI वेबसाइट खोलें और नया प्रोजेक्ट बनाएं. अपने repo के लिए "GitLab" / "Cloud" चुनें.

CircleCI को अपने GitLab खाते का ऐक्सेस दें.

सबसे तेज़ विकल्प में जाकर, main शाखा चुनें. CircleCI, किसी मौजूदा कॉन्फ़िगरेशन फ़ाइल का पता लगा सकता है और इस चरण को छोड़ सकता है.

4e9b7cef458d5fba.png

प्रोजेक्ट बन जाने के बाद, "Project Settings" / "Environment Variables" सेक्शन पर क्लिक करें.

1499b5f96ac0fe5e.png

अब तक इस्तेमाल किए गए सभी एनवायरमेंट वैरिएबल जोड़ें.

f15b7a3e02c649e8.png

यहां, जोड़ने के लिए env vars की सैंपल सूची दी गई है.

PROJECT_ID=qwiklabs-project-id
LOCATION=us-central1
GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json

LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
LANGCHAIN_API_KEY=your-service-api-key

JIRA_API_TOKEN=your-token
JIRA_USERNAME="email that you used to register with JIRA"
JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
JIRA_PROJECT_KEY="JIRA project key"
JIRA_CLOUD=true

GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token
GITLAB_URL="https://gitlab.com"
GITLAB_REPOSITORY="USERID/REPOSITORY"
GITLAB_BRANCH="devai"
GITLAB_BASE_BRANCH="main"

25. JIRA और GitLab के तरीके चालू करना

Google Cloud Shell Editor खोलें और review.py फ़ाइल में बदलाव करें.

नीचे दी गई लाइनों को ढूंढें और उनसे टिप्पणी हटाएं.

# from devai.commands.jira import create_jira_issue
create_jira_issue("Performance Review Results", response.text)
create_gitlab_issue_comment(response.text)
.
.
.
create_jira_issue("Security Review Results", response.text)
create_gitlab_issue_comment(response.text)

"Source Control" टैब पर स्विच करें - इस बदलाव को स्टेज करें, कमिट करें, और उसे पुश करें.

GitLab की वेबसाइट खोलें और "Build" / "Pipelines" पर जाएं.

d196ad631be17b88.png

वर्कफ़्लो की समीक्षा करने के लिए, CircleCI के लिंक पर जाएं.

d4ff287694b82445.png

अपनी रिपॉज़िटरी में, GitLab से जुड़ी समस्या पर की गई टिप्पणियों की समीक्षा करें.

e77ee826488d5299.png

9a51daa2960994e3.png

अपने JIRA प्रोजेक्ट में बनाई गई नई समस्याओं की समीक्षा करें.

1e6305a32aaef6a2.png

26. बधाई हो!

बधाई हो, आपने लैब पूरा कर लिया है!

हमने इन विषयों पर जानकारी दी है:

  • GitHub, GitLab, और CircleCI में, GenAI कोड की समीक्षा के ऑटोमेशन चरण जोड़ना.
  • GitLab समस्या पर टिप्पणी करने और JIRA टिकट खोलने जैसे टास्क अपने-आप करने के लिए, LangChain ReAct एजेंट.

आगे क्या करना है:

  • इस तरह के और भी सेशन आने वाले हैं!

व्यवस्थित करें

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते से शुल्क न लिया जाए, इसके लिए संसाधनों वाले प्रोजेक्ट को मिटाएं या प्रोजेक्ट को बनाए रखें और अलग-अलग संसाधनों को मिटाएं.

प्रोजेक्ट मिटाना

बिलिंग की सुविधा बंद करने का सबसे आसान तरीका, ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटाना है.

©2024 Google LLC. सभी अधिकार सुरक्षित हैं. Google और Google का लोगो, Google LLC के ट्रेडमार्क हैं. अन्य सभी कंपनी और उत्पाद नाम उनसे संबद्ध कंपनियों के ट्रेडमार्क हो सकते हैं.