使用 Antigravity 构建和部署到 Google Cloud

1. 简介

fca14bb9f4bb74f4.png

在此 Codelab 中,您将学习如何使用 Google Antigravity(在本文档的其余部分中简称为 Antigravity)来设计、构建和部署无服务器应用到 Google Cloud。我们将构建一个无服务器且由事件驱动的文档流水线,该流水线可从 Google Cloud Storage (GCS) 注入文件,使用 Cloud Run 和 Gemini 处理这些文件,并将它们的元数据流式传输到 BigQuery。

学习内容

  • 如何使用 Antigravity 进行建筑规划和设计。
  • 使用 AI 智能体生成基础架构即代码(Shell 脚本)。
  • 构建并部署基于 Python 的 Cloud Run 服务。
  • 集成 Vertex AI 上的 Gemini,以进行多模态文档分析。
  • 使用 Antigravity 的 Walkthrough 制品验证端到端流水线。

所需条件

2. 应用概览

在开始使用 Antigravity 设计和实现应用之前,我们先来概述一下要构建的应用。

我们希望构建一个无服务器且由事件驱动的文档流水线,该流水线可从 Google Cloud Storage (GCS) 注入文件,使用 Cloud Run 和 Gemini 处理这些文件,并将它们的元数据流式传输到 BigQuery。

此应用的高级架构图可能如下所示:

3bd519cfab38258d.png

不必精确。Antigravity 可以帮助我们逐步了解架构细节。不过,最好先确定要构建什么内容。您提供的信息越详细,Antigravity 在架构和代码方面给出的结果就越好。

3. 规划架构

我们已准备好开始使用 Antigravity 规划架构细节!

Antigravity 擅长规划复杂系统。我们可以先定义高级别架构,而不是立即编写代码。

首先,确保您位于代理管理器中。如果您刚刚打开 Antigravity,可以点击中间的 Open Agent Manager 按钮,也可以在右上角看到相同的 Open Agent Manager

在代理管理器中,您可以选择打开工作区,也可以直接使用 Playground,这是一个独立的用于快速原型设计和实验的工作区。我们先从 Playground 开始。

点击 + 按钮,在 Playground 中开始新的对话:

4e33c028a604a375.png

系统会显示一个界面,您可以在其中提供提示,如下所示:

fbf023e84f0eb3b2.png

点击右上角的“设置”图标 ⚙️,然后将 Artifact 下的 Review Policy 设置为 Asks for Review,并将 Terminal 下的 Terminal Command Auto Execution 设置为 Request Review。这样可确保在每个步骤中,您都能在智能体执行计划之前查看并批准该计划。

提示

现在,我们准备好向 Antigravity 提供第一个提示了。

首先,请确保 Antigravity 处于 Planning 模式,对于模型,我们选择 Gemini Pro (High) 模型(但您可以随意尝试其他模型)。

输入以下提示,然后点击提交按钮:

I want to build a serverless event-driven document processing pipeline on Google Cloud.
Architecture:
- Ingestion: Users upload files to a Cloud Storage bucket.
- Trigger: File uploads trigger a Pub/Sub message.
- Processor: A Python-based Cloud Run service receives the message, processes the file (simulated OCR), and extracts metadata.
- Storage: Stream the metadata (filename, date, tags, word_count) into a BigQuery dataset. 

任务列表和实施计划

Antigravity 会分析您的请求,并生成任务列表和实施方案

本计划概述了以下内容:

  • 基础设施:GCS 存储分区、Pub/Sub 主题、BigQuery 数据集。
  • 处理器:Python/Flask 应用、Dockerfile、要求。
  • 集成:GCS 通知 → Pub/Sub → Cloud Run。

您应该会看到类似以下内容:

ada19341c490a570.png

点击 Task 行旁边的 Open 按钮。这应该会显示 Antigravity 创建的一组任务。代理会逐一检查这些问题:

19675c55a71b373.png

下一步是查看实施计划,并向客服人员授予继续操作的权限。

