# ADK 2.0の便利だけど知られていない機能
🌍 エージェントのプロンプトを手作業で調整する代わりに、自動で最適化してくれたら効率的だと思いませんか?
ADK 2.0の最適化機能は、サンプラーとエージェントオプティマイザーを組み合わせて、エージェントのインストラクションを自動的に改善する仕組みです。
📌 タイトル:最適化 (Optimization)
🔗 URL:
🧩 概要
最適化機能は、Samplers(候補の評価)とAgent Optimizers(インストラクションの改善)の2つのコンポーネントで構成されます。`LocalEvalSampler` は候補エージェントを評価データセットに対して実行しスコアを算出します。オプティマイザーとしては、GEPAアルゴリズムを用いてルートエージェントのプロンプトを最適化する `GEPARootAgentPromptOptimizer` と、「実行→評価→批評→書き直し」の反復サイクルで改善する `SimplePromptOptimizer` が用意されています。最適化の結果は `OptimizerResult` に格納され、スコア付きの最適化済みエージェントが得られます。
🛠 使い方
CLIから `adk optimize` コマンドで最適化を実行できます。
```python
import asyncio
from google.adk.evaluation.eval_config import EvalConfig
from google.adk.evaluation.local_eval_sets_manager import LocalEvalSetsManager
from google.adk.optimization.local_eval_sampler import LocalEvalSampler
from google.adk.optimization.local_eval_sampler import LocalEvalSamplerConfig
from google.adk.optimization.simple_prompt_optimizer import SimplePromptOptimizer
from google.adk.optimization.simple_prompt_optimizer import (
SimplePromptOptimizerConfig,
)
# サンプラーの設定
sampler_config = LocalEvalSamplerConfig(
eval_config=EvalConfig(criteria={"response_match_score": 0.75}),
app_name="my_agent",
train_eval_set="train_eval_set",
)
sampler = LocalEvalSampler(sampler_config, LocalEvalSetsManager(agents_dir="."))
# オプティマイザーの実行
optimizer = SimplePromptOptimizer(config=SimplePromptOptimizerConfig())
result = sampler))
# 最適化されたエージェントとスコアを取得
best = result.optimized_agents[0]
best_agent = best.optimized_agent
print(f"Score: {best.overall_score}")
```
🏗 本番システムへの組み込み方
・定期的に最適化を実行し、評価データセットの更新に合わせてプロンプトを継続的に改善する
・`SimplePromptOptimizer` で素早くイテレーションし、`GEPARootAgentPromptOptimizer` で本格的な探索を行う
・最適化前後のスコアを比較し、改善が確認できた場合のみプロンプトを更新する
・評価データセットを実際のユーザーインタラクションから構築し、実用的な最適化を実現する
💡 ユースケース
📈 エージェントのプロンプトを評価スコアに基づいて自動改善する
🔬 複数のプロンプト候補を体系的に比較して最良のものを選定する
🔄 モデル変更やAPI仕様変更後に、プロンプトを新環境に最適化し直す
🎯 特定のタスク(コード生成、要約、分類など)に特化したプロンプトチューニングを行う
⚠️ 注意点
`GEPARootAgentPromptOptimizer` はルートエージェントのプロンプトのみを最適化対象とします。サブエージェントのプロンプト最適化には対応していないため、必要に応じて個別に最適化を行ってください。また、最適化には複数回の評価実行が必要となるため、LLMのAPI呼び出しコストに注意が必要です。
✨ 最適化機能を活用すれば、試行錯誤に頼っていたプロンプト改善をデータ駆動で自動化できます。定期的な最適化サイクルで、エージェントの品質を継続的に向上させましょう。
#
ADK# #
AIAgent#