クイックスタート

5分以内に最初の AI エージェントを作成します。

前提条件

  • Rust 1.95.0 以降(rustup update stable)
  • このチュートリアル用の OpenAI API キー

ステップ 1: OpenAI サーバーのひな形を作成する

cargo install cargo-adk
cargo adk new quickstart_agent --template api --provider openai
cd quickstart_agent

これにより、OpenAI エージェント、インメモリセッション、ADK HTTP ランタイム、ストリーミングエンドポイント、組み込み開発 UI を備えた完全な Rust プロジェクトが作成されます。

その他のテンプレート

# Agent with custom tools using #[tool] macro
cargo adk new my_agent --template tools

# RAG agent with Gemini embeddings and in-memory vector search
cargo adk new my_agent --template rag

# REST API server with the embedded runtime UI
cargo adk new my_agent --template api

# OpenAI GPT-5-mini agent
cargo adk new my_agent --template openai

# A2A protocol agent with builder API
cargo adk new my_agent --template a2a

# Use any provider with any template
cargo adk new my_agent --template tools --provider anthropic

# Add optional addons to any template
cargo adk new my_agent --template tools --addon docker --addon ci
テンプレート得られるもの
basicインタラクティブコンソール付き Gemini エージェント(デフォルト)
tools#[tool] マクロのカスタムツール + schemars スキーマ生成付きエージェント
ragRAG パイプライン — Gemini 埋め込み、インメモリベクトルストア、ドキュメント取り込み
apiAxum REST サーバー、ヘルスチェック、ストリーミングエンドポイント、組み込みランタイム UI
openaiOpenAI GPT-5-mini エージェントとコンソール
a2aA2A プロトコルエージェントと A2aServer ビルダーおよびエージェントカード
graphチェックポイントと永続的な再開機能を備えたグラフベースのワークフロー
realtimeリアルタイム音声ストリーミングエージェント

ヒント: --addon フラグを使用すると、docker、ci、telemetry などのオプションのアドオンを含むテンプレートを構成できます。9 個のアドオンと 5 つのエンタープライズパターンの完全な一覧については、構成可能なテンプレート のページを参照してください。

ステップ 2: API キーを追加する

cp .env.example .env
# Open .env and replace the OPENAI_API_KEY placeholder.

生成された .gitignore には .env が含まれていません。キーはローカルに保持し、決してコミットしないでください。

ステップ 3: エージェントを実行する

cargo run

http://127.0.0.1:8080/ui/ を開きます。エージェントは自動的に表示されるため、最初にセッションを作成したりエンドポイントを呼び出したりする必要はありません。

ステップ 4: ランタイム UI でテストする

次のようなプロンプトを入力します。

Explain what this agent can do in three concise Markdown bullets.

レスポンスは会話にストリーミングされます。右側のインスペクターを使用すると、ページを離れることなく、実行トポロジー、順序付けられたイベントタイムライン、状態の変更、アーティファクト、セッション、プロトコルの機能、テレメトリを確認できます。

プロンプトを入力し、チームへのハンドオフを確認し、ADK ランタイムテレメトリインスペクターを開いている様子

この録画では、アニメーション表示されるハンドオフを確認しやすいよう、ポータブルチームのショーケースを使用しています。スキャフォールドされたエージェントは、1 ノードのトポロジーで同じランタイム UI を使用します。

スモークテストを行う場合は、HTTP ランタイムも個別に検証してください。

curl -fsS http://127.0.0.1:8080/api/health

これで、エージェントの実行、セッションの管理、イベントのストリーミング、独自のテストインターフェースの提供を 1 つの実行可能ファイルで行えるようになりました。個別のフロントエンドのインストールは必要ありません。

ターミナルのみのエージェントを使用しますか?

代わりに OpenAI コンソールテンプレートを使用してください。

cargo adk new quickstart_console --template openai
cd quickstart_console
cp .env.example .env   # replace the OPENAI_API_KEY placeholder
cargo run

設定不要の代替方法 — adk::run()

スキャフォールディングを使わずにエージェントをすぐ実行したいだけの場合は、次のワンライナーを使用します。

use adk_rust::run;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    // Minimal default: set GOOGLE_API_KEY. Add provider features for OpenAI/Anthropic.
    let response = run("You are a helpful assistant.", "Explain Rust in one sentence.").await?;
    println!("{response}");
    Ok(())
}

これは、コンパイル済みプロバイダーの検出、セッションの作成、エージェントの構築、実行を1回の呼び出しで処理します。スクリプト、プロトタイプ、簡単な実験に適しています。


生成されたコードを理解する

API スキャフォールドの src/main.rs は通常の LlmAgent を構築し、それを標準サーバーにマウントします。重要な接続処理は次のとおりです。