点击相应实施计划以查看其详细信息。请仔细阅读。您可以借此机会针对实施情况提供反馈。您可以点击实施计划的任何部分并添加注释。添加一些注释后,请务必提交您希望看到的任何更改以供审核,尤其是在命名、Google Cloud 项目 ID、区域等方面。

一切就绪后,点击 Proceed 按钮,向智能体授予继续执行实施计划的权限。

4. 生成应用

方案获得批准后,Antigravity 会开始生成应用所需的文件,从配置脚本到应用代码。

Antigravity 将创建一个文件夹,并开始创建项目所需的文件。在我们的示例运行中,我们看到了以下内容:

4d98413e3bd17148.png

系统会生成一个 setup.sh 或类似名称的 shell 脚本文件,用于自动创建资源。它处理:

  1. 启用 API(runpubsubbigquerystorage)。
  2. 创建 Google Cloud Storage 存储分区 (doc-ingestion-{project-id})。
  3. 创建 BigQuery 数据集和表 (pipeline_data.processed_docs)。
  4. 配置 Pub/Sub 主题和通知。

代理应生成一个 Python 应用 (main.py),用于监听 Pub/Sub 推送消息。它使用模拟的 OCR 逻辑,生成随机字数和标记,并将其持久化到 BigQuery。

生成此设置脚本后,Antigravity 应该会提示您代表您执行该脚本。示例界面如下所示:

44395ab66413a64f.png

您可以根据需要点击 Accept

配置脚本将创建资源并验证这些资源是否已创建。如果检查成功,系统将继续构建容器,并将其作为服务(在 main.py 中)部署到 Cloud Run。输出示例如下所示:

e0e625e218e7fe46.png

在部署服务时,它还会设置 Pub/Sub 订阅和使此流水线正常运行所需的其他粘合代码。整个过程应该只需要几分钟的时间。

在此期间,您可以切换到 Inbox(从左上角),查看等待您输入的 Pending 任务:

ddd2f49d02fad987.png

这样可以确保您在代理寻求反馈时批准任务。

5. 验证应用

流水线部署完毕后,Antigravity 会继续验证应用是否正常运行。Antigravity 通过任务列表中的验证步骤自动执行此操作。示例界面如下所示:

b8758b77880cc4d9.png

它会创建一个测试制品 (test.txt),并希望将其上传到 Google Cloud Storage 存储分区。点击 Accept 继续。

如果您想自行运行更多测试,可以尝试将示例文件上传到 Cloud Storage 存储分区:

gcloud storage cp <some-test-doc>.txt gs://doc-ingestion-{project-id}/

在 BigQuery 中查看结果

在验证过程中,系统还会检查数据是否已持久保留在 BigQuery 中。

c0f08fedf671e9bd.png

请注意它用于检查文档的 SQL 查询。

验证完成后,您应该会看到任务列表显示为已完成:

b55ad48a87f95eca.png

可选:手动验证

即使 Antigravity 已经验证了应用,您也可以按照以下步骤在 Google Cloud 控制台中手动检查是否已创建所有资源(如果您愿意)。

Cloud Storage

目标:验证存储分区是否存在并检查上传的文件。

  1. 前往 Cloud Storage > 存储分区
  2. 找到名为 [PROJECT_ID]-doc-uploads 的存储分区。
  3. 点击相应存储分区名称即可浏览文件。
  4. 验证:您应该会看到已上传的文件(例如 test.txt)。

Pub/Sub

目标:确认主题存在且具有推送订阅。

  1. 前往 Pub/Sub > 主题
  2. 找到 doc-processing-topic
  3. 点击主题 ID
  4. 向下滚动到订阅标签页。
  5. 验证:确保 doc-processing-sub 列出的传送类型为“推送”。

Cloud Run

目标:检查服务状态和日志。

  1. 前往 Cloud Run
  2. 点击服务 doc-processor
  3. 验证:
  4. 健康状况:绿色对勾标记,表示服务处于活跃状态。
  5. 日志:点击“日志”标签页。查找“正在处理文件:gs://...”和“已成功处理...”之类的条目。

