GitHub – Codeüberprüfung mit generativer KI automatisieren

1. Übersicht

In diesem Lab richten Sie den GitHub-Actions-Workflow ein und integrieren ihn in Gemini, um die Schritte zur Codeüberprüfung zu automatisieren.

2bab73f63b927f93.png

Lerninhalte

In diesem Lab lernen Sie Folgendes:

  • So fügen Sie in GitHub Schritte zur Automatisierung der GenAI-Codeüberprüfung hinzu
  • devai-CLI lokal ausführen, um Codeüberprüfungen zu automatisieren

Vorbereitung

  • Für dieses Lab wird davon ausgegangen, dass Sie mit der Cloud Console und Cloud Shell-Umgebungen vertraut sind.

2. Einrichtung und Anforderungen

Cloud-Projekt einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie ein Konto erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es ist ein Zeichenstring, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach der Festlegung nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. In der Regel spielt es keine Rolle, wie er lautet. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (normalerweise als PROJECT_ID gekennzeichnet). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige generieren. Alternativ können Sie Ihr eigenes Konto ausprobieren und prüfen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs ist kostenlos oder kostet nur sehr wenig. Wenn Sie die Ressourcen herunterfahren möchten, um Kosten nach Abschluss dieser Anleitung zu vermeiden, können Sie die von Ihnen erstellten Ressourcen oder das Projekt löschen. Neuen Google Cloud-Nutzern steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.

Umgebung einrichten

Öffnen Sie Gemini Chat.

bc3c899ac8bcf488.png

Sie können auch „Fragen Sie Gemini“ in die Suchleiste eingeben.

e1e9ad314691368a.png

Cloud AI Companion API aktivieren:

66cb6e561e384bbf.png

Klicke auf „Start chatting“ und folge einer der Beispielfragen oder gib einen eigenen Prompt ein, um es auszuprobieren.

5482c153eef23126.png

Probiere folgende Prompts aus:

  • Erläutern Sie Cloud Run in fünf wichtigen Punkten.
  • Sie sind Product Manager für Google Cloud Run. Erläutern Sie einem Studenten Cloud Run in fünf kurzen Punkten.
  • Sie sind Produktmanager für Google Cloud Run und erklären einem zertifizierten Kubernetes-Entwickler Cloud Run in fünf kurzen Punkten.
  • Sie sind Product Manager für Google Cloud Run. Erläutern Sie einem leitenden Entwickler in fünf kurzen Punkten, wann Sie Cloud Run und wann Sie GKE verwenden würden.

Weitere Informationen zum Schreiben besserer Prompts finden Sie im Leitfaden für Prompts.

So verwendet Gemini for Google Cloud Ihre Daten

Selbstverpflichtung von Google zum Datenschutz

Google war einer der ersten Anbieter in der Branche, der eine KI-/ML-Datenschutzverpflichtung veröffentlicht hat. Diese legt fest, dass Kunden die höchste Sicherheit und Kontrolle über ihre Daten haben sollten, die in der Cloud gespeichert werden.

Von Ihnen eingereichte und empfangene Daten

Die Fragen, die Sie an Gemini stellen, einschließlich aller Eingabeinformationen oder Codes, die Sie zur Analyse oder Fertigstellung an Gemini senden, werden als Prompts bezeichnet. Die Antworten oder Code-Ergänzungen, die Sie von Gemini erhalten, werden als Antworten bezeichnet. Gemini verwendet Ihre Prompts und seine Antworten nicht als Daten zum Trainieren seines Modells.

Verschlüsselung von Prompts

Wenn Sie Prompts an Gemini senden, werden Ihre Daten während der Übertragung als Eingabe für das zugrunde liegende Modell in Gemini verschlüsselt.

Von Gemini generierte Programmdaten

Gemini wird mit Google Cloud-Code und ausgewähltem Code von Drittanbietern trainiert. Sie sind für die Sicherheit, die Tests und die Effektivität Ihres Codes verantwortlich, einschließlich aller Codevervollständigungen, -generierungen oder ‑analysen, die Gemini bietet.

