Funkcja w Cloud Functions do podsumowywania treści przy użyciu interfejsu PaLM Vertex AI API i Google Cloud Storage

Funkcja w Cloud Functions do podsumowywania treści za pomocą interfejsu PaLM Vertex AI API i Google Cloud Storage

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: paź 30, 2023
account_circleAutorzy: Romin Irani, Shweta Shetye

1. Wprowadzenie

W tym laboratorium kodu znajdziesz instrukcje dotyczące podsumowania treści przesłanych do Google Cloud Storage przy użyciu dużego modelu językowego Vertex AI ( text-bison) do generowania tekstu jako funkcji w Pythonie. Lista używanych usług:

  • Vertex AI PaLM API: interfejs LLM (Large Language Model) zapewniający dostęp do modelu PaLM Text Bison od Google AI.
  • Cloud Functions: bezserwerowa platforma do uruchamiania funkcji bez konieczności zarządzania serwerami.
  • Cloud Storage: zarządzana usługa służąca do przechowywania nieuporządkowanych danych.
  • Cloud Logging: w pełni zarządzana usługa umożliwiająca przechowywanie, wyszukiwanie, analizowanie i monitorowanie danych z logów oraz generowanie alertów na ich podstawie.

Co utworzysz

Utworzysz aplikację wdrożoną jako funkcja w Cloud Functions w Pythonie, która będzie podsumowywać tekst za pomocą interfejsu Palm API.

2. Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • projekt Google Cloud z włączonymi płatnościami;

3. Zanim zaczniesz

  1. W konsoli Google Cloud na stronie selektora projektu 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. Upewnij się, że wszystkie niezbędne interfejsy API (Cloud Storage API, Vertex AI API, Cloud Function API i Cloud Logging) są włączone.
  4. Użyjesz Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. Informacje o poleceniach i użytkowaniu gcloud znajdziesz w dokumentacji.
  5. W Cloud Console w prawym górnym rogu kliknij Aktywuj Cloud Shell:

51622c00acec2fa.png

Jeśli projekt nie jest ustawiony, użyj tego polecenia:

gcloud config set project <YOUR_PROJECT_ID>
  1. Aby mieć pewność, że wszystkie niezbędne interfejsy API są włączone, uruchom w terminalu Cloud Shell to polecenie:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform
.googleapis.com \
storage
.googleapis.com \
logging
.googleapis.com \
eventarc
.googleapis.com
  1. Utwórz zmienne środowiskowe REGION i PROJECT_ID, uruchamiając to polecenie w terminalu Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. funkcja Cloud Functions do wywołania interfejsu Vertex AI API;

Utworzymy funkcję w Cloud Functions w Pythonie i wywołamy interfejs Vertex AI API.

Tworzenie nowego konta usługi

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

gcloud iam service-accounts create vertex-service-acc

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

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

Aby przypisać swojemu koncie Google rolę, która pozwoli Ci używać ról konta usługi i dołączać konto usługi do innych zasobów, uruchom podane niżej polecenie. Zastąp USER_EMAIL identyfikatorem adresu 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

Interfejs PaLM API do obsługi tekstu jest idealny do zadań, które można wykonać za pomocą jednej odpowiedzi interfejsu API, bez potrzeby ciągłej rozmowy. Utwórzmy teraz funkcję w Cloud Functions.

Aby sklonować repozytorium i przejść do projektu (użyj tego samego terminala otwartego w poprzedniej sekcji), wykonaj w Cloud Shell te polecenia:

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai
-apptemplates-googlecloud/summarization-gcs-cloudfunction

W tym projekcie interesuje nas folder summarization-gcs-cloudfunction.

Otwórz edytor Cloud Shell w terminalu i sprawdź zawartość folderu projektu, który został skopiowany z GitHubu na maszynę Cloud Shell.

Ten folder zawiera 2 pliki:

  1. Plik Pythona main.py definiuje prostą funkcję HTTP w Cloud Functions, która korzysta z modelu generowania tekstu Vertex AI, aby generować krótkie podsumowania tekstów wejściowych. Funkcja ta przyjmuje jako parametr tekst i zwraca jego krótkie podsumowanie. Funkcja ta używa różnych parametrów do kontrolowania procesu generowania, takich jak kreatywność, różnorodność i płynność generowanego tekstu. Funkcja w Cloud Functions obsługująca HTTP przyjmuje obiekt żądania i zwraca w odpowiedzi podsumowanie modelu.
  2. Plik requirements.txt zawiera zależności pakietów:
  • functions-framework==3: Sprawdzanie, czy funkcja korzysta z najnowszych funkcji i poprawek błędów w ramach interfejsu Functions Framework.
  • google-cloud-aiplatform: wymagane do korzystania z modelu generowania tekstu Vertex AI.
  • google-cloud-storage: wymagane do tworzenia zasobników w Google Cloud Storage.
  • google-cloud-logging: wymagane do generowania logów.

