1. Übersicht
In diesem Lab richten Sie die CICD-Pipeline ein und binden Gemini ein, um die Schritte zur Codeüberprüfung zu automatisieren.
Lerninhalte
In diesem Lab lernen Sie Folgendes:
- Anleitung zur Automatisierung der Codeüberprüfung für generative KI in GitHub, GitLab und CircleCI
- LangChain ReAct-Agents und -Toolkits zur Automatisierung von Aufgaben wie dem Kommentieren von GitLab-Problemen und dem Öffnen von JIRA-Tickets verwenden
Vorbereitung
- In diesem Lab wird davon ausgegangen, dass Sie mit der Cloud Console und Cloud Shell-Umgebungen vertraut sind.
2. Einrichtung und Anforderungen
Cloud-Projekt einrichten
- 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 eines erstellen.
- 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 sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen 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 gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.
Umgebung einrichten
Öffnen Sie den Gemini-Chat.
Oder gib „Gemini fragen“ ein in die Suchleiste ein.
Aktivieren Sie die Cloud AI Companion API:
Klicke auf „Start chatting
“ und folge einer der Beispielfragen oder gib einen eigenen Prompt ein, um es auszuprobieren.
Probiere folgende Prompts aus:
- Erläutern Sie Cloud Run in fünf wichtigen Punkten.
- Sie sind Produktmanager für Google Cloud Run. Erläutern Sie Cloud Run einem Studenten in fünf kurzen Punkten.
- Sie sind Google Cloud Run Product Manager. Erklären Sie einem zertifizierten Kubernetes-Entwickler Cloud Run in 5 kurzen wichtigen Punkten.
- Sie sind Google Cloud Run Product Manager. In 5 kurzen wichtigen Punkten erklären Sie einem Senior Developer, wann Sie Cloud Run im Vergleich zu GKE einsetzen würden.
Weitere Informationen zum Schreiben besserer Prompts finden Sie in der Anleitung: Prompts.
So verwendet Gemini for Google Cloud Ihre Daten
Selbstverpflichtung von Google zum Datenschutz
Google war eines der ersten Unternehmen in der Branche, das eine Datenschutzverpflichtung für KI/ML veröffentlicht hat. Diese Verpflichtung verdeutlicht unsere Überzeugung, dass Kunden ein höchstes Maß an Sicherheit und Kontrolle über ihre in der Cloud gespeicherten Daten haben sollten.
Daten, die Sie senden und empfangen
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-Vervollständigungen, 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 sowohl mit Google Cloud-Code selbst als auch mit ausgewähltem Drittanbietercode trainiert. Sie sind für die Sicherheit, das Testen und die Effektivität Ihres Codes verantwortlich. Dies schließt die Codevervollständigung, ‐generierung und ‐analyse ein, die Gemini Ihnen anbietet.
Weitere Informationen dazu, wie Google mit Ihren Prompts umgeht
3. Optionen zum Testen von Prompts
Wenn Sie vorhandene Devai Cli-Prompts ändern oder erweitern möchten, haben Sie 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. Registrieren Sie sich für Gemini 1.5 Pro mit 1 Mio. Kontextfenster oder weitere Informationen.
- Gemini-Web-App (gemini.google.com)
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.
- Mobile Google Gemini App für Android und Google App für iOS
4. Dienstkonto erstellen
Klicken Sie zum Aktivieren von Cloud Shell auf das Symbol rechts neben der Suchleiste.
Aktivieren Sie im geöffneten Terminal die erforderlichen Dienste, um Vertex AI APIs und den 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.
Führen Sie die folgenden Befehle aus, um ein neues Dienstkonto und Schlüssel zu erstellen.
Sie verwenden dieses Dienstkonto, um API-Aufrufe von CICD-Pipelines an die Vertex AI Gemini API 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. Fork-GitHub-Repository zu Ihrem persönlichen GitHub-Repository erstellen
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-Workflows aktivieren
Öffnen Sie das verzweigte GitHub-Repository im Browser und wechseln Sie zu „Actions
“ um Workflows zu aktivieren.
7. Repository-Secrets hinzufügen
Erstellen Sie im abgezweigten GitHub-Repository unter „Settings / Secrets and variables / Actions
“ ein Repository-Secret.
Fügen Sie das Repository-Secret mit dem Namen „GOOGLE_API_CREDENTIALS
“ hinzu.
Wechseln Sie zum Google Cloud Shell-Fenster/-Tab 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.
Fügen Sie das Secret PROJECT_ID
mit Ihrer Qwiklabs-Projekt-ID als Wert hinzu
8. GitHub Actions-Workflow ausführen
Gehen Sie im Browser zu Ihrem GitHub-Repository und führen Sie den Workflow aus.
Der Workflow ist so konfiguriert, dass er bei Code-Push oder manueller Ausführung ausgeführt wird.
„GenAI For Developers
“ auswählen und klicken Sie unter „Alle Workflows“ auf „Run workflow
“. mit "main
" Branch.
Ergebnisse prüfen
Ergebnisse des Befehls „Test Coverage“:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Ergebnisse des Codeüberprüfungsbefehls:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Ergebnisse des Befehls „Leistungsüberprüfung“:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Ergebnisse des Befehls „security review“:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Blocker prüfen die Ergebnisse des Befehls:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml
9. Repository klonen
Kehren Sie zum Cloud Shell-Terminal zurück und klonen Sie das Repository.
Erstellen Sie einen Ordner für das GitHub-Repository.
mkdir github
cd github
Ersetzen Sie YOUR-GITHUB-USERID
durch Ihre GitHub-Nutzer-ID, bevor Sie die Befehle ausführen.
Legen Sie den Git-Nutzernamen und die E-Mail-Adresse im Terminal fest.
Aktualisieren Sie die Werte, bevor Sie die Befehle ausführen.
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
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.
10. Gemini Code Assist aktivieren
Klicken Sie rechts unten auf das Symbol Gemini
.
Klicken Sie auf „Login to Google Cloud
“. und "Select a Google Cloud Project
".
Wählen Sie im Pop-up-Fenster Ihr Qwiklabs-Projekt aus.
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.
Erläuterung ansehen:
12. DEVAI CLI lokal ausführen
Kehren Sie zum Cloud Shell-Editor zurück und öffnen Sie ein neues Terminal.
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 cli“ aus, um eine Codeüberprüfung lokal durchzuführen. Prüfen Sie die Befehlszeilenausgabe.
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
Ö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.
Erklärung überprüfen
13. DevAI-CLI-Entwicklung
In diesem Abschnitt nehmen Sie Änderungen an Devai Cli vor.
Richten Sie zuerst eine Python-virtuelle Umgebung ein, installieren Sie die erforderlichen Komponenten und führen Sie den Beispielbefehl aus.
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
Führen Sie den Befehl zur Überprüfung der Testabdeckung aus, um zu prüfen, ob alles richtig funktioniert:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
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.
14. Devai-Cli-Befehle entdecken
Befehl zur Codeüberprüfung
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
Befehl zur Leistungsüberprüfung
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
Befehl für die Sicherheitsüberprüfung
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
Befehl zum Testen der Abdeckung
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Blockierungen prüfen Befehle
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
Bild-/Diagrammüberprüfung und -zusammenfassung:
Eingabediagramm [~/github/genai-for-developers/images/extension-diagram.png
]:
Befehl überprüfen:
devai review image \
-f ~/github/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.
Bilddifferenz-Analyse:
devai review imgdiff \
-c ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/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 ~/github/genai-for-developers/sample-app/src/main/
Ausgabe:
# 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)
Sehen Sie sich die verfügbaren Devai-Cli-Befehle im Cloud Shell-Editor an:
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
Sie können sich auch die Datei README.md im GitHub-Repository ansehen.
15. Alle Umgebungsvariablen in einer Datei verfolgen
Erstellen Sie eine neue Datei, um den Überblick über alle Umgebungsvariablen (z.B. API-Schlüssel, API-Tokens usw.) zu behalten, die Sie erstellen werden.
Sie werden sie im Verlauf des Labs häufig für verschiedene Systeme verwenden, sodass es einfacher ist, sie an einem Ort zu referenzieren.
16. LangSmith-LLM-Tracingkonfiguration
Erstellen Sie ein LangSmith-Konto und generieren Sie im Bereich „Einstellungen“ einen Service API-Schlüssel. https://docs.smith.langchain.com/
Legen Sie die für die LangSmith-Integration erforderlichen Umgebungsvariablen fest. Ersetzen Sie den Dienst-API-Schlüssel, bevor Sie die Befehle ausführen.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
Damit keine vertraulichen Informationen im Terminal preisgegeben werden, empfiehlt es sich, read -s
zu verwenden. Dies ist eine sichere Methode, um Umgebungsvariablen festzulegen, ohne dass im Befehlsverlauf der Konsole ein Wert angezeigt wird. Nach der Ausführung müssen Sie den Wert einfügen und die Eingabetaste drücken.
17. JIRA-Befehlskonfiguration
Erstellen Sie ein JIRA-Konto, falls Sie noch keines haben.
Erstellen Sie ein JIRA API-Token für Ihr Projekt. https://id.atlassian.com/manage-profile/security/api-tokens
Legen Sie die Umgebungsvariablen fest, die für die JIRA-Integration erforderlich sind. Ersetzen Sie die Werte, bevor Sie die Befehle ausführen.
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
Datei review.py
öffnen:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
review.py
-Datei prüfen:
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)
Entfernen Sie die Kommentarzeichen in der Zeile unter dieser:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
JIRA-Befehl am Anfang der Datei importieren
# from devai.commands.jira import create_jira_issue
Methode zum Erstellen eines JIRA-Problems mit der code
-Methode
#create_jira_issue("Code Review Results", response.text)
Führen Sie den Befehl zur Codeüberprüfung noch einmal aus und prüfen Sie die Agent-Ausgabe:
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
Beispielausgabe:
(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: Die Funktion __call__
wurde in LangChain 0.1.0.2.0 eingestellt und wird entfernt. Verwenden Sie stattdessen Invoke. warn_deprecated(
Neue AgentExecutor-Kette wird aufgerufen… Überlegung: Die Beschreibung ist in der Frage enthalten, daher gibt es nichts zu überlegen. Aktion:
{
"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."
}
}
Neues Problem mit dem Schlüssel CYMEATS-117 erstellt
Beobachtung: Neues Problem mit Schlüssel erstellt: CYMEATS-117 Gedanken:Letzte Antwort: CYMEATS-117
Kette fertiggestellt.
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
Wechseln Sie das Verzeichnis und öffnen Sie die Datei .gitlab-ci.yml
.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
Falls Sie dies noch nicht getan haben, aktivieren Sie Gemini
im Cloud Shell-Editor.
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Datei „.gitlab-ci.yml
“ und wählen Sie „Gemini Code Assist > Explain
this"
“ aus.
18. Konfiguration des GitLab-Befehls
Öffnen Sie GitLab und erstellen Sie unter „Settings / Access Tokens
“ ein Zugriffstoken für das Projekt. im GitLab-Repository, das in den vorherigen Schritten erstellt wurde.
Kopieren Sie den Wert des Zugriffstokens und speichern Sie ihn für die nächsten Schritte.
Verwenden Sie die folgenden Details:
- Tokenname:
devai-cli-qwiklabs
- Rolle:
Maintainer
- Umfang:
api
Legen Sie die für die GitLab-Integration erforderlichen Umgebungsvariablen fest.
Für diesen Befehl müssen Sie Ihr GitLab-Zugriffstoken aktualisieren.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
Für diesen Befehl müssen Sie Ihre GitLab-Nutzer-ID und den Repository-Namen aktualisieren.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Legen Sie die restlichen Umgebungsvariablen fest:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
Öffnen Sie die GitLab-Website und erstellen Sie in Ihrem Projekt ein neues GitLab-Problem mit dem Titel „CICD AI Insights
“.
Alternativ können Sie auch den folgenden curl-Befehl verwenden. Sie benötigen eine GitLab-Projekt-ID. Sie finden sie im Bereich „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
Kehren Sie zu Cloud Shell zurück und öffnen Sie die Datei review.py
:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
Code unten suchen und Kommentar entfernen
Zeile zum Importieren des GitLab-Befehls
# from devai.commands.gitlab import create_gitlab_issue_comment
Methode zum Kommentieren eines GitLab-Problems
# create_gitlab_issue_comment(response.text)
19. DevAI CLI-Entwicklung
Da Sie zum GitLab-Repository/-Verzeichnis gewechselt sind. Sie müssen die folgenden Einrichtungsschritte noch einmal ausführen.
Richten Sie im Terminal Ihre Python-virtuelle Umgebung ein, installieren Sie die erforderlichen Komponenten und führen Sie den Beispielbefehl aus.
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
Sie können den Speicherort der CLI prüfen. Diesmal sollte sie sich im GitLab-Ordner befinden.
which devai
Führen Sie im Terminal den Befehl zur Codeüberprüfung noch einmal aus:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Beispielausgabe mit einigen verkürzten Abschnitten:
(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.
Öffnen Sie die GitLab und sehen Sie sich das aktualisierte Problem an.
Sehen Sie sich den LLM-Trace in LangSmith an.
Beispiel-LLM-Trace
20. Änderungen per Push an GitLab-Repository übertragen
Kehren Sie zum Google Cloud Shell-Editor zurück.
Zu „Source Control
“ wechseln .
Stagieren, committen und pushen Sie die Änderungen, die Sie an der Datei review.py
vorgenommen haben.
21. GitLab-CI/CD-Konfiguration
Als Nächstes aktivieren Sie die GitLab-CICD-Pipeline, um Codeüberprüfungen auszuführen, wenn Änderungen per Push-Befehl an das Repository übertragen werden.
Öffnen Sie die GitLab und gehen Sie zum Abschnitt „Settings / CICD"
“.
Maximieren Sie den Bereich Variables
und klicken Sie auf Add variable
.
Achten Sie darauf, dass Sie alle Kästchen deaktivieren, wenn Sie die Variablen hinzufügen. Beispiel:
Fügen Sie anhand Ihrer Notizen, in denen Sie alle Umgebungsvariablen aufbewahren, Umgebungsvariablen für JIRA, GitLab und LangSmith hinzu.
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"
Verwenden Sie als Variablenwert für GOOGLE_CLOUD_CREDENTIALS
den Dienstkontoschlüssel, der im Abschnitt oben erstellt wurde.
cat ~/vertex-client-key.json
Ansicht „CI/CD-Variablen“:
22. GitLab-CICD-Pipeline ausführen
„Build / Pipelines
“ öffnen in der GitLab-UI und klicken Sie auf „Run Pipeline
“.
23. GitLab-Pipeline-Ausgabe prüfen
„Build / Jobs
“ öffnen in der GitLab-UI und überprüfen Sie die Pipelineausgabe.
Öffne die GitLab und sieh dir die aktualisierten Kommentare zu „CICD Insights
“ an Problem.
Ausführung von GitLab-Workflows deaktivieren
Kehren Sie zum Google Cloud Shell-Editor zurück. Entfernen Sie die Kommentarzeichen der Zeilen, um die Ausführung des GitLab-Workflows bei Code-Push-Ereignissen zu deaktivieren. Sie können den Workflow weiterhin bei Bedarf über die Benutzeroberfläche ausführen.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
Öffnen Sie .gitlab-ci.yml
im Stammverzeichnis des Projekts und entfernen Sie die Kommentarzeichen in den Zeilen:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
Zu „Source Control
“ wechseln tab - Stage, führen Sie einen Commit durch und übertragen Sie diese Änderung.
24. CircleCI-Integration
Was ist CircleCI?
CircleCI ist eine cloudbasierte CI/CD-Plattform, mit der Teams ihre Softwareentwicklungs- und Bereitstellungsprozesse automatisieren können. Es lässt sich in Versionskontrollsysteme wie GitHub, Bitbucket und GitLab einbinden. So können Teams Codeänderungen durch automatisierte Tests und Builds in Echtzeit validieren. Für die kontinuierliche Bereitstellung kann CircleCI die Bereitstellung von Software in verschiedenen Cloud-Umgebungen wie AWS, Google Cloud und Azure automatisieren.
Einrichtung
Öffnen Sie die CircleCI-Website und erstellen Sie ein neues Projekt. „GitLab
“ auswählen / „Cloud
“ für Ihr Repository.
Gewähren Sie CircleCI Zugriff auf Ihr GitLab-Konto.
Wählen Sie unter „Schnellste Option“ den Zweig main
aus. CircleCI erkennt möglicherweise eine vorhandene Konfigurationsdatei und überspringt diesen Schritt.
Klicken Sie nach dem Erstellen des Projekts auf „Project Settings
“. / „Environment Variables
“ .
Fügen Sie alle Umgebungsvariablen hinzu, die Sie bisher verwendet haben.
Hier ist eine Beispielliste der Umgebungsvariablen, die hinzugefügt werden sollen.
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- und GitLab-Methoden aktivieren
Öffnen Sie den Google Cloud Shell-Editor und ändern Sie die Datei review.py
.
Entfernen Sie die Kommentarzeichen in den folgenden Zeilen.
# 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)
Zu „Source Control
“ wechseln tab - Stage, führen Sie einen Commit durch und übertragen Sie diese Änderung.
Rufen Sie die GitLab auf und rufen Sie „Build
“ auf. / "Pipelines
"
Klicken Sie auf den Link zu CircleCI, um sich den Workflow anzusehen.
Sehen Sie sich die Kommentare zum GitLab-Problem in Ihrem Repository an.
Sehen Sie sich neue Probleme an, die in Ihrem JIRA-Projekt erstellt wurden.
26. Glückwunsch!
Sie haben das Lab abgeschlossen.
Behandelte Themen:
- Automatisierungsschritte für die GenAI-Codeüberprüfung in GitHub, GitLab und CircleCI hinzugefügt.
- LangChain ReAct-Kundenservicemitarbeiter automatisieren Aufgaben wie das Kommentieren von GitLab-Problemen und das Öffnen von JIRA-Tickets
Nächste Schritte:
- Bald gibt es weitere praktische Übungen!
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.