# AIエージェントをソフトウェアに組み込むプラクティス
# Model Router & Adaptive Effort|モデル段階化と適応的努力配分
🎯 全リクエストを最高性能モデルで処理していませんか?
タスク難易度に応じてモデルを使い分けるだけで、品質を落とさずにコストを大幅に削減できます。実運用ではリクエストの60〜80%が軽量モデルで十分に処理できることが多いです。
🔥 解決する課題
すべてのリクエストを最高性能モデルで処理すると月間予算を容易に超過します。一方、すべてを軽量モデルに寄せると複雑な推論や計画タスクで品質が崩壊します。大型モデルはレイテンシも大きく、単純なタスクにまで使うとシステム全体の応答速度が不必要に悪化します。「コストか品質か」の二者択一に陥るのが問題です。
💡 提案パターン
タスクの難易度・種別・リスクに応じて呼び出すモデルを動的に選択します。まず軽量モデルで試行し、信頼度が低ければ上位モデルへエスカレーションする構成です。ルーターはまずルールベース(入力長・タスク種別・キーワード)で始め、精度不足なら分類器を追加します。2〜3層(小型・中型・大型)が運用しやすい出発点です。
✅ 選定条件
使うとき:
- タスクの種類が多岐にわたり、定型処理と高度処理が混在している
- 月間コスト上限が明確に存在する
- トラフィックが十分にあり、ルーティング機構のコストを回収できる
使わないとき:
- 全リクエストが同程度の難易度 → 単一モデルで十分
- 全件で品質を1%も落とせない → 常に最高性能モデルを使い、キャッシュでコスト削減
- リクエスト量が少なく(月数百件以下)、ルーティング開発コストが節約額を上回る
⚠️ 落とし穴
- ルーター自身のコストを無視しないでください。LLMをルーターに使うと、分類コストだけで軽量モデル1回分に匹敵する場合があります。まずルールベースで始めてください
- 信頼度の定義を明確にしてください。構造化出力のパースエラー率・回答の拒否率・内部ログ確率など、測定可能な指標に落とし込まないと運用できません
- エスカレーション無限ループを防いでください。最上位モデルでも信頼度が低い場合の打ち切り条件を設定し、人間エスカレーションまたはエラー返却にしてください
🔧 実装方針
- ルーターはまずルールベース(入力長・タスク種別・キーワード)で実装し、分類精度が不足した場合にのみメタ分類器へ昇格させます
- モデル階層は2〜3層(小型・中型・大型)を共通インターフェースで抽象化し、プロバイダ差し替えを容易にします
- 軽量モデルの応答に対して信頼度チェック(パースエラー率・拒否率・ログ確率)を行い、閾値未満なら上位モデルへ自動エスカレーションします
- エスカレーションは最上位で打ち切り、それでも信頼度が低い場合は人間エスカレーションまたはエラー返却にします
- ルーティング比率・コスト・レイテンシを定期的に監視し、モデルバージョン変更によるドリフトに備えて閾値を再調整する運用体制を整えます
#
AIエージェント# #
ソフトウェアアーキテクチャ#