Aplikacja Text Summarizer z Vertex AI i Svelte Kit

1. Wprowadzenie

W ramach tego ćwiczenia w Codelabs znajdziesz instrukcje tworzenia aplikacji internetowej, która umożliwia wykonywanie podsumowań tekstu przy użyciu dużego modelu językowego Vertex AI do generowania tekstu ( text-bison) na platformie Svelte Kit. Lista używanych usług i stosu technologicznego to:

  1. Svelte Kit: platforma aplikacji internetowych oparta na technologii Svelte.
  2. Vertex AI PaLM 2 API: interfejs API dużego modelu językowego (LLM), który zapewnia dostęp do modelu PaLM 2 opracowanego przez Google AI.
  3. Cloud Functions: bezserwerowa platforma do uruchamiania funkcji bez konieczności zarządzania serwerami.
  4. Cloud Run: bezserwerowa platforma do uruchamiania aplikacji skonteneryzowanych.

Co utworzysz

Tworzenie:

  • Do wywoływania interfejsu API MakePalm używana jest funkcja w Pythonie w Cloud Functions
  • Aplikacja internetowa firmy Svelte umożliwiająca interakcję z interfejsem Vertex AI API za pomocą funkcji w Cloud Functions
  • Usługa Cloud Run do wdrażania bezserwerowej aplikacji utworzonej powyżej

2. Wymagania

  • przeglądarki, na przykład Chrome lub Firefox;
  • Projekt Google Cloud z włączonymi płatnościami

3. Zanim zaczniesz

  1. Na stronie selektora projektów w konsoli Google Cloud wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. Do interakcji z usługami Google Cloud będziesz używać Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud. Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji. W prawym górnym rogu konsoli Cloud kliknij Aktywuj Cloud Shell:

51622c00acec2fa.png

Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:

gcloud config set project <YOUR_PROJECT_ID>
  1. Sprawdź, czy wszystkie niezbędne interfejsy API są włączone, uruchamiając w terminalu Cloud Shell to polecenie:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. Utwórz zmienne środowiskowe dla regionu REGION i IDENTYFIKATOR_PROJEKTU, uruchamiając w terminalu Cloud Shell to polecenie:
export PROJECT_ID=<your project id>

export REGION=asia-south1

4. Funkcja w Cloud Functions do wywoływania interfejsu Vertex AI API

Utworzymy funkcję w Cloud Functions w języku Python i wywołamy interfejs Vertex AI API w tej funkcji.

Tworzę nowe konto usługi

Utwórz nowe konto usługi, wykonując to polecenie w terminalu Cloud Shell.

gcloud iam service-accounts create vertex-service-acc

Aby zapewnić dostęp do projektu i zasobów, przypisz rolę do konta usługi.

gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer

Przypisanie do konta Google roli, która pozwala korzystać z ról konta usługi i dołączać je do innych zasobów. Zastąp USER_EMAIL identyfikatorem e-mail swojego konta Google.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Tworzenie funkcji w Pythonie

PaLM 2 w przypadku tekstu idealnie nadaje się do zadań, które można wykonać za pomocą jednej odpowiedzi interfejsu API, bez potrzeby ciągłej rozmowy. Utwórzmy dla niej funkcję w Cloud Functions.

Utwórz nowy katalog przy użyciu Cloud Shell i przejdź do niego. (użyj tego samego terminala otwartego w poprzedniej sekcji):

mkdir vertex-ai-functions

cd vertex-ai-functions

Utwórz plik main.py do zapisywania funkcji w Cloud Functions w języku Python i plik requirements.txt do przechowywania zależności.

touch main.py requirements.txt

Ten plik Pythona definiuje prostą funkcję HTTP w Cloud Functions, która wykorzystuje model generowania tekstu Vertex AI do generowania krótkich podsumowań danych wejściowych tekstowych. Funkcja pobiera dane tekstowe jako parametr i zwraca krótkie podsumowanie tych danych. Funkcja ta wykorzystuje różne parametry, takie jak kreatywność, różnorodność i płynność generowanego tekstu, aby kontrolować proces generowania. Funkcja HTTP w Cloud Functions akceptuje obiekt żądania i zwraca w odpowiedzi podsumowanie modelu.

