Register and share your invite link to earn from video plays and referrals.

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
Joined May 2026
280 Following    415 Followers
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントのツール実行が遅いと感じたことはありませんか?並列実行で劇的に高速化できるかもしれません。 ADK 2.0(v1.10.0以降)では、複数のファンクションツールを並列に実行する仕組みが提供されています。async関数の活用、CPU集約処理のオフロード、プロンプト最適化を組み合わせることで、ツール実行のパフォーマンスを大幅に向上させられます。 📌 タイトル:ツールパフォーマンス最適化 🔗 URL: 🧩 概要 ADK 2.0のパフォーマンス最適化は、ファンクションツールの並列実行を中心とした機能です。v1.10.0以降で利用可能で、ツール関数を `async def` で定義することが前提となります。長時間ループ内では `asyncio.sleep(0)` でyieldし、CPU集約的な処理には `ThreadPoolExecutor` を使用します。さらに、プロンプトに「常に関数を並列で呼び出すこと」と指示を加えることで、LLMが積極的に並列呼び出しを行うよう誘導できます。 🛠 使い方 ツール関数は `async def` で定義し、I/O待ちの処理を並列化します。 ```python import asyncio from concurrent.futures import ThreadPoolExecutor async def fetch_data(url: str) -> str: """データを取得する(並列実行対応)""" async with aiohttp.ClientSession() as session: async with session.get(url) as resp: return await resp.text() # CPU集約処理はThreadPoolExecutorにオフロード executor = ThreadPoolExecutor(max_workers=4) async def heavy_computation(data: str) -> str: loop = asyncio.get_event_loop() result = await process_data, data) return result ``` 長時間ループでは `asyncio.sleep(0)` を挟んでイベントループに制御を返します。また、大量データはチャンクに分割して処理します。エージェントのプロンプトにも「always call functions in parallel」と明示し、ツールのdescriptionに並列実行のヒントを含めると効果的です。 🏗 本番システムへの組み込み方 ・すべてのツール関数を `async def` で定義し、同期的なブロッキング呼び出しを排除する ・CPU集約処理は `ThreadPoolExecutor` で別スレッドにオフロードし、イベントループをブロックしない ・大量データ処理はチャンク分割して段階的に処理する ・エージェントのシステムプロンプトに並列呼び出しの指示を含め、ツールのdescriptionにも並列実行可能である旨を記載する 💡 ユースケース 🔍 複数のAPIエンドポイントに同時リクエストして結果を集約する 📊 大量のデータセットをチャンク分割して並列に分析する 🌐 複数言語への翻訳を同時に実行する 📁 複数ファイルの読み込みと前処理を並列化する ⚠️ 注意点 並列実行にはツール関数を `async def` で定義することが必須です。同期関数では並列化の恩恵を受けられません。また、`ThreadPoolExecutor` のワーカー数はリソースに応じて適切に設定し、過剰な並列度によるメモリ枯渇やレートリミット超過に注意してください。プロンプトによる並列呼び出しの誘導はLLMの判断に依存するため、必ず並列化される保証はありません。 ✨ async関数とプロンプト最適化の組み合わせにより、エージェントのツール実行速度を劇的に改善できます。I/O待ちが多いワークフローでは特に効果を発揮します。 #ADK# #AIAgent#
Show more