ADK-Rustの紹介

Agent Development Kit (ADK) は、AIエージェントの開発とデプロイのための柔軟でモジュール式のフレームワークです。ADKはGeminiとGoogleエコシステム向けに最適化されていますが、モデルに依存せず、デプロイメントに依存せず、他のフレームワークとの互換性を持つように構築されています。ADKは、エージェント開発がよりソフトウェア開発のように感じられるように設計されており、開発者がシンプルなタスクから複雑なワークフローまで幅広いエージェントアーキテクチャを簡単に作成、デプロイ、オーケストレーションできるようにします。

注: adk-rust v0.2.0 には Rust 1.85.0 以上が必要です

インストール

プロジェクトに adk-rust を追加します:

cargo add adk-rust

または Cargo.toml に追加します:

[dependencies]
adk-rust = "0.2.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 は、モジュール性と拡張性のために設計されたレイヤードアーキテクチャを使用しています:

┌─────────────────────────────────────────────────────────────┐
│                    アプリケーション層                         │
│              CLI • RESTサーバー • Web UI                      │
├─────────────────────────────────────────────────────────────┤
│                      Runner層                                │
│           Agent実行 • コンテキスト管理               │
├─────────────────────────────────────────────────────────────┤
│                      Agent層                                 │
│    LlmAgent • CustomAgent • ワークフローAgent                  │
├─────────────────────────────────────────────────────────────┤
│                     サービス層                               │
│      モデル • Tools • Sessions • アーティファクト • メモリ          │
└─────────────────────────────────────────────────────────────┘

コアコンセプト

ADK-Rustは、強力なAI Agentを作成するために連携するいくつかの重要なプリミティブを中心に構築されています。

Agent

特定のタスクのために設計された基本的な作業単位です。ADK-RustはいくつかのAgentタイプを提供します。

  • LlmAgent: 大規模言語モデルを使用して推論と意思決定を行います。これはほとんどのユースケースで主要なAgentタイプです。
  • RealtimeAgent: OpenAI Realtime APIまたはGemini Live APIを使用して双方向オーディオストリーミングを行う音声対応Agentです。
  • GraphAgent: 状態管理、チェックポイント作成、ヒューマン・イン・ザ・ループサポートを備えたLangGraphスタイルのワークフローオーケストレーション。
  • CustomAgent: Agentの動作を完全に制御しながらカスタムロジックを実装できます。
  • Workflow Agents: 事前定義された実行パスに従う決定論的Agentです。
    • SequentialAgent: サブAgentを順番に実行します
    • ParallelAgent: サブAgentを並行して実行します
    • LoopAgent: 条件が満たされるまでサブAgentを繰り返し実行します

Tool

ToolはAgentに会話能力を超えた能力を与え、外部APIとの対話、情報の検索、カスタム操作の実行を可能にします。

  • FunctionTool: 任意 のasync Rust関数をToolとしてラップします
  • GoogleSearchTool: 組み込みのウェブ検索機能
  • BrowserToolset: ウェブ自動化のための46のWebDriver Tool (ナビゲーション、フォーム、スクリーンショットなど)
  • ExitLoopTool: LoopAgentでのループ終了を制御します
  • McpToolset: Model Context Protocolサーバーとの統合

Session

Sessionは単一の会話のコンテキストを処理します。これには以下が含まれます。

  • Session ID: 会話の一意な識別子
  • Events: 会話履歴 (ユーザーメッセージ、Agent応答、Tool呼び出し)
  • State: スコープ付きプレフィックス (app:, user:, temp:) を持つ会話のワーキングメモリ

Callback

Agentの実行の特定の時点で実行されるカスタムコードです。

  • before_agent / after_agent: Agentの呼び出しを傍受します
  • before_model / after_model: LLMの呼び出しを傍受します
  • before_tool / after_tool: Toolの実行を傍受します

Callbackは、ロギング、ガードレール、キャッシング、および動作変更を可能にします。

Artifact

ファイル、画像、その他の非テキストコンテンツのためのバイナリデータストレージです。

  • バージョン管理付きのArtifactの保存と読み込み
  • 名前空間スコープ (セッションレベルまたはユーザーレベル)
  • プラグ可能なストレージバックエンド

Event

Session中に発生する事柄を表す、通信の基本単位です。

  • ユーザーメッセージ
  • Agentの応答
  • Toolの呼び出しと結果
  • Stateの変更

Eventは会話履歴を形成し、リプレイとデバッグを可能にします。

Model

LlmAgentを動かす基盤となるLLMです。ADK-RustはGeminiに最適化されていますが、Llm traitを介して複数のプロバイダーをサポートしています。

  • Gemini: GoogleのGeminiモデル (gemini-3-pro-preview, gemini-2.5-flash, gemini-2.5-pro)
  • OpenAI: gpt-5.2, gpt-4o, gpt-4o-mini, Azure OpenAI
  • Anthropic: claude-sonnet-4-5, claude-opus-4-5, claude-sonnet-4
  • DeepSeek: deepseek-chat, deepseek-reasoner (思考モード付き)
  • Groq: llama-3.3-70b-versatile, mixtral-8x7b-32768 による超高速推論
  • Ollama: llama3.2, qwen2.5, mistral, phi4 によるローカル推論
  • mistral.rs: ハードウェアアクセラレーションによる高性能ローカル推論

すべてのプロバイダーは、相互交換可能な使用のために同じtraitを実装しています。

pub trait Llm: Send + Sync {
    async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
    async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}

Runner

実行フローを管理し、Agentの相互作用をオーケストレーションし、バックエンドサービスと連携するエンジンです。Runnerは以下を処理します。

  • Agentの呼び出しと応答処理
  • Toolの実行
  • SessionとStateの管理
  • Eventストリーミング

フィーチャーフラグ

adk-rustは、モジュール性のためCargo featuresを使用します。

# Full installation (default)
adk-rust = "0.2.0"

# Minimal: Only agents + Gemini
adk-rust = { version = "0.2.0", default-features = false, features = ["minimal"] }

# Custom: Pick what you need
adk-rust = { version = "0.2.0", default-features = false, features = ["agents", "gemini", "tools"] }

利用可能なフィーチャー:

  • agents: Agentの実装 (LlmAgent, CustomAgent, ワークフローAgent)
  • models: Modelの統合 (Gemini)
  • openai: OpenAIモデル (GPT-5, GPT-4o)
  • anthropic: Anthropicモデル (Claude 4.5, Claude 4)
  • deepseek: DeepSeekモデル (chat, reasoner)
  • groq: Groq超高速推論
  • ollama: ローカルのOllamaモデル
  • tools: Toolシステムと組み込みTool
  • sessions: Session管理
  • artifacts: Artifactストレージ
  • memory: 意味検索を備えたMemoryシステム
  • runner: Agent実行ランタイム
  • server: HTTPサーバー (REST + A2A)
  • telemetry: OpenTelemetry統合
  • cli: CLIランチャー

その他の言語

ADKは複数の言語で利用できます:


次へ: クイックスタート →