use adk_rust::prelude::*;
use adk_rust::server::{ServerConfig, create_app};
use adk_rust::session::InMemorySessionService;
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    let api_key = std::env::var("OPENAI_API_KEY")?;

    let model = adk_rust::model::openai::OpenAIClient::new(
        adk_rust::model::openai::OpenAIConfig::new(&api_key, "gpt-5.6-terra"),
    )?;

    let agent: Arc<dyn Agent> = Arc::new(
        LlmAgentBuilder::new("quickstart_agent")
            .description("REST API agent")
            .instruction("You are a helpful assistant accessible via REST API.")
            .model(Arc::new(model))
            .build()?,
    );

    let config = ServerConfig::new(
        Arc::new(adk_rust::SingleAgentLoader::new(agent)),
        Arc::new(InMemorySessionService::new()),
    );
    let app = create_app(config);

    let listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await?;
    axum::serve(listener, app).await?;
    Ok(())
}
部分動作
OpenAIClientOPENAI_API_KEY からモデルクライアントを作成します
LlmAgentBuilderビルダーパターン:名前、説明、指示(システムプロンプト)、モデル、ツール
InMemorySessionServiceランナーと UI のローカル開発セッションを保存します
create_appREST/SSE API と組み込みランタイム UI を 1 つの Axum ルーターにマウントします

カスタムツールの追加

ツールを追加する最も速い方法は、#[tool] マクロを使うことです。adk-tool を依存関係に追加します。

[dependencies]
adk-tool = "2.1.0"
schemars = "1"
serde = { version = "1", features = ["derive"] }

次にツールを定義します — ドキュメントコメントが説明になり、引数構造体が JSON スキーマになります。

use adk_tool::{tool, AdkError};
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::{json, Value};

#[derive(Deserialize, JsonSchema)]
struct WeatherArgs {
    /// The city to look up
    city: String,
}

/// Get the current weather for a city.
#[tool]
async fn get_weather(args: WeatherArgs) -> std::result::Result<Value, AdkError> {
    Ok(json!({ "temp": 22, "city": args.city, "condition": "sunny" }))
}

このマクロは Tool を実装する GetWeather 構造体を生成します。これをエージェントに追加します。

let agent = LlmAgentBuilder::new("weather_agent")
    .instruction("Use the get_weather tool for weather questions.")
    .model(Arc::new(model))
    .tool(Arc::new(GetWeather))  // Generated by #[tool]
    .build()?;

ヒント: ツールがあらかじめ設定されたプロジェクトをスキャフォールドすることもできます: cargo adk new my-agent --template tools

組み込みツール

ADK には、すぐに使えるツールも含まれています。

// Google Search (handled server-side by Gemini)
.tool(Arc::new(GoogleSearchTool::new()))

// Exit a LoopAgent
.tool(Arc::new(ExitLoopTool::new()))

Web サーバーとして実行する

HTTP を提供する場合は、サーバープロジェクトをスキャフォールドします。

cargo adk new my-api --template api --provider openai
cd my-api
cp .env.example .env
cargo run

http://127.0.0.1:8080/ui/ を開きます。デフォルトの基本テンプレートでは、代わりに軽量なコンソールランチャーが使用されます。


他のモデルを使用する

フィーチャーフラグでプロバイダーを有効にします。高速なインストールのため、デフォルトのビルドは Gemini 専用のままになっているので、必要なプロバイダーだけを追加します。

[dependencies]
adk-rust = { version = "2.1.0", features = ["openai"] }

または、プロバイダーを指定してスキャフォールドします: cargo adk new my-agent --provider openai

OpenAI

let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(api_key, "gpt-5.6-terra"))?;

Anthropic

let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-5"))?;

DeepSeek

let api_key = std::env::var("DEEPSEEK_API_KEY")?;
let model = DeepSeekClient::chat(api_key)?;         // standard
// let model = DeepSeekClient::reasoner(api_key)?;   // chain-of-thought

Groq

let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::new(GroqConfig::gpt_oss_120b(api_key))?;

Ollama(ローカル)

// Requires: ollama serve && ollama pull llama3.2
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

サポートされているモデル

プロバイダーモデル例機能フラグ
Geminigemini-3.7-flash, gemini-3.6-flash, gemini-3.1-pro-preview(デフォルト)
OpenAIgpt-5.6-terra, gpt-5.6-sol, gpt-5.6-lunaopenai
Anthropicclaude-sonnet-5、claude-opus-5、claude-fable-5anthropic
DeepSeekdeepseek-v4-flash、deepseek-v4-prodeepseek
Groqopenai/gpt-oss-120b、openai/gpt-oss-20bgroq
Ollamaqwen3.6:35b-a3b、qwen3.5、llama3.2:3bollama

次のステップ


前へ: はじめに | 次へ: LlmAgent