クイックスタート
このガイドでは、ADK-Rust を使ってすぐに始める方法を紹介します。10 分以内に最初の AI エージェントを作成します。
前提条件
始める前に、以下が揃っていることを確認してください。
- Rust 1.85.0 以降 (
rustup update stable) - Gemini 用の Google API キー
ステップ 1: 新しいプロジェクトを作成する
新しい Rust プロジェクトを作成します。
cargo new my_agent
cd my_agent
プロジェクト構造は次のようになります。
my_agent/
├── Cargo.toml
├── src/
│ └── main.rs
└── .env # You'll create this for your API key
ステップ 2: 依存関係を追加する
Cargo.toml を必要な依存関係で更新します。
[package]
name = "my_agent"
version = "0.1.0"
edition = "2024"
[dependencies]
adk-rust = "0.2.0"
tokio = { version = "1.40", features = ["full"] }
dotenvy = "0.15"
依存関係をインストールします。
cargo build
ステップ 3: API キーを設定する
このプロジェクトは Gemini API を使用しており、API キーが必要です。まだ持っていない場合は、Google AI Studio でキーを作成してください。
プロジェクトのルートに .env ファイルを作成します。
Linux / macOS:
echo 'GOOGLE_API_KEY=your-api-key-here' > .env
Windows (PowerShell):
echo GOOGLE_API_KEY=your-api-key-here > .env
セキュリティのヒント: API キーのコミットを避けるため、
.envを.gitignoreに追加してください。
ステップ 4: エージェントを作成する
src/main.rs の内容を以下に置き換えます。
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
// Load environment variables from .env file
dotenvy::dotenv().ok();
// Get API key from environment
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
// Create the Gemini model
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
// Build your agent
let agent = LlmAgentBuilder::new("my_assistant")
.description("A helpful AI assistant")
.instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely.")
.model(Arc::new(model))
.build()?;
// Run the agent with the CLI launcher
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
ステップ 5: エージェントを実行する
対話型コンソールモードでエージェントを起動します。
cargo run
エージェントとチャットできるプロンプトが表示されます。
🤖 Agent ready! Type your questions (or 'exit' to quit).
You: Hello! What can you help me with?
Assistant: Hello! I'm a helpful AI assistant. I can help you with:
- Answering questions on various topics
- Explaining concepts
- Providing information and suggestions
- Having a friendly conversation
What would you like to know?
You: exit
👋 Goodbye!
ステップ 6: ツールを追加する
エージェントにGoogle Search toolを追加して、リアルタイム情報にアクセスできるようにしましょう。
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
// Build agent with Google Search tool
let agent = LlmAgentBuilder::new("search_assistant")
.description("An assistant that can search the web")
.instruction("You are a helpful assistant. Use the search tool to find current information when needed.")
.model(Arc::new(model))
.tool(Arc::new(GoogleSearchTool::new())) // Add search capability
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
インタラクティブコンソールモードでエージェントを再度起動します。
cargo run
これで、エージェントにウェブ検索を促すことができます。
You: What's the weather like in Tokyo today?
Assistant: Let me search for that information...
[Using GoogleSearchTool]
Based on current information, Tokyo is experiencing...
Webサーバーとして実行する
ウェブベースのインターフェースには、serveコマンドで実行します。
cargo run -- serve
これにより、デフォルトポート8080でサーバーが起動します。http://localhost:8080でアクセスできます。
カスタムポートを指定するには:
cargo run -- serve --port 3000
これにより、ポート3000でサーバーが起動します。http://localhost:3000でアクセスできます。
コードの理解
各部分が何をするかを見ていきましょう。
インポート
use adk_rust::prelude::*; // GeminiModel, LlmAgentBuilder, Arc, etc.
use adk_rust::Launcher; // CLI launcher for console/server modes
use std::sync::Arc; // Thread-safe reference counting pointer
prelude::*は、GeminiModel、LlmAgentBuilder、Arc、エラー型など、一般的に使用されるすべての型をインポートします。Launcherは、Agentを実行するためのCLIインターフェースを提供します。Arc(Atomic Reference Counted) は、asyncタスク間でModelとAgentを安全に共有できるようにします。
Modelの作成
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
Llm traitを実装するGemini modelインスタンスを作成します。このModelは以下のことを行います:
- APIキーを使用した認証を処理します
- LLMからのストリーミング応答を管理します
- Toolに対するFunction callingをサポートします
Agentの構築
let agent = LlmAgentBuilder::new("my_assistant")
.description("A helpful AI assistant")
.instruction("You are a friendly assistant...")
.model(Arc::new(model))
.build()?;
ビルダーパターンがAgentを設定します:
| メソッド | 目的 |
|---|---|
new("name") | Agentの一意の識別子を設定します(ログやマルチエージェントシステムで使用されます) |
description() | AgentカードやA2Aプロトコルで表示される簡単な説明 |
instruction() | システムプロンプト - Agentの個性と振る舞いを定義します |
model(Arc::new(...)) | ModelをArcでラップし、スレッドセーフな共有を可能にします |
tool(Arc::new(...)) | (オプション) Agentが呼び出せるTool/関数を追加します |
build() | 設定を検証し、Agentインスタンスを作成します |
Launcher
Launcher::new(Arc::new(agent)).run().await?;
Launcherはランタイムを処理します:
- コンソールモード (デフォルト): ターミナルでのインタラクティブチャット
- サーバーモード (
-- serve): Webインターフェースを備えたREST API - セッションの状態、ストリーミング応答、および正常なシャットダウンを管理します
その他のモデルの使用
adk-rustは、複数のLLMプロバイダーをすぐにサポートしています。Cargo.tomlのフィーチャーフラグを介して有効にします。
[dependencies]
adk-rust = { version = "0.2.0", features = ["openai", "anthropic", "deepseek", "groq", "ollama"] }
プロバイダーに適したAPIキーを設定してください。
# OpenAI
export OPENAI_API_KEY="your-api-key"
# Anthropic
export ANTHROPIC_API_KEY="your-api-key"
# DeepSeek
export DEEPSEEK_API_KEY="your-api-key"
# Groq
export GROQ_API_KEY="your-api-key"
# Ollama (no key needed, just run: ollama serve)
OpenAI
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(api_key, "gpt-4o"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
Anthropic
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-4-20250514"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
DeepSeek
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("DEEPSEEK_API_KEY")?;
// Standard chat model
let model = DeepSeekClient::chat(api_key)?;
// Or use reasoner for chain-of-thought reasoning
// let model = DeepSeekClient::reasoner(api_key)?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
Groq (超高速推論)
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::new(GroqConfig::llama70b(api_key))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
Ollama (ローカルモデル)
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
// Requires: ollama serve && ollama pull llama3.2
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
サポートされているモデル
| プロバイダー | モデルの例 | フィーチャーフラグ |
|---|---|---|
| Gemini | gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.5-flash, gemini-2.5-pro, gemini-2.0-flash | (デフォルト) |
| OpenAI | gpt-5.2, gpt-5.2-mini, gpt-5-mini, gpt-5-nano, gpt-4.1, gpt-4.1-mini, o3-mini, gpt-4o, gpt-4o-mini | openai |
| Anthropic | claude-sonnet-4-5, claude-haiku-4-5, claude-opus-4-5, claude-sonnet-4, claude-opus-4, claude-haiku-4 | anthropic |
| DeepSeek | deepseek-chat, deepseek-reasoner | deepseek |
| Groq | gpt-oss-120b, qwen3-32b, llama-3.3-70b-versatile, mixtral-8x7b-32768 | groq |
| Ollama | gemma3, qwen2.5, llama3.2, mistral, phi4, codellama | ollama |
次のステップ
最初のagentが実行されたので、以下のトピックを探求してください。
- LlmAgent Configuration - すべての設定オプション
- 関数ツール - カスタムツールを作成する
- ワークフローAgent - 多段階のパイプラインを構築する
- Session - 会話の状態を管理する
- コールバック - agentの動作をカスタマイズする
前へ: Introduction | 次へ: LlmAgent