1. Übersicht
In diesem Lab erstellen Sie eine Lösung, mit der sich die Implementierung von JIRA-Use-Cases mit GenAI automatisieren lässt.
Lerninhalte
Das Lab besteht aus mehreren Hauptteilen:
- Cloud Run-Anwendung für die Einbindung in Gemini APIs bereitstellen
- Atlassian Forge-App für JIRA erstellen und bereitstellen
- LangChain ReAct-Agenten für die Automatisierung von GitLab-Aufgaben
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
- 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.
- 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.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung 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.
Sie können auch „Fragen Sie Gemini“ in die Suchleiste eingeben.
Cloud AI Companion API aktivieren:
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 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 Erstellen besserer Prompts finden Sie in der Anleitung: 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.
3. Optionen zum Testen von Prompts
Es gibt mehrere Möglichkeiten, Prompts zu testen.
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.
- 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.
- Google Gemini App für Android und Google App für iOS
4. (OPTIONAL SECTION) Create Service Account
Diese Schritte wurden während der Lab-Einrichtung ausgeführt und müssen nicht noch einmal ausgeführt werden.
In diesen Schritten wird gezeigt, wie Sie ein Dienstkonto und IAM-Rollen einrichten.
Kehren Sie zur Google Cloud Console zurück und aktivieren Sie Cloud Shell, indem Sie auf das Symbol rechts neben der Suchleiste klicken.
Führen Sie im geöffneten Terminal 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 der Cloud Run-Anwendung zu senden.
Konfigurieren Sie die Projektdetails mithilfe Ihrer Qwiklabs-Projektdetails.
Beispiel: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
Erstellen Sie ein Dienstkonto und gewähren Sie Rollen.
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 --project $PROJECT_ID --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"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf „Autorisieren“, um fortzufahren.
Aktivieren Sie die erforderlichen Dienste, um Vertex AI APIs und Gemini-Chat zu verwenden.
gcloud services enable \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
Aktivieren Sie die erforderlichen Dienste, um Vertex AI APIs und Gemini-Chat zu verwenden.
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
runapps.googleapis.com \
workstations.googleapis.com \
servicemanagement.googleapis.com \
secretmanager.googleapis.com \
containerscanning.googleapis.com
(END OF OPTIONAL SECTION)
5. Zugriff auf Cloud Workstations gewähren
Öffnen Sie Cloud Workstations in der Cloud Console.
Gewähren Sie dem bereitgestellten Qwiklabs-Studenten Zugriff auf Cloud Workstation.
Kopieren Sie den für dieses Projekt erstellten Qwiklabs-Nutzernamen/-E-Mail-Adresse und fügen Sie damit einen Hauptberechtigten hinzu. Wählen Sie die Workstation aus und klicken Sie auf PERMISSIONS
.
Weitere Informationen finden Sie unten.
Klicke auf die Schaltfläche „ADD PRINCIPAL
“.
Fügen Sie die E-Mail-Adresse des Qwiklabs-Teilnehmers ein und wählen Sie die Rolle „Cloud Workstations User
“ aus.
Klicken Sie auf „Start
“ und dann auf „Launch
“, um die Workstation zu öffnen, und fahren Sie mit den folgenden Schritten über das integrierte Terminal fort.
GitHub-Repository klonen
Erstellen Sie einen Ordner und klonen Sie das GitHub-Repository.
mkdir github
cd github
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
Öffnen Sie über den Menüpunkt „File / Open Folder
“ die Seite „github/genai-for-developers
“.
6. Gemini Code Assist aktivieren
Klicken Sie auf das Gemini-Symbol und dann rechts unten auf Login to Google Cloud
.
Klicken Sie auf den Link im Terminal, um den Autorisierungsvorgang zu starten.
Klicken Sie auf „Öffnen“, um den Link zu öffnen.
Wählen Sie Ihr Qwiklabs-Teilnehmerkonto aus und klicken Sie auf dem nächsten Bildschirm auf „Anmelden“.
Bestätigungscode kopieren:
Kehren Sie zum Terminal zurück und fügen Sie den Code ein.
Warten Sie, bis die Authentifizierung abgeschlossen ist, und klicken Sie dann auf „Google-Projekt auswählen“.
Wählen Sie im Pop-up-Fenster Ihr Qwiklabs-Projekt aus.
Beispiel:
Öffnen Sie die Datei „devai-api/app/routes.py
“, klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Datei und wählen Sie im Kontextmenü „Gemini > Explain
this"
“ aus.
Lesen Sie die Erklärung von Gemini für die ausgewählte Datei.
7. LangChain-Toolkits
LangChain-Toolkits sind Tools, die die Entwicklung von Anwendungen mit LangChain optimieren und verbessern sollen. Je nach Toolkit bieten sie verschiedene Funktionen, aber im Allgemeinen helfen sie bei:
- Verbindung zu externen Datenquellen herstellen: Sie können auf Informationen aus APIs, Datenbanken und anderen externen Quellen zugreifen und sie in Ihre LangChain-Anwendungen einbinden.
- Erweiterte Prompt-Techniken: Sie können vordefinierte Prompts verwenden oder benutzerdefinierte Prompts erstellen, um die Interaktionen mit Sprachmodellen zu optimieren.
- Erstellen und Verwalten von Ketten: Sie können ganz einfach komplexe Ketten erstellen und effizient verwalten.
- Bewertung und Monitoring: Analysieren Sie die Leistung Ihrer LangChain-Anwendungen und -Chains.
Zu den beliebten LangChain-Toolkits gehören:
- Agent Executor Toolkits: Tools zur Entwicklung von Agenten, die über Aktionen wie Websurfen oder Codeausführung mit der realen Welt interagieren können.
- Prompt Engineering Toolkit: Eine Sammlung von Ressourcen zum Erstellen effektiver Prompts.
GitLab Toolkit
In diesem Lab verwenden Sie das GitLab-Toolkit, um das Erstellen von GitLab-Zusammenführungsanfragen zu automatisieren.
Das GitLab-Toolkit enthält Tools, mit denen ein LLM-Agent mit einem GitLab-Repository interagieren kann. Das Tool ist ein Wrapper für die python-gitlab
-Bibliothek.
Das GitLab-Toolkit kann folgende Aufgaben ausführen:
- Datei erstellen: Damit wird eine neue Datei im Repository erstellt.
- Datei lesen: Liest eine Datei aus dem Repository.
- Datei aktualisieren: Hiermit wird eine Datei im Repository aktualisiert.
- Pull-Anfrage erstellen: Erstellt eine Pull-Anfrage vom Arbeitszweig des Bots an den Basiszweig.
- Get Issue: Hiermit werden Probleme aus dem Repository abgerufen.
- Problem abrufen: Hiermit werden Details zu einem bestimmten Problem abgerufen.
- Problem kommentieren: Hiermit können Sie einen Kommentar zu einem bestimmten Problem posten.
- Datei löschen: Hiermit wird eine Datei aus dem Repository gelöscht.
8. Konfiguration des GitLab-Repositories und des Toolkits
Öffnen Sie GitLab, erstellen Sie ein neues öffentliches Projekt und richten Sie unter „Settings / Access Tokens
“ ein Projektzugriffstoken ein.
Verwenden Sie die folgenden Details:
- Token name:
devai-api-qwiklabs
- Rolle:
Maintainer
- Wählen Sie Bereiche aus:
api
Kopieren Sie den Wert des Zugriffstokens und fügen Sie ihn in eine temporäre Datei auf Ihrem Laptop ein. Sie benötigen ihn für die nächsten Schritte.
9. Anwendung für die Bereitstellung in Cloud Run vorbereiten
Kehren Sie zur Cloud Workstations-Instanz zurück und verwenden Sie ein vorhandenes Terminal oder öffnen Sie ein neues.
Rufen Sie die Anmeldedaten für Ihr Nutzerkonto über einen webbasierten Autorisierungsvorgang ab.
Klicken Sie auf den Link und folgen Sie der Anleitung, um einen Bestätigungscode zu generieren.
gcloud auth login
Konfigurieren Sie die Projektdetails mithilfe Ihrer Qwiklabs-Projektdetails.
Beispiel: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR-QWIKLABS-PROJECT-ID
Legen Sie die restlichen Umgebungsvariablen fest:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
Legen Sie die für die GitLab-Integration erforderlichen Umgebungsvariablen fest.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token
Um die Offenlegung vertraulicher Informationen im Terminal zu vermeiden, wird empfohlen, read -s
zu verwenden. Dies ist eine sichere Möglichkeit, Umgebungsvariablen festzulegen, ohne dass der Wert im Befehlsverlauf der Konsole angezeigt wird. Nach der Ausführung müssen Sie den Wert einfügen und die Eingabetaste drücken.
Für diesen Befehl müssen Sie Ihre GitLab-Nutzer-ID und den Repository-Namen aktualisieren.
Beispiel: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"
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"
10. LangSmith LLM-Tracing-Konfiguration
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.
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
11. JIRA-Konfiguration
Diese Werte werden in diesem Lab nicht verwendet. Sie müssen sie also nicht auf die Werte Ihres JIRA-Projekts aktualisieren, bevor Sie die Befehle ausführen.
Legen Sie die Umgebungsvariablen fest, die für die Bereitstellung des Cloud Run-Dienstes erforderlich sind.
export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
12. Devai-API in Cloud Run bereitstellen
Prüfen Sie, ob Sie sich im richtigen Ordner befinden.
cd ~/github/genai-for-developers/devai-api
In diesem Lab folgen wir Best Practices und verwenden Secret Manager, um die Werte für das Zugriffstoken und den LangChain API-Schlüssel in Cloud Run zu speichern und zu referenzieren.
Speichern Sie das JIRA-Zugriffstoken im Secret Manager.
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
Speichern Sie das GitLab-Zugriffstoken in Secret Manager.
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
Speichern Sie den LangChain API-Schlüssel im Secret Manager.
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
Die Anwendung in Cloud Run bereitstellen.
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--min-instances=1 \
--max-instances=3
Geben Sie Y
ein, um ein Artifact Registry-Docker-Repository zu erstellen.
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in
region [us-central1] will be created.
Do you want to continue (Y/n)? y
Sehen Sie sich unten den Ablauf für gcloud run deploy SERVICE_NAME --source=.
an. Weitere Informationen
Im Hintergrund verwendet dieser Befehl buildpacks
und Cloud Build
von Google Cloud, um automatisch Container-Images aus Ihrem Quellcode zu erstellen, ohne Docker auf Ihrem Computer installieren oder Buildpacks oder Cloud Build einrichten zu müssen. Das heißt, der einzige oben beschriebene Befehl würde die Befehle gcloud builds submit
und gcloud run deploy
ausführen.
Wenn Sie ein Dockerfile bereitgestellt haben(wie in diesem Repository), verwendet Cloud Build dieses, um Container-Images zu erstellen, anstatt sich auf die Buildpacks zu verlassen, die Container-Images automatisch erkennen und erstellen. Weitere Informationen zu Buildpacks finden Sie in der Dokumentation.
Sehen Sie sich die Cloud Build-Protokolle in der Console an.
Sehen Sie sich das erstellte Docker-Image in Artifact Registry an.
Öffnen Sie cloud-run-source-deploy/devai-api
und prüfen Sie die automatisch erkannten Sicherheitslücken. Suchen Sie nach Problemen, für die Lösungen verfügbar sind, und lesen Sie die Beschreibung, um zu erfahren, wie Sie das Problem beheben können.
Sehen Sie sich die Cloud Run-Instanzdetails in der Cloud Console an.
Testen Sie den Endpunkt mit dem Befehl „curl“.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"prompt": "Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything."}' \
$(gcloud run services list --filter="(devai-api)" --format="value(URL)")/generate
(OPTIONALER ABSCHNITT) Cloud Workstation einrichten
Cloud Workstations bietet verwaltete Entwicklungsumgebungen in Google Cloud mit integrierter Sicherheit und vorkonfigurierten, aber anpassbaren Entwicklungsumgebungen. Anstatt Ihre Entwickler Software installieren und Einrichtungsscripts ausführen zu lassen, können Sie eine Workstation-Konfiguration erstellen, die Ihre Umgebung auf reproduzierbare Weise angibt. Alle Updates an einer Workstationkonfiguration werden beim nächsten Start automatisch auf die Workstations angewendet. Entwickler greifen über eine browserbasierte IDE, über mehrere lokale Code-Editoren (z. B. VSCode oder JetBrains-IDEs wie IntelliJ IDEA Ultimate und PyCharm Professional) oder über SSH auf die Workstations zu.
Cloud Workstations verwendet die folgenden Google Cloud-Ressourcen, um Ihre Entwicklungsumgebungen zu verwalten:
- Workstation-Cluster definieren eine Gruppe von Workstations in einer bestimmten Region und das VPC-Netzwerk, mit dem sie verbunden sind. Workstation-Cluster haben keinen Bezug zu Google Kubernetes Engine-Clustern (GKE).
- Workstationkonfigurationen dienen als Vorlagen für Workstations. In der Workstation-Konfiguration werden unter anderem Details wie der Typ der VM-Instanz (virtuelle Maschine) der Workstation, der nichtflüchtige Speicher, die Umgebung für die Definition des Container-Images und die zu verwendende IDE oder der zu verwendende Code-Editor festgelegt. Administratoren und Plattformteams können auch IAM-Regeln (Identity and Access Management) verwenden, um Teams oder einzelnen Entwicklern Zugriff zu gewähren.
- Workstations sind vorkonfigurierte Entwicklungsumgebungen, die unter anderem eine Cloud-IDE, Sprachtools und Bibliotheken bieten. Workstations können bei Bedarf gestartet oder beendet werden und auf Compute Engine-VMs in Ihrem Projekt ausgeführt werden. Dazu ist ein persistentes Laufwerk erforderlich, um Daten zwischen den Sitzungen zu speichern.
Administratoren und Plattformteams erstellen Workstation-Konfigurationen, die sie mit ihrem Entwicklungsteam teilen. Jeder Entwickler erstellt eine Workstation basierend auf einer Workstationkonfiguration.
In diesem Lab verwenden Sie eine browserbasierte IDE. Cloud Workstations unterstützt aber auch andere gängige Entwicklungsoberflächen:
- Sie können Ihre eigenen lokalen JetBrains-IDEs über JetBrains Gateway verwenden.
- Wenn Sie Local VSCode verwenden, können Sie auch über SSH auf Ihre Workstations für die Remote-Entwicklung zugreifen.
- Sie können auch SSH- und sogar TCP-Tunnel zu Ihrer Workstation von Ihrem lokalen Computer aus einrichten.
(OPTIONALER ABSCHNITT) Workstationcluster erstellen
Diese Schritte wurden während der Lab-Einrichtung ausgeführt und müssen nicht noch einmal ausgeführt werden.
In diesen Schritten wird gezeigt, wie Sie einen Cloud Workstations-Cluster, eine Workstations-Konfiguration und eine Workstation einrichten.
Sehen Sie sich diesen Abschnitt an und fahren Sie mit dem Abschnitt zur Forge-Plattform fort.
Workstationcluster erstellen:
gcloud workstations clusters create ws-cluster --region=us-central1
Workstation-Konfiguration erstellen
gcloud workstations configs create devai-config \
--cluster=ws-cluster \
--machine-type=e2-standard-8 \
--region=us-central1 \
--running-timeout=21600 \
--idle-timeout=1800 \
--container-predefined-image=codeoss \
--pd-disk-size=200 \
--pd-disk-type=pd-standard \
--service-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com \
--pool-size=1
Workstation erstellen
gcloud workstations create devai-workstation \
--cluster=ws-cluster \
--config=devai-config \
--region=us-central1
Verfügbare Workstations in der Cloud Console ansehen Starten Sie „devai-workstation
“.
Aktiviere rechts unten „Gemini
“, melde dich auf dem neuen Browsertab an und kopiere den generierten Code zurück in die Konsole, um die Anmeldung abzuschließen.
Öffnen Sie im linken Bereich den Gemini
-Chat und fragen Sie Gemini:
„You are a Cloud Workstations Product Manager, tell me about Cloud Workstations
“
„You are Cloud Workstations Product Manager, Can I create my custom Cloud Workstations image with my company tools so new developers can onboard in minutes?
“
(END OF OPTIONAL SECTION)
13. Forge-Plattform
Forge ist eine Plattform, mit der Entwickler Apps erstellen können, die in Atlassian-Produkte wie Jira, Confluence, Compass und Bitbucket eingebunden werden können.
Forge CLI installieren
Führen Sie die folgenden Befehle im Terminal aus.
Laden Sie den Node Version Manager ( nvm) herunter und machen Sie ihn im Pfad der aktuellen Terminalsitzung verfügbar.
cd ~/github/genai-for-developers
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Installieren Sie nvm.
Wählen Sie den neuesten Node.js-LTS-Release aus, indem Sie im Terminal Folgendes ausführen:
nvm install --lts
nvm use --lts
Installieren Sie die Forge CLI global mit dem Befehl:
npm install -g @forge/cli
In diesem Lab verwenden wir Umgebungsvariablen für die Anmeldung.
JIRA-Projekt einrichten
JIRA-Projekte mit Ihrem privaten Konto erstellen und ansehen.
Vorhandene JIRA-Projekte prüfen: https://admin.atlassian.com/
Erstellen Sie mit Ihrem privaten Konto ein neues JIRA-Projekt.
Rufen Sie https://team.atlassian.com/your-work auf, klicken Sie auf und wählen Sie dann
aus. Wählen Sie dann „JIRA Software“ und dann „Jetzt testen“ aus. Folgen Sie der Anleitung, um das Projekt bzw. die Website zu erstellen.
Wählen Sie „Jira Software“ aus.
Erstellen Sie ein neues Projekt.
14. Atlassian API-Token
Erstellen Sie ein Atlassian API-Token oder verwenden Sie ein vorhandenes, um sich in der Befehlszeile anzumelden.
Die Befehlszeile verwendet Ihr Token, wenn Befehle ausgeführt werden.
- Rufen Sie https://id.atlassian.com/manage/api-tokens auf.
- Klicken Sie auf API-Token erstellen.
- Geben Sie ein Label ein, um Ihr API-Token zu beschreiben. Beispiel: forge-api-token.
- Klicken Sie auf Erstellen.
- Klicken Sie auf In die Zwischenablage kopieren und schließen Sie das Dialogfeld.
Führen Sie den folgenden Befehl im Terminal von Cloud Workstations aus.
Melden Sie sich in der Forge-Befehlszeile an, um Forge-Befehle verwenden zu können.
Legen Sie Ihre JIRA-/FORGE-E-Mail-Adresse fest. Ersetzen Sie „your_email_address“ durch Ihre E-Mail-Adresse.
export FORGE_EMAIL=your-email
Forge API-Token festlegen Ersetzen Sie das JIRA API-Token.
export FORGE_API_TOKEN=your-jira-api-token
Testen Sie die Forge-Befehlszeile, indem Sie den folgenden Befehl ausführen. Antworten Sie mit „No
“, wenn Sie gefragt werden, ob Sie Analysen erfassen möchten.
forge settings set usage-analytics false
Prüfen Sie, ob Sie angemeldet sind.
forge whoami
Beispielausgabe:
Logged in as John Green (johngreen@email.com) Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd
Forge-Anwendung erstellen
Sie müssen sich im Ordner „~/github/genai-for-developers
“ befinden.
Befehl ausführen, um eine Forge-Anwendung zu erstellen
forge create
Geben Sie die folgenden Werte ein, wenn Sie dazu aufgefordert werden:
- App-Name:
devai-jira-ui-qwiklabs
- Wählen Sie eine Kategorie aus:
UI Kit
- Wählen Sie ein Produkt aus:
Jira
- Wählen Sie eine Vorlage aus:
jira-issue-panel
Wechseln Sie in den Ordner der Anwendung.
cd devai-jira-ui-qwiklabs/
Führen Sie den Bereitstellungsbefehl aus.
forge deploy
Beispielausgabe:
Deploying your app to the development environment. Press Ctrl+C to cancel. Running forge lint... No issues found. ✔ Deploying devai-jira-ui-qwiklabs to development... ℹ Packaging app files ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment.
Installieren Sie die Anwendung.
forge install
Geben Sie die folgenden Werte ein, wenn Sie dazu aufgefordert werden:
- Wählen Sie ein Produkt aus:
Jira
- Geben Sie die Website-URL ein:
your-domain.atlassian.net
Beispielausgabe:
Select the product your app uses. ? Select a product: Jira Enter your site. For example, your-domain.atlassian.net ? Enter the site URL: genai-for-developers.atlassian.net Installing your app onto an Atlassian site. Press Ctrl+C to cancel. ? Do you want to continue? Yes ✔ Install complete! Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net
Öffnen Sie Ihre JIRA-Website und erstellen Sie eine neue JIRA-Aufgabe mit der folgenden Beschreibung:
Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.
Wenn Sie die Aufgabe öffnen, sehen Sie die Schaltfläche „devai-jira-ui-qwiklabs
“.
Klicken Sie auf die Schaltfläche und prüfen Sie die Änderungen auf der Benutzeroberfläche.
Forge-Backend-Logs aufrufen
forge logs
Atlassian Developer Console
Sie können bereitgestellte Apps auch in der Atlassian Developer Console ansehen und verwalten.
Protokolle prüfen – zur Development
-Umgebung wechseln,
Manifest und Quellcode der Forge-Anwendung überprüfen
Öffnen Sie die Datei „devai-jira-ui-qwiklabs/manifest.yml
“ und verwenden Sie Gemini Code Assist, um sie zu erklären.
Lesen Sie die Erklärung.
Öffnen Sie die folgenden Dateien und bitten Sie Gemini Code Assist, sie zu erklären:
devai-jira-ui-qwiklabs/src/frontend/index.jsx
devai-jira-ui-qwiklabs/src/resolvers/index.js
Forge-App mit dem Cloud Run-Endpunkt der DevAI API aktualisieren
Prüfen, ob die GCP-PROJEKT-ID festgelegt ist:
gcloud config get project
Falls nicht, legen Sie Ihr GCP-Projekt mit der Projekt-ID von der Qwiklabs-Lab-Seite fest:
Beispiel: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
Cloud Run-Dienst-URL festlegen:
export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")
forge variables set DEVAI_API_URL $DEVAI_API_URL
Führen Sie den folgenden Befehl aus, um dies zu bestätigen:
forge variables list
Beispielausgabe:
Forge-Anwendungsmanifest und -Code aktualisieren
Diese Code-Snippets finden Sie im Repository im Ordner sample-devai-jira-ui
.
Öffnen Sie die Manifestdatei im Editor: devai-jira-ui-qwiklabs/manifest.yml
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu. Ersetzen Sie dabei den Cloud Run-Endpunkt durch den von Ihnen bereitgestellten.
permissions:
scopes:
- read:jira-work
- write:jira-work
external:
fetch:
client:
- devai-api-gjerpi6qqq-uc.a.run.app/generate # replace with YOUR CLOUD RUN URL
Öffnen Sie die Datei „resolvers/index“ im Editor: devai-jira-ui-qwiklabs/src/resolvers/index.js
.
Fügen Sie nach der vorhandenen getText
-Funktion Zeilen hinzu.
resolver.define('getApiKey', (req) => {
return process.env.LLM_API_KEY;
});
resolver.define('getDevAIApiUrl', (req) => {
return process.env.DEVAI_API_URL;
});
Öffnen Sie die Frontend-/Indexdatei im Editor: devai-jira-ui-qwiklabs/src/frontend/index.jsx
Ersetzen Sie index.jsx
durch den Inhalt unten. Aktualisieren Sie den Link zu Ihrer GitLab-Nutzer-ID/Ihrem GitLab-Repository.
Sie müssen DEINE-GIT-USERID und DEIN-GIT-REPO an zwei Stellen aktualisieren.
Suchen Sie in der Datei nach dieser Zeile und nehmen Sie die Änderungen vor:
https://gitlab.com/
YOUR-GIT-USERID/YOUR-GIT-REPO
/-/merge_requests
import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';
// const apiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")
const App = () => {
const context = useProductContext();
const [description, setDescription] = React.useState();
const fetchDescriptionForIssue = async () => {
const issueId = context?.extension.issue.id;
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
const data = await res.json();
// const genAI = new GoogleGenerativeAI(apiKey);
// const model = genAI.getGenerativeModel({ model: "gemini-pro"});
// const prompt = `You are principal software engineer at Google and given requirements below to implement.\nPlease provide implementation details and documentation.\n\nREQUIREMENTS:\n\n${data.fields.description}`
// const result = await model.generateContent(prompt);
// const text = result.response.text();
// const jsonText = JSON.stringify(text);
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/generate',
{
body: bodyGenerateData,
method: 'post',
headers: { 'Content-Type': 'application/json' },
}
)
const resData = await generateRes.text();
const jsonText = JSON.stringify(resData);
const bodyData = `{
"body": ${jsonText}
}`;
console.log("bodyData", bodyData)
// Add Gemini response as a comment on the JIRA issue
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
// Add link to the GitLab merge request page as a comment
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
});
return "Response will be added as a comment. Please refresh in a few moments.";
};
React.useEffect(() => {
if (context) {
fetchDescriptionForIssue().then(setDescription);
}
}, [context]);
return (
<>
<Text>{description}</Text>
<Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
</>
);
};
ForgeReconciler.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Forge-Anwendung neu bereitstellen
Fügen Sie der Datei package.json
Abhängigkeiten hinzu:
"@forge/api": "4.0.0",
Installieren Sie die Abhängigkeiten:
npm install
Aktualisierte Anwendung bereitstellen:
forge deploy
Beispielausgabe:
ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment. We've detected new scopes or egress URLs in your app. Run forge install --upgrade and restart your tunnel to put them into effect.
Aktualisierte Anwendung installieren:
forge install --upgrade
Beispielausgabe:
Upgrading your app on the Atlassian site. Your app will be upgraded with the following additional scopes: - read:jira-work - write:jira-work Your app will exchange data with the following urls: - devai-api-7su2ctuqpq-uc.a.run.app ? Do you want to continue? Yes ✔ Upgrade complete! Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.
Forge-Anwendung testen
Öffnen Sie eine vorhandene JIRA-Aufgabe oder erstellen Sie eine neue in Ihrem JIRA-Projekt.
Sie müssen das vorherige Steuerfeld entfernen, falls es bereits hinzugefügt wurde.
Klicken Sie auf ...
und wählen Sie im Menü die Option „Entfernen“ aus. Danach können Sie noch einmal auf die Schaltfläche klicken.
Jira-Kommentare prüfen
Sobald du eine Antwort von der DEVAI API erhältst, werden dem JIRA-Problem zwei Kommentare hinzugefügt.
- GitLab-Merge-Request
- Details zur Implementierung der Gemini-User Story
Wechseln Sie zwischen den Tabs „History
“ und „Comments
“, um die Ansicht zu aktualisieren.
Erstellung von GitLab-Zusammenführungsanfragen aktivieren
Öffnen Sie die Datei devai-api/app/routes.py
und entfernen Sie die Kommentarzeichen in den folgenden Zeilen der Methode generate_handler
:
print(f"{response.text}\n")
# resp_text = response.candidates[0].content.parts[0].text
# pr_prompt = f"""Create GitLab merge request using provided details below.
# Create new files, commit them and push them to opened merge request.
# When creating new files, remove the lines that start with ``` before saving the files.
# DETAILS:
# {resp_text}
# """
# print(pr_prompt)
# agent.invoke(pr_prompt)
Cloud Run-Anwendung neu bereitstellen
Prüfen Sie, ob Sie sich im richtigen Ordner befinden.
cd ~/github/genai-for-developers/devai-api
Wenn Sie dieselbe Terminalsitzung verwenden, sind möglicherweise noch alle Umgebungsvariablen festgelegt.
Prüfen Sie dies, indem Sie im Terminal „echo $GITLAB_REPOSITORY
“ eingeben.
Führen Sie die folgenden Schritte aus, um sie zurückzusetzen, wenn eine neue Terminalsitzung geöffnet wurde.
Setzen Sie die erforderlichen Umgebungsvariablen zurück, bevor Sie die Anwendung neu bereitstellen.
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"
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
export PROJECT_ID=$(gcloud config get-value project)
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
Das GitLab-Toolkit verwendet den Zweig „devai
“, um die Änderungen für die Zusammenführungsanfrage zu pushen.
Prüfen Sie, ob Sie diesen Branch bereits erstellt haben.
Die Anwendung in Cloud Run bereitstellen.
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--min-instances=1 \
--max-instances=3
End-to-End-Integration prüfen
Starten Sie den Prozess über die JIRA-Aufgabe, indem Sie noch einmal auf die Schaltfläche klicken. Prüfen Sie die Ausgabe im GitLab-Repository im Bereich „Merge Request“ und in LangSmith.
Details zur GitLab-Zusammenführungsanfrage
LangSmith-LLM-Traces
Öffnen Sie das LangSmith-Portal und prüfen Sie den LLM-Trace für den Aufruf zum Erstellen eines JIRA-Problems.
Beispiel für einen LangSmith-LLM-Trace
(OPTIONALER ABSCHNITT) Änderungen per Push in das GitHub-Repository übertragen
Rufen Sie die GitHub auf und erstellen Sie ein neues Repository, um Änderungen für dieses Lab in Ihr privates Repository zu übertragen.
Kehren Sie zur Cloud Workstations-Instanz zurück und legen Sie im Terminal den Git-Nutzernamen und die E-Mail-Adresse 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"
Generieren Sie einen SSH-Schlüssel und fügen Sie ihn dem GitHub-Repository hinzu.
Aktualisieren Sie Ihre E-Mail-Adresse, bevor Sie die Befehle ausführen.
Geben Sie keine Passphrase ein und drücken Sie nicht mehrmals die Eingabetaste, um die Schlüsselgenerierung abzuschließen.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Fügen Sie Ihrem GitHub-Konto den generierten öffentlichen Schlüssel hinzu.
Rufen Sie https://github.com/settings/keys auf und klicken Sie auf „New SSH key
“.
Verwenden Sie als Schlüsselnamen „qwiklabs-key
“ und kopieren Sie die Ausgabe des letzten Befehls per Drag-and-drop.
Kehren Sie zum Terminal zurück, übernehmen Sie die Änderungen und übertragen Sie sie per Push.
cd ~/github/genai-for-developers
git remote rm origin
Legen Sie den Remote-Ursprung mit dem oben erstellten Repository fest.
Ersetzen Sie „repository_url“ durch die URL Ihres Repositorys.
git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git
Fügen Sie die Änderungen hinzu, übernehmen Sie sie und übertragen Sie sie per Push.
git add .
git commit -m "lab changes"
git push -u origin main
15. Glückwunsch!
Sie haben das Lab erfolgreich abgeschlossen.
Behandelte Themen:
- Informationen zum Bereitstellen von Cloud Run-Anwendungen zur Einbindung in Gemini APIs.
- Informationen zum Erstellen und Bereitstellen einer Atlassian Forge-App für JIRA.
- Informationen zur Verwendung von LangChain ReAct-Agents für die Automatisierung von GitLab-Aufgaben.
- LLM-Traces in LangSmith überprüfen
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.