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

1. 简介

在本 Codelab 中,您可以找到使用 Vertex AI 大语言模型生成文本 ( text-bison) 作为 Python 中的云函数,对上传到 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 for Text 非常适合可通过一个 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 框架的最新功能和 bug 修复。
  • 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 发布商角色。
  2. 前往 Google Cloud Storage,然后在左侧窗格中点击“设置”。

8ce34eb05153abf2.png

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

c5a7103e90689684.png

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

11c2df774fa740a9.png

  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 文本生成 LLM 以编程方式对数据执行文本摘要。如需详细了解可用模型,请参阅 Vertex AI LLM 产品文档