JIRA-User Story-Implementierung mit GenAI

1. Übersicht

In diesem Lab entwickeln Sie eine Lösung, mit der sich die Implementierung von User Storys in JIRA mit GenAI automatisieren lässt.

a4ba5d8788dc40.png

Lerninhalte

Das Lab besteht aus mehreren Hauptteilen:

  • Cloud Run-Anwendung zur Integration in Gemini APIs bereitstellen
  • Atlassian Forge-App für JIRA erstellen und bereitstellen
  • LangChain ReAct-Agents für die Automatisierung von GitLab-Aufgaben verwenden

Vorbereitung

  • Für dieses Lab wird davon ausgegangen, dass Sie mit der Cloud Console und mit 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 eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er 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
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.

Umgebung einrichten

Öffnen Sie den Gemini-Chat.

bc3c899ac8bcf488.png

Oder geben Sie „Gemini fragen“ in die Suchleiste ein.

e1e9ad314691368a.png

Aktivieren Sie die Gemini for Google Cloud API:

990a0ceea7d05531.png

Klicken Sie auf „Start chatting“ und folgen Sie einer der Beispielanfragen oder geben Sie einen eigenen Prompt ein, um die Funktion auszuprobieren.

ed120d672468b412.png

Probiere folgende Prompts aus:

  • Erkläre Cloud Run in fünf wichtigen Punkten.
  • Du bist Google Cloud Run Product Manager und sollst einem Studenten Cloud Run in fünf kurzen Stichpunkten erklären.
  • Du bist Google Cloud Run Product Manager. Erkläre einem zertifizierten Kubernetes-Entwickler Cloud Run in fünf kurzen Stichpunkten.
  • Sie sind Google Cloud Run Product Manager. Erklären Sie einem Senior Developer in fünf kurzen Stichpunkten, wann Sie Cloud Run im Vergleich zu GKE verwenden würden.

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

Verwendung Ihrer Daten durch Gemini for Google Cloud

Datenschutzverpflichtung von Google

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.

Daten, die Sie senden und empfangen

Die Fragen, die Sie Gemini stellen, einschließlich aller eingegebenen Informationen oder des Codes, den Sie zur Analyse oder Vervollständigung an Gemini senden, werden als Prompts bezeichnet. Die Antworten oder Codevorschläge, die Sie von Gemini erhalten, werden als Antworten bezeichnet. Gemini verwendet Ihre Prompts und seine Antworten nicht als Daten zum Trainieren seiner Modelle.

Verschlüsselung von Prompts

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

Von Gemini generierte Programmdaten

Gemini wurde mit eigenem Google Cloud-Code sowie mit ausgewähltem Drittanbieter-Code trainiert. Sie sind für die Sicherheit, das Testen und die Funktionsfähigkeit Ihres Codes verantwortlich, einschließlich aller Vervollständigungen, Generierungen oder Analysen von Code, die Gemini Ihnen bereitstellt.

Weitere Informationen

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 Verwendung 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 erkunden und nutzen können.

4. Bewerbung prüfen

Dienstkonto erstellen

Kehren Sie zur Google Cloud Console zurück und aktivieren Sie Cloud Shell, indem Sie rechts neben der Suchleiste auf das Symbol klicken.

3e0c761ca41f315e.png

Führen Sie im geöffneten Terminal die folgenden Befehle aus, um ein neues Dienstkonto und neue Schlüssel zu erstellen.

Sie verwenden dieses Dienstkonto, um API-Aufrufe an die Vertex AI Gemini API über die Cloud Run-Anwendung auszuführen.

Konfigurieren Sie die Projektdetails mit Ihren Qwiklabs-Projektdetails.

Beispiel: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Erstellen Sie ein Dienstkonto.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --display-name "$DISPLAY_NAME"

Rollen zuweisen

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"

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

6356559df3eccdda.png

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

GitHub-Repository klonen

GitHub-Repository klonen.

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

Cloud Shell-Editor öffnen

