Claude Code

ローカルLLMとClaude APIを月1000回使い続けて、コストの現実が見えてきた話

ローカルLLMとClaude APIを月1000回使い続けて、コストの現実が見えてきた話

この記事は約 6 分で読めます

📖 目次
  1. 📌 正直に言う
  2. 📌 使った構成と測定条件
  3. 📌 コスト実測値
  4. 📌 数字だけ見ると「全部Ollama」が正解に見える
  5. 📌 結局どう振り分けたか
  6. 📌 キャッシュで劇的に変わった話
  7. 📌 Ollama の「隠れコスト」
  8. 📌 まとめ

正直に言う

最初は「Ollamaでほぼ無料でいける」と思ってた。

実際、ローカルLLMは電気代だけで動く。APIクレジットは消えない。月5万円収益化を目指してパイプラインを組んでいると、「タスクに応じてどちらを使うか」は死活問題になってくる。それで3ヶ月ほど、ちゃんとログを取りながら使い続けた。

結論を先に言うと、「全部Ollamaに置き換えれば安くなる」は半分正解で半分嘘だった。


使った構成と測定条件

MacBook Pro M5 32GB。ローカルLLMは qwen3.5:9b をメインで使っている。Claude は Haiku と Sonnet を用途別に振り分け。呼び出しはすべて 01_Scripts/lib/ai_client.py 経由で一元管理している。

# ai_client.py の呼び出し側
result = await ai_client.generate(
    task="bsky_post",
    prompt=prompt,
    prefer_claude=True  # False にすれば即 Ollama へ
)

ai_config.yaml でタスクごとのモデル割り当てを定義してあって、prefer_claude: false にすれば全パイプラインがOllamaに切り替わる設計。この切り替え機能があったおかげで、ABテストみたいにデータを取れた。

月あたりの呼び出し数は大体こんな感じだった。

BSky投稿生成:       約300回
X投稿生成:          約200回
note記事生成:        約80回
ブログ記事:          約40回
KDP本文:             約30回
品質チェック:        約250回
Discord通知文:       約150回
その他(雑):        約50回
------------------------------
合計:               約1100回/月

コスト実測値

Claude API側は、Haiku と Sonnet で単価が全然違う。

Haiku(claude-haiku-4-5)は入力1Mトークンあたり$0.80、出力が$4.00。短い投稿文を大量生成するのに使ってるので、1回あたり平均200〜400トークンくらい。

Sonnet(claude-sonnet-4-6)は入力$3.00、出力$15.00。記事生成に使うから1回2000〜4000トークン。

3ヶ月分の領収書をまとめたら、月あたり平均で Claude 側に$8〜12かかっていた。円換算で1,200〜1,800円くらい。

Ollama側は、M5で qwen3.5:9b を動かしたときの電力消費が大体15〜25W増加(アイドル比較)。1回の推論が平均5〜15秒。月1100回だと、電気代換算で30〜60円程度。


数字だけ見ると「全部Ollama」が正解に見える

1,200円 vs 50円。差は圧倒的だ。

ところが実際にやってみたら違った。

prefer_claude: false にして全タスクをOllamaに切り替えた週があった。note記事の品質が落ちた。具体的には、文体が均一になりすぎて「AI感」が強くなった。BSky投稿の「絵文字✨のみ」ルールを守れないことが増えた。品質チェック(multi_agent_quality.py)のスコアが平均Bから平均Cに下がった。

Claude使用時: 平均スコア 81.3/100
Ollama使用時: 平均スコア 67.4/100

スコアが下がると投稿キューに積まれるまでに時間がかかる。投稿頻度が落ちる。エンゲージが下がる。収益化の速度が鈍る。——という連鎖が起きた。


結局どう振り分けたか

今の設定はこうなっている。

タスク モデル 理由
BSky/X短文 Haiku 安くて速い、品質差が小さい
note/ブログ Sonnet 品質差が顕著に出る
KDP本文 Sonnet 文章の一貫性が必要
品質チェック Haiku 採点精度はHaikuでも十分
ログ解析/画像判定 Ollama 精度より速度優先
Discord通知文 Ollama 短くてフォーマットが固定

短文でフォーマットが決まってるやつはOllamaで十分だった。「ログ異常を検知してDiscordに通知する」みたいな処理は、文章の質より確実性のほうが大事だから。

一方、読み物として成立させたいnote記事やKDPは、Sonnetとの差が体感でわかるレベルで出た。ここをケチると直接収益に影響する。


キャッシュで劇的に変わった話

途中でプロンプトキャッシュを入れた。

システムプロンプトが長いタスク(ペルソナ設定を毎回渡すやつ)は、キャッシュヒット率が上がると入力コストが90%オフになる。ai_client.py にキャッシュ制御を入れてから、月のAPI費用が$12→$7に落ちた。

# キャッシュ対象にするシステムプロンプト
system_content = [
    {
        "type": "text",
        "text": LONG_SYSTEM_PROMPT,
        "cache_control": {"type": "ephemeral"}
    }
]

これは体感コストが一番変わった施策だった。ペルソナ文が長ければ長いほど効く。


Ollama の「隠れコスト」

Ollama側に見えないコストが2つある。

ひとつは「遅さ」。qwen3.5:9b でブログ記事を生成すると4〜8分かかることがある。Claude Sonnetだと30〜60秒。パイプラインが詰まると launchd のタイムアウトに引っかかるし、複数タスクが同時に走ると順番待ちが発生する。

もうひとつは「試行回数の消費」。品質スコアがCやDだと自動リトライが走る。Claudeで1回で通るところが、Ollamaだと2〜3回回ることがあった。トークンは無料でも時間と電力は使う。


まとめ

「ローカルLLMを使えばAPIコストがゼロになる」は本当だけど、「使えばいいというものでもない」が正直な感想。

月1,000〜1,100回使って、最終的に落ち着いたのはハイブリッド構成。短文・分類・通知はOllama、長文・品質が問われるコンテンツはClaude。これで月のAPI費用は$6〜9程度に収まってる。

ローカルLLMの価値は「量産の自由度」にある。試行を繰り返しても課金されないから、プロンプトの実験がしやすい。品質を詰めた後に、そのプロンプトをClaudeに渡す——という使い方が一番コスパよかった。

完璧な切り替えじゃなくて、タスクに合った使い分けが答え。✨



📘 この記事のテーマをさらに深掘りした本

ローカルLLM完全攻略:M2 Macで動かすAIシステム構築術

Ollamaのメモリ管理から量産パイプラインまで詰まりポイントを全解説

Kindleで読む →


👨‍💻
一ノ瀬泰斗
AI自動化エンジニア / Python個人開発者

Claude Code × Ollama × launchd で SNS・ブログ・KDPを全自動化。実測データと失敗談を軸に、月5万円収益化のリアルな記録を発信中。


関連記事