1. Przegląd
Wdrożenie aplikacji internetowej po raz pierwszy może być trudne. Nawet po pierwszym wdrożeniu, jeśli proces jest zbyt pracochłonny, możesz unikać wdrażania nowych wersji aplikacji. Ciągłe wdrażanie umożliwia łatwe automatyczne wdrażanie zmian w aplikacji.
W tym module napiszesz aplikację internetową i skonfigurujesz Cloud Run, aby automatycznie wdrażać aplikację, gdy w kodzie źródłowym aplikacji zostaną wprowadzone zmiany. Następnie zmodyfikuj aplikację i wdroż ją ponownie.
Czego się nauczysz
- Pisanie aplikacji internetowej za pomocą edytora Cloud Shell
- Przechowywanie kodu aplikacji w GitHubie
- Automatyczne wdrażanie aplikacji w Cloud Run
- Dodawanie generatywnej AI do aplikacji za pomocą Vertex AI
2. Wymagania wstępne
- Jeśli nie masz jeszcze konta Google, musisz je utworzyć.
- Używaj konta osobistego zamiast konta służbowego lub szkolnego. Konta służbowe i szkolne mogą mieć ograniczenia, które uniemożliwiają włączenie interfejsów API potrzebnych w tym module.
- Jeśli nie masz jeszcze konta GitHub, musisz utworzyć konto GitHub
- .
- Jeśli masz już konto GitHub, użyj go. GitHub częściej blokuje nowe konto jako spam.
- Skonfiguruj uwierzytelnianie dwuskładnikowe na koncie GitHub, aby zmniejszyć ryzyko oznaczenia Twojego konta jako spam.
3. Konfigurowanie projektu
- Zaloguj się w konsoli Google Cloud.
- Włącz płatności w konsoli Google Cloud.
- Pod względem opłat za zasoby chmury ukończenie tego modułu powinno kosztować mniej niż 1 USD.
- Jeśli chcesz uniknąć dalszych opłat, wykonaj czynności opisane na końcu tego modułu, aby usunąć zasoby.
- Nowi użytkownicy mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
- Bierzesz udział w wydarzeniu Generatywna AI dla programistów? Możesz otrzymać środki w wysokości 1 USD.
- Utwórz nowy projekt lub użyj już istniejącego.
- Sprawdź, czy płatności są włączone w sekcji Moje projekty na stronie Płatności Cloud.
- Jeśli w kolumnie
Billing accountprzy nowym projekcie widniejeBilling is disabled:- Kliknij 3 kropki w kolumnie
Actions. - Kliknij Zmień płatności.
- Wybierz konto rozliczeniowe, którego chcesz używać.
- Kliknij 3 kropki w kolumnie
- Jeśli uczestniczysz w wydarzeniu Gen AI for Devs, konto prawdopodobnie będzie się nazywać Próbne konto rozliczeniowe Google Cloud Platform.
- Jeśli w kolumnie
4. Otwórz edytor Cloud Shell
- Otwórz edytor Cloud Shell.
- Jeśli terminal nie pojawi się u dołu ekranu, otwórz go:
- Kliknij menu
. - Kliknij Terminal.
- Kliknij Nowy terminal
.
- Kliknij menu
- W terminalu ustaw projekt za pomocą tego polecenia:
- Format:
gcloud config set project [PROJECT_ID] - Przykład:
gcloud config set project lab-project-id-example - Jeśli nie pamiętasz identyfikatora projektu:
- Aby wyświetlić listę wszystkich identyfikatorów projektów, użyj tego polecenia:
gcloud projects list | awk '/PROJECT_ID/{print $2}'

- Aby wyświetlić listę wszystkich identyfikatorów projektów, użyj tego polecenia:
- Format:
- Jeśli pojawi się pytanie o autoryzację, kliknij Autoryzuj, aby przejść dalej.

- Powinien wyświetlić się ten komunikat:
Jeśli widzisz symbolUpdated property [core/project].
WARNINGi pojawia się pytanieDo you want to continue (Y/N)?, prawdopodobnie identyfikator projektu został wpisany nieprawidłowo. NaciśnijN, a potemEnteri spróbuj ponownie uruchomić poleceniegcloud config set project.
5. Włącz interfejsy API
W terminalu włącz interfejsy API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Wykonanie tego polecenia może potrwać kilka minut, ale powinno ostatecznie wyświetlić komunikat o sukcesie podobny do tego:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. Skonfiguruj Git
- Ustaw globalny adres e-mail użytkownika Git:
git config --global user.email "you@example.com" - Ustaw globalną nazwę użytkownika Git:
git config --global user.name "Your Name" - Ustaw domyślną gałąź globalną Git na
main:git config --global init.defaultBranch main
7. Napisz kod
Aby napisać aplikację w Go:
- Przejdź do katalogu domowego:
cd ~ - Utwórz katalog
codelab-genai:mkdir codelab-genai - Przejdź do katalogu
codelab-genai:cd codelab-genai - Zainicjuj plik go.mod, aby zadeklarować moduł:
go mod init codelab-genai - Utwórz plik
main.go:touch main.go - Otwórz plik
main.gow edytorze Cloud Shell: U góry ekranu powinien pojawić się pusty plik. W tym miejscu możesz edytować plikcloudshell edit main.gomain.go.
- Edytuj plik
main.goi wklej do niego ten kod: Po kilku sekundach edytor Cloud Shell automatycznie zapisze Twój kod. Ten kod odpowiada na żądania HTTP pozdrowieniem „Hello world!”.package main import ( "fmt" "log" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
Początkowy kod aplikacji jest gotowy i możesz go zapisać w systemie kontroli wersji.
8. Tworzenie repozytorium
- Wróć do terminala Cloud Shell u dołu ekranu.
- Upewnij się, że nadal jesteś w odpowiednim katalogu:
cd ~/codelab-genai - Zainicjuj repozytorium Git
git init -b main - Logowanie się w GitHub CLI
Naciśnijgh auth loginEnter, aby zaakceptować opcje domyślne, i postępuj zgodnie z instrukcjami w narzędziu interfejsu wiersza poleceń GitHub, w tym:- Na które konto chcesz się zalogować?
GitHub.com - Jaki jest preferowany protokół operacji Git na tym hoście?
HTTPS - Uwierzytelnić Git za pomocą danych logowania do GitHuba?
Y(Pomiń, jeśli się nie pojawi). - Jak chcesz uwierzytelnić interfejs wiersza poleceń GitHub?
Login with a web browser - Skopiuj kod jednorazowy
- Otwórz stronę https://github.com/login/device.
- Wklej kod jednorazowy
- Kliknij Autoryzuj GitHub.
- Dokończ logowanie
- Na które konto chcesz się zalogować?
- Sprawdź, czy jesteś zalogowany:
Jeśli logowanie się powiodło, powinna się wyświetlić Twoja nazwa użytkownika GitHuba.gh api user -q ".login" - Tworzenie zmiennej
GITHUB_USERNAMEGITHUB_USERNAME=$(gh api user -q ".login") - Sprawdź, czy zmienna środowiskowa została utworzona:
Jeśli zmienna została utworzona, powinna wyświetlić Twoją nazwę użytkownika GitHuba.echo ${GITHUB_USERNAME} - Utwórz puste repozytorium GitHub o nazwie
codelab-genai: Jeśli pojawi się błąd:gh repo create codelab-genai --private Masz już repozytorium o nazwieGraphQL: Name already exists on this account (createRepository)
codelab-genai. Aby kontynuować ten samouczek, masz 2 możliwości:- Usuń istniejące repozytorium GitHub
- Utwórz repozytorium o innej nazwie i pamiętaj, aby zmienić ją w kolejnych poleceniach.
- Dodaj repozytorium
codelab-genaijako zdalne repozytoriumorigin:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. Udostępnianie kodu
- Sprawdź, czy jesteś w odpowiednim katalogu:
cd ~/codelab-genai - Dodaj wszystkie pliki z bieżącego katalogu do tego zatwierdzenia:
git add . - Utwórz pierwszy commit:
git commit -m "add http server" - Wypchnij zatwierdzenie do gałęzi
mainrepozytoriumorigin:git push -u origin main
Możesz uruchomić to polecenie i otworzyć wynikowy adres URL, aby wyświetlić kod aplikacji na GitHubie:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/main.go \n\n"
10. Konfigurowanie automatycznych wdrożeń
- Pozostaw otwartą kartę edytora Cloud Shell. Wrócimy do tej karty później.
- Na nowej karcie otwórz stronę Cloud Run.
- Wybierz odpowiedni projekt Google Cloud w konsoli
. - Kliknij POŁĄCZ REPOZYTORIUM.
- Kliknij SKONFIGURUJ Z CLOUD BUILD.
- Jako dostawcę repozytorium wybierz GitHub
- .
- Jeśli nie jesteś zalogowany(-a) na konto GitHub w przeglądarce, zaloguj się za pomocą swoich danych logowania.
- Kliknij Uwierzytelnij, a następnie Dalej.
- Po zalogowaniu się na stronie Cloud Run zobaczysz komunikat Aplikacja na GitHubie nie jest zainstalowana w żadnym Twoim repozytorium.
- Kliknij przycisk ZAINSTALUJ GOOGLE CLOUD BUILD.
- Na stronie Konfiguracja instalacji wybierz Tylko wybrane repozytoria i wskaż repozytorium codelab-genai utworzone za pomocą interfejsu CLI.
- Kliknij Zainstaluj.
- Uwaga: jeśli masz dużo repozytoriów GitHub, wczytanie listy może potrwać kilka minut.
- Wybierz
your-user-name/codelab-genaijako repozytorium- .
- Jeśli repozytorium nie jest widoczne, kliknij link Zarządzaj połączonymi repozytoriami.
- W polu Gałąź pozostaw wartość
^main$. - Kliknij Go, Node.js, Python, Java, .NET Core, Ruby lub PHP za pomocą pakietów kompilacji Google Cloud
- .
- Pozostaw pozostałe pola (
Build context directory,EntrypointiFunction target) bez zmian.
- Pozostaw pozostałe pola (
- Kliknij Zapisz.
- Jako dostawcę repozytorium wybierz GitHub
- Przewiń w dół do sekcji Uwierzytelnianie.
- Kliknij Zezwalaj na nieuwierzytelnione wywołania.
- Kliknij UTWÓRZ.
Gdy kompilacja się zakończy (co potrwa kilka minut), uruchom to polecenie i otwórz wynikowy adres URL, aby wyświetlić działającą aplikację:
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. Zmień kod
- Wróć do terminala Cloud Shell u dołu ekranu.
- Upewnij się, że nadal jesteś w odpowiednim katalogu:
cd ~/codelab-genai - Ponowne otwieranie pliku
main.gow edytorze Cloud Shellcloudshell edit main.go - Zainstaluj pakiet Vertex AI SDK dla Go:
go get cloud.google.com/go/vertexai/genai - Aby uzyskać bieżący identyfikator projektu, zainstaluj bibliotekę metadanych dla języka Go:
go get cloud.google.com/go/compute/metadata - Zastąp kod w pliku
main.gotym kodem:package main import ( "context" "fmt" "log" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) func main() { ctx := context.Background() var projectId string var err error projectId = os.Getenv("GOOGLE_CLOUD_PROJECT") if projectId == "" { projectId, err = metadata.ProjectIDWithContext(ctx) if err != nil { return } } var client *genai.Client client, err = genai.NewClient(ctx, projectId, "us-central1") if err != nil { return } defer client.Close() model := client.GenerativeModel("gemini-1.5-flash-001") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { animal := r.URL.Query().Get("animal") if animal == "" { animal = "dog" } resp, err := model.GenerateContent( ctx, genai.Text( fmt.Sprintf("Give me 10 fun facts about %s. Return the results as HTML without markdown backticks.", animal)), ) if err != nil { w.WriteHeader(http.StatusServiceUnavailable) return } if len(resp.Candidates) > 0 && len(resp.Candidates[0].Content.Parts) > 0 { htmlContent := resp.Candidates[0].Content.Parts[0] w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, htmlContent) } }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
12. Wdróż ponownie
- Upewnij się, że w Cloud Shell nadal jesteś w odpowiednim katalogu:
cd ~/codelab-genai - Uruchom te polecenia, aby zatwierdzić nową wersję aplikacji w lokalnym repozytorium Git:
git add . git commit -m "add latest changes" - Wypchnij zmiany do GitHuba:
git push - Po zakończeniu kompilacji uruchom to polecenie i otwórz wdrożoną aplikację:
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"
Zanim zobaczysz zmiany, może minąć kilka minut, zanim kompilacja się zakończy.
Historię wszystkich wersji znajdziesz tutaj: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (Opcjonalnie) Sprawdzanie wykorzystania Vertex AI
Podobnie jak w przypadku innych usług Google Cloud możesz kontrolować operacje Vertex AI. Logi kontrolne pomagają odpowiedzieć na pytania „kto, co, gdzie i kiedy?”. Logi kontrolne administracyjne dotyczące Vertex AI są domyślnie włączone. Aby kontrolować żądania generowania treści, musisz włączyć logi kontrolne dostępu do danych:
- W konsoli Google Cloud otwórz stronę Logi kontrolne:
Jeśli do znalezienia tej strony użyjesz paska wyszukiwania, wybierz wynik z podtytułem Administracja. - Upewnij się, że istniejący projekt Google Cloud to ten, w którym tworzysz aplikację Cloud Run.
- W tabeli Konfiguracja logów kontrolnych dostępu do danych znajdź i wybierz
Vertex AI APIw kolumnie Usługa. - Na karcie Typy logów wybierz typy logów kontrolnych dostępu do danych
Admin readiData read. - Kliknij Zapisz.
Po włączeniu tej funkcji będziesz mieć dostęp do dzienników kontrolnych każdego wywołania aplikacji. Aby wyświetlić dzienniki kontrolne ze szczegółami wywołań, wykonaj te czynności:
- Wróć do wdrożonej aplikacji i odśwież stronę, aby wywołać log.
- W konsoli Google Cloud otwórz stronę Eksplorator logów:
- W oknie zapytania wpisz:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com" - Kliknij Uruchom zapytanie.
Dzienniki kontroli rejestrują użycie interfejsu Vertex AI API, ale nie umożliwiają obserwowania danych związanych z obciążeniem, takich jak prompty czy szczegóły odpowiedzi.
14. (Opcjonalnie) Zwiększ widoczność zbioru zadań AI
Dzienniki kontroli nie rejestrują informacji związanych ze zbiorem zadań. Aby zwiększyć widoczność zbiorów zadań, musisz jawnie rejestrować te informacje. Możesz to zrobić za pomocą ulubionego frameworka do rejestrowania. Poniższe kroki pokazują jeden ze sposobów na to, jak to zrobić za pomocą biblioteki rejestrowania strukturalnego Go.
- Ponowne otwieranie pliku
main.gow edytorze Cloud Shellcloudshell edit ~/codelab-genai/main.go - Zmień blok importu, aby uwzględnić biblioteki Go do rejestrowania strukturalnego i JSON:
import ( "context" "encoding/json" "fmt" "log" "log/slog" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) - Po zainicjowaniu klienta Vertex (wiersz 33) dodaj te wiersze, aby zainicjować rejestrator strukturalny, który używa odpowiednich pól do rejestrowania w Google Cloud:
opts := &slog.HandlerOptions{ Level: slog.LevelDebug, ReplaceAttr: func(group []string, a slog.Attr) slog.Attr { if a.Key == slog.LevelKey { return slog.Attr{Key: "severity", Value: a.Value} } if a.Key == slog.MessageKey { return slog.Attr{Key: "message", Value: a.Value} } return slog.Attr{Key: a.Key, Value: a.Value} }, } jsonHandler := slog.NewJSONHandler(os.Stdout, opts) slog.SetDefault(slog.New(jsonHandler)) - Po sprawdzeniu odpowiedzi na
GenerateContent(wiersz 69) dodaj w bloku if te wiersze: Ten kod zapisuje wjsonBytes, err := json.Marshal(resp) if err != nil { slog.Error("Failed to marshal response to JSON", "error", err) } else { jsonString := string(jsonBytes) slog.Debug("Complete response content", "json_response", jsonString) }stdoutinformacje o wygenerowanych treściach w formacie logowania strukturalnego. Agent logowania w Cloud Run przechwytuje dane wyjściowe drukowane wstdouti zapisuje je w tym formacie w Cloud Logging. - Ponownie otwórz Cloud Shell i wpisz to polecenie, aby sprawdzić, czy jesteś w odpowiednim katalogu:
cd ~/codelab-genai - Zatwierdź zmiany:
git commit -am "Observe generated content" - Prześlij zmiany do GitHuba, aby wywołać ponowne wdrożenie zmodyfikowanej wersji:
git push
Po wdrożeniu nowej wersji możesz obserwować informacje o debugowaniu dotyczące wywołań Vertex AI.
Aby wyświetlić logi aplikacji:
- W konsoli Google Cloud otwórz stronę Eksplorator logów:
- W oknie zapytania wpisz:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG - Kliknij Uruchom zapytanie.
Wynik zapytania pokazuje logi z promptem i odpowiedzią Vertex AI, w tym „oceny bezpieczeństwa”, które można wykorzystać do monitorowania praktyk związanych z bezpieczeństwem.
15. (Opcjonalnie) Czyszczenie
Cloud Run nie nalicza opłat, gdy usługa nie jest używana, ale może zostać pobrana należność za przechowywanie obrazu kontenera w Artifact Registry. Aby uniknąć opłat, możesz usunąć projekt Cloud. Usunięcie projektu w Cloud spowoduje zaprzestanie naliczania opłat za wszelkie zasoby wykorzystywane w ramach tego projektu.
Jeśli chcesz, usuń projekt:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Możesz też usunąć niepotrzebne zasoby z dysku Cloud Shell. Możesz:
- Usuń katalog projektu ćwiczeń z programowania:
rm -rf ~/codelab-genai - Usuń pakiety Go, których już nie potrzebujesz:
cd ~ go clean -modcache - Ostrzeżenie! Tej czynności nie można cofnąć. Jeśli chcesz usunąć wszystko z Cloud Shell, aby zwolnić miejsce, możesz usunąć cały katalog domowy. Upewnij się, że wszystko, co chcesz zachować, jest zapisane w innym miejscu.
sudo rm -rf $HOME
16. Gratulacje
W tym module napiszesz aplikację internetową i skonfigurujesz Cloud Run, aby automatycznie wdrażać aplikację, gdy w jej kodzie źródłowym zostaną wprowadzone zmiany. Następnie zmodyfikowano aplikację i ponownie ją wdrożono.
Jeśli to laboratorium Ci się spodobało, możesz spróbować ponownie w innym języku programowania lub frameworku:
Jeśli chcesz wziąć udział w badaniu wrażeń użytkowników, aby pomóc nam ulepszyć usługi, z których korzystasz, zarejestruj się tutaj.
Oto kilka opcji, które pozwolą Ci kontynuować naukę:
- Dokumenty: używaj Genkit jako elastycznej abstrakcji modelu, która ułatwia integrację dowolnego interfejsu API modelu i korzystanie z modeli utrzymywanych przez społeczność.
- Ćwiczenia z programowania: wdrażanie aplikacji do czatu opartej na Gemini w Cloud Run
- Jak używać wywoływania funkcji Gemini z Cloud Run
- Warsztaty na żądanie: Wprowadzenie do Google Kubernetes Engine
- Jak używać Cloud Run Jobs Video Intelligence API do przetwarzania filmu scena po scenie