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 Inhalte, die in Google Cloud Storage hochgeladen wurden, mit dem Vertex AI Large Language Model für die Textgenerierung ( text-bison) als Cloud-Funktion in Python zusammenfassen. Die Liste der verwendeten Dienste:

  • Vertex AI PaLM API: Eine LLM-API (Large Language Model), 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, 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
  • Google Cloud-Projekt mit aktivierter Abrechnung

3. Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite der 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 Function API und Cloud Logging) aktiviert sind.
  4. Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird. Weitere 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 im Cloud Shell-Terminal den folgenden Befehl 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-Funktion und rufen in dieser Funktion die Vertex AI API auf.

Neues Dienstkonto erstellen

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

gcloud iam service-accounts create vertex-service-acc

Weisen Sie dem Dienstkonto eine Rolle zu, um ihm 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 ausgeführt werden können, ohne dass eine kontinuierliche Unterhaltung erforderlich ist. Erstellen wir jetzt 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 dazu dasselbe Terminal, das Sie im vorherigen Abschnitt geöffnet haben:

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

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

Der für dieses Projekt relevante Ordner 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 mit einem Vertex AI-Modell zur Textgenerierung kurze Zusammenfassungen von Textinputs generiert. Die Funktion nimmt eine Textzeile 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-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.: Damit wird sichergestellt, dass die Funktion die neuesten Funktionen und Fehlerkorrekturen des Functions Framework verwendet.
  • google-cloud-aiplatform: Erforderlich, um das Vertex AI-Modell zur Textgenerierung zu verwenden.
  • google-cloud-storage::Erforderlich zum Erstellen von Storage Buckets in Google Cloud Storage.
  • google-cloud-logging: Erforderlich zum Generieren von Protokollen.

5. Funktion implementieren

  1. Erstellen Sie zwei Cloud Storage-Buckets:
  • Erster Bucket: Über den Bucket $BUCKET_NAME werden die Dateien hochgeladen, die zusammengefasst werden sollen. 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 Befehl „gsutil“, 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“
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 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“ aus den Einstellungen und notieren Sie sich den Namen.
  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 die von Ihnen notierte Dienstkonto-ID im Bereich „Neue Hauptkonten“ ein. Wählen Sie als Rolle „Pub/Sub-Publisher“ aus und klicken Sie auf „SPEICHERN“.

11c2df774fa740a9.png

  1. Diese Quelle in Cloud Functions bereitstellen 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. Rufen Sie in der Google Cloud Console Cloud Functions auf:

Daraufhin wird die gerade 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 $BUCKET_NAME hochgeladen wird, ruft der GCS-Trigger die Funktion auf. Der Bucket $BUCKET_NAME"-summaries enthält die zusammengefasste Datei mit demselben Namen.

Speichern Sie zuerst 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 Bucket.
  3. Klicke auf „Dateien hochladen“ und wähle die Datei story.md aus.

Die Funktion summarizeArticles wird ausgelöst und beginnt, den Inhalt der Datei zusammenzufassen.

  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

Mit den folgenden Schritten 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, rufen Sie die Cloud Storage Console auf, klicken Sie auf „Buckets“, setzen Sie in der Liste ein Häkchen bei den Buckets, die Sie löschen möchten, und klicken Sie auf „LÖSCHEN“.
  5. Sie können die Cloud-Funktion auch löschen, indem Sie zu „Cloud Functions“ gehen, in der Liste der Funktionen die gewünschte Funktion markieren und auf „LÖSCHEN“ klicken.

8. Glückwunsch

Glückwunsch! Sie haben mit einem Vertex AI-LLM für die Textgenerierung erfolgreich Ihre Daten programmatisch zusammengefasst. Weitere Informationen zu verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.