Otwórz edytor Google Cloud. Aby go otworzyć, otwórz nową kartę konsoli Google Cloud i kliknij przycisk AKTYWUJ CLOUD SHELL. Po wczytaniu terminala szybko kliknij przycisk OTWÓRZ EDYTOR, tak jak na ilustracji poniżej:

8E501bd2c41d11b8.png

Po otwarciu edytora powinien być widoczny plik main.py. Zastąp jego zawartość kodem z tego linku do repozytorium. Wyjaśnienie kodu jest zawarte w komentarzach do kodu. Podsumowując, ten kod zapewnia zwięzły sposób generowania krótkich podsumowań danych wejściowych tekstowych za pomocą Vertex AI.

Plik requirements.txt zawiera zależności pakietów: features-framework==3.*: Zapewnia, że funkcja korzysta z najnowszych funkcji i poprawek błędów platformy Functions. google-cloud-aiplatform: wymagany do korzystania z modelu generowania tekstu Vertex AI.

Dodaj to polecenie do pliku requirements.txt:

functions-framework==3.*
google-cloud-aiplatform

Wdrażanie w Cloud Functions

Teraz wdróżmy to źródło w Cloud Functions. Uruchom to polecenie w terminalu Cloud Shell:

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

Użyj paska wyszukiwania i otwórz konsolę Cloud Functions:

43a6b247098a9edb.png

Spowoduje to wyświetlenie utworzonej właśnie funkcji w Cloud Functions z wykorzystaniem vertex-ai z jej publicznym adresem URL zostanie podana na stronie funkcji. Używamy tego do łączenia interfejsów Frontend i Vertex AI API. Zapisz ten adres URL. Konieczne może być też zezwolenie podstawowej usłudze Cloud Run w przypadku nieuwierzytelnionego dostępu. Ze względów bezpieczeństwa zalecamy używanie uwierzytelnionej usługi.

5. Tworzenie i wdrażanie interfejsu

Ta aplikacja ma interfejs frontendowy do interakcji z naszym interfejsem Vertex AI API za pomocą Google Cloud Functions. Utwórzmy go.

Klonowanie repozytorium i konfiguracja pliku Dockerfile

Przejdź do katalogu głównego i sklonuj repozytorium git.

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

Aby uruchomić tę aplikację, musisz dodać zmienną środowiskową PUBLIC_FUNCTION_URL w pliku Dockerfile. Ten URL to adres URL w funkcji w Cloud Functions utworzony i zapisany w poprzedniej sekcji.

Otwórz Cloud Editor i edytuj zawartość pliku Dockerfile. Zastąp zmienną PUBLIC_FUNCTION_URL adresem URL funkcji w Cloud Functions.

2958bb12343368a9.png

Wdrażanie frontendu w Cloud Run

Będziemy korzystać z Google Artifact Registry do utworzenia i przechowywania obrazów Dockera. Do wdrażania kontenerów w architekturze bezserwerowej służy Cloud Run.

Utwórz repozytorium Artifact Registry, uruchamiając w terminalu Cloud Shell to polecenie:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

Utwórz zmienną środowiskową dla adresu URL repozytorium Artifact Registry.

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

Utwórz kontener Dockera i oznacz go lokalizacją repozytorium Artifact Registry. Dodanie do obrazu Dockera nazwy repozytorium powoduje, że polecenie push dockera powoduje wypchnięcie obrazu do określonej lokalizacji.

docker build . -t ${DOCKER_URL}

Przekaż obraz do Artifact Registry.

docker push ${DOCKER_URL}

wdrożyć kontener Dockera w Cloud Run,

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

Hip hip hurra! Usługa Vertex Summarizer jest już uruchomiona. Adres URL będzie widoczny w Cloud Shell, więc warto skorzystać z Vertex AI🤖.

cd94442961bb5308.gif

6. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym poście, wykonaj te czynności:

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń
  3. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.
  4. Jeśli chcesz zachować projekt i usunąć tylko usługę Cloud Run, wykonaj czynności opisane tutaj
  5. Jeśli chcesz usunąć funkcję w Cloud Functions lub anulować dostęp, możesz to zrobić tutaj.

7. Gratulacje

Gratulacje! Udało Ci się użyć interfejsu API Vertex AI PaLM2 do automatycznego generowania podsumowania tekstu, utworzenia aplikacji internetowej Svelte i wdrożenia jej w Cloud Functions. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji usługi Vertex AI LLM.