1. 简介
在此 Codelab 中,我列出了构建一个 Web 应用的步骤,该应用可让您在 Svelte Kit 框架中使用 Vertex AI 大语言模型 ( text-bison) API 执行文本摘要。所使用的服务和技术栈如下:
- Svelte Kit:基于 Svelte 构建的 Web 应用框架。
- Vertex AI PaLM 2 API:一种大语言模型 (LLM) API,可用于访问 Google AI 的 PaLM 2 模型。
- Cloud Functions:一个无需管理服务器即可运行函数的无服务器平台。
- Cloud Run:用于运行容器化应用的无服务器平台。
构建内容
您将创建
- 使用 Python Cloud Functions 函数进行 makePalm API 调用
- 一个 Svelte Web 应用,用于通过 Cloud Functions 函数与 Vertex AI API 进行交互的界面
- 一项 Cloud Run 服务,用于以无服务器方式部署上面创建的应用
2. 要求
3. 准备工作
- 在 Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目
- 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能
- 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境,用来与 Google Cloud 服务进行交互。如需了解 gcloud 命令和用法,请参阅文档。在 Cloud 控制台中,点击右上角的“激活 Cloud Shell”:
如果项目未设置,请使用以下命令进行设置:
gcloud config set project <YOUR_PROJECT_ID>
- 在 Cloud Shell 终端中运行以下命令,确保已启用所有必要的 API:
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
- 在 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”按钮,然后在终端加载后快速点击“打开编辑器”按钮,如下图所示:
编辑器打开后,您应该就能看到 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 控制台:
其中会列出我们刚刚创建的 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 函数网址。
将前端部署到 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🤖?。
6. 清理
为避免系统因本博文中使用的资源向您的 Google Cloud 账号收取费用,请按以下步骤操作:
7. 恭喜
恭喜!您已成功使用 Vertex AI PaLM2 API 以编程方式执行文本摘要、构建 Svelte Web 应用以及在 Cloud Functions 中进行部署。如需详细了解可用的模型,请参阅 Vertex AI LLM 产品文档。