第9章 · Best Practices

コスト最適化

Cost Optimization
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了

重要キーワード

Routing
ルーティング
簡単/難しいでモデルを使い分ける
Quota
クォータ
ユーザーごとの利用上限
Output Compression
出力圧縮
不要な前置きを省いて応答を短くする工夫

コスト最適化

LLM 運用は意外とコストがかさみます。以下のレバーを意識しましょう。

1. モデル選択 (Routing)

簡単なタスクは Haiku, ほどほどは 元コストの 5-10% まで圧縮可能。, 難しいときだけ klzzwxh:0002。

2 段階ルーティング

def route_and_answer(question: str) -> str:
    # 1. Haiku に難易度判定させる
    judge = client.messages.create(
        model="claude-haiku-4-5",
        max_tokens=10,
        messages=[{"role": "user", "content": f"次の質問の難易度を easy/hard で答えてください: {question}"}],
    )
    level = judge.content[0].text.strip().lower()

    # 2. 結果に応じて本処理モデルを選ぶ
    target = "claude-opus-4-7" if "hard" in level else "claude-sonnet-4-6"
    return client.messages.create(model=target, ...).content[0].text

2. Prompt Caching

固定的な system / RAG コンテキストはキャッシュ。 ヒット率 60-80% を目標に (第4章参照)。

3. Output 削減

  • 不要な前置き「承知しました、〜」を出さないよう指示。
  • 出力は 最小限の構造化形式 (JSON / 短いリスト)。
  • max_tokens を適切に絞る。
  • stop_sequences で早期停止。

4. Batch API

リアルタイム不要な処理は Batch で 50% 引き。

5. 入力削減

  • RAG のチャンク数を絞る (Top-K=3 で十分なことが多い)。
  • 長い履歴は要約で圧縮。
  • 不要な空白・コメントは事前に削除。
  • system に重複情報を書かない。

6. キャッシング (アプリレベル)

  • 同じ質問は アプリ側でも結果キャッシュ (Redis 等)。
  • 質問正規化 (lowercase, 句読点除去) でヒット率向上。
  • 短時間の再質問だけ 60 秒キャッシュなど。

7. ガードレール

  • ループや無限呼び出しを検知 (max iterations)。
  • ユーザーごとの クォータ を設ける。
  • 異常パターンをアラート。
  • 過剰な max_tokens をリクエスト時に拒否。

8. 監視と継続改善

  • リクエスト単位で usage を記録。
  • ダッシュボードで モデル別・エンドポイント別コスト を可視化。
  • 月次でチューニング。
  • 上位 10 ユーザーの使い方をスポットチェック。

コスト計算ツール

Anthropic 価格ページ で モデル別の token 単価を確認できます。 ざっくり計算式:
月間コスト ≈ (input_tokens × 入力単価) + (output_tokens × 出力単価)

典型的な節約パターン

施策 削減幅
Sonnet → Haiku への切替 60-80%
Prompt Caching (高ヒット率) 50-90%
Batch API 50%
出力圧縮 (前置き除去 + max_tokens 短縮) 10-30%
RAG Top-K 削減 (10→3) 20-50%
組み合わせれば 元コストの 5-10% まで圧縮可能。, 難しいときだけ klzzwxh:0002。

Anti-pattern

❌ 何でも Opus を使う ❌ システム入力をキャッシュしない ❌ 出力に max_tokens を設定しない ❌ ユーザー間で無制限に呼び出させる ❌ 監視せずデプロイ

試す

コスト改善の提案を Claude に。 ▶ コスト診断
Hands-on Exercise

演習: コスト推定スクリプト

リクエスト 1 件のトークン消費を見積もって月間コストを算出するスクリプトを書いてください。

入力: - system 文字数, 平均 user 文字数, 平均 assistant 文字数 - 1 日のリクエスト数 - モデル選択 (haiku/sonnet/opus) - prompt cache のヒット率

出力: 月間コスト (USD) と内訳。

▶ Playground を開いて実行

理解度チェック

4 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!