Weitere Informationen zum Umgang von Google mit Prompts

3. Optionen zum Testen von Prompts

Wenn Sie vorhandene devai-Prompts ändern oder erweitern möchten, haben Sie dazu mehrere Möglichkeiten.

Vertex AI Studio ist Teil der Vertex AI-Plattform von Google Cloud und wurde speziell entwickelt, um die Entwicklung und Nutzung generativer KI-Modelle zu vereinfachen und zu beschleunigen.

Google AI Studio ist ein webbasiertes Tool zum Erstellen von Prototypen und Experimentieren mit Prompt-Engineering und der Gemini API.

Die Google Gemini Web-App (gemini.google.com) ist ein webbasiertes Tool, mit dem Sie die Leistungsfähigkeit der Gemini-KI-Modelle von Google kennenlernen und nutzen können.

4. Dienstkonto erstellen

Klicken Sie zum Aktivieren von Cloud Shell auf das Symbol rechts neben der Suchleiste.

3e0c761ca41f315e.png

Aktivieren Sie im geöffneten Terminal die erforderlichen Dienste, um Vertex AI APIs und Gemini-Chat zu verwenden.

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

Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf „Autorisieren“, um fortzufahren.

6356559df3eccdda.png

Führen Sie die folgenden Befehle aus, um ein neues Dienstkonto und Schlüssel zu erstellen.

Sie verwenden dieses Dienstkonto, um API-Aufrufe an die Vertex AI Gemini API aus CICD-Pipelines zu senden.

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-Repository in Ihrem privaten GitHub-Repository verzweigen

Rufen Sie https://github.com/GoogleCloudPlatform/genai-for-developers/fork auf und wählen Sie Ihre GitHub-Nutzer-ID als Inhaber aus.

Entfernen Sie das Häkchen, um nur den „main“-Branch zu kopieren.

Klicken Sie auf "Create fork".

6. GitHub Actions-Workflow aktivieren

Öffnen Sie das geforkte GitHub-Repository im Browser und wechseln Sie zum Tab „Actions“, um Workflows zu aktivieren.

1cd04db9b37af7cf.png

7. Repository-Secrets hinzufügen

Erstellen Sie im abgezweigten GitHub-Repository unter „Settings / Secrets and variables / Actions“ ein Repository-Secret.

Fügen Sie ein Repository-Secret mit dem Namen „GOOGLE_API_CREDENTIALS“ hinzu.

94cbe2778bef25eb.png

Wechseln Sie zum Fenster/Tab „Google Cloud Shell“ und führen Sie den folgenden Befehl im Cloud Shell-Terminal aus.

cat ~/vertex-client-key.json

Kopieren Sie den Dateiinhalt und fügen Sie ihn als Wert für das Secret ein.

915579a97f8f2ced.png

Fügen Sie das PROJECT_ID-Secret mit Ihrer Qwiklabs-Projekt-ID als Wert hinzu:

4fa92833ce615a36.png

8. GitHub Actions-Workflow ausführen

Rufen Sie Ihr GitHub-Repository im Browser auf und führen Sie den Workflow aus.

Der Workflow ist für die Ausführung bei Codepush oder manueller Ausführung konfiguriert.

da11273b4b54f7b6.png

Ergebnisse prüfen

cf49aa41980aacc5.png

Ergebnisse des Befehls „Test Coverage“:

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

3b21bd4639524763.png

Ergebnisse des Befehls „Code Review“:

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

4876dbc2e0042943.png

Ergebnisse des Befehls „Leistungsüberprüfung“:

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

98dd2472b2e819bf.png

Ergebnisse des Befehls „security review“:

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

7d180a763db92d56.png

Ergebnisse des Befehls „Blockers review“:

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

726175e874aefcf.png

9. Repository klonen

Kehren Sie zum Cloud Shell-Terminal zurück und klonen Sie das Repository.