7e71f46b6c7b67ca.png

Öffnen Sie über das Menü File / Open Folder die Option genai-for-developers.

Öffnen Sie die Datei „devai-api/app/routes.py“, klicken Sie dann mit der rechten Maustaste auf eine beliebige Stelle in der Datei und wählen Sie im Kontextmenü „Gemini > Explain this"“ aus.

34054e1fad005ff8.png

Sehen Sie sich die Erläuterung von Gemini für die ausgewählte Datei an.

f73af988a723142.png

5. Konfiguration von GitLab-Repository und Toolkit

In diesem Lab verwenden Sie das GitLabToolkit, um das Erstellen von GitLab-Zusammenführungsanfragen zu automatisieren.

LangChain-Toolkits – Übersicht

LangChain-Toolkits sind Toolsets, die die Entwicklung von Anwendungen mit LangChain optimieren und verbessern sollen. Sie bieten je nach Toolkit verschiedene Funktionen, helfen aber im Allgemeinen bei Folgendem:

  • 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 Prompting-Techniken: Verwenden Sie vordefinierte Prompts oder erstellen Sie benutzerdefinierte Prompts, um die Interaktionen mit Sprachmodellen zu optimieren.
  • Erstellung und Verwaltung von Chains: Erstellen Sie komplexe Chains ganz einfach und verwalten Sie sie effizient.
  • Bewertung und Monitoring: Analysieren Sie die Leistung Ihrer LangChain-Anwendungen und ‑Chains.

Hier einige beliebte LangChain-Toolkits:

  • Agent Executor Toolkits: Tools zum Entwickeln von Agenten, die über Aktionen wie das Surfen im Web oder die Codeausführung mit der realen Welt interagieren können.
  • Prompt Engineering Toolkit: Eine Sammlung von Ressourcen zum Erstellen effektiver Prompts.

GitLab Toolkit – Übersicht

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 die folgenden Aufgaben ausführen:

  • Datei erstellen: Erstellt eine neue Datei im Repository.
  • Datei lesen: Liest eine Datei aus dem Repository.
  • Datei aktualisieren: Aktualisiert eine Datei im Repository.
  • Pull-Anfrage erstellen: Erstellt eine Pull-Anfrage vom Arbeitszweig des Bots zum Basiszweig.
  • Get Issue (Problem abrufen): Ruft Probleme aus dem Repository ab.
  • Get Issue (Problem abrufen): Ruft Details zu einem bestimmten Problem ab.
  • Comment on Issue (Problem kommentieren): Postet einen Kommentar zu einem bestimmten Problem.
  • Datei löschen: Löscht eine Datei aus dem Repository.

GitLab-Projekt einrichten

Öffnen Sie GitLab, erstellen Sie ein neues Projekt und richten Sie unter „Settings / Access Tokens“ ein Projektzugriffstoken ein.

Verwenden Sie die folgenden Details:

  • Token name: devai-api-qwiklabs
  • Rolle: Maintainer
  • Bereiche auswählen: api

c205fd7524c456dc.png

Kopieren Sie den Wert des Zugriffstokens und fügen Sie ihn in eine temporäre Datei auf Ihrem Laptop ein. Er wird in den nächsten Schritten verwendet.

6. Anwendung für die Bereitstellung in Cloud Run vorbereiten

Kehren Sie zum Cloud Shell-Editor zurück und verwenden Sie ein vorhandenes oder öffnen Sie ein neues Terminal.

941f0c1692037664.png

Konfigurieren Sie die Projektdetails mit Ihren 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, empfiehlt es sich, read -s GITLAB_PERSONAL_ACCESS_TOKEN zu verwenden. So können Umgebungsvariablen sicher festgelegt werden, ohne dass der Wert im Befehlsverlauf der Konsole angezeigt wird. Nachdem Sie das getan haben, müssen Sie den Wert einfügen und die Eingabetaste drücken. Sie müssen auch die Umgebungsvariable exportieren: export GITLAB_PERSONAL_ACCESS_TOKEN

