包含 Vertex AI 和 Svelte Kit 的文本摘要器应用

1. 简介

在此 Codelab 中,我列出了在 Svelte Kit 框架中构建 Web 应用的步骤,该应用可让您使用 Vertex AI 大语言模型进行文本生成 ( text-bison) API 来执行文本摘要。所用服务和技术堆栈的列表如下:

  1. SvelteKit:基于 Svelte 构建的 Web 应用框架。
  2. Vertex AI PaLM 2 API:一种大语言模型 (LLM) API,可用于访问 Google AI 的 PaLM 2 模型。
  3. Cloud Functions:一个无服务器平台,可用于运行函数,而无需管理服务器。
  4. Cloud Run:一个用于运行容器化应用的无服务器平台。

构建内容

您将创建

  • 使用 Python Cloud Functions 函数进行 Palm API 调用
  • 一个 Svelte Web 应用,用于通过 Cloud Functions 函数与 Vertex AI API 进行交互
  • 用于以无服务器方式部署上述应用的 Cloud Run 服务

2. 要求

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

3. 准备工作

  1. Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目
  2. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能
  3. 您将使用 Cloud Shell(在 Google Cloud 中运行的命令行环境)与 Google Cloud 服务进行交互。如需了解 gcloud 命令和用法,请参阅文档。在 Cloud 控制台中,点击右上角的“激活 Cloud Shell”:

51622c00acec2fa.png

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

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

export REGION=asia-south1

4. 用于调用 Vertex AI API 的 Cloud Function

我们将创建一个 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 2 for Text 非常适合可通过一个 API 响应(无需连续对话)完成的任务。现在,我们来为其创建 Cloud Functions 函数。

使用 Cloud Shell 创建一个新目录,并导航到此目录。(使用上一部分中打开的同一终端):

mkdir vertex-ai-functions

cd vertex-ai-functions

创建一个用于编写 Python Cloud Functions 函数的 main.py 文件和一个用于存储依赖项的 requirements.txt 文件。

touch main.py requirements.txt

此 Python 文件定义了一个简单的 HTTP Cloud Functions 函数,该函数使用 Vertex AI 文本生成模型来生成文本输入的简短摘要。该函数将文本输入作为参数,并返回输入的简短摘要。该函数使用各种参数来控制生成过程,例如所生成文本的创造力、多样性和流畅度。HTTP Cloud Functions 函数接受请求对象,并返回模型的摘要作为响应。

打开 Google Cloud 编辑器。您可以打开一个新的 Google Cloud 控制台标签页,然后点击“激活 Cloud Shell”按钮,当终端加载完毕后,快速点击“打开编辑器”按钮,如下图所示:

8e501bd2c41d11b8.png

编辑器打开后,您应该能够看到 main.py 文件。将其内容替换为此代码库中的代码(请参阅此链接)。代码说明以代码注释的形式提供。总而言之,此代码提供了一种简洁的方式,可使用 Vertex AI 生成文本输入的简短摘要。

requirements.txt 文件具有软件包依赖项:functions-framework==3.*:确保函数使用 Functions Framework 的最新功能和 bug 修复。google-cloud-aiplatform:使用 Vertex AI 文本生成模型时需要此依赖项。

将此内容添加到 requirements.txt 文件中:

functions-framework==3.*
google-cloud-aiplatform

部署到 Cloud Functions

现在,我们将此源代码部署到 Cloud Functions。在 Cloud Shell 终端中运行以下命令:

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

使用搜索栏前往 Cloud Functions 控制台:

43a6b247098a9edb.png

这会列出我们刚刚创建的 vertex-ai-function Cloud Functions 函数,其公开网址将显示在函数页面中。我们使用此变量来连接前端和 Vertex AI API。存储此网址。您可能还需要允许未经身份验证的访问底层 Cloud Run 服务。出于安全考虑,建议使用经过身份验证的服务。

5. 构建并部署前端

此应用附带一个前端界面,可通过 Google Cloud Functions 与 Vertex AI API 进行交互。现在就来创建吧。

克隆代码库并设置 Dockerfile

前往根目录并克隆 Git 代码库。

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

如需运行此应用,您需要在 Dockerfile 中添加 PUBLIC_FUNCTION_网址 环境变量。此网址是上一部分中创建并存储的 Cloud Functions 网址。

打开 Cloud Editor 并修改 Dockerfile 文件的内容。将 PUBLIC_FUNCTION_网址 变量替换为您的 Cloud Functions 函数网址。

2958bb12343368a9.png

将前端部署到 Cloud Run

我们将使用 Google Artifact Registry 构建和存储 Docker 映像。Cloud Run 用于在无服务器架构中部署容器。

在 Cloud Shell 终端中运行以下命令,以创建 Artifact Registry 代码库:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

为 Artifact Registry 仓库网址创建环境变量。

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

构建 Docker 容器并使用 Artifact Registry 代码库位置对其进行标记。使用代码库名称标记 Docker 映像后,docker push 命令即被配置为将该映像推送到某个特定位置。

docker build . -t ${DOCKER_URL}

将映像推送到 Artifact Registry。

docker push ${DOCKER_URL}

将 Docker 容器部署到 Cloud Run。

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

太棒了!Vertex Summarizer 已启动并正在运行。网址将显示在 Cloud Shell 中,快来探索和体验 Vertex AI 🤖 吧。

cd94442961bb5308.gif

6. 清理

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

  1. 在 Google Cloud 控制台中,进入管理资源页面
  2. 在项目列表中,选择要删除的项目,然后点击“删除”
  3. 在对话框中输入项目 ID,然后点击“关停”以删除项目
  4. 如果您想保留项目,但只想删除 Cloud Run 服务,请按照此处的步骤操作
  5. 如果您只想删除 Cloud Functions 函数或撤消访问权限,可以点击此处进行操作

7. 恭喜

恭喜!您已成功使用 Vertex AI PaLM2 API 以程序化方式执行文本摘要,构建 Svelte Web 应用并在 Cloud Functions 中进行部署。如需详细了解可用模型,请参阅 Vertex AI LLM 产品文档