model-audit について
コードベース内の AI モデル設定と呼び出しを調べ、コストを見積もって最適化候補を特定するスキルです。モデル利用状況を確認する開発者向けです。
主な機能
- 01モデル設定と AI 呼び出しの検索
- 02別名から実際のモデル名への対応付け
- 03価格表に基づく呼び出しコストの推定
- 04キャッシュと Batch API 候補の確認
- 05モデル選定と設定の問題の指摘
活用シーン
- 01リリース前のモデル利用状況の確認
- 02機能ごとのモデル呼び出しコストの推定
- 03キャッシュに適した反復プロンプトの特定
- 04ハードコードや不統一なモデル選定の発見
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tushaarmehtaa/ tushar-skills --skill model-auditインストール後、Claude Code で/model-auditを入力して読み込まれたか確認します。
詳細
コードベース内のすべての AI モデル呼び出しを監査します。モデル名だけでなく、実際のコスト計算を含むルーティングテーブルを出力してください。
フェーズ 1 — モデル設定を探す
モデルが定義されている場所を検索します:
grep -r "gpt-4\|claude\|gemini\|anthropic\|openai\|mistral\|groq\|llama" \
--include="*.py" --include="*.ts" --include="*.js" --include="*.env*" \
-l 2>/dev/null | head -30
grep -rn "MODEL\|model_config\|AI_MODEL\|LLM_MODEL\|OPENAI_MODEL\|ANTHROPIC_MODEL" \
--include="*.py" --include="*.ts" --include="*.env*" -l 2>/dev/null
返されたファイルをすべて読みます。エイリアス → 実際のモデル文字列を対応付けます。例:AI_MODEL="claude-sonnet-4-6" または const FAST_MODEL = "gpt-4o-mini"。
フェーズ 2 — すべての AI 呼び出しを探す
# Anthropic
grep -rn "messages\.create\|anthropic\.messages\|client\.messages" \
--include="*.py" --include="*.ts" --include="*.js"
# OpenAI
grep -rn "chat\.completions\.create\|openai\.chat\|completion\.create" \
--include="*.py" --include="*.ts" --include="*.js"
# Google / Gemini
grep -rn "generate_content\|GenerativeModel\|genai\." \
--include="*.py" --include="*.ts" --include="*.js"
# Embeddings
grep -rn "embeddings\.create\|embed_content\|embedding" \
--include="*.py" --include="*.ts" --include="*.js"
呼び出しごとに、以下を記録します:
- 呼び出しをトリガーする機能/ファイル/関数
- モデルのエイリアスまたはリテラルのモデル文字列
- タスクの種類:生成、分類、要約、埋め込み、ツール使用、推論
- おおよそのプロンプトサイズ:小(<1K トークン)、中(1~10K)、大(>10K)
- 頻度:リクエストごと、ユーザー操作ごと、バックグラウンドジョブ、1 回限り
フェーズ 3 — 価格リファレンス(2026 年)
Anthropic Claude
| モデル | 入力 $/1M | 出力 $/1M | キャッシュ書き込み $/1M | キャッシュ読み取り $/1M | コンテキスト |
|---|---|---|---|---|---|
| claude-fable-5 | $10.00 | $50.00 | $12.50 | $1.00 | 1M |
| claude-opus-4-8 | $5.00 | $25.00 | $6.25 | $0.50 | 1M |
| claude-sonnet-4-6 | $3.00 | $15.00 | $3.75 | $0.30 | 1M |
| claude-haiku-4-5 | $1.00 | $5.00 | $1.25 | $0.10 | 200K |
プロンプトキャッシュを使用すると、キャッシュ読み取りの料金はキャッシュ未使用の入力と比べて約 90%節約できます。キャッシュ可能なプレフィックスには 1024 トークン以上が必要です。
OpenAI
| モデル | 入力 $/1M | 出力 $/1M | キャッシュ済み入力 $/1M | 備考 |
|---|---|---|---|---|
| gpt-4o | $2.50 | $10.00 | $1.25 | 画像認識に対応 |
| gpt-4o-mini | $0.15 | $0.60 | $0.075 | 大量処理向けの主力モデル |
| gpt-4.1 | $2.00 | $8.00 | $0.50 | より長いコンテキスト、高いコーディング能力 |
| gpt-4.1-mini | $0.40 | $1.60 | $0.10 | 指示に従う能力が高い |
| gpt-4.1-nano | $0.10 | $0.40 | $0.025 | 最安、短いタスク向け |
| o4-mini | $1.10 | $4.40 | $0.55 | 推論向け、低コスト版 |
| o3 | $10.00 | $40.00 | $2.50 | 高負荷の推論タスク |
Batch API:すべてのモデルが 50%割引になります。最小レイテンシは約 24 時間です。オフライン/非同期のワークロードに使用します。
Google Gemini
| モデル | 入力 $/1M(≤200K) | 入力 $/1M(>200K) | 出力 $/1M | 備考 |
|---|---|---|---|---|
| gemini-2.5-pro | $1.25 | $2.50 | $10.00 | 推論に最適 |
| gemini-2.5-flash | $0.15 | $0.15 | $0.60 | 高速、マルチモーダル |
| gemini-2.0-flash | $0.10 | $0.10 | $0.40 | 最安の Gemini |
コンテキストキャッシュ:キャッシュは無料で、トークンごとに 1 時間単位で課金されます(2.5 Pro は約 $1/1M トークン/時間)。
フェーズ 4 — ルーティングテーブルを作成する
次のテーブルを出力します:
AI MODEL ROUTING — [product name]
════════════════════════════════════════════════════════════════════════════
FEATURE TASK TYPE MODEL $/1K CALLS
────────────────────────────────────────────────────────────────────────────
[feature] [task] [actual model string] $[estimate]
[feature] [task] [actual model string] $[estimate]
════════════════════════════════════════════════════════════════════════════
COST MATH (per call):
Input tokens × (input rate / 1M) + Output tokens × (output rate / 1M)
Example: 2K in, 500 out on claude-sonnet-4-6 = (2000 × $3/1M) + (500 × $15/1M)
= $0.006 + $0.0075 = $0.0135/call
UNUSED CONFIG (defined, never called):
[alias] → [model string]
DEPRECATED / RENAMED MODELS:
⚠️ [any model string that no longer exists or has been superseded]
フェーズ 5 — キャッシュの機会を確認する
大きく、安定したプレフィックス(システムプロンプト、ドキュメント、スキーマ、例)を持つ呼び出しごとに、以下を確認します:
- プレフィックスは 1024 トークン以上ですか? → プロンプトキャッシュの候補
- プレフィックスはユーザーごと、またはリクエストごとに変わりますか? → キャッシュ不可
- 毎回同じシステムプロンプトを使っていますか? → キャッシュすれば、そのトークン分のコストを約 90%節約できます
大きなシステムプロンプトを使用しているにもかかわらず、cache_control を使用していない呼び出しに印を付けます。
Anthropic のパターン:
{"role": "system", "content": [{"type": "text", "text": "...", "cache_control": {"type": "ephemeral"}}]}
OpenAI(自動):gpt-4o/gpt-4.1 では、繰り返し使われるプレフィックスの入力キャッシュが自動的に行われます。
フェーズ 6 — Batch API の候補を確認する
次の条件を満たす呼び出し:
- ユーザー向けではない(バックグラウンドジョブ、スケジュール済みタスク、データセット処理)
- 数時間のレイテンシを許容できる
- 1 日あたりの呼び出し数が 100 件を超える
→ Batch の候補として印を付けます。Batch は 50%安くなります(OpenAI)。Anthropic では最大 50%安くなります。
フェーズ 7 — フラグの適正化
各呼び出しについて、そのタスクに対してモデルの性能が過剰または不足していないか確認します。
ダウングレード候補(単純なタスクに高価なモデルを使用している場合):
- 分類または抽出 → gpt-4.1-nano、haiku、または gemini-2.0-flash
- 回答の範囲が既知の短い Q&A → gpt-4o-mini または haiku
- 埋め込みの生成 → text-embedding-3-small(OpenAI)、$0.02/1M
- 短いテキストの要約 → haiku、gpt-4.1-mini
高性能モデルを維持する場合:
- 複数ステップの推論またはツール使用の連鎖
- ユーザー向けの創作や長文の生成
- 正確性が重要なコード生成
- 失敗した場合の再試行コストが高いタスク
アップグレード候補(安価なモデルが気づかれないまま失敗している場合):
- 複雑なスキーマを扱うツール使用 → 最低でも sonnet/gpt-4o が必要です
- 長文脈の推論(50K トークン超) → 長文脈の想起性能が実証されたモデルが必要です
- ノイズの多い入力からの構造化抽出 → 安価なモデルはフィールド名を幻覚することがあります
フェーズ 8 — 最終フラグ
OPTIMIZATION FLAGS:
CACHE [feature] — large static system prompt, not cached. Estimated savings: $X/day
BATCH [feature] — background job, 50% savings available
OVERFIT [feature] — using [expensive model] for [simple task], [cheap model] would work
SCATTER [feature] — hardcoded model string outside central config, won't update on model changes
DEPR [model string] — deprecated, may stop working; migrate to [replacement]
INCON [task type] — same task using different models in different files: [file A] uses X, [file B] uses Y