Mímisbrunnr知恵の泉

← MLOps 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:LLMアプリの構成(プロンプト・推論・オーケストレーション) | 関連:評価・ハルシネーション・安全性(機械学習)

⚠️ 要最新確認:モデル単価・評価ツール・ガードレール製品は変化が速い。数値・具体名は執筆時点(2026-06)の例。

要点(BLUF)

1. なぜ LLM の評価は難しいのか

分類なら「正解と一致したか」で精度が出ます。しかし「この文章を要約せよ」の出力は、正解が一意でなく、複数の良い答えがあります。だから従来の精度では測れません。LLM 評価は「何をもって良しとするか」を明示的に定義することから始まります。

2. 評価の3手法

手法やり方長所短所
参照ベース正解例と比較(類似度等)自動・安価正解が要る・表現揺れに弱い
LLM-as-judge別のLLMに基準で採点させる柔軟・スケール採点者LLMのバイアス・コスト
人手評価人がルーブリックで採点最も信頼できる高コスト・遅い

実務では「LLM-as-judge で広くスクリーニング+人手で抜き取り検証」のように組み合わせます(要最新確認)。

3. ガードレールとコスト管理

flowchart LR
  IN["ユーザー入力"] --> GI["入力ガード:禁止内容 PII 注入検知"]
  GI --> LLM["LLM推論"]
  LLM --> GO["出力ガード:幻覚 有害 形式逸脱を検査"]
  GO -->|"合格"| OUT["応答"]
  GO -->|"不合格"| FIX["再生成 or 定型応答"]
  LLM -.->|"トークン量を計測"| COST["コスト監視・上限"]

4. 動く最小例:コスト試算とルーティング、簡易ガードレール

トークンからコストを試算し、ルーティングで節約する計算と、簡易な出力ガードを実装します(単価は例・要最新確認)。

# モデル単価(1000トークンあたりドル):例。実際は要最新確認
PRICING = {
    "small": {"in": 0.0005, "out": 0.0015},
    "large": {"in": 0.005, "out": 0.015},
}

def cost(model, in_tokens, out_tokens):
    p = PRICING[model]
    return in_tokens/1000*p["in"] + out_tokens/1000*p["out"]

def route(query_len):
    # 短い・単純な問いは small、長い・複雑は large(簡易ルーティング)
    return "small" if query_len < 200 else "large"

# 1000リクエスト:80%が短文、20%が長文と仮定
n = 1000
short, long = int(n*0.8), int(n*0.2)
# 全部 large に投げた場合 vs ルーティングした場合
all_large = short*cost("large", 150, 300) + long*cost("large", 500, 600)
routed = short*cost("small", 150, 300) + long*cost("large", 500, 600)

print(f"全リクエストを large : ${all_large:.2f}")
print(f"ルーティング適用     : ${routed:.2f}")
print(f"削減率               : {(1-routed/all_large)*100:.1f}%")

# 簡易出力ガード:禁止語・最大長・出典の有無を検査
def output_guard(text, has_citation):
    issues = []
    if any(w in text for w in ["絶対確実", "100%保証"]):
        issues.append("過大表現")
    if len(text) > 2000:
        issues.append("長すぎ")
    if not has_citation:
        issues.append("出典なし")
    return (len(issues) == 0), issues

print("\n出力ガード(健全):", output_guard("MLOpsは運用規律です。", has_citation=True))
print("出力ガード(危険):", output_guard("これは100%保証された結果です。", has_citation=False))

出力:

全リクエストを large : $6.50
ルーティング適用     : $2.72
削減率               : 58.2%
出力ガード(健全): (True, [])
出力ガード(危険): (False, ['過大表現', '出典なし'])

出力の意味:簡単な問い(80%)を安い small モデルにルーティングするだけで、コストを 58.2% 削減できました(単純な問いに高価なモデルを使うのは無駄)。出力ガードは「100%保証」という過大表現と出典欠如を捉えて弾きました——幻覚や過剰な断定をユーザーに届ける前に止めます。コストはルーティング・キャッシュで下げ、品質はガードで守る——これが LLM 運用の2大レバーです(単価は例なので実装時は要最新確認)。

5. 運用の勘所

なぜそうするのか

評価・ガードレール・コストを運用の柱にするのは、LLM の3大リスク(品質が測りにくい・危険出力・コスト爆発)に直接対応するためです。出力が確率的で正解が一意でないから、評価を明示的に設計しないと品質を管理できません。自信ありげに嘘をつく(幻覚)から、ガードで危険出力を止めないとユーザーに害が及びます。トークン課金で従量だから、監視・ルーティングなしではコストが青天井になります。この3つは LLM を「実験」から「本番運用」に引き上げるための必須装置です。

⚠️ よくある落とし穴

対応 lab

関連ノート