用于 ADK 的 Restate 插件¶
Restate 是一种持久执行引擎,可将 ADK 智能体变成生来就具有弹性、鲁棒性的系统。它提供持久会话、用于人工审批的暂停/恢复、弹性多智能体编排、安全版本控制以及对每次执行的完全可观测性和控制。所有 LLM 调用和工具执行都会记录到日志中,因此如果发生任何故障,你的智能体可以从上次中断的地方准确恢复。
使用场景¶
Restate 插件为你的智能体提供:
- 持久执行:永不丢失进度。如果你的智能体崩溃,它会从上次中断的地方准确继续,并支持自动重试 and 恢复。
- 人工干预的暂停/恢复:将执行暂停几天或几周,直到人工审批,然后从上次中断的地方恢复。
- 持久状态:通过内置的会话管理,智能体记忆和会话历史在重启后依然存在。
- 可观测性和任务控制:准确查看智能体做了什么,并随时终止、暂停和恢复智能体执行。
- 弹性的多智能体编排:通过并行执行在多个智能体之间运行弹性的工作流。
- 安全版本控制:通过不可变部署分发新版本,而不会破坏正在进行的执行。
先决条件¶
- Python 3.12+
- 一个 Gemini API 密钥
要运行下面的示例,你还需要:
- uv(Python 包管理器)
- Docker(或用于 Restate 服务器的 Brew/npm/二进制文件)
安装¶
安装 Python 版 Restate SDK:
在智能体中使用¶
按照以下步骤运行持久智能体,并在 Restate UI 中查看其执行日志:
-
克隆 restate-google-adk-example 仓库 并进入示例目录
-
导出你的 Gemini API 密钥
-
启动天气智能体
-
在另一个终端启动 Restate
docker run --name restate --rm -p 8080:8080 -p 9070:9070 -d \ --add-host host.docker.internal:host-gateway \ docker.restate.dev/restatedev/restate:latest其他安装方式:Brew、npm、二进制下载
-
注册智能体
在
localhost:9070打开 Restate UI 并注册你的智能体部署(例如http://host.docker.internal:9080):
安全版本控制
Restate 将每次部署注册为不可变快照。当你部署新版本时,正在进行的执行会在原始部署上完成,而新请求则路由到最新版本。了解有关版本感知路由的更多信息。
-
向智能体发送请求
在 Restate UI 中,选择 WeatherAgent,打开 演练场 (Playground),然后发送请求:

持久会话和重试
此请求通过 Restate 进行,Restate 在将其转发到你的智能体之前会先持久化请求。每个会话(此处为
session-1)都是隔离的、有状态的且持久的。如果智能体在执行中途崩溃,Restate 会自动重试并从最后一个记录到日志中的步骤恢复,而不会丢失进度。 -
检查执行日志
点击 调用 (Invocations) 选项卡,然后点击你的调用以查看执行日志:

完全控制智能体执行
每一次 LLM 调用和工具执行都会记录在日志中。在 UI 中,你可以暂停、恢复、从任何中间步骤重启或终止执行。点击 状态 (State) 选项卡以检查智能体当前的会话数据。
功能¶
Restate 插件为你的 ADK 智能体提供以下功能:
| 功能 | 描述 |
|---|---|
| 持久工具执行 | 使用 restate_object_context().run_typed() 包装工具逻辑,使其自动重试并恢复 |
| 人工干预 | 使用 restate_object_context().awakeable() 暂停执行,直至接收到外部信号(例如人工审批) |
| 持久会话 | RestateSessionService() 持久存储智能体记忆和对话状态 |
| 持久 LLM 调用 | RestatePlugin() 记录 LLM 调用日志并支持自动重试 |
| 多智能体交互 | 使用 restate_object_context().service_call() 进行持久的跨智能体 HTTP 调用 |
| 并行执行 | 使用 restate.gather() 并行运行工具和智能体,以实现确定性恢复 |
其他资源¶
- Restate ADK 示例仓库 - 可运行的示例,包括带有回复人工审批的理赔处理。
- Restate ADK 教程 - 使用 Restate 和 ADK 进行智能体开发的演练。
- Restate AI 文档 - 持久性 AI 智能体模式的完整参考。
- PyPI 上的 Restate SDK - Python 包。