ADK-Rustの概要
Agent Development Kit(ADK)は、AIエージェントの開発とデプロイのための、柔軟でモジュール式のフレームワークです。GeminiおよびGoogleエコシステム向けに最適化されていますが、ADKはモデルに依存せず、デプロイ環境にも依存せず、他のフレームワークとの互換性を備えています。ADKは、エージェント開発をソフトウェア開発に近いものにすることを目的として設計されており、開発者が単純なタスクから複雑なワークフローまで、さまざまなエージェントアーキテクチャを容易に作成、デプロイ、オーケストレーションできるようにします。
注: ADK-RustにはRust 1.95.0以降が必要です。
インストール
プロジェクトにADK-Rustを追加します。
cargo add adk-rust
または、Cargo.tomlに追加します。
[dependencies]
adk-rust = "2.1.0"
tokio = { version = "1.40", features = ["full"] }
クイック例
use adk_rust::prelude::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-3.7-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("A helpful AI assistant")
.model(Arc::new(model))
.build()?;
println!("Agent '{}' ready!", agent.name());
Ok(())
}
アーキテクチャの概要
ADK-Rustは、モジュール性と拡張性を考慮して設計されたレイヤーアーキテクチャを使用します。
コアコンセプト
ADK-Rustは、強力なAIエージェントを構築するために連携する、いくつかの主要なプリミティブを中心に構成されています。
エージェント
特定のタスク向けに設計された基本的な作業単位です。ADK-Rustには、複数のエージェントタイプが用意されています。
- LlmAgent: 推論と意思決定に大規模言語モデルを使用します。ほとんどのユースケースで主要となるエージェントタイプです。
- RealtimeAgent: 双方向音声ストリーミングに OpenAI Realtime API または Gemini Live API を使用する音声対応エージェントです。
- GraphAgent: 状態管理、チェックポイント、human-in-the-loop のサポートを備えた LangGraph スタイルのワークフローオーケストレーションです。
- CustomAgent: エージェントの動作を完全に制御しながら、カスタムロジックを実装できます。
- ワークフローエージェント: あらかじめ定義された実行経路に従う決定論的エージェントです。
SequentialAgent: サブエージェントを順番に実行しますParallelAgent: サブエージェントを同時に実行しますLoopAgent: 条件が満たされるまでサブエージェントを反復実行します
ツール
ツールによってエージェントは会話を超えた能力を得られ、外部の APIs とやり取りしたり、情報を検索したり、カスタム操作を実行したりできます。
- FunctionTool: 任意の非同期 Rust 関数をツールとしてラップします
- GoogleSearchTool: 組み込みのウェブ検索機能です
- BrowserToolset: ウェブ自動化(ナビゲーション、フォーム、スクリーンショットなど)用の46個の WebDriver ツールです
- ExitLoopTool: LoopAgent におけるループの終了を制御します
- McpToolset: 1つの MCP サーバーに接続し、レビュー済みのツール、リソース、 プロンプト、補完、サブスクリプション、情報要求、ネゴシエーション済みタスクを公開します
- McpServerManager: アプリケーションの実行中に変化するローカル MCP サーバーのレジストリを追加、更新、監視、再起動、永続化、集約します
セッション
セッションは、次の内容を含む1つの会話のコンテキストを処理します。
- セッション ID: 会話の一意な識別子
- イベント: 会話履歴(ユーザーメッセージ、エージェントの応答、ツール呼び出し)
- 状態: スコープ付きプレフィックス(
app:、user:、temp:)を持つ会話の作業メモリ
コールバック
エージェントの実行中に特定の時点で実行されるカスタムコード:
before_agent/after_agent: エージェントの呼び出しをインターセプトbefore_model/after_model: LLM の呼び出しをインターセプトbefore_tool/after_tool: ツールの実行をインターセプト
コールバックにより、ロギング、ガードレール、キャッシュ、動作の変更が可能になります。
アーティファクト
ファイル、画像、その他のテキスト以外のコンテンツのバイナリデータストレージ:
- バージョン管理によるアーティファクトの保存と読み込み
- 名前空間のスコープ(セッションレベルまたはユーザーレベル)
- プラグイン可能なストレージバックエンド
イベント
セッション中に発生する事象を表す通信の基本単位:
- ユーザーメッセージ
- エージェントの応答
- ツールの呼び出しと結果
- 状態の変更
イベントは会話履歴を形成し、リプレイとデバッグを可能にします。
モデル
LlmAgentsを動かす基盤となるLLM。ADK-RustはGemini向けに最適化されていますが、Llmトレイトを通じて複数のプロバイダーをサポートします:
- Gemini:
gemini-3.7-flash、gemini-3.6-flash、gemini-3.5-flash-lite - OpenAI:
gpt-5.6-terra、gpt-5.6-sol、gpt-5.6-luna、Azure OpenAIデプロイ - Anthropic:
claude-sonnet-5、claude-opus-5、claude-fable-5 - DeepSeek:
deepseek-v4-flash、deepseek-v4-pro - Groq:
openai/gpt-oss-120bおよびopenai/gpt-oss-20bによる超高速推論 - Ollama:
qwen3.6:35b-a3b、qwen3.5、llama3.2:3b、deepseek-r1:14bによるローカル推論 - mistral.rs: ハードウェアアクセラレーションによる高性能なローカル推論
すべてのプロバイダーは、相互に置き換えて使用できる同じトレイトを実装します:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
ランナー
実行フローを管理し、エージェント間のやり取りを調整し、バックエンドサービスと連携するエンジンです。Runner は以下を処理します。
- エージェントの呼び出しとレスポンス処理
- ツールの実行
- セッションと状態の管理
- イベントのストリーミング
機能フラグ
ADK-Rust はモジュール性のために Cargo の機能を使用します。4 つのプリセットによって、コンパイルされるクレートを制御します。
# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.1.0"
# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.1.0", features = ["standard"] }
# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.1.0", features = ["enterprise"] }
# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.1.0", features = ["full"] }
# Equivalent explicit minimal selection
adk-rust = { version = "2.1.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "2.1.0", default-features = false, features = ["agents", "gemini", "tools"] }
利用可能な機能:
agents: エージェント実装(LlmAgent、CustomAgent、ワークフローエージェント)models: モデル統合(Gemini)openai: OpenAIモデル(GPT-5、GPT-5 Mini)anthropic: Anthropicモデル(Claude 4.6、Claude 4.5)deepseek: DeepSeekモデル(チャット、推論)groq: Groqの超高速推論ollama: ローカルOllamaモデルtools: ツールシステムと組み込みツールsessions: セッション管理artifacts: アーティファクトストレージmemory: セマンティック検索と双時点ナレッジグラフバックエンド(GraphMemoryService)を備えたメモリシステムrunner: エージェント実行ランタイムserver: HTTPサーバー(REST + A2A)telemetry: トレース用ヘルパー。OTLPへのエクスポート時のみtelemetry-otlpを追加cli: CLIランチャー。必要な場合のみcli-openai、cli-anthropic、または別のCLIプロバイダー機能を追加mcp:adk-tool向けModel Context Protocol統合record-payloads: 完全なトレースペイロードのキャプチャをオプトインgraph: グラフベースのワークフロー(標準プリセット)realtime: 音声 + マルチモーダルストリーミング — OpenAI RealtimeとGemini Live、双方向音声、ビデオフレーム、感情的対話、サーバーサイドツール(エンタープライズプリセット)browser: ブラウザー自動化(エンタープライズプリセット)eval: エージェント評価(標準プリセット)rag: RAGパイプライン(エンタープライズプリセット)code: コード実行(フルプリセット)sandbox: サンドボックス実行(フルプリセット)audio: 音声処理(フルプリセット)
その他の言語
ADKは複数の言語で利用できます:
- Python:
pip install google-adk- ドキュメント - Go:
go get google.golang.org/adk- ドキュメント - Java: Maven/Gradle - ドキュメント
次へ: クイックスタート →