ADK 向け Restate プラグイン¶
Restate は ADK エージェントを本質的に高耐障害で堅牢な システムへ変える durable execution エンジンです。 永続セッション、人間承認のための pause/resume、 高耐障害マルチエージェントオーケストレーション、安全なバージョニング、 すべての実行に対する可観測性と制御を提供します。 すべての LLM 呼び出しとツール実行はジャーナル化されるため、 障害時でも中断地点から正確に復旧できます。
ユースケース¶
Restate プラグインはエージェントに次を提供します:
- Durable execution: 進捗を失いません。エージェントがクラッシュしても 自動リトライと復旧で中断地点から再開します。
- Human-in-the-loop pause/resume: 人間承認まで 数日〜数週間実行を停止し、同じ地点から再開できます。
- Durable state: 内蔵セッション管理により、エージェントメモリと会話履歴が 再起動をまたいで保持されます。
- 可観測性とタスク制御: エージェントの実行内容を正確に把握し、 任意のタイミングで停止/一時停止/再開できます。
- 高耐障害マルチエージェントオーケストレーション: 複数エージェント間ワークフローを 並列実行で堅牢に運用できます。
- 安全なバージョニング: immutable deployment により、 進行中実行を壊さず新バージョンをデプロイできます。
前提条件¶
- Python 3.12+
- Gemini API key
下記例を動かすには追加で次が必要です:
- uv (Python パッケージマネージャ)
- Docker (または Restate サーバー用 Brew/npm/binary)
インストール¶
Restate SDK for Python をインストール:
エージェントで使う¶
次の手順で durable agent を実行し、Restate UI で実行ジャーナルを確認します:
-
restate-google-adk-example repository を clone し、サンプルへ移動
-
Gemini API キーを export
-
weather agent を起動
-
別ターミナルで 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, binary downloads
-
エージェントを登録
localhost:9070の Restate UI を開き、エージェント deployment を登録します (例:http://host.docker.internal:9080):
安全なバージョニング
Restate は各 deployment を immutable snapshot として登録します。 新バージョンデプロイ時、進行中実行は元 deployment で完了し、 新規リクエストは最新へルーティングされます。 詳細は version-aware routing を参照してください。
-
エージェントへリクエスト送信
Restate UI で WeatherAgent を選び、Playground で リクエストを送信します:

Durable セッションとリトライ
このリクエストは Restate 経由で、エージェント転送前に永続化されます。 各セッション (ここでは
session-1) は分離・状態保持・durable です。 実行中にエージェントがクラッシュしても、Restate が自動リトライし、 最後にジャーナル化されたステップから進捗を失わず再開します。 -
実行ジャーナル確認
Invocations タブを開き、対象 invocation をクリックして 実行ジャーナルを確認します:

エージェント実行の完全制御
すべての LLM 呼び出しとツール実行はジャーナルに記録されます。 UI から一時停止、再開、中間ステップから再実行、停止が可能です。 State タブで現在セッションデータを確認できます。
機能¶
Restate プラグインは ADK エージェントに次の機能を提供します:
| Capability | Description |
|---|---|
| Durable tool execution | restate_object_context().run_typed() でツールロジックを包み、自動リトライ/復旧 |
| Human-in-the-loop | 外部シグナル (例: 人間承認) まで restate_object_context().awakeable() で実行停止 |
| Persistent sessions | RestateSessionService() がエージェントメモリ/会話状態を durable 保存 |
| Durable LLM calls | RestatePlugin() が LLM 呼び出しをジャーナル化し自動リトライ |
| Multi-agent communication | restate_object_context().service_call() による durable cross-agent HTTP 呼び出し |
| Parallel execution | restate.gather() でツール/エージェントを並列実行し決定論的に復旧 |
追加リソース¶
- Restate ADK example repository - 人間承認付き claims processing など実行可能サンプル
- Restate ADK tutorial - Restate と ADK によるエージェント開発チュートリアル
- Restate AI documentation - durable AI agent パターンの完全リファレンス
- Restate SDK on PyPI - Python パッケージ