1. Übersicht
Das erste Mal eine Webanwendung bereitzustellen, kann beängstigend sein. Selbst nach der ersten Bereitstellung kann es sein, dass Sie die Bereitstellung neuer Versionen Ihrer Anwendung vermeiden, wenn der Prozess zu viel Arbeit macht. Mit Continuous Deployment können Sie Änderungen an Ihrer Anwendung ganz einfach automatisch bereitstellen.
In diesem Lab schreiben Sie eine Webanwendung und konfigurieren Cloud Run so, dass Ihre Anwendung automatisch bereitgestellt wird, wenn eine Änderung am Quellcode Ihrer Anwendung vorgenommen wird. Anschließend ändern Sie die Anwendung und stellen sie noch einmal bereit.
Lerninhalte
- Webanwendung mit dem Cloud Shell-Editor schreiben
- Anwendungscode in GitHub speichern
- Anwendung automatisch in Cloud Run bereitstellen
- Mit Genkit generative KI in Ihre Anwendung einbinden
- LLM-Prompts mit der dotprompt-Bibliothek verwalten
2. Vorbereitung
- Wenn Sie noch kein Google-Konto haben, müssen Sie ein Google-Konto erstellen.
- Sie verwenden ein privates Konto anstelle eines Arbeits- oder Schulkontos. Für geschäftliche und schulische Konten gelten möglicherweise Einschränkungen, die Sie daran hindern, die für dieses Lab erforderlichen APIs zu aktivieren.
- Wenn Sie noch kein GitHub-Konto haben, müssen Sie ein GitHub-Konto erstellen.
- Verwenden Sie ein vorhandenes GitHub-Konto, falls Sie eines haben. GitHub blockiert ein neues Konto mit höherer Wahrscheinlichkeit als Spam.
- Richten Sie die 2-Faktor-Authentifizierung in Ihrem GitHub-Konto ein, um das Risiko zu verringern, dass Ihr Konto als Spam markiert wird.
3. Projekt einrichten
- Melden Sie sich in der Google Cloud Console an.
- Aktivieren Sie die Abrechnung in der Cloud Console.
- Die Kosten für die Durchführung dieses Labs sollten unter 1 $liegen.
- Sie können die Schritte am Ende dieses Labs ausführen, um Ressourcen zu löschen und weitere Kosten zu vermeiden.
- Neue Nutzer können das kostenlose Testabo mit einem Guthaben von 300$ nutzen.
- Nehmen Sie an einer Veranstaltung zu generativer KI für Entwickler teil? Möglicherweise erhalten Sie ein Guthaben in Höhe von 1$.
- Erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes.
4. Cloud Shell-Editor öffnen
- Rufen Sie den Cloud Shell-Editor auf.
- Wenn das Terminal nicht unten auf dem Bildschirm angezeigt wird, öffnen Sie es:
- Klicke auf das Dreistrich-Menü .
- Klicken Sie auf Terminal.
- Klicken Sie auf Neues Terminal.
- Legen Sie das Projekt im Terminal mit diesem Befehl fest:
- Format:
gcloud config set project [PROJECT_ID]
- Beispiel:
gcloud config set project lab-project-id-example
- Wenn Sie sich Ihre Projekt-ID nicht merken können:
- Sie können alle Ihre Projekt-IDs mit folgendem Befehl auflisten:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Sie können alle Ihre Projekt-IDs mit folgendem Befehl auflisten:
- Format:
- Wenn Sie dazu aufgefordert werden, klicken Sie auf Autorisieren, um fortzufahren.
- Es sollte folgende Meldung angezeigt werden:
Updated property [core/project].
Wenn Sie eineWARNING
sehen und gefragt werden, ob SieDo you want to continue (Y/N)?
eingeben möchten, haben Sie wahrscheinlich die Projekt-ID falsch eingegeben. Drücken SieN
, drücken SieEnter
und versuchen Sie noch einmal, den Befehlgcloud config set project
auszuführen.
5. APIs aktivieren
Aktivieren Sie im Terminal die APIs:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Die Verarbeitung dieses Befehls kann einige Minuten dauern. Sie sollten aber schließlich eine Meldung ähnlich der folgenden erhalten:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. Git konfigurieren
- Legen Sie die E-Mail-Adresse Ihres globalen Git-Nutzers fest:
git config --global user.email "you@example.com"
- Legen Sie Ihren globalen Git-Nutzernamen fest:
git config --global user.name "Your Name"
- Legen Sie den globalen Git-Standardzweig auf
main
:
fest:git config --global init.defaultBranch main
7. Code schreiben
So schreiben Sie eine Anwendung in Node.js:
- Rufen Sie das Basisverzeichnis auf:
cd ~
- Erstellen Sie das Verzeichnis
codelab-genai
:mkdir codelab-genai
- Rufen Sie das Verzeichnis
codelab-genai
auf:cd codelab-genai
- Erstellen Sie eine
index.js
-Datei:touch index.js
- Erstellen Sie die Datei
package.json
:npm init es6 -y
express
als Abhängigkeit hinzufügennpm install express
.gitignore
-Datei hinzufügen, um das Committen vonnode_modules
zu verhindernecho node_modules/ >> .gitignore
- Öffnen Sie die Datei
index.js
im Cloud Shell-Editor:
Im oberen Bereich des Bildschirms sollte jetzt eine leere Datei angezeigt werden. Hier können Sie die Dateicloudshell edit index.js
index.js
bearbeiten. - Kopieren Sie den folgenden Code und fügen Sie ihn in die geöffnete Datei
index.js
ein:
Nach einigen Sekunden wird der Code automatisch im Cloud Shell-Editor gespeichert. Dieser Code antwortet auf HTTP-Anfragen mit der Begrüßung „Hello World“.import express from 'express'; const app = express(); app.get('/', async (req, res) => { res.send('Hello world!'); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
Der erste Code für Ihre Anwendung ist fertig und kann in der Versionskontrolle gespeichert werden.
8. Repository erstellen
- Kehren Sie unten auf dem Bildschirm zum Cloud Shell-Terminal zurück.
- Prüfen Sie, ob Sie sich noch im richtigen Verzeichnis befinden:
cd ~/codelab-genai
- Git-Repository initialisieren
git init -b main
- In der GitHub-Befehlszeile anmelden
Drücken Sie die Tastegh auth login
Enter
, um die Standardoptionen zu akzeptieren, und folgen Sie der Anleitung im GitHub-Befehlszeilentool. Dazu gehören:- In welchem Konto möchtest du dich anmelden?
GitHub.com
- Welches Protokoll verwenden Sie bevorzugt für Git-Vorgänge auf diesem Host?
HTTPS
- Möchten Sie Git mit Ihren GitHub-Anmeldedaten authentifizieren?
Y
(Überspringen, wenn diese Option nicht angezeigt wird.) - Wie möchten Sie die GitHub-Befehlszeile authentifizieren?
Login with a web browser
- Einmalcode kopieren
- Öffnen Sie https://github.com/login/device.
- Einmaligen Code einfügen
- Klicken Sie auf GitHub autorisieren.
- Anmeldung abschließen
- In welchem Konto möchtest du dich anmelden?
- Prüfen, ob Sie angemeldet sind:
Wenn Sie sich erfolgreich angemeldet haben, sollte hier Ihr GitHub-Nutzername angezeigt werden.gh api user -q ".login"
GITHUB_USERNAME
-Variable erstellenGITHUB_USERNAME=$(gh api user -q ".login")
- Prüfen Sie, ob Sie die Umgebungsvariable erstellt haben:
Wenn Sie die Variable erfolgreich erstellt haben, sollte Ihr GitHub-Nutzername ausgegeben werden.echo ${GITHUB_USERNAME}
- Erstellen Sie ein leeres GitHub-Repository mit dem Namen
codelab-genai
:
Wenn Sie die Fehlermeldunggh repo create codelab-genai --private
GraphQL: Name already exists on this account (createRepository)
erhalten, haben Sie bereits ein Repository mit dem Namencodelab-genai
. Sie haben zwei Möglichkeiten, diese Anleitung fortzusetzen:- Vorhandenes GitHub-Repository löschen
- Erstellen Sie ein Repository mit einem anderen Namen und ändern Sie ihn in den folgenden Befehlen.
- Fügen Sie das
codelab-genai
-Repository als Remote-Repositoryorigin
hinzu:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. Code teilen
- Prüfen Sie, ob Sie sich im richtigen Verzeichnis befinden:
cd ~/codelab-genai
- Fügen Sie diesem Commit alle Dateien im aktuellen Verzeichnis hinzu:
git add .
- Erstellen Sie den ersten Commit:
git commit -m "add http server"
- Übertragen Sie das Commit per Push an den Branch
main
des Repositorysorigin
:git push -u origin main
Sie können diesen Befehl ausführen und die resultierende URL aufrufen, um den Anwendungscode auf GitHub aufzurufen:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/index.js \n\n"
10. Automatische Bereitstellungen einrichten
- Lassen Sie den Tab „Cloud Shell-Editor“ geöffnet. Wir kommen später noch einmal auf diesen Tab zurück.
- Rufen Sie in einem neuen Tab die Cloud Run-Seite auf.
- Wählen Sie in der Console das richtige Google Cloud-Projekt aus .
- Klicken Sie auf REPO VERBINDEN.
- Klicken Sie auf MIT CLOUD BUILD EINRICHTEN.
- Wählen Sie GitHub als Repository-Anbieter aus.
- Wenn Sie nicht im Browser in Ihrem GitHub-Konto angemeldet sind, melden Sie sich mit Ihren Anmeldedaten an.
- Klicken Sie auf Authentifizieren und dann auf Weiter.
- Nach der Anmeldung wird auf der Cloud Run-Seite die Meldung Die GitHub-App ist in keinem Ihrer Repositories installiert angezeigt.
- Klicken Sie auf die Schaltfläche GOOGLE CLOUD BUILD INSTALLIEREN.
- Wählen Sie auf der Seite „Installationseinrichtung“ die Option Nur ausgewählte Repositories und dann das Repository codelab-genai aus, das Sie über die Befehlszeile erstellt haben.
- Klicke auf Installieren.
- Hinweis: Wenn Sie viele GitHub-Repositories haben, kann das Laden einige Minuten dauern.
- Wählen Sie
your-user-name/codelab-genai
als Repository- aus.
- Wenn das Repository nicht vorhanden ist, klicken Sie auf den Link Verbundene Repositories verwalten.
- Behalten Sie für Branch den Wert
^main$
bei. - Klicken Sie auf Go, Node.js, Python, Java, .NET Core, Ruby oder PHP über Buildpacks von Google Cloud
- .
- Lassen Sie die anderen Felder (
Build context directory
,Entrypoint
undFunction target
) unverändert.
- Lassen Sie die anderen Felder (
- Klicken Sie auf Speichern.
- Wählen Sie GitHub als Repository-Anbieter aus.
- Scrollen Sie nach unten zu Authentifizierung.
- Klicken Sie auf Nicht authentifizierte Aufrufe zulassen.
- Klicke auf ERSTELLEN.
Sobald der Build abgeschlossen ist (was einige Minuten dauern kann), führen Sie diesen Befehl aus und rufen Sie die resultierende URL auf, um die laufende Anwendung aufzurufen:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. Code ändern
Zum Cloud Shell-Editor zurückkehren
Wenn der Cloud Shell-Editor noch geöffnet ist, können Sie diese Schritte überspringen.
- Rufen Sie den Cloud Shell-Editor auf.
- Wenn das Terminal nicht unten auf dem Bildschirm angezeigt wird, öffnen Sie es:
- Klicke auf das Dreistrich-Menü .
- Klicken Sie auf Terminal.
- Klicken Sie auf Neues Terminal.
- Legen Sie das Projekt im Terminal mit diesem Befehl fest:
- Format:
gcloud config set project [PROJECT_ID]
- Beispiel:
gcloud config set project lab-project-id-example
- Wenn Sie sich Ihre Projekt-ID nicht merken können:
- Sie können alle Ihre Projekt-IDs mit folgendem Befehl auflisten:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Sie können alle Ihre Projekt-IDs mit folgendem Befehl auflisten:
- Format:
- Wenn Sie dazu aufgefordert werden, klicken Sie auf Autorisieren, um fortzufahren.
- Es sollte folgende Meldung angezeigt werden:
Updated property [core/project].
Wenn Sie eineWARNING
sehen und gefragt werden, ob SieDo you want to continue (Y/N)?
eingeben möchten, haben Sie wahrscheinlich die Projekt-ID falsch eingegeben. Drücken SieN
,Enter
und versuchen Sie noch einmal, den Befehlgcloud config set project
auszuführen.
Vertex AI Ihrer Anwendung hinzufügen
- Kehren Sie unten auf dem Bildschirm zum Cloud Shell-Terminal zurück.
- Prüfen Sie, ob Sie sich noch im richtigen Verzeichnis befinden:
cd ~/codelab-genai
- Installieren Sie das Node.js Genkit SDK:
npm install @genkit-ai/ai
- Installieren Sie das Node.js Genkit SDK für Vertex AI:
npm install @genkit-ai/vertexai
- Installieren Sie das Node.js Google Auth SDK:
npm install google-auth-library
index.js
im Cloud Shell-Editor wieder öffnencloudshell edit ~/codelab-genai/index.js
- Ersetzen Sie den Code in Ihrer
index.js
-Datei durch Folgendes:import express from 'express'; const app = express(); import { generate } from '@genkit-ai/ai'; import { gemini15Flash, vertexAI } from '@genkit-ai/vertexai'; import { GoogleAuth } from 'google-auth-library'; const auth = new GoogleAuth(); app.get('/', async (req, res) => { const project = await auth.getProjectId(); const animal = req.query.animal || 'dog'; const prompt = `Give me 10 fun facts about ${animal}. Return this as html without backticks.` const result = await generate({ plugins: [ vertexAI({ projectId: project, location: 'us-central1' }), ], model: gemini15Flash, prompt, }); const html = result.text; res.send(html); }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`codelab-genai: listening on port ${port}`); });
12. Noch einmal bereitstellen
- Prüfen Sie, ob Sie sich in Cloud Shell noch im richtigen Verzeichnis befinden:
cd ~/codelab-genai
- Führen Sie die folgenden Befehle aus, um eine neue Version Ihrer Anwendung in Ihr lokales Git-Repository zu committen:
git add . git commit -m "add latest changes"
- Übertragen Sie die Änderungen auf GitHub:
git push
- Führen Sie nach Abschluss des Builds diesen Befehl aus und rufen Sie die bereitgestellte Anwendung auf:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
Es kann einige Minuten dauern, bis der Build abgeschlossen ist und Sie Ihre Änderungen sehen können.
Den Verlauf aller Versionen finden Sie hier: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. Optional: Nutzung von Vertex AI prüfen
Wie bei anderen Google Cloud-Diensten können Sie auch Vertex AI-Vorgänge prüfen. Anhand von Audit-Logs können Sie herausfinden, wer was wo und wann getan hat. Administrator-Audit-Logs für Vertex AI sind standardmäßig aktiviert. Wenn Sie Anfragen zum Generieren von Inhalten prüfen möchten, müssen Sie Audit-Logs zum Datenzugriff aktivieren:
- Rufen Sie in der Google Cloud Console die Seite Audit-Logs auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung ist. - Achten Sie darauf, dass Sie Ihre Cloud Run-Anwendung in dem vorhandenen Google Cloud-Projekt erstellen.
- Wählen Sie in der Tabelle Konfiguration für Audit-Logs zum Datenzugriff in der Spalte „Dienst“ die Option
Vertex AI API
aus. - Wählen Sie auf dem Tab Logtypen die Audit-Logtypen für den Datenzugriff
Admin read
undData read
aus. - Klicken Sie auf Speichern.
Nach der Aktivierung können Sie Audit-Logs für jede Aufrufe der Anwendung sehen. So rufen Sie die Audit-Logs mit Aufrufdetails auf:
- Kehren Sie zur bereitgestellten Anwendung zurück und aktualisieren Sie die Seite, um das Protokoll auszulösen.
- Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
- Geben Sie im Abfragefenster Folgendes ein:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com"
- Klicken Sie auf Abfrage ausführen.
In Audit-Protokollen wird die Verwendung der Vertex AI API erfasst, Sie können jedoch keine arbeitslastbezogenen Daten wie Prompts oder Antwortdetails beobachten.
14. (Optional) Beobachtbarkeit Ihrer KI-Arbeitslast erhöhen
Audit-Logs enthalten keine arbeitslastbezogenen Informationen. Um die Beobachtbarkeit Ihrer Arbeitslasten zu verbessern, müssen Sie diese Informationen explizit protokollieren. Sie können dazu Ihr bevorzugtes Logging-Framework verwenden. In den folgenden Schritten wird gezeigt, wie Sie dies mit dem nativen Node.js-Protokollierungsmechanismus tun.
index.js
im Cloud Shell-Editor wieder öffnencloudshell edit ~/codelab-genai/index.js
- Füge nach dem Aufruf von
await generativeModel.generateContent(prompt)
(Zeile 19) die folgende Zeile hinzu:
Mit diesem Code werden Informationen zu generierten Inhalten im strukturierten Logging-Format inconsole.log(JSON.stringify({ severity: 'DEBUG', message: 'Content is generated', prompt: prompt, response: resp.response, }));
stdout
geschrieben. Ein Logging-Agent in Cloud Run erfasst die Ausgabe, die aufstdout
gedruckt wird, und schreibt sie in diesem Format in Cloud Logging. - Öffnen Sie Cloud Shell noch einmal und geben Sie den folgenden Befehl ein, um sicherzustellen, dass Sie sich im richtigen Verzeichnis befinden:
cd ~/codelab-genai
- Führen Sie einen Commit durch:
git commit -am "observe generated content"
- Übertragen Sie die Änderungen per Push auf GitHub, um die Neubereitstellung der geänderten Version auszulösen:
git push
Nach der Bereitstellung der neuen Version können Sie die Debug-Informationen zu Aufrufen von Vertex AI beobachten.
So rufen Sie Ihre Anwendungsprotokolle auf:
- Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
- Geben Sie im Abfragefenster Folgendes ein:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG
- Klicken Sie auf Abfrage ausführen.
Das Ergebnis der Abfrage enthält Protokolle mit Prompt und Vertex AI-Antwort, einschließlich „Sicherheitsbewertungen“, die zum Überwachen von Sicherheitspraktiken verwendet werden können.
15. (Optional) Bereinigen
Für Cloud Run fallen keine Kosten an, wenn der Dienst nicht verwendet wird. Allerdings können für das Speichern des Container-Images in Artifact Registry Gebühren berechnet werden. Sie können Ihr Cloud-Projekt löschen, um wiederkehrende Gebühren zu vermeiden. Wenn Sie Ihr Cloud-Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
Sie können das Projekt löschen:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Sie können auch unnötige Ressourcen von Ihrem CloudShell-Laufwerk löschen. Sie haben folgende Möglichkeiten:
- Löschen Sie das Codelab-Projektverzeichnis:
rm -rf ~/codelab-genai
- Warnung! Diese Aktion kann nicht rückgängig gemacht werden. Wenn Sie alles in Cloud Shell löschen möchten, um Speicherplatz freizugeben, können Sie Ihr ganzes Basisverzeichnis löschen. Achten Sie darauf, dass alles, was Sie behalten möchten, an einem anderen Ort gespeichert ist.
sudo rm -rf $HOME
16. Glückwunsch
In diesem Lab haben Sie eine Webanwendung geschrieben und Cloud Run so konfiguriert, dass Ihre Anwendung automatisch bereitgestellt wird, wenn eine Änderung am Quellcode Ihrer Anwendung vorgenommen wurde. Anschließend haben Sie Ihre Anwendung geändert und noch einmal bereitgestellt.
Wenn Ihnen dieses Lab gefallen hat, können Sie es in einer anderen Programmiersprache oder einem anderen Framework noch einmal ausprobieren:
Wenn Sie an einer UX-Forschungsstudie teilnehmen möchten, um die Produkte, mit denen Sie heute gearbeitet haben, zu verbessern, registrieren Sie sich hier.
Hier sind einige Möglichkeiten, wie Sie Ihr Wissen vertiefen können:
- Dokumentation: Firebase GenKit ist eine flexible Modellabstraktion, mit der sich jede Modell-API einfach integrieren und von der Community gepflegte Modelle verwenden lassen.
- Codelab: Gemini-gestützte Chat-App in Cloud Run bereitstellen
- Gemini-Funktionsaufrufe mit Cloud Run verwenden
- Videos szenenweise mit der Video Intelligence API in Cloud Run Jobs verarbeiten
- On-Demand-Workshop: Google Kubernetes Engine einrichten