Cloud Functions-Funktion für die Zusammenfassung von Inhalten mit der PaLM Vertex AI API und Google Cloud Storage

1. Einführung

In diesem Codelab finden Sie die Schritte zum Zusammenfassen von Inhalten, die in Google Cloud Storage hochgeladen wurden, mithilfe des Vertex AI Large Language Model für die Textgenerierung ( text-bison) als Cloud-Funktion in Python. Folgende Dienste werden verwendet:

  • Vertex AI PaLM API: Eine API für Large Language Models (LLMs), die Zugriff auf das PaLM Text Bison-Modell von Google AI bietet.
  • Cloud Functions: Eine serverlose Plattform zum Ausführen von Funktionen, ohne dass Sie Server verwalten müssen.
  • Cloud Storage: Ein verwalteter Dienst zum Speichern unstrukturierter Daten.
  • Cloud Logging: Ein vollständig verwalteter Dienst, mit dem Sie Logging-Daten speichern, durchsuchen, analysieren, überwachen und melden können.

Aufgaben

Sie erstellen eine Anwendung, die als Python-Cloud-Funktion bereitgestellt wird, um Text mithilfe der PaLM API zusammenzufassen.

2. Voraussetzungen

  • Ein Browser, z. B. Chrome oder Firefox
  • Ein Google Cloud-Projekt mit aktivierter Abrechnungsfunktion

3. Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
  3. Prüfen Sie, ob alle erforderlichen APIs (Cloud Storage API, Vertex AI API, Cloud Functions API und Cloud Logging) aktiviert sind.
  4. Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird. Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.
  5. Klicken Sie in der Cloud Console rechts oben auf „Cloud Shell aktivieren“:

51622c00acec2fa.png

Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:

gcloud config set project <YOUR_PROJECT_ID>
  1. Prüfen Sie, ob alle erforderlichen APIs aktiviert sind, indem Sie den folgenden Befehl im Cloud Shell-Terminal ausführen:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Erstellen Sie Umgebungsvariablen für REGION und PROJECT_ID, indem Sie den folgenden Befehl im Cloud Shell-Terminal ausführen:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Cloud-Funktion zum Aufrufen der Vertex AI API

Wir erstellen eine Python Cloud Functions-Funktion und rufen die Vertex AI API in dieser Funktion auf.

Neues Dienstkonto erstellen

Erstellen Sie ein neues Dienstkonto, indem Sie den folgenden Befehl im Cloud Shell-Terminal ausführen.

gcloud iam service-accounts create vertex-service-acc

Um Zugriff auf Ihr Projekt und Ihre Ressourcen zu gewähren, weisen Sie dem Dienstkonto eine Rolle zu.

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

Führen Sie den folgenden Befehl aus, um Ihrem Google-Konto eine Rolle zuzuweisen, mit der Sie die Rollen des Dienstkontos verwenden und das Dienstkonto an andere Ressourcen anhängen können. Ersetzen Sie USER_EMAIL durch die E-Mail-Adresse Ihres Google-Kontos.

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

Python-Funktion erstellen

Die PaLM API für Text ist ideal für Aufgaben, die mit einer einzigen API-Antwort ausgeführt werden können, ohne dass eine kontinuierliche Unterhaltung erforderlich ist. Erstellen wir nun die Cloud Functions-Funktion dafür.

Führen Sie die folgenden Befehle in Cloud Shell aus, um das Repository zu klonen und zum Projekt zu wechseln (verwenden Sie dasselbe Terminal, das im vorherigen Abschnitt geöffnet wurde):

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

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

Der Ordner, der uns in diesem Projekt interessiert, ist: summarization-gcs-cloudfunction.

Öffnen Sie den Cloud Shell-Editor über das Terminal und prüfen Sie den Inhalt des Projektordners, der gerade von GitHub auf Ihren Cloud Shell-Computer geklont wurde.

Dieser Ordner enthält zwei Dateien:

  1. In der Python-Datei main.py wird eine einfache HTTP-Cloud Functions-Funktion definiert, die ein Vertex AI-Modell zur Textgenerierung verwendet, um kurze Zusammenfassungen von Texteingaben zu generieren. Die Funktion verwendet eine Texteingabe als Parameter und gibt eine kurze Zusammenfassung der Eingabe zurück. Die Funktion verwendet verschiedene Parameter, um den Generierungsprozess zu steuern, z. B. die Kreativität, Vielfalt und Flüssigkeit des generierten Texts. Die HTTP Cloud Functions-Funktion akzeptiert ein Anfrageobjekt und gibt die Zusammenfassung des Modells als Antwort zurück.
  2. Die Datei requirements.txt enthält Paketabhängigkeiten:
  • functions-framework==3.: So wird sichergestellt, dass die Funktion die neuesten Funktionen und Fehlerkorrekturen des Functions Framework verwendet.
  • google-cloud-aiplatform: Erforderlich für die Verwendung des Vertex AI-Modells zur Textgenerierung.
  • google-cloud-storage::Erforderlich zum Erstellen von Speicher-Buckets in Google Cloud Storage.
  • google-cloud-logging: Erforderlich zum Generieren von Logs.