BigQuery

目标:验证数据是否已实际存储。

  1. 前往 BigQuery > SQL 工作区
  2. 在“探索器”窗格中,展开您的项目 > pipeline_data 数据集
  3. 点击 processed_docs 表。
  4. 点击预览标签页。
  5. 验证:您应该会看到包含 filenameupload_datetagsword_count 的行。

演示

最后一步,Antigravity 会生成一个演练制品。此制品总结了以下内容:

  • 已进行更改。
  • 运行验证命令。
  • 实际结果(显示 Gemini 提取的元数据的查询输出)。

您可以点击 Open 查看。输出示例如下所示:

47ecf561d0252924.png

6. 探索应用

至此,您已完成基本应用的配置并使其正常运行。在进一步扩展此应用之前,请花点时间探索一下代码。您可以使用右上角的 Open Editor 按钮切换到编辑器。

下面简要介绍了您可能会看到的文件:

  1. setup.sh:用于预配所有 Google Cloud 资源并启用所需 API 的主脚本。
  2. main.py:流水线的主要入口点。此 Python 应用会创建一个 Web 服务器,该服务器接收 Pub/Sub 推送消息,从 GCS 下载文件,对文件进行“处理”(模拟 OCR),并将元数据流式传输到 BigQuery。
  3. Dockerfile:定义如何将应用打包到容器映像中。
  4. requirements.txt:列出 Python 依赖项。

您可能还会看到测试和验证所需的其他脚本和文本文件。

此时,您可能还需要从 Playground 迁移到专用工作区/文件夹。为此,您可以点击右上角的相关按钮:

278de21c89e5c726.png

选择文件夹后,所有代码都将移至该文件夹,并创建一个包含该文件夹和对话历史记录的新工作区。

7. 扩展应用

现在,您已经有了一个正常运行的基本应用,可以继续迭代和扩展该应用。以下是一些建议。

添加前端

构建一个简单的 Web 界面来查看处理后的文档。

不妨试试以下提示:Create a simple Streamlit or Flask web application that connects to BigQuery. It should display a table of the processed documents (filename, upload_date, tags, word_count) and allow me to filter the results by tag

与真正的 AI/ML 集成

使用 Gemini 模型进行提取、分类和翻译,而不是使用模拟 OCR 处理。

  1. 替换了虚拟 OCR 逻辑。将图片/PDF 发送给 Gemini,以提取实际文本和数据。分析提取的文本,以对文档类型(账单、合同、简历)进行分类或提取实体(日期、名称、地点)。
  2. 自动检测文档的语言并将其翻译为英语,然后再存储。您也可以使用任何其他语言。

增强存储和分析功能

您可以在存储分区中配置生命周期规则,将旧文件移至“Coldline”或“Archive”存储空间,以节省费用。

稳健性和安全性

您可以提高应用的稳健性和安全性,例如:

  1. 死信队列 (DLQ):更新 Pub/Sub 订阅以处理失败情况。如果 Cloud Run 服务处理文件失败 5 次,则将消息发送到单独的“死信”主题/存储分区以供人工检查。
  2. Secret Manager:如果您的应用需要 API 密钥或敏感配置,请将其存储在 Secret Manager 中,并从 Cloud Run 安全地访问它们,而不是对字符串进行硬编码。
  3. Eventarc:从直接 Pub/Sub 升级到 Eventarc,以实现更灵活的事件路由,从而根据复杂的审核日志或其他 GCP 服务事件触发函数。

当然,您也可以提出自己的想法,并使用 Antigravity 来帮助您实现这些想法!

8. 总结

您已成功使用 Google Antigravity 在几分钟内构建了一个可扩缩的无服务器 AI 赋能型文档流水线。您已学习了:

  • 利用 AI 规划架构。
  • 在 Antigravity 从代码生成到部署和验证的过程中,对其进行指导和管理。
  • 通过演练验证部署和验证。

参考文档