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

1. Wprowadzenie

Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak wykonywać podsumowywanie treści przesłanych do Google Cloud Storage z wykorzystaniem dużego modelu językowego Vertex AI do generowania tekstu ( text-bison) jako funkcji w Cloud Functions w Pythonie. Lista wykorzystywanych usług:

  • Vertex AI PaLM API: interfejs API dużego modelu językowego (LLM), który zapewnia dostęp do modelu PaLM Text Bison dostępnego w ramach AI od Google.
  • Cloud Functions: bezserwerowa platforma do uruchamiania funkcji bez konieczności zarządzania serwerami.
  • Cloud Storage: zarządzana usługa do przechowywania nieuporządkowanych danych.
  • Cloud Logging: w pełni zarządzana usługa, która umożliwia przechowywanie, wyszukiwanie, analizowanie i monitorowanie danych logowania oraz tworzenie na ich podstawie alertów.

Co utworzysz

Tworzysz aplikację wdrożoną w Pythonie jako funkcję w Cloud Functions, by podsumowywać tekst przy użyciu interfejsu Palm API.

2. Wymagania

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

3. Zanim zaczniesz

  1. W konsoli Google Cloud na stronie selektora projektów 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. Sprawdź, czy 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 – środowiska wiersza poleceń działającego w Google Cloud. Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji.
  5. 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 cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.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=us-central1

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.

Tworzenie nowego konta 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

Aby przypisać do konta Google rolę, która pozwala na korzystanie z ról konta usługi i dołączanie tego konta do innych zasobów, uruchom poniższe polecenie. 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

Interfejs PaLM API do obsługi tekstu doskonale sprawdza się w przypadku zadań, które można wykonać za pomocą jednej odpowiedzi interfejsu API, bez konieczności ciągłej rozmowy. Utwórzmy dla niej funkcję w Cloud Functions.

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

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

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

Folder, który jest dla nas ważny w tym projekcie, to: summarization-gcs-cloudfunction.

Otwórz edytor Cloud Shell z terminala i sprawdź zawartość folderu projektu, który właśnie został sklonowany z githuba na maszynę Cloud Shell.

Ten folder zawiera 2 pliki:

  1. main.py 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.
  2. Plik requirements.txt zawiera zależności pakietów:
  • functions-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.
  • google-cloud-storage: wymagany do tworzenia zasobników na dane w Google Cloud Storage.
  • google-cloud-logging: wymagany do generowania logów.

5. Wdrażanie funkcji

  1. Utwórz 2 zasobniki Cloud Storage:
  • Pierwszy zasobnik: zasobnik $BUCKET_NAME zostanie użyty do przesłania plików w celu ich podsumowania. Utwórz zmienną środowiskową przechowującą nazwę zasobnika w ten sposób:
export BUCKET_NAME='Your Bucket Name'
  • Drugi zasobnik: do przechowywania pliku z podsumowaniem zostanie użyty zasobnik $BUCKET_NAME-summaries.
  • 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ń. gsutil możesz używać do wykonywania wielu zadań związanych z zarządzaniem zasobnikami i obiektami.
  • mb to skrót od angielskich słów „Make Bucket”.
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. W tym momencie jesteśmy gotowi do wdrożenia funkcji. Zanim to zrobisz, sprawdź, czy konto usługi zasobnika Cloud Storage ma przypisaną rolę publikującego Pub/Sub.
  2. Otwórz Google Cloud Storage i w panelu po lewej stronie kliknij „Settings” (Ustawienia).

8ce34eb05153abf2.png

  1. Skopiuj „Konto usługi” w ustawieniach i zanotuj to.
  2. W menu nawigacyjnym konsoli Google Cloud otwórz kartę Administracja.

c5a7103e90689684.png

  1. Na karcie Uprawnienia kliknij PRZYZNAJ DOSTĘP i wpisz zanotowany identyfikator konta usługi w sekcji Nowe podmioty zabezpieczeń i wybierz Rola jako „Wydawca w Pub/Sub”. i kliknij ZAPISZ.

11c2df774fa740a9.png

  1. Wdróż to źródło w Cloud Functions. Uruchom to polecenie w terminalu Cloud Shell:
  2. Sprawdź, czy 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 wybierz Cloud Functions:

Spowoduje to wyświetlenie utworzonej przed chwilą funkcji w Cloud Functions z funkcją vertex-ai z jej publicznym adresem URL. Użyjemy tej funkcji do utworzenia aktywatora GCS.

6. wywołać funkcję,

Po przesłaniu pliku do zasobnika $BUCKET_NAME* aktywator GCS wywołuje funkcję. Zasobnik $BUCKET_NAME"-summaries zawiera podsumowanie pliku o tej samej nazwie.

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

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

Zostanie uruchomiona funkcja summarizeArticles i zacznie podsumowywać zawartość pliku.

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

Plik story.md zawiera podsumowanie jego zawartości.

7. 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 niektóre zasoby, otwórz konsolę Cloud Storage, kliknij Zasobniki i na liście zaznacz zasobniki do usunięcia, a następnie kliknij USUŃ.
  5. Możesz też usunąć funkcję w Cloud Functions, przechodząc do Cloud Functions i na liście funkcji zaznacz tę, którą chcesz usunąć, i kliknij USUŃ.

8. Gratulacje

Gratulacje! Udało Ci się programowo użyć modelu LLM do generowania tekstu w Vertex AI do podsumowywania danych. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji usługi Vertex AI LLM.