管理快照

借助 Gemini Enterprise Agent Platform 中的沙盒快照,您可以保存沙盒的当前状态,并在日后恢复该状态。这对于生命周期管理任务(例如恢复已知良好状态或探索变体分支)非常有用。

快照在管理智能体工作流方面具有以下优势:

  • 状态持久性:保存沙盒的确切状态,包括 已安装的库、文件系统更改和内存状态。
  • 效率:您可以从快照中恢复复杂环境,而无需从头开始重新创建, 只需几秒钟即可完成。
  • 检查点:在长时间运行的智能体任务期间创建检查点,以便在出现问题时 进行恢复。
  • 分支:从同一快照创建多个沙盒,以探索 不同的路径或测试变体。

限制

如果满足以下任一条件,您将无法将沙盒快照恢复到新的沙盒环境:

  • 新沙盒使用不同的服务器架构(例如 amd64arm64)。
  • 新沙盒使用不同的沙盒运行时版本(例如,在 GKE 集群升级后)。
  • 新沙盒使用不同的容器映像 URI。

创建快照

如需创建沙盒的快照,请使用 Python SDK:

import vertexai

client = vertexai.Client(project='PROJECT_ID', location='LOCATION')
sandbox_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID/sandboxEnvironments/SANDBOX_ID'

snapshot_operation = client.agent_engines.sandboxes.snapshots.create(
    source_sandbox_environment_name=sandbox_name,
    config={
        "display_name": "DISPLAY_NAME",
        "ttl": "3600s",
    }
)
print(f"Snapshot creation initiated: {snapshot_operation.name}")

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:您的资源的区域。 Google Cloud 请参阅支持的区域
  • INSTANCE_ID:Agent Platform 实例 ID。
  • SANDBOX_ID:要为其创建快照的现有沙盒 ID。
  • DISPLAY_NAME:快照的描述性显示名称。

使用快照进行恢复

您可以在创建新的沙盒环境时引用已保存的快照,以恢复沙盒状态:

agent_instance_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID
snapshot_name = 'projects/PROJECT_ID/locations/LOCATION/reasoningEngines/INSTANCE_ID/sandboxEnvironments/SANDBOX_ID'

# Restore from a snapshot
new_sandbox_operation = client.agent_engines.sandboxes.create(
    name=agent_instance_name,
    config={
        "display_name": "restored-sandbox",
        "sandbox_environment_snapshot": snapshot_name,
    }
)

列出快照

如需列出与 Agent Platform 实例关联的所有沙盒快照,请执行以下操作:

snapshots_response = client.agent_engines.sandboxes.snapshots.list(name=agent_instance_name)

for snapshot in snapshots_response.sandbox_environment_snapshots:
    print(snapshot.name)

查看快照详细信息

如需查看特定沙盒快照的配置,请执行以下操作:

snapshot = client.agent_engines.sandboxes.snapshots.get(name=snapshot_name)
print(snapshot)

删除快照

如需在不再需要沙盒快照时显式删除它们,请执行以下操作:

client.agent_engines.sandboxes.snapshots.delete(name=snapshot_name)
print("Snapshot deleted.")