1. Wprowadzenie
W tym ćwiczeniu znajdziesz instrukcje podsumowywania treści przesłanych do Google Cloud Storage przy użyciu dużego modelu językowego Vertex AI do generowania tekstu ( text-bison) jako funkcji w Cloud Functions w Pythonie. Lista używanych usług:
- Vertex AI PaLM API: interfejs API dużego modelu językowego (LLM), który zapewnia 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: usługa zarządzana służąca 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, a także wysyłanie alertów na ich temat.
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
3. Zanim zaczniesz
- W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
- Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
- Sprawdź, czy wszystkie niezbędne interfejsy API (Cloud Storage API, Vertex AI API, Cloud Functions API i Cloud Logging) są włączone.
- Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.
- W konsoli Cloud kliknij Aktywuj Cloud Shell w prawym górnym rogu:

Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
- Sprawdź, czy wszystkie niezbędne interfejsy API są włączone. W tym celu 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
- 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 w Cloud Functions do wywoływania interfejsu Vertex AI API
Utworzymy funkcję w Cloud Functions w Pythonie i wywołamy w niej interfejs Vertex AI API.
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 przyznać dostęp do projektu i jego 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 umożliwia korzystanie z ról konta usługi i dołączanie konta usługi do innych zasobów, uruchom to polecenie. Zastąp USER_EMAIL identyfikatorem e-mail 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 API do tekstu idealnie nadaje się do zadań, które można wykonać za pomocą jednej odpowiedzi z interfejsu API bez konieczności prowadzenia ciągłej rozmowy. Utwórzmy teraz funkcję w Cloud Functions.
Aby sklonować repozytorium i przejść do projektu, wykonaj w Cloud Shell te polecenia (użyj tego samego terminala, który został otwarty w poprzedniej sekcji):
git clone https://github.com/rominirani/genai-apptemplates-googlecloud
cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction
Folder, na którym nam zależy w tym projekcie, to: summarization-gcs-cloudfunction.
Otwórz edytor Cloud Shell z terminala i sprawdź zawartość folderu projektu, który został właśnie sklonowany z GitHub na maszynę Cloud Shell.
Ten folder zawiera 2 pliki:
- main.py to plik Pythona, który definiuje prostą funkcję HTTP w Cloud Functions, która używa modelu generowania tekstu Vertex AI do generowania krótkich podsumowań danych wejściowych. Funkcja przyjmuje tekst jako parametr i zwraca jego krótkie podsumowanie. Funkcja wykorzystuje różne parametry do kontrolowania procesu generowania, takie jak kreatywność, różnorodność i płynność wygenerowanego tekstu. Funkcja HTTP w Cloud Functions przyjmuje obiekt żądania i zwraca podsumowanie modelu jako odpowiedź.
- Plik requirements.txt zawiera zależności pakietów:
- functions-framework==3.: Zapewnia, że funkcja korzysta z najnowszych funkcji i poprawek błędów w Functions Framework.
- google-cloud-aiplatform: wymagane do korzystania z modelu generowania tekstu Vertex AI.
- google-cloud-storage: wymagane do tworzenia zasobników pamięci w Google Cloud Storage.
- google-cloud-logging: wymagane do generowania logów.
5. Wdrażanie funkcji
- Utwórz 2 zasobniki Cloud Storage:
- Pierwszy zasobnik: zasobnik $BUCKET_NAME będzie używany do przesyłania plików do podsumowania. Utwórz zmienną środowiskową do przechowywania nazwy zasobnika w ten sposób:
export BUCKET_NAME='Your Bucket Name'
- Drugi zasobnik: zasobnik $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 wiersza poleceń. Za pomocą gsutil możesz wykonywać wiele zadań związanych z zarządzaniem zasobnikami i obiektami.
- mb oznacza „Make Bucket” (utwórz zasobnik).
gsutil mb -l $REGION gs://"$BUCKET_NAME"
gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
- Teraz możemy wdrożyć funkcję. Zanim to zrobisz, sprawdź, czy konto usługi zasobnika Cloud Storage ma rolę Publikujący w Pub/Sub.
- Otwórz Google Cloud Storage i w panelu po lewej stronie kliknij „Ustawienia”.

- Skopiuj „Konto usługi” z ustawień i zapisz je.
- Otwórz Uprawnienia i Administracja w menu nawigacyjnym konsoli Google Cloud.

- Na karcie Uprawnienia kliknij PRZYZNAJ DOSTĘP i w sekcji Nowe podmioty zabezpieczeń wpisz zanotowany identyfikator konta usługi. Następnie wybierz rolę „Publikujący Pub/Sub” i kliknij ZAPISZ.

- Wdróż to źródło w Cloud Functions. Uruchom to polecenie w terminalu Cloud Shell:
- Upewnij się, że w tym projekcie jesteś w folderze summarization-gcs-cloudfunction.
- 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
- W konsoli Google Cloud otwórz Cloud Functions:
Wyświetli to utworzoną właśnie funkcję w Cloud Functions vertex-ai-function wraz z jej 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ę. W zasobniku $BUCKET_NAME"-summaries znajduje się podsumowany plik o tej samej nazwie.
Zanim zaczniesz, zapisz na komputerze przykładowy plik story.md z folderu summarization-gcs-cloudfunction.
- W konsoli Google Cloud otwórz Cloud Storage.
- Otwórz zasobnik
$BUCKET_NAMEna liście zasobników. - Kliknij Prześlij pliki i wybierz plik story.md.
Funkcja summarizeArticles zostanie wywołana i rozpocznie podsumowywanie zawartości pliku.
- W panelu nawigacji po lewej stronie kliknij Buckets (Kosz).
- 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 użyte w tym poście, wykonaj te czynności:
- W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
- Z listy projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
- W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.
- Jeśli chcesz zachować projekt i usunąć tylko niektóre zasoby, otwórz konsolę Cloud Storage, kliknij Zasobniki, a następnie na liście zaznacz zasobniki, które chcesz usunąć, i kliknij USUŃ.
- Możesz też usunąć funkcję w Cloud Functions. W tym celu przejdź do Cloud Functions, 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, aby podsumować dane. Więcej informacji o dostępnych modelach znajdziesz w dokumentacji produktu Vertex AI LLM.