Bei diesem Befehl müssen Sie Ihre GitLab-Nutzer-ID und den Repository-Namen aktualisieren.

Beispiel: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

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"

LangSmith-Konfiguration für LLM-Tracing

Richten Sie das Konto ein, wenn Sie Agent-Tracing-Informationen in LangSmith ansehen möchten. Führen Sie die Befehle andernfalls unverändert aus.

Erstellen Sie ein LangSmith-Konto und generieren Sie im Bereich „Settings“ (Einstellungen) einen Service-API-Schlüssel. https://smith.langchain.com/settings

Legen Sie die Umgebungsvariablen fest, die für die LangSmith-Integration erforderlich sind.

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

export LANGCHAIN_API_KEY=langchain-service-api-key

JIRA-Konfiguration

Diese Werte werden in diesem Lab nicht verwendet. Sie müssen sie also nicht an die Werte Ihres spezifischen JIRA-Projekts anpassen, 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

API-Schlüssel erstellen

Erstellen Sie einen neuen API-Schlüssel in der Cloud Console unter „API & Dienste“ / „Anmeldedaten“.

Dieser Schlüssel wird verwendet, um JIRA API-Aufrufe an die Cloud Run-Anwendung zu authentifizieren.

Für die Produktionsumgebung konfigurieren Sie Anwendungs- und API-Einschränkungen für den erstellten API-Schlüssel. Anwendungseinschränkungen begrenzen die Nutzung eines API-Schlüssels auf bestimmte Websites(z.B. Ihre JIRA-Instanz).

Legen Sie die Umgebungsvariablen fest, die für die Bereitstellung des Cloud Run-Dienstes erforderlich sind.

export DEVAI_API_KEY=your-api-key

Secrets in Secret Manager erstellen

In diesem Lab folgen wir Best Practices und verwenden Secret Manager, um die Zugriffstokens, den API-Schlüssel und die LangChain API-Schlüsselwerte in Cloud Run zu speichern und darauf zu verweisen.

Erstellen und speichern Sie die erforderlichen Secrets in Secret Manager.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY \
 --data-file=-

echo -n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN \
 --data-file=-

echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
 --data-file=-

echo -n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY \
 --data-file=-

7. Devai-API in Cloud Run bereitstellen

Prüfen Sie, ob Sie sich im richtigen Ordner befinden.

cd ~/genai-for-developers/devai-api

Stellen Sie die Anwendung in Cloud Run bereit.

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" \
  --update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
  --min-instances=1 \
  --max-instances=3

Antworten Sie mit Y, um das Docker-Repository für Artifact Registry 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 den gcloud run deploy SERVICE_NAME --source=.-Ablauf unten an. Weitere Informationen

5c122a89dd11822e.png

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 es zum Erstellen von Container-Images, anstatt sich auf die Buildpacks zu verlassen, um Container-Images automatisch zu erkennen und zu erstellen. Weitere Informationen zu Buildpacks

Sehen Sie sich die Cloud Build-Logs in der Console an.

Prüfen Sie das erstellte Docker-Image in Artifact Registry.

Sehen Sie sich die Cloud Run-Instanzdetails in der Cloud Console an.

App testen

Testen Sie den Endpunkt, indem Sie den curl-Befehl ausführen.

Aktualisieren Sie die Cloud Run-Dienst-URL, bevor Sie den Befehl ausführen.

Beispiel:

curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test

8. Implementierung von Stories automatisieren

Forge ist eine Plattform, auf der Entwickler Apps erstellen können, die in Atlassian-Produkte wie Jira, Confluence, Compass und Bitbucket integriert werden.

eda6f59ff15df25e.png

Forge CLI installieren

Installieren Sie die Forge CLI global, indem Sie Folgendes ausführen:

npm install -g @forge/cli

In diesem Lab verwenden wir Umgebungsvariablen für die Anmeldung.

