コスト・レイテンシ最適化
「エージェントは品質もHITLもできた。最後は運用コストとレスポンス速度だ。」
田中VPoEが運用コスト表を見せる。
「LLM APIの呼び出しコスト、SHAP分析の計算時間。これらを最適化しないと、営業チームが日常的に使うツールにはならない。」
コスト最適化
LLM API コストの削減
| 手法 | 効果 | 実装難易度 |
|---|---|---|
| モデル選択の最適化 | コスト50-80%削減 | 低 |
| プロンプトの簡素化 | トークン数30%削減 | 低 |
| キャッシング | API呼び出し70%削減 | 中 |
| バッチ処理 | 単価低下 | 中 |
# モデル選択の最適化
# 意図分類: 安価なモデルで十分
# 応答生成: 高品質モデルが必要
model_config = {
"classify_intent": "gpt-4o-mini", # 安価・高速
"respond": "gpt-4o", # 高品質
}
キャッシング戦略
from functools import lru_cache
import hashlib
import json
class PredictionCache:
def __init__(self, max_size=1000):
self.cache = {}
self.max_size = max_size
def _key(self, features):
return hashlib.md5(json.dumps(features, sort_keys=True).encode()).hexdigest()
def get(self, features):
return self.cache.get(self._key(features))
def set(self, features, result):
if len(self.cache) >= self.max_size:
oldest = next(iter(self.cache))
del self.cache[oldest]
self.cache[self._key(features)] = result
cache = PredictionCache()
レイテンシ最適化
ボトルネック分析
import time
def profile_pipeline(app, query):
"""各ノードの実行時間を計測"""
timings = {}
start = time.time()
result = app.invoke({"query": query})
total = time.time() - start
# 典型的な内訳
print(f"総実行時間: {total:.2f}s")
print(f" 意図分類(LLM): ~0.5s")
print(f" データ取得: ~0.01s")
print(f" 前処理: ~0.01s")
print(f" 予測: ~0.01s")
print(f" SHAP分析: ~0.5-2.0s")
print(f" 応答生成(LLM): ~1.0-2.0s")
最適化手法
# 1. SHAP分析の事前計算(バッチ処理)
def precompute_shap(model, X_all):
"""全顧客のSHAP値を事前計算"""
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_all)
return shap_values # キャッシュに保存
# 2. 意図分類のルールベース化(LLM呼び出し不要)
import re
def rule_based_intent(query: str) -> str:
"""ルールベースの意図分類(LLM不要)"""
if re.search(r'\d{4}-[A-Z]{5}', query):
return "individual"
elif any(kw in query for kw in ["セグメント", "全体", "分布"]):
return "segment"
elif any(kw in query for kw in ["一括", "バッチ", "リスト"]):
return "batch"
return "general"
コストとレイテンシのトレードオフ
| 設定 | コスト | レイテンシ | 品質 |
|---|---|---|---|
| 全LLM(GPT-4o) | 高 | 遅い | 最高 |
| ハイブリッド(mini+4o) | 中 | 中程度 | 高 |
| ルールベース+mini | 低 | 速い | 中 |
| 全キャッシュ | 最低 | 最速 | 古い可能性 |
まとめ
| 項目 | ポイント |
|---|---|
| モデル選択 | タスクに応じてmini/標準を使い分け |
| キャッシング | 同一顧客の再問い合わせを高速化 |
| バッチ処理 | SHAP値の事前計算 |
| ルールベース | 意図分類をLLM不要に |
| トレードオフ | コスト-速度-品質のバランスを取る |
チェックリスト
- LLM APIコストの削減手法を3つ挙げられる
- キャッシング戦略を実装できる
- ボトルネックを特定し最適化できる
- コスト-速度-品質のトレードオフを説明できる
次のステップへ
最適化の方針が固まった。次は演習で、品質改善計画を策定してみよう。
推定読了時間: 15分