5. Wdrażanie funkcji

  1. Utwórz 2 zasośniki Cloud Storage:
  • Pierwszy zasób: zasób $BUCKET_NAME będzie używany do przesyłania plików do podsumowania. Utwórz zmienną środowiskową przechowującą nazwę zasobnika w ten sposób:
export BUCKET_NAME='Your Bucket Name'
  • Drugi zasób: zasób $BUCKET_NAME-summaries będzie używany do przechowywania podsumowanego pliku.
  • Do utworzenia zasobników użyjemy polecenia gsutil:
  • gsutil to aplikacja w języku Python, która umożliwia dostęp do Cloud Storage z poziomu wiersza poleceń. Za pomocą gsutil możesz wykonywać wiele zadań związanych z zarządzaniem zasobnikami i obiektami.
  • mb to skrót od „Make Bucket” (utwórz kosz).
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb
-l $REGION gs://"$BUCKET_NAME"-summaries
  1. W tej chwili możemy wdrożyć funkcję. Zanim to zrobisz, sprawdź, czy konto usługi zasobnika Cloud Storage ma rolę wydawcy Pub/Sub.
  2. Otwórz Google Cloud Storage i w panelu po lewej stronie kliknij „Ustawienia”.

8ce34eb05153abf2.png

  1. Skopiuj z ustawień wartość „Konto usługi” i zapisz ją.
  2. W menu nawigacyjnym konsoli Google Cloud otwórz Uprawnienia i Administracja.

c5a7103e90689684.png

  1. Na karcie Uprawnienia kliknij PRZYZNAJ DOSTĘP, a w sekcji Nowe podmioty zabezpieczeń wpisz identyfikator konta usługi, który został wcześniej zapisany, wybierz rolę „Publikujący Pub/Sub” i kliknij ZAPISZ.

11c2df774fa740a9.png

  1. Wdróż ten kod źródłowy w Cloud Functions. Uruchom to polecenie w terminalu Cloud Shell:
  2. Upewnij się, że w tym projekcie jesteś w folderze summarization-gcs-cloudfunction.
  3. Uruchom to polecenie:
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. W konsoli Google Cloud otwórz Cloud Functions:

Spowoduje to wyświetlenie utworzonej przez nas właśnie funkcji w Cloud Functions Vertex-AI-Function z publicznym adresem URL. Użyjemy tej funkcji do utworzenia reguły GCS.

6. wywołać funkcję,

Gdy plik zostanie przesłany do zasobnika $BUCKET_NAME, aktywator GCS wywoła funkcję. Zasobnik $BUCKET_NAME"-summaries zawiera plik podsumowania o tej samej nazwie.

Zanim zaczniesz, zapisz na komputerze plik story.md z folderu summarization-gcs-cloudfunction.

  1. W konsoli Google Cloud otwórz Cloud Storage.
  2. Otwórz zasobnik $BUCKET_NAME z listy zasobników.
  3. Kliknij Prześlij pliki i wybierz plik story.md.

Funkcja summarizeArticles zostaje uruchomiona i zaczyna streszczać zawartość pliku.

  1. W panelu nawigacyjnym po lewej stronie kliknij Zbiory.
  2. Otwórz zasobnik $BUCKET_NAME"-summaries.

Plik story.md zawiera podsumowanie zawartości pliku.

7. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby wykorzystane 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 niektóre zasoby, otwórz konsolę Cloud Storage, kliknij Zasobniki, zaznacz na liście zasoby, które chcesz usunąć, i kliknij USUŃ.
  5. Funkcję w Cloud Functions możesz też usunąć, gdy przejdziesz do tej usługi, zaznaczysz na liście funkcję, którą chcesz usunąć, i klikniesz USUŃ.

8. Gratulacje

Gratulacje! Udało Ci się wykorzystać model LLM do generacji tekstu w Vertex AI w celu automatycznego streszczenia danych. Aby dowiedzieć się więcej o dostępnych modelach, zapoznaj się z dokumentacją dotyczącą modelu LLM w Vertex AI.