e4e4e59cf8622e3f.png

JIRA-Projekt einrichten

Mit Ihrem privaten Konto JIRA-Projekte erstellen/aufrufen

Prüfen Sie Ihre vorhandenen JIRA-Projekte: 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 8654143154cb8665.png und wählen Sie dann 47b253090a08932.png aus. Wählen Sie dann „JIRA Software“ – „Jetzt ausprobieren“ aus. Folgen Sie der Anleitung, um die Erstellung des Projekts bzw. der Website abzuschließen.

5bab2a96e3b81383.png

Wählen Sie JIRA Software aus.

785bc4d8bf920403.png

Erstellen Sie ein neues Projekt.

8a6e7cdc8224ffa0.png

Atlassian API-Token erstellen

Erstellen Sie ein Atlassian-API-Token oder verwenden Sie ein vorhandenes, um sich in der CLI anzumelden.

Die Befehlszeile verwendet Ihr Token beim Ausführen von Befehlen.

  1. Rufen Sie https://id.atlassian.com/manage/api-tokens auf.
  2. Klicken Sie auf API-Token erstellen.
  3. Geben Sie ein Label zur Beschreibung Ihres API-Tokens ein. Beispiel: forge-api-token.
  4. Klicken Sie auf Erstellen.
  5. Klicken Sie auf In die Zwischenablage kopieren und schließen Sie das Dialogfeld.

Forge-Umgebungseinstellungen konfigurieren

Kehren Sie zur Cloud Console zurück und führen Sie die folgenden Befehle im Terminal aus.

Melden Sie sich in der Forge-CLI an, um Forge-Befehle zu verwenden.

Legen Sie Ihre JIRA-/FORGE-E-Mail-Adresse fest. Ersetzen Sie durch Ihre E-Mail-Adresse.

export FORGE_EMAIL=your-email

Forge-API-Token festlegen Ersetzen Sie diese durch Ihr 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 aufgefordert werden, Analysen zu erheben.

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

Prüfen Sie, ob Sie sich im Ordner „~/genai-for-developers“ befinden.

Führen Sie den Befehl zum Erstellen einer Forge-Anwendung aus.

forge create

Verwenden Sie die folgenden Werte, 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

bc94e2da059f15cf.png

Wechseln Sie in den Anwendungsordner.

cd devai-jira-ui-qwiklabs/

Führen Sie den Befehl aus, um Abhängigkeiten zu installieren.

npm install

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

forge install

Verwenden Sie die folgenden Werte, 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 den Button und sehen Sie sich die Änderungen auf der Benutzeroberfläche an.

a64378e775125654.png

Forge-Backend-Logs ansehen

forge logs

Atlassian Developer Console

Sie können bereitgestellte Apps auch in der Atlassian Developer Console ansehen und verwalten.

10281496d8181597.png

Logs prüfen – zur Development-Umgebung wechseln

d5c3b1a18dee166e.png

Forge-Anwendungsmanifest und ‑Quellcode überprüfen

Öffnen Sie die Datei „devai-jira-ui-qwiklabs/manifest.yml“ und lassen Sie sich die Konfiguration von Gemini Code Assist erklären.

8710dc7cd343a6a4.png

Erklärung ansehen

e4c9052a0337527d.png

Öffnen Sie die folgenden Dateien und bitten Sie Gemini Code Assist, sie zu erläutern:

  • devai-jira-ui-qwiklabs/src/frontend/index.jsx
  • devai-jira-ui-qwiklabs/src/resolvers/index.js

3283420f190cda21.png

Forge-App mit dem Cloud Run-Endpunkt der DevAI API aktualisieren

Prüfen Sie, 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

DEVAI-API-Schlüssel festlegen:

export DEVAI_API_KEY=api-key-that-you-created

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Bestätigen Sie dies mit dem folgenden Befehl:

forge variables list

Beispielausgabe:

f63a751f0d6211ff.png

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 am Ende der Datei die folgenden Zeilen hinzu und ersetzen Sie den Cloud Run-Endpunkt durch den Endpunkt, den Sie bereitgestellt haben.

permissions:
  scopes:
    - read:jira-work
    - write:jira-work
  external:
    fetch:
      client:
        - devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # 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 die Zeilen unten nach der vorhandenen Funktion getText ein.

resolver.define('getApiKey', (req) => {
  return process.env.DEVAI_API_KEY;
});

resolver.define('getDevAIApiUrl', (req) => {
  return process.env.DEVAI_API_URL;
});

Öffnen Sie die Datei „frontend/index“ im Editor: devai-jira-ui-qwiklabs/src/frontend/index.jsx

Ersetzen Sie index.jsx durch den folgenden Inhalt. Aktualisieren Sie den Link zu Ihrer GitLab-Nutzer-ID/Ihrem Repository.

Sie müssen YOUR-GIT-USERID und YOUR-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 devAIApiKey = 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 bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

    const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
      {
        body: bodyGenerateData,
        method: 'post',
        headers: {
          'Content-Type': 'application/json',
          'x-devai-api-key': devAIApiKey,
         },
      }
    )

    const resData = await generateRes.text();

    // 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-App neu bereitstellen

Fügen Sie Abhängigkeiten in der Datei package.json hinzu:

"@forge/api": "4.0.0",

Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren:

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 App installieren:

forge install --upgrade

ef17c7da9b2962d8.png

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 Feld entfernen, falls es bereits hinzugefügt wurde.

Klicken Sie auf ... und wählen Sie im Menü „Entfernen“ aus. Danach können Sie noch einmal auf die Schaltfläche klicken.

460503e8b2014b52.png

Jira-Kommentare prüfen

Sobald Sie eine Antwort von der DEVAI API erhalten, wird dem JIRA-Vorgang ein Kommentar hinzugefügt.

  • GitLab-Link zur Zusammenführungsanfrage

Wechseln Sie zwischen den Tabs „History“ und „Comments“, um die Ansicht zu aktualisieren.

9539d2bd3cbdad28.png

GitLab-Zusammenführungsanfrage bestätigen

Öffnen Sie GitLab und suchen Sie in Ihrem Projekt nach neuen Merge-Anfragen.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

LangSmith-LLM-Traces

Wenn Sie LLM-Tracing konfiguriert haben, öffnen Sie das LangSmith-Portal und prüfen Sie den LLM-Trace für den Aufruf zum Erstellen von GitLab-Zusammenführungsanfragen.

Beispiel für einen LangSmith-LLM-Trace.

1ae0f88ab885f69.png

9. Änderungen per Push-Befehl an ein GitHub-Repository übertragen

(OPTIONAL SECTION)

Rufen Sie die GitHub auf und erstellen Sie ein neues Repository, in das Sie Änderungen für dieses Lab in Ihr persönliches Repository übertragen können.

Kehren Sie zur Cloud Console zurück und 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"

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

Öffnen Sie https://github.com/settings/keys und klicken Sie auf „New SSH key“.

Verwenden Sie für den Schlüsselnamen „qwiklabs-key“ und kopieren Sie die Ausgabe des letzten Befehls.

Wechseln Sie zurück zum Terminal, führen Sie einen Commit durch und übertragen Sie die Änderungen.

cd ~/genai-for-developers

git remote rm origin

Legen Sie den Remote-Ursprung mit dem oben erstellten Repository fest.

Ersetzen Sie diese 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

10. Glückwunsch!

Sie haben das Lab abgeschlossen.

Behandelte Themen:

  • Cloud Run-Anwendungen bereitstellen, um sie in Gemini APIs einzubinden
  • So erstellen und stellen Sie eine Atlassian Forge-App für JIRA bereit.
  • So verwenden Sie LangChain ReAct-Agents für die Automatisierung von GitLab-Aufgaben.
  • LLM-Traces in LangSmith ansehen

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.