5. Funktion implementieren

  1. Erstellen Sie zwei Cloud Storage-Buckets:
  • Erster Bucket: Der Bucket $BUCKET_NAME wird verwendet, um die zusammenzufassenden Dateien hochzuladen. Erstellen Sie die Umgebungsvariable zum Speichern des Bucket-Namens so:
export BUCKET_NAME='Your Bucket Name'
  • Zweiter Bucket: Im Bucket $BUCKET_NAME-summaries wird die zusammengefasste Datei gespeichert.
  • Wir verwenden den gsutil-Befehl, um die Buckets zu erstellen:
  • gsutil ist eine Python-Anwendung, mit der Sie über die Befehlszeile auf Cloud Storage zugreifen können. Sie können gsutil für verschiedenste Bucket- und Objektverwaltungsaufgaben verwenden.
  • „mb“ steht für „Make Bucket“ (Bucket erstellen).
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. Jetzt können wir die Funktion bereitstellen. Prüfen Sie aber zuerst, ob das Dienstkonto des Cloud Storage-Buckets die Rolle „Pub/Sub-Publisher“ hat.
  2. Rufen Sie Google Cloud Storage auf und klicken Sie im linken Bereich auf „Einstellungen“.

8ce34eb05153abf2.png

  1. Kopieren Sie das „Dienstkonto“ aus den Einstellungen und notieren Sie es.
  2. Öffnen Sie „IAM und Verwaltung“ über das Navigationsmenü der Google Cloud Console.

c5a7103e90689684.png

  1. Klicken Sie auf dem Tab „Berechtigungen“ auf „ZUGRIFF GEWÄHREN“, geben Sie die notierte Dienstkonto-ID in den Abschnitt „Neue Hauptkonten“ ein, wählen Sie als Rolle „Pub/Sub-Publisher“ aus und klicken Sie auf „SPEICHERN“.

11c2df774fa740a9.png

  1. Stellen Sie diese Quelle in Cloud Functions bereit. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus:
  2. Achten Sie darauf, dass Sie sich in diesem Projekt im Ordner summarization-gcs-cloudfunction befinden.
  3. Führen Sie folgenden Befehl aus:
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. Wechseln Sie in der Google Cloud Console zu Cloud Functions:

Dadurch wird die gerade erstellte Cloud Functions-Funktion „vertex-ai-function“ mit ihrer öffentlichen URL aufgeführt. Wir verwenden diese Funktion, um einen GCS-Trigger zu erstellen.

6. Funktion aufrufen

Wenn eine Datei in den Bucket $BUCKET_NAME* *hochgeladen wird, ruft der GCS-Trigger die Funktion auf. Der Bucket $BUCKET_NAME"-summaries enthält die zusammengefasste Datei mit demselben Namen.

Bevor Sie beginnen, speichern Sie die Beispieldatei story.md aus dem Ordner summarization-gcs-cloudfunction auf Ihrem lokalen Computer.

  1. Wechseln Sie in der Google Cloud Console zu Cloud Storage.
  2. Öffnen Sie den Bucket $BUCKET_NAME in der Liste der Buckets.
  3. Klicken Sie auf „Dateien hochladen“ und wählen Sie die Datei story.md aus.

Die Funktion summarizeArticles wird ausgelöst und beginnt mit der Zusammenfassung des Inhalts der Datei.

  1. Klicken Sie im linken Navigationsbereich auf „Buckets“.
  2. Öffnen Sie den Bucket $BUCKET_NAME"-summaries.

Die Datei story.md enthält eine Zusammenfassung des Inhalts der Datei.

7. Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag verwendeten Ressourcen in Rechnung gestellt werden:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf „Löschen“.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf „Herunterfahren“, um das Projekt zu löschen.
  4. Wenn Sie das Projekt beibehalten und nur einige Ressourcen löschen möchten, rufen Sie die Cloud Storage-Konsole auf, klicken Sie auf „Buckets“, aktivieren Sie in der Liste die Buckets, die Sie löschen möchten, und klicken Sie auf „LÖSCHEN“.
  5. Sie können die Cloud Functions-Funktion auch löschen, indem Sie zu Cloud Functions gehen, die zu löschende Funktion in der Liste auswählen und auf „LÖSCHEN“ klicken.

8. Glückwunsch

Glückwunsch! Sie haben ein Vertex AI-LLM zur Textgenerierung erfolgreich programmatisch verwendet, um Ihre Daten zusammenzufassen. Weitere Informationen zu den verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.