使用 PaLM Vertex AI API 和 Google Cloud Storage 总结内容所用的 Cloud Functions 函数

1. 简介

在此 Codelab 中,您可以找到使用 Vertex AI 大语言模型 ( text-bison) 作为 Python 中的 Cloud Functions 函数,对上传到 Google Cloud Storage 中的内容执行摘要的步骤。使用的服务如下:

  • Vertex AI PaLM API:一种大语言模型 (LLM) API,可用于访问 Google AI 的 PaLM Text Bison 模型。
  • Cloud Functions:一个无需管理服务器即可运行函数的无服务器平台。
  • Cloud Storage:用于存储非结构化数据的代管式服务。
  • Cloud Logging:一项全代管式服务,可用于存储、搜索、分析和监控日志记录数据,并根据这些数据发出提醒。

构建内容

您将创建一个部署为 Python Cloud Functions 函数的应用,以使用 Palm API 汇总文本。

2. 要求

  • 一个浏览器,例如 ChromeFirefox
  • 启用了结算功能的 Google Cloud 项目

3. 准备工作

  1. Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目
  2. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能
  3. 确保已启用所有必要的 API(Cloud Storage API、Vertex AI API、Cloud Functions API 和 Cloud Logging)
  4. 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境。如需了解 gcloud 命令和用法,请参阅文档
  5. 在 Cloud 控制台中,点击右上角的“激活 Cloud Shell”:

51622c00acec2fa.png

如果项目未设置,请使用以下命令进行设置:

gcloud config set project <YOUR_PROJECT_ID>
  1. 在 Cloud Shell 终端中运行以下命令,确保已启用所有必要的 API:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. 在 Cloud Shell 终端运行以下命令,为 REGION 和 PROJECT_ID 创建环境变量:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. 用于调用 Vertex AI API 的 Cloud Functions 函数

我们将创建一个 Python Cloud Functions 函数,并在此函数中调用 Vertex AI API。

创建新的服务账号

在 Cloud Shell 终端中执行以下命令,以创建新服务账号。

gcloud iam service-accounts create vertex-service-acc

如需提供对项目和资源的访问权限,请向服务账号授予角色。

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

如需向您的 Google 账号授予一个角色,以便您使用服务账号的角色,并将服务账号关联到其他资源,请运行以下命令。将 USER_EMAIL 替换为您的 Google 账号电子邮件 ID。

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 函数

适用于文本的 PaLM API 非常适合只需一个 API 响应就能完成的任务,无需连续对话。现在,我们来为其创建 Cloud Functions 函数。

在 Cloud Shell 中执行以下命令,以克隆代码库并导航到项目(使用在上一部分中打开的同一终端):

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

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

在这个项目中,我们关注的文件夹是:summarization-gcs-cloudfunction。

从终端打开 Cloud Shell Editor,然后检查刚刚从 GitHub 克隆到 Cloud Shell 机器的项目文件夹的内容。

此文件夹包含 2 个文件:

  1. main.py Python 文件定义了一个简单的 HTTP Cloud Functions 函数,该函数使用 Vertex AI 文本生成模型来生成文本输入的简短摘要。该函数将文本输入作为参数,并返回输入的简短摘要。该函数使用各种参数来控制生成过程,例如所生成文本的创意、多样性和流畅度。HTTP Cloud Functions 函数接受请求对象,并返回模型的摘要作为响应。
  2. requirements.txt 文件具有软件包依赖项:
  • functions-framework==3.:确保函数使用 Functions 框架的最新功能和问题修复。
  • google-cloud-aiplatform:必须使用 Vertex AI 文本生成模型。
  • google-cloud-storage::在 Google Cloud Storage 中创建存储分区所需的权限。
  • google-cloud-logging:生成日志时必需。

5. 部署函数

  1. 创建两个 Cloud Storage 存储分区:
  • 第一个存储分区:$BUCKET_NAME 存储分区将用于上传文件以进行汇总。按如下方式创建环境变量以存储您的存储分区名称:
export BUCKET_NAME='Your Bucket Name'
  • 第二个存储分区:$BUCKET_NAME-summaries 存储分区将用于存储汇总文件。
  • 我们将使用 gsutil 命令创建存储分区:
  • gsutil 是一款 Python 应用,可让您通过命令行访问 Cloud Storage。您可以使用 gsutil 执行各种各样的存储分区和对象管理任务。
  • mb 代表“Make Bucket”
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. 现在,我们已准备好部署函数。但在此之前,请确保 Cloud Storage 存储分区的服务账号具有 Pub/Sub Publisher 角色。
  2. 前往 Google Cloud Storage,然后点击左侧窗格中的“设置”。

8ce34eb05153abf2

  1. 复制“服务账号”并记下来
  2. 从 Google Cloud 控制台导航菜单中打开“IAM 和管理”。

c5a7103e90689684.png

  1. 在“权限”标签页上,点击“授予访问权限”并输入您记下的服务账号 ID,在“新的主账号”部分中,选择“角色”作为“Pub/Sub Publisher”然后点击“保存”

11c2df774fa740a9

  1. 将此来源部署到 Cloud Functions。从 Cloud Shell 终端运行以下命令:
  2. 确保您位于此项目的 summarization-gcs-cloudfunction 文件夹中。
  3. 执行以下命令:
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. 在 Google Cloud 控制台中,前往 Cloud Functions

这将列出我们刚刚创建的 vertex-ai-function Cloud Functions 函数及其公开网址。我们将使用此函数创建 GCS 触发器。

6. 调用函数

当文件上传到 $BUCKET_NAME 存储分区*后,* GCS 触发器会调用该函数。$BUCKET_NAME"-summaries 存储分区包含同名的汇总文件。

在开始之前,请将 summarization-gcs-cloudfunction 文件夹中的示例 story.md 文件保存到本地计算机。

  1. 在 Google Cloud 控制台中,前往 Cloud Storage。
  2. 从存储分区列表中打开 $BUCKET_NAME 存储分区。
  3. 点击“上传文件”,然后选择 story.md 文件。

触发了 summarizeArticles 函数,该函数开始汇总文件的内容。

  1. 在左侧导航窗格中,点击“存储分区”。
  2. 打开 $BUCKET_NAME"-summaries 存储分区。

story.md 文件包含该文件内容的摘要。

7. 清理

为避免系统因本博文中使用的资源向您的 Google Cloud 账号收取费用,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往管理资源页面。
  2. 在项目列表中,选择要删除的项目,然后点击“删除”。
  3. 在对话框中输入项目 ID,然后点击“关停”以删除项目。
  4. 如果您想保留项目,而只删除部分资源,请转到 Cloud Storage 控制台,点击“存储分区”,在列表中选中要删除的存储分区,然后点击“删除”。
  5. 您还可以删除 Cloud Functions 函数,方法为导航到 Cloud Functions,在函数列表中选中要删除的函数,然后点击“删除”。

8. 恭喜

恭喜!您已成功以编程方式使用 Vertex AI Text Generation LLM 对数据执行文本摘要。如需详细了解可用的模型,请参阅 Vertex AI LLM 产品文档