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 erfahren Sie, wie Sie mit dem Vertex AI Large Language Model zur Textgenerierung ( text-bison) als Cloud Functions-Funktion in Python eine Zusammenfassung von Inhalten erstellen, die in Google Cloud Storage hochgeladen wurden. Folgende Dienste werden verwendet:

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

Aufgaben

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

2. Voraussetzungen

  • Ein Browser wie Chrome oder Firefox
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung

3. Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist.
  3. Achten Sie darauf, dass 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 oben rechts auf „Cloud Shell aktivieren“:

51622c00acec2fa.png

Wenn Ihr Projekt noch nicht eingerichtet 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. Führen Sie dazu den folgenden Befehl im Cloud Shell-Terminal aus:
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. Führen Sie dazu den folgenden Befehl im Cloud Shell-Terminal aus:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Cloud Functions-Funktion zum Aufrufen der Vertex AI API

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

Neues Dienstkonto erstellen

Erstellen Sie ein neues Dienstkonto. Führen Sie dazu den folgenden Befehl im Cloud Shell-Terminal aus.

gcloud iam service-accounts create vertex-service-acc

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

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-ID 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 abgeschlossen werden können, ohne dass eine kontinuierliche Unterhaltung erforderlich ist. Erstellen wir jetzt die Cloud Functions-Funktion dafür.

Führen Sie in Cloud Shell die folgenden Befehle aus, um das Repository zu klonen und zum Projekt zu wechseln. Verwenden Sie dabei 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 für uns wichtige Ordner in diesem Projekt 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 2 Dateien:

  1. In der Python-Datei main.py wird eine einfache HTTP-Funktion von Cloud Functions definiert, die ein Textgenerierungsmodell von Vertex AI 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 eine Vielzahl von Parametern, um den Erstellungsprozess zu steuern, z. B. die Kreativität, Vielfalt und Sprachkompetenz des generierten Textes. Die Cloud Functions-HTTP-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.: Stellt sicher, dass die Funktion die neuesten Funktionen und Fehlerkorrekturen des Functions Framework verwendet.
  • google-cloud-aiplatform: Erforderlich, um das Vertex AI Text Generation Model zu verwenden.
  • google-cloud-storage: Erforderlich, um Storage-Buckets in Google Cloud Storage zu erstellen.
  • google-cloud-logging: zum Generieren von Logs erforderlich.

5. Funktion implementieren

  1. Erstellen Sie zwei Cloud Storage-Buckets:
  • Erster Bucket: Der $BUCKET_NAME-Bucket wird verwendet, um die Dateien hochzuladen, die zusammengefasst werden sollen. Erstellen Sie die Umgebungsvariable zum Speichern Ihres Bucket-Namens wie folgt:
export BUCKET_NAME='Your Bucket Name'
  • Zweiter Bucket: Der Bucket $BUCKET_NAME-summaries wird zum Speichern der zusammengefassten Datei verwendet.
  • 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. Mit gsutil können Sie eine Vielzahl von Aufgaben zur Bucket- und Objektverwaltung ausführen.
  • mb steht für „Make Bucket“.
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 jedoch vorher, 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. und notieren Sie es sich.
  2. Öffnen Sie im Navigationsmenü der Google Cloud Console „IAM und Verwaltung“.

c5a7103e90689684.png

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

11c2df774fa740a9.png

  1. Stellen Sie diese Quelle für Cloud Functions bereit. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus:
  2. Achten Sie darauf, dass Sie sich im Ordner summarization-gcs-cloudfunction dieses Projekts 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. Rufen Sie in der Google Cloud Console Cloud Functions auf:

Daraufhin wird die soeben erstellte Cloud Functions-Funktion „vertex-ai-function“ mit ihrer öffentlichen URL angezeigt. Mit dieser Funktion erstellen wir einen GCS-Trigger.

6. Funktion aufrufen

Wenn eine Datei in den $BUCKET_NAME-Bucket** 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. Rufen Sie in der Google Cloud Console Cloud Storage auf.
  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 Dateiinhalts.

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

Die Datei story.md enthält eine Zusammenfassung der Dateiinhalte.

7. Bereinigen

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

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

8. Glückwunsch

Glückwunsch! Sie haben erfolgreich ein Vertex AI Text Generation LLM programmatisch verwendet, um eine Textzusammenfassung für Ihre Daten durchzuführen. Weitere Informationen zu verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.