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

1. 简介

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

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

构建内容

您将创建

  • 使用 Python Cloud Functions 函数进行 makePalm 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 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 2 非常适合只需一个 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 Editor。您可以打开一个新的 Google Cloud 控制台标签页,然后点击“激活 Cloud Shell”按钮,然后在终端加载后快速点击“打开编辑器”按钮,如下图所示:

8e501bd2c41d11b8.png

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

requirements.txt 文件包含软件包依赖项:functions-framework==3.*:确保函数使用 Functions 框架的最新功能和问题修复。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

其中会列出我们刚刚创建的 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

将前端部署到 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 产品文档