Ersetzen Sie YOUR-GITHUB-USERID durch Ihre GitHub-Nutzer-ID, bevor Sie die Befehle ausführen.

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

Wechseln Sie den Ordner und öffnen Sie die Workflowdatei im Cloud Shell-Editor.

cd genai-for-developers

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

Warten Sie, bis die Konfigurationsdatei in der IDE angezeigt wird.

9e81e5a79d421eac.png

10. Gemini Code Assist aktivieren

Klicken Sie rechts unten auf das Symbol Gemini.7c891e32c055c0e4.png

Klicken Sie auf „Login to Google Cloud“ und „Select a Google Cloud Project“.

f5318f22c91ecaa8.png

6b7203ffdd8485fa.png

fb8d42a6bc8a260f.png

Wählen Sie im Pop-up-Fenster Ihr Qwiklabs-Projekt aus.

f661047956a6d6f9.png

11. Code mit Gemini Code Assist erklären

Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Datei devai-review.yml und wählen Sie Gemini Code Assist > Explain aus.

41fb7da002bdf43.png

Erklärung zur Überprüfung:

7724d52e54918c00.png

12. DEVAI CLI lokal ausführen

Kehren Sie zum Cloud Shell-Terminal zurück und führen Sie die folgenden Befehle aus, um devai lokal zu installieren.

pip3 install devai-cli

Die Befehlszeile wurde installiert, befindet sich aber nicht im 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.

Führen Sie den folgenden Befehl aus, um die Umgebungsvariable PATH zu aktualisieren. Ersetzen Sie diesen durch den Namen des Basisordners des Nutzers. Beispiel: student_00_478dfeb8df15

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

Führen Sie den Befehl „devai“ aus, um die Codeüberprüfung lokal durchzuführen. Prüfen Sie die Befehlszeilenausgabe.

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

Öffnen Sie das Überprüfungsskript mit dem folgenden Befehl:

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

Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Datei review.py und wählen Sie Gemini Code Assist > Explain aus.

Lesen Sie die Erklärung.

30e3baf4c272c8ab.png

13. DevAI CLI Development

In diesem Abschnitt nehmen Sie Änderungen an der devai-Befehlszeile vor.

Richten Sie zuerst eine Python-virtuelle Umgebung ein, installieren Sie die erforderlichen Komponenten und führen Sie den Beispielbefehl aus.

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

Führen Sie den Befehl zur Codeüberprüfung noch einmal aus, um zu prüfen, ob alles richtig funktioniert:

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

Prüfen Sie die Ergebnisse mithilfe der Markdown-Vorschau im Cloud Shell-Editor.

Erstellen Sie eine neue Datei und fügen Sie die Antwort von Gemini ein.

Öffnen Sie dann die Befehlspalette und wählen Sie „Markdown: Open Preview“ aus.

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

14. devai-Befehlszeilenbefehle

Befehl für die Codeüberprüfung

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

Befehl für Leistungsüberprüfung

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

Befehl für die Sicherheitsüberprüfung

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

Befehl zum Überprüfen der Testabdeckung

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

Befehle zur Überprüfung von Blockierungen

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

Bild-/Diagrammüberprüfung und -zusammenfassung:

Eingabediagramm[~/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

Befehl überprüfen:

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

Ausgabe:

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.

Bilddifferenzanalyse:

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

Ausgabe:

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.

Befehl zum Erstellen der Dokumentation:

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

Ausgabe:

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

Im Cloud Shell-Editor sind folgende devai-Befehle verfügbar:

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

Sie können sich auch die Datei README.md im GitHub-Repository ansehen.

15. Glückwunsch!

Herzlichen Glückwunsch, Sie haben das Codelab abgeschlossen.

Behandelte Themen:

  • Schritte zur Automatisierung der GenAI-Codeüberprüfung in GitHub hinzufügen
  • devai-CLI lokal ausführen

Nächste Schritte:

  • Weitere praktische Übungen folgen!

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.