← ブログに戻る
adk-rust を始める: Rust での最初の AI エージェント
Rust で AI エージェントの力を解き放ちましょう。このガイドでは、最初のインテリジェントエージェントを構築、実行、デプロイする方法を紹介します。
2023年10月26日•12分で読めます
adk-rustRustAIエージェントGoogle Gemini開発チュートリアル
目次
- 1. adk-rust の概要
- 2. 前提条件とセットアップ
- 3. 最初の ADK プロジェクトを作成する
- 4. adk-rust エージェントの構造
- 5. シンプルな AI エージェントを実装する
- 6. エージェントをビルドして実行する
- 7. 次のステップ
1. adk-rust の概要
エージェント開発の課題
複雑なタスクを実行できるインテリジェントエージェントの構築は、長年にわたり課題に満ちた領域でした。大規模言語モデル (LLMs) のオーケストレーション、状態管理、多様な入力の処理、これらのエージェントの効果的なデプロイには、多くの場合、特注のソリューションと多大なエンジニアリング作業が必要です。この複雑さは、強力な AI 機能をアプリケーションに統合しようとしている開発者にとって大きな障害となる可能性があります。
adk-rust の登場: AI エージェント開発の合理化
Agent Development Kit (ADK) は、AI エージェント開発を従来のソフトウェア開発のように感じさせることを目指しており、`adk-rust` はその堅牢な Rust 実装です。これは、洗練された AI エージェントを開発およびデプロイするために設計された、柔軟でモジュール式のフレームワークを提供します。Gemini と Google エコシステム向けに最適化されていますが、`adk-rust` はモデルに依存せず、デプロイメントにも依存しないため、さまざまなプラットフォーム間での互換性と柔軟性を保証します。このガイドでは、環境のセットアップ、最初の `adk-rust` プロジェクトの作成、基本的な AI アシスタントのデプロイについて説明し、エージェント開発のしっかりとした基盤を提供します。
2. 前提条件とセットアップ
エージェントの構築に取り掛かる前に、開発環境が準備できていることを確認しましょう。最新のRustツールチェーンと、プロジェクトに追加された
adk-rustライブラリが必要です。adk-rustは、Geminiのようなモデルと対話するために、Google APIキーも必要とします。
まず、Rustがインストールされていることを確認してください。インストールされていない場合、推奨される方法はrustupを介することです。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rustのバージョンが1.75以上であることを確認してください。
rustc --version
次に、adk-rustを依存関係として追加します。また、asynchronous操作のためにtokioを、APIキーのような環境変数を管理するためにdotenvを追加します。プロジェクトを作成したら(これは次のステップで行います)、cargo addで追加できます。
cargo add adk-rust
cargo add tokio --features full
cargo add dotenv
あるいは、これらをCargo.tomlファイルに手動で追加することもできます。
[dependencies]
adk-rust = "0.1"
tokio = { version = "1.40", features = ["full"] }
dotenv = "0.15"
最後に、Gemini用のGoogle APIキーが必要です。これはGoogle AI StudioまたはGoogle Cloud Consoleから取得してください。プロジェクトのルートディレクトリに.envファイルを作成し、キーを追加してください。
GOOGLE_API_KEY="YOUR_GEMINI_API_KEY_HERE"3. 初めてのADKプロジェクトを作成する
環境が整ったので、
adk-rustエージェントのコンテナとなる新しいRustプロジェクトを作成しましょう。標準のcargo newコマンドを使用して開始します。
ターミナルを開いて実行してください。
cargo new my_first_adk_agent
cd my_first_adk_agent
このコマンドは、my_first_adk_agentという名前の新しいRustプロジェクトを初期化します。生成されるプロジェクト構造は、Rust開発者にはおなじみのものとなるでしょう。
my_first_adk_agent/
├── Cargo.toml # Project manifest and dependencies
└── src/
└── main.rs # Your agent's main logic goes here
これで、このmy_first_adk_agentディレクトリ内で、前のセクションのcargo addコマンドを実行できます。GOOGLE_API_KEYのために、ルートディレクトリ(my_first_adk_agent/)に.envファイルを忘れずに手動で作成してください。4. adk-rustエージェントの構造
adk-rustエージェントは通常、LlmAgentBuilderを中心に構築され、Launcherを使用して実行されます。核となるアイデアは、エージェントのペルソナ、指示、および使用すべきLLMを定義することです。adk-rustエージェントのsrc/main.rsファイルに見られる主要なコンポーネントを見てみましょう。
adk-rustでは、LlmAgentが説明、指示(LLMのシステムプロンプトとして機能)、および特定の言語モデル(Geminiなど)で構成されます。その後、Launcherがこのエージェントを受け取り、実行を処理し、対話型コンソールまたはウェブサーバーインターフェースを提供します。この抽象化により、エージェントと外部世界との対話が簡素化されます。
以下は、adk-rustエージェントの完全な「Hello World」に相当するものです。このコードを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>> {
// 1. Load environment variables from .env file
dotenv::dotenv().ok();
// 2. Get API key from environment
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
// 3. Create the Gemini model
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
// 4. 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()?;
// 5. Run the agent with the CLI launcher
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}5. シンプルなAIエージェントを実装する
さて、
adk-rustエージェントの「Hello World」に相当するものを詳しく見ていきましょう。コードの各部分がどのように機能的なAIアシスタントの作成に貢献しているかに焦点を当てます。前のセクションのコードをsrc/main.rsファイルにコピーしているはずです。
1. **環境変数の読み込み**: dotenv::dotenv().ok();は.envファイルから変数を読み込み、GOOGLE_API_KEYをRustアプリケーション内で利用可能にします。
2. **APIキーの取得**: std::env::var("GOOGLE_API_KEY")は環境からAPIキーを取得します。.expect()呼び出しは、キーが見つからない場合にプログラムがパニックを起こし、明確なエラーメッセージを提供することを保証し、モデルの初期化時のサイレントな失敗を防ぎます。
3. **モデルの初期化**: let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;はGeminiModelをインスタンス化します。ここでは、APIキーを提供し、目的のGeminiモデルバージョン(gemini-2.5-flash)を指定します。このオブジェクトは、実際のLLMサービスとの接続および対話ロジックをカプセル化し、API呼び出しの複雑さを抽象化します。
4. **エージェントの構築**: ここでは、LlmAgentBuilderを使用してエージェントの核となるアイデンティティと動作を定義します。
* LlmAgentBuilder::new("my_assistant"): エージェントの構築を開始し、一意のIDを割り当てます。
* .description("A helpful AI assistant"): エージェントの目的を人間が読める形式で説明します。これはドキュメント作成や高レベルのオーケストレーションに役立ちます。
* .instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely."): これはシステムプロンプトです。基盤となるLLMがどのように振る舞い、応答し、全体的なペルソナを持つべきかをガイドします。
* .model(Arc::new(model)): エージェントを、作成したGeminiModelと関連付けます。Arc(アトミック参照カウント)はスレッドセーフな参照カウントポインタで、ここでは共有所有権のために使用されます。これはasynchronousなRustアプリケーションで一般的です。
* .build()?: エージェントの構築を完了します。Resultを返し、?は便利なエラー伝播のために使用されます。
5. **エージェントの起動**: Launcher::new(Arc::new(agent)).run().await?;は、設定されたエージェントを受け取り、実行します。Launcher::run()のデフォルトの動作は、対話型コンソールを開始することです。ここでは、エージェントにプロンプトを入力し、その応答を確認できます。awaitキーワードは、これがasynchronous操作であることを示します。これは、LLMとの対話のようなI/Oバウンドなタスクで典型的です。6. エージェントのビルドと実行
src/main.rsファイルにエージェントコードが入力され、Cargo.tomlが依存関係で更新されたら、エージェントを起動する準備が整いました!cargoがそのための主要なツールです。
まず、プロジェクトをビルドして、Rustコードを実行可能ファイルにコンパイルします。
cargo build
このコマンドは、エージェントとその依存関係をコンパイルします。成功すると、target/debug/ディレクトリ(--releaseでビルドした場合はtarget/release/)に実行可能ファイルが作成されます。
テストや迅速な対話に最適な対話型コンソールモードでエージェントを実行するには、次を使用します。
cargo run
ターミナルは対話型チャットインターフェースになり、質問を入力すると、エージェントが設定されたGeminiモデルを使用して応答します。終了するには、通常、exitと入力するか、Ctrl+Cを押します。
adk-rustは、エージェントをウェブサーバーとして実行する方法も提供しており、HTTPリクエストを介してエージェントと対話できます。これは、エージェントをウェブアプリケーションや他のサービスに統合する場合に特に役立ちます。
cargo run -- serve
デフォルトでは、これはhttp://127.0.0.1:8080でサーバーを起動します。必要に応じて、異なるポートを指定できます。
cargo run -- serve --port 3000
これで、エージェントはウェブAPIを介してアクセス可能になりました!curlのようなツールやウェブブラウザを使用して、設定されたエンドポイント(例: http://127.0.0.1:8080/v1/agent)にリクエストを送信できます。これにより、AIエージェントはデプロイ可能で呼び出し可能なサービスになります。7. 次のステップ
おめでとうございます!
adk-rustを使用して、初めてのAIエージェントを構築し、実行することに成功しました。これは、このフレームワークで達成できることのほんの始まりに過ぎません。次に進むためのいくつかの提案を以下に示します。
* **ADKドキュメントを探索する**: 公式のadk-rustドキュメントを深く掘り下げて、他のコンポーネントとの統合、状態管理、より複雑なエージェントワークフローの作成など、より高度な機能を理解しましょう。
* **カスタムツールと機能**: エージェントにカスタムツールを装備する方法を学び、外部のAPI、データベースと対話したり、テキスト生成だけでなく特定の計算を実行したりできるようにします。これはエージェントの機能を拡張するための強力な機能です。
* **デプロイオプション**: adk-rustエージェントのさまざまなデプロイ戦略を調査します。Dockerによるコンテナ化、クラウドプラットフォームへのデプロイ、既存のRustサービスへの統合などです。
* **コミュニティへの参加**: adk-rustコミュニティに参加しましょう。プロジェクトを共有したり、質問したり、議論に貢献したりすることで、学習と問題解決を大幅に加速できます。最新の開発状況とベストプラクティスに常に接続しましょう。