1. Omówienie
Wdrażanie aplikacji internetowej po raz pierwszy może wydawać się niezwykle skomplikowanym zadaniem. Nawet po pierwszym wdrożeniu, jeśli proces wymaga zbyt dużo pracy, możesz nie wdrażać nowych wersji aplikacji. Dzięki ciągłemu wdrażaniu możesz łatwo wdrażać zmiany w aplikacji.
W tym module napiszesz aplikację internetową i skonfigurujesz Cloud Run, aby automatycznie wdrażać aplikację po wprowadzeniu zmiany w kodzie źródłowym. Następnie zmodyfikuj aplikację i ponownie ją wdróż.
Czego się nauczysz
- Tworzenie 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, utwórz je.
- Używasz konta osobistego, a nie 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 laboratorium.
- Jeśli nie masz jeszcze konta GitHub, musisz utworzyć je.
- Użyj istniejącego konta GitHub, jeśli je masz. GitHub chętniej blokuje nowe konta jako spam.
- Skonfiguruj uwierzytelnianie dwuskładnikowe na koncie GitHub, aby zmniejszyć ryzyko oznaczenia Twojego konta jako spamu.
3. Konfigurowanie projektu
- Zaloguj się w konsoli Google Cloud.
- Włącz płatności w Cloud Console.
- Ukończenie tego ćwiczenia powinno kosztować mniej niż 1 USD w zasobach Cloud.
- Aby uniknąć dalszych opłat, możesz usunąć zasoby, wykonując czynności podane na końcu tego laboratorium.
- Nowi użytkownicy mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
- Uczestniczysz w wydarzeniu poświęconym generatywnej sztucznej inteligencji dla programistów? Możesz otrzymać 1 USD w gotówce.
- Utwórz nowy projekt lub użyj istniejącego.
- Sprawdź, czy płatności są włączone w sekcji Moje projekty w Rozliczeniach usługi Google Cloud.
- Jeśli w kolumnie
Billing account
w nowym projekcie widać wartośćBilling is disabled
:- Kliknij 3 kropki w kolumnie
Actions
. - Kliknij Zmień rozliczenia.
- Wybierz konto rozliczeniowe, którego chcesz użyć.
- Kliknij 3 kropki w kolumnie
- Jeśli uczestniczysz w wydarzeniu dotyczącem generatywnej AI dla programistów, konto będzie prawdopodobnie nazywać się 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 pojawia się u dołu ekranu, otwórz go:
- Kliknij menu z 3 kreskami
- Kliknij Terminal.
- Kliknij Nowy terminal
.
- Kliknij menu z 3 kreskami
- W terminalu skonfiguruj 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ć wszystkie identyfikatory projektów, użyj:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Aby wyświetlić wszystkie identyfikatory projektów, użyj:
- Format:
- Jeśli pojawi się pytanie o autoryzację, kliknij Autoryzuj, aby kontynuować.
- Powinien wyświetlić się ten komunikat:
Jeśli widziszUpdated property [core/project].
WARNING
i pojawia się pytanieDo you want to continue (Y/N)?
, prawdopodobnie nieprawidłowo wpisano identyfikator projektu. NaciśnijN
, naciśnijEnter
i spróbuj ponownie uruchomić poleceniegcloud config set project
.
5. Włącz interfejsy API
Włącz w terminalu te interfejsy API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Wykonanie tego polecenia może potrwać kilka minut, ale ostatecznie powinno wyświetlić komunikat 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 globalną gałąź domyślną git na
main
:git config --global init.defaultBranch main
7. Tworzenie kodu
Aby napisać aplikację w Next.js:
- Przejdź do katalogu domowego:
cd ~
- Utwórz nową aplikację
codelab-genai
Next.js:npx create-next-app@latest codelab-genai \ --ts \ --eslint \ --tailwind \ --no-src-dir \ --app \ --no-import-alias
- Jeśli pojawi się prośba o zainstalowanie
create-next-app
, naciśnijEnter
, aby kontynuować:Need to install the following packages: create-next-app@14.2.14 Ok to proceed? (y)
- Przejdź do katalogu
codelab-genai
:cd codelab-genai
- Otwórz plik
page.tsx
w edytorze Cloud Shell: Plik powinien pojawić się w górnej części ekranu. Tutaj możesz edytować plikcloudshell edit app/page.tsx
page.tsx
. - Usuń istniejący kod. Skopiuj ten kod i wklej go do otwartego pliku
page.tsx
: Po kilku sekundach edytor Cloud Shell automatycznie zapisze kod. Ten kod odpowiada na żądania http pozdrowieniem „Hello world”.import React from "react"; export default function Home() { return ( <main> Hello World! </main> ); }
Początkowy kod aplikacji jest gotowy i możesz go przechowywać w systemie kontroli wersji.
8. Tworzenie repozytorium
- Wróć do terminala Cloud Shell na dole ekranu.
- Upewnij się, że nadal jesteś w prawidłowym katalogu:
cd ~/codelab-genai
- Inicjowanie repozytorium Git
git init -b main
- Logowanie się w GitHub CLI
Naciśnijgh auth login
Enter
, aby zaakceptować domyślne opcje, i postępuj zgodnie z instrukcjami w narzędzie CLI GitHub, w tym:- Na które konto chcesz się zalogować?
GitHub.com
- Jaki jest preferowany protokół do operacji Git na tym hoście?
HTTPS
- Uwierzytelnianie Git za pomocą danych logowania do GitHuba?
Y
(pomiń, jeśli ta opcja się nie wyświetla). - Jak chcesz uwierzytelnić GitHub CLI?
Login with a web browser
- Skopiuj kod jednorazowy
- Otwórz stronę https://github.com/login/device.
- Wklej kod jednorazowy
- Kliknij Autoryzuj GitHub.
- Zaloguj się
- Na które konto chcesz się zalogować?
- Sprawdź, czy jesteś zalogowany(-a):
Jeśli udało Ci się zalogować, powinna zostać wyświetlona Twoja nazwa użytkownika GitHub.gh api user -q ".login"
- Tworzenie zmiennej
GITHUB_USERNAME
GITHUB_USERNAME=$(gh api user -q ".login")
- Sprawdź, czy utworzysz zmienną środowiskową:
Jeśli udało Ci się utworzyć zmienną, powinna ona zwrócić 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 opcje:- Usuń istniejące repozytorium GitHub
- Utwórz repozytorium o innej nazwie i pamiętaj, aby zmienić ją w kolejnych poleceniach.
- Dodaj repozytorium
codelab-genai
jako repozytorium zdalneorigin
: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 w bieżącym katalogu do tego zatwierdzenia:
git add .
- Utwórz pierwsze potwierdzenie:
git commit -m "add http server"
- Wypchnij zatwierdzenie do gałęzi
main
repozytoriumorigin
:git push -u origin main
Aby wyświetlić kod aplikacji na GitHubie, uruchom to polecenie i otwórz otrzymany adres URL:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/app/page.tsx \n\n"
10. Konfigurowanie automatycznych wdrożeń
- Pozostaw otwartą kartę Edytor Cloud Shell. Wrócimy do tej karty później.
- W nowej karcie otwórz stronę Cloud Run.
- Wybierz odpowiedni projekt Google Cloud w konsoli
.
- Kliknij POŁĄCZ REPOSITORYUM.
- Kliknij SKONFIGUREWANIE Z CLOUD BUILD
- .
- Jako Dostawca repozytorium
- wybierz GitHub.
- Jeśli nie jesteś zalogowany(-a) na konto GitHub w przeglądarce, zaloguj się, podając swoje dane logowania.
- Kliknij kolejno Uwierzytelnij i 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 wybierz repozytorium codelab-genai utworzone za pomocą CLI.
- Kliknij Zainstaluj.
- Uwaga: jeśli masz dużo repozytoriów GitHub, wczytywanie może potrwać kilka minut.
- Jako repozytorium
- wybierz
- Jeśli repozytorium jest nieobecne, kliknij link Zarządzaj połączonymi repozytoriami.
your-user-name/codelab-genai
. - 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
,Entrypoint
iFunction target
) bez zmian.
- Pozostaw pozostałe pola (
- Kliknij Zapisz.
- Jako Dostawca repozytorium
- Przewiń w dół do sekcji Uwierzytelnianie.
- Kliknij Zezwalaj na nieuwierzytelnione wywołania.
- Kliknij UTWÓRZ.
Gdy kompilacja zostanie ukończona (co może potrwać kilka minut), uruchom to polecenie i otwórz adres URL, który zostanie wyświetlony, aby wyświetlić uruchomioną 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 edytora Cloud Shell
Jeśli nadal masz otwarty edytor Cloud Shell, możesz pominąć te czynności.
- Otwórz Edytor Cloud Shell.
- Jeśli terminal nie pojawia się u dołu ekranu, otwórz go:
- Kliknij menu z 3 kreskami
- Kliknij Terminal.
- Kliknij Nowy terminal
.
- Kliknij menu z 3 kreskami
- W terminalu skonfiguruj 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ć wszystkie identyfikatory projektów, użyj:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Aby wyświetlić wszystkie identyfikatory projektów, użyj:
- Format:
- Jeśli pojawi się pytanie o autoryzację, kliknij Autoryzuj, aby kontynuować.
- Powinien wyświetlić się ten komunikat:
Jeśli widziszUpdated property [core/project].
WARNING
i pojawia się pytanieDo you want to continue (Y/N)?
, prawdopodobnie nieprawidłowo wpisano identyfikator projektu. NaciśnijN
, naciśnijEnter
i spróbuj ponownie uruchomić poleceniegcloud config set project
.
Dodawanie Vertex AI do aplikacji
- Wróć do terminala Cloud Shell na dole ekranu.
- Upewnij się, że nadal jesteś w prawidłowym katalogu:
cd ~/codelab-genai
- Zainstaluj pakiet Vertex AI SDK dla Node.js:
npm install @google-cloud/vertexai
- Zainstaluj pakiet Google Auth SDK dla Node.js:
npm install google-auth-library
- Tworzenie
app/actions.ts
w terminalutouch app/actions.ts
- Otwórz plik
actions.ts
w edytorze Cloud Shellcloudshell edit app/actions.ts
- Skopiuj ten kod i wklej go do otwartego pliku
actions.ts
:'use server' import { VertexAI } from '@google-cloud/vertexai'; import { GoogleAuth } from 'google-auth-library'; const auth = new GoogleAuth(); export async function getFunFactsAction(animal: string) { const project = await auth.getProjectId(); const vertex = new VertexAI({ project: project }); const generativeModel = vertex.getGenerativeModel({ model: 'gemini-1.5-flash' }); const prompt = `Give me 10 fun facts about ${animal || 'dog'}. Return as json as an array in the format ['fact 1', 'fact 2'] Remove backticks and other markdown formatting.`; const resp = await generativeModel.generateContent(prompt); if (!resp.response.candidates) { throw new Error('Did not receive response candidates.') } console.log({ text: resp.response.candidates[0].content.parts[0].text }) const factArray = JSON.parse(resp.response.candidates[0].content.parts[0].text || ''); return factArray; };
- Otwórz plik
page.tsx
w edytorze Cloud Shellcloudshell edit ~/codelab-genai/app/page.tsx
- Zastąp kod w pliku
page.tsx
tym kodem:'use client' import React, { useState } from "react"; import { getFunFactsAction } from "./actions"; export default function Home() { const [animal, setAnimal] = useState(''); const [funFacts, setFunFacts] = useState<string[]>([]); async function getNewFunFacts() { const funFacts = await getFunFactsAction(animal); setFunFacts(funFacts); } return ( <main> <h1 className="text-xl">Animal Fun Facts!</h1> <label className="text-lg p-2 m-2">Animal</label> <input placeholder="dog" value={animal} onChange={(e) => setAnimal(e.target.value)} className="text-black border-2 p-2 m-2 rounded" /> <button onClick={getNewFunFacts} className="font-bold border-2 p-2 m-2 rounded hover:bg-white hover:text-black" > Get New Fun Facts </button> <ul className="list-disc list-inside"> {funFacts.map(function (thing) { return <li key={thing}>{thing}</li> })} </ul> </main> ); }
12. Wdróż ponownie
- Upewnij się, że nadal jesteś w odpowiednim katalogu w Cloud Shell:
cd ~/codelab-genai
- Aby wypchnąć nową wersję aplikacji do lokalnego repozytorium Git, uruchom te polecenia:
git add . git commit -m "add latest changes"
- Prześlij 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"
Utworzenie wersji może potrwać kilka minut.
Historię wszystkich wersji znajdziesz tutaj: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (Opcjonalnie) Sprawdzanie korzystania z Vertex AI
Podobnie jak w przypadku innych usług Google Cloud, możesz przeprowadzić audyt operacji Vertex AI. Logi kontrolne pomagają odpowiedzieć na pytania „kto, co, gdzie i kiedy?”. Logi kontrolne administracyjne Vertex AI są domyślnie włączone. Aby sprawdzić żądania generowania treści, musisz włączyć logi kontrolne dostępu do danych:
- W konsoli Google Cloud otwórz stronę Logi audytu:
Jeśli do znalezienia tej strony użyjesz paska wyszukiwania, wybierz wynik z podtytułem Administracja. - Upewnij się, że tworzysz aplikację Cloud Run w istniejącym projekcie Google Cloud.
- W tabeli Konfiguracja logów kontrolnych dostępu do danych znajdź kolumnę Usługa i kliknij
Vertex AI API
. - Na karcie Typy logów wybierz typy logów kontrolnych Dostęp do danych:
Admin read
iData read
. - Kliknij Zapisz.
Po włączeniu tej opcji będziesz mieć dostęp do dzienników kontrolnych dotyczących każdego wywołania aplikacji. Aby wyświetlić dzienniki kontrolne z informacjami o wywołaniu, wykonaj te czynności:
- Wróć do wdrożonej aplikacji i odśwież stronę, aby wywołać dziennik.
- 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.
W logach kontroli rejestrowane jest korzystanie z interfejsu Vertex AI API, ale nie zawierają one danych związanych z obciążeniem, takich jak prompty czy szczegóły odpowiedzi.
14. (Opcjonalnie) Zwiększanie możliwości dostrzegalności zbioru zadań AI
Logi audytu nie zawierają informacji związanych z obciążeniem pracą. Aby zwiększyć możliwości monitorowania obciążeń, musisz jawnie rejestrować te informacje. W tym celu możesz użyć ulubionego frameworku rejestrowania. W następujących krokach pokażemy, jak to zrobić za pomocą natywnego mechanizmu rejestrowania Node.js.
- Ponownie otwórz plik
actions.ts
w edytorze Cloud Shellcloudshell edit ~/codelab-genai/app/actions.ts
- Po wywołaniu funkcji
await generativeModel.generateContent(prompt)
(wiersz 19) dodaj ten wiersz: Ten kod zapisuje wconsole.log(JSON.stringify({ severity: 'DEBUG', message: 'Content is generated', prompt: prompt, response: resp.response, }));
stdout
informacje o wygenerowanych treściach w formacie zorganizowanego rejestrowania. Agent rejestrowania w Cloud Run rejestruje dane wyjściowe wydrukowane w formaciestdout
i zapisuje je w Cloud Logging. - Ponownie otwórz Cloud Shell i wpisz to polecenie, aby sprawdzić, czy jesteś we właściwym 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 debugowania dotyczące wywołań Vertex AI.
Aby wyświetlić dzienniki 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 zawiera logi z promptem i odpowiedzią Vertex AI, w tym „oceny bezpieczeństwa”, które można wykorzystać do monitorowania praktyk bezpieczeństwa.
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 Cloud powoduje zaprzestanie naliczania opłat za wszystkie zasoby używane w tym projekcie.
Jeśli chcesz, możesz usunąć projekt:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Możesz też usunąć niepotrzebne zasoby z dysku CloudShell. Możesz:
- Usuń katalog projektu ćwiczeń z programowania:
rm -rf ~/codelab-genai
- 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 gdzie indziej.
sudo rm -rf $HOME
16. Gratulacje
W tym module napisano aplikację internetową i skonfigurowano Cloud Run, aby automatycznie wdrażać aplikację po wprowadzeniu zmiany w kodzie źródłowym. Następnie zmodyfikowałeś aplikację i ponownie ją wdrożyłeś.
Jeśli podobał Ci się ten warsztat, możesz go powtórzyć w innym języku programowania lub środowisku:
Oto kilka opcji dalszej nauki:
- Dokumentacja: użyj Firebase GenKit jako elastycznej abstrakcji modelu, która ułatwia integrację dowolnego interfejsu API modelu i używanie modeli obsługiwanych przez społeczność.
- Ćwiczenie: jak wdrożyć aplikację do czatu z użyciem Gemini w Cloud Run
- Jak używać wywoływania funkcji Gemini z Cloud Run
- Jak za pomocą interfejsu Cloud Run Jobs Video Intelligence API przetwarzać filmy według scen
- Warsztat na żądanie: Wprowadzenie do Google Kubernetes Engine