# ADKの便利で実践的な使い方
🚀 ツールの並列実行、レスポンスサイズの最適化、レイテンシとトークンコストの削減 — ADKのTool Performanceガイドで、本番環境のスループットを最大化しましょう。
📌 タイトル:Tool Performance — ツール実行の最適化手法
🔗 URL:
🧩 概要
ADKではツールのパフォーマンスを最適化するための複数のアプローチが提供されています。読み取り専用ツールの並列実行、レスポンスサイズの削減によるトークンコスト最適化、そしてレイテンシ削減のためのベストプラクティスがあります。本番環境で高いスループットを実現するためには、これらの最適化が不可欠です。
🛠 使い方
並列実行とレスポンス最適化の例です。
まず、読み取り専用のツールを複数定義します。`get_user_profile(user_id: str)`、`get_user_orders(user_id: str)`、`get_user_preferences(user_id: str)` のように副作用のない関数を用意すると、ADKはこれらを並列に実行できます。次に、レスポンスサイズを削減するツール設計として `search_products(query: str, limit: int = 5)` を定義し、戻り値では `id`、`name`、`price` など必要なフィールドのみを返し、画像URLや説明文全文、メタデータ等は省略します。最後に `Agent` を `name="customer_service"`、`model="gemini-2.5-flash"` で作成し、`tools` リストにこれら4つの関数を渡します。
🏗 実践的な使い方
**並列実行の判断基準**: 副作用がなく、互いに依存しないツールは並列実行が安全です。LLMは複数のツールを同時に呼び出すことができ、ADKがそれらを並列に実行します。データの取得系ツール(GET相当)は並列実行の良い候補です。
並列実行に適した設計として、互いに独立した `get_weather(city: str)`、`get_news(topic: str)`、`get_stock_price(symbol: str)` のようなツールを定義します。各ツールはそれぞれ天気情報、ニュース記事、株価をdictで返すだけの読み取り専用関数です。LLMがこれら3つを同時に呼び出すと、ADKが自動的に並列で実行します。
**レスポンスサイズの最適化**: ツールの戻り値はLLMのコンテキストウィンドウを消費します。不要なフィールドの除外、データの要約、ページネーションの実装でトークンコストを大幅に削減できます。
**レイテンシ最適化のチェックリスト**:
1. キャッシュ可能な結果はキャッシュする
2. 外部API呼び出しにタイムアウトを設定する
3. 不要に大きなデータを返さない
4. 複数の小さなツールに分割して並列実行を促す
💡 ユースケース
📊 ダッシュボード用の複数データソース並列取得
🔍 検索結果のフィールド絞り込みによるトークン節約
⚡ マイクロサービス間の並列API呼び出し
💰 大量リクエスト環境でのトークンコスト最適化
⚠️ 注意点
- 副作用のあるツール(書き込み・削除)を並列実行すると、競合状態が発生する可能性があります。書き込み系ツールは逐次実行を推奨します。
- レスポンスを削減しすぎると、LLMが十分な情報を得られず、ユーザーへの回答品質が低下する場合があります。必要な情報は確実に含めてください。
- ツールのタイムアウトが短すぎると、正常なレスポンスも中断される可能性があります。適切なタイムアウト値を設定しましょう。
✨ 小さな最適化の積み重ねが、本番環境での大きなパフォーマンス差を生みます。まずはレスポンスサイズの見直しから始めてみましょう!
#
ADK# #
AIAgent#