ADK-Rustの紹介
Agent Development Kit (ADK) は、AI エージェントを開発およびデプロイするための柔軟でモジュール化されたフレームワークです。Gemini および Google エコシステム向けに最適化されていますが、ADK はモデル非依存、デプロイ非依存であり、他のフレームワークとの互換性を考慮して構築されています。ADK は、エージェント開発をソフトウェア開発により近い感覚にすることを目的として設計されており、開発者が単純なタスクから複雑なワークフローまで幅広いエージェントアーキテクチャを作成、デプロイ、オーケストレーションしやすくしています。
Note: ADK-Rust には Rust 1.95.0 以上が必要です。
インストール
プロジェクトに ADK-Rust を追加します:
cargo add adk-rust
または、Cargo.toml に追加します:
[dependencies]
adk-rust = "2.0.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-2.5-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: 推論と意思決定に Large Language Model を使用します。これは、ほとんどのユースケースにおける主要なエージェントタイプです。
- RealtimeAgent: OpenAI Realtime API または Gemini Live API を使用した、双方向音声ストリーミング対応の音声エージェントです。
- GraphAgent: 状態管理、チェックポイント、human-in-the-loop サポートを備えた LangGraph スタイルのワークフローオーケストレーションです。
- CustomAgent: エージェントの動作を完全に制御しながら、カスタムロジックを実装できます。
- Workflow Agents: あらかじめ定義された実行パスに従う決定的なエージェントです:
SequentialAgent: サブエージェントを順番に実行しますParallelAgent: サブエージェントを並行して実行しますLoopAgent: 条件が満たされるまでサブエージェントを繰り返し実行します
ツール
ツールは、エージェントに会話を超えた能力を与え、外部の APIs と連携したり、情報を検索したり、カスタム操作を実行したりできるようにします:
- FunctionTool: 任意の async Rust 関数をツールとしてラップする
- GoogleSearchTool: 組み込みのウェブ検索機能
- BrowserToolset: ウェブ自動化のための 46 個の WebDriver ツール(ナビゲーション、フォーム、スクリーンショットなど)
- ExitLoopTool: LoopAgent における制御ループの終了
- McpToolset: 1 つの MCP サーバーに接続し、レビュー済みのツール、リソース、 プロンプト、完了、サブスクリプション、引き出し、および交渉済みタスクを公開する
- McpServerManager: アプリケーションの実行中に、変化するローカル MCP サーバーのレジストリを追加、更新、監視、再起動、永続化、集約する
セッション
セッションは、単一の会話のコンテキストを次の内容を含めて扱います:
- Session ID: 会話の一意な識別子
- Events: 会話履歴(ユーザーメッセージ、エージェント応答、ツール呼び出し)
- State: スコープ付きプレフィックス(
app:、user:、temp:)を持つ会話の作業メモリ
コールバック
エージェントの実行中の特定の時点で実行されるカスタムコード:
before_agent/after_agent: エージェント呼び出しをインターセプトするbefore_model/after_model: LLM 呼び出しをインターセプトするbefore_tool/after_tool: ツール実行をインターセプトする
コールバックにより、ログ記録、ガードレール、キャッシュ、動作の変更が可能になります。
アーティファクト
ファイル、画像、またはその他の非テキストコンテンツのためのバイナリデータストレージ:
- バージョン管理付きでアーティファクトを保存および読み込みする
- 名前空間のスコープ設定(セッションレベルまたはユーザーレベル)
- プラガブルなストレージバックエンド
イベント
セッション中に起こることを表す、通信の基本単位:
- ユーザーメッセージ
- エージェント応答
- ツール呼び出しと結果
- 状態変更
イベントは会話履歴を形成し、再生とデバッグを可能にします。
モデル
LLM を支える基盤となる LlmAgents。ADK-Rust は Gemini 向けに最適化されていますが、Llm トレイトを通じて複数のプロバイダーをサポートします:
- Gemini: Google の Gemini モデル(
gemini-3-pro、gemini-3-flash、gemini-2.5-flash、gemini-2.5-pro) - OpenAI:
gpt-5.1、gpt-5、gpt-5-mini、Azure OpenAI - Anthropic:
claude-opus-4-6、claude-sonnet-4-6、claude-haiku-4-5 - DeepSeek:
deepseek-r1、deepseek-v3.1、deepseek-chat(thinking mode 付き) - Groq:
llama-4-scout、llama-3.1-70b-versatile、mixtral-8x7b-32768による超高速推論 - 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 features を使用します。4 つのプリセットが、どの crate をコンパイルするかを制御します。
# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.0.0"
# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.0.0", features = ["standard"] }
# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.0.0", features = ["enterprise"] }
# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.0.0", features = ["full"] }
# Equivalent explicit minimal selection
adk-rust = { version = "2.0.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "2.0.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 モデル(chat、reasoner)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- Documentation - Go:
go get google.golang.org/adk- Documentation - Java: Maven/Gradle - Documentation
次へ: クイックスタート →