連載:AIに仕事を奪われる不安から始めるハーネス作成入門
第11回 / 全24回(週2回・12週間)
ローカルLLMを使うべき場面と外部LLMに任せる場面
AIハーネスを作り始めると、すぐに突き当たるのが「どのLLMを使うか」という選択です。OpenAIやClaudeのAPI、それともOllamaでローカルに動かすか——「全部APIでいいのでは?」「ローカルは難しそう」と迷う方は多いでしょう。
実は、どちらか一方に統一する必要はありません。大切なのは「このタスクにはこちら」と判断できる基準を持つことです。今回は、コスト・レイテンシ・プライバシー・精度の4軸で判断基準表を提示します。
📖 連載目次
| 回 | タイトル | 状態 |
|---|---|---|
| 1〜4 | 基礎編(不安の言語化〜ハーネスの概念) | ✅ |
| 5〜9 | 実践編(プロンプト設計〜MCP連携) | ✅ |
| 10 | 設計メモをKnowledge MCPへ登録する前提のMarkdownテンプレート | ✅ |
| 11 | ローカルLLMを使うべき場面と外部LLMに任せる場面 | 📖 |
| 12 | モデルルーターの疑似コードでLLM切替を設計する | ─ |
| 13〜24 | 運用設計・テスト・発展編 | ─ |
1. なぜモデル選択が重要なのか
AIハーネスの性能とコストは、選ぶLLMに大きく左右されます。高精度なモデルを全タスクに使えば安心ですが、APIコストがかさんだり、機密データを外部に送るリスクが生まれたりします。「とりあえず全部GPT-4」ではなく、タスクに応じた使い分けが、実用的なハーネスへの第一歩です。
2. ローカルLLMの特徴
Ollamaやllama.cppで動かすローカルLLMの特徴を整理します。
メリット
- データが外部に出ない(プライバシー確保)
- API料金がかからない(電気代のみ)
- オフラインで動作可能
- レイテンシが低い(ネットワーク往復なし)
デメリット
- 高性能GPUが必要(VRAM 8GB以上推奨)
- 最新モデルより精度が劣る場合がある
- モデルの更新・管理が自分の仕事
- コンテキストウィンドウが小さい傾向
3. 外部LLM(API)の特徴
OpenAI、Anthropic、GoogleなどのAPIサービスの特徴です。
メリット
- 最高水準の精度(GPT-4o, Claude 3.5等)
- GPU不要、すぐ始められる
- モデルの更新が自動
- 大きなコンテキストウィンドウ
デメリット
- 従量課金(大量処理で高額に)
- データを外部に送信する必要
- ネットワーク障害時に停止
- レートリミットあり
4. 判断基準表:4つの軸で比較
以下の表を、自分のプロジェクトに当てはめて判断してください。
| 判断軸 | ローカルLLM向き | 外部LLM向き |
|---|---|---|
| コスト | 大量処理・定常実行 | 少量・スポット利用 |
| レイテンシ | リアルタイム応答が必要 | 数秒の遅延が許容範囲 |
| プライバシー | 機密データを扱う | 公開情報のみ扱う |
| 精度 | 単純なタスク(分類・抽出) | 複雑な推論・生成 |
使い方のコツ: 各軸で“どちら寄りか”を判定し、3つ以上が同じ側に寄ればそちらを選ぶ、というシンプルなルールから始めるのがおすすめです。
5. 具体的なユースケース
判断基準表を実際のタスクに当てはめてみましょう。
| タスク | 推奨 | 理由 |
|---|---|---|
| ログの要約 | ローカル | 大量・定常実行、社内データ含む |
| コードレビュー | 外部 | 高い推論能力が必要 |
| メール下書き | 外部 | 自然な文章生成に強い |
| ドキュメント分類 | ローカル | 単純なタスク、機密文書含む |
| プロンプトのテスト | ローカル | 繰り返し実行でコストがかさむ |
| 複雑な分析レポート | 外部 | 大きなコンテキストと推論が必要 |
もちろん、これは絶対的な正解ではありません。プロジェクトの状況や予算、チームのポリシーによって判断は変わります。
6. ハイブリッド運用という選択肢
実際のハーネスでは、ローカルと外部を併用するハイブリッド構成が現実的です。
タスク受付
└─ タスク種別を判定
├─ 単純タスク → ローカルLLM(Ollama)
├─ 複雑タスク → 外部LLM(API)
└─ ローカル失敗時 → 外部LLMにフォールバック
この「フォールバック」がポイントです。ローカルLLMで失敗した場合に外部APIへ自動的に切り替える仕組みを入れておくと、信頼性が大幅に上がります。
7. コスト見積もりの考え方
外部LLMのコストを見積もる際の簡易計算式です。
# コスト見積りの簡易計算
def estimate_monthly_cost(
calls_per_day: int,
avg_input_tokens: int,
avg_output_tokens: int,
input_price_per_1k: float = 0.005, # USD
output_price_per_1k: float = 0.015, # USD
) -> dict:
"""月間APIコストの概算を返す"""
monthly_calls = calls_per_day * 30
input_cost = (avg_input_tokens / 1000) * input_price_per_1k * monthly_calls
output_cost = (avg_output_tokens / 1000) * output_price_per_1k * monthly_calls
total = input_cost + output_cost
return {
"monthly_calls": monthly_calls,
"input_cost_usd": round(input_cost, 2),
"output_cost_usd": round(output_cost, 2),
"total_usd": round(total, 2),
}
# 例: 1日50回、入力500トークン、出力200トークン
print(estimate_monthly_cost(50, 500, 200))
# => {'monthly_calls': 1500, 'input_cost_usd': 3.75, 'output_cost_usd': 4.5, 'total_usd': 8.25}
「月額この程度なら全部APIでいい」「これ以上ならローカルに移す」という判断の目安になります。
8. 始めるならどちらから?
迷ったら、以下のステップをおすすめします。
- まず外部APIで動くものを作る(始めやすさ優先)
- コストやプライバシーが課題になったらローカルを検討
- タスクごとに切り替える仕組み(モデルルーター)を設計
「最初から完璧な構成を」と考える必要はありません。動くものを作ってから最適化する、というアプローチの方が、学びも深くなります。
9. 判断を設計メモに残す
前回のテンプレートを使って、モデル選択の判断も記録しておきましょう。
---
title: "メインLLMの選定: Ollama + llama3.1 vs OpenAI API"
category: "model"
status: "approved"
created: "2025-06-05"
tags:
- モデル選択
- コスト最適化
---
## 背景・動機
プロンプトテストの繰り返し実行でAPIコストが月$30を超えた。
テスト用タスクをローカルに移行することを検討。
「なぜローカルに切り替えたのか」を後から検索できる状態にしておくことが、チーム開発でも個人開発でも役立ちます。
10. よくある誤解と注意点
- 「ローカルは難しい」→ Ollamaならコマンド一発で起動できます。設定の難易度は以前より大幅に下がっています
- 「APIはセキュリティが心配」→ 各プロバイダーのData Processing Addendumを確認しましょう。用途によっては問題ない場合もあります
- 「コストは小さいからAPIで充分」→ スケールしたときの見積もりを先に行っておくと安心です
11. まとめ
今回のポイントを整理します。
- ローカルLLMと外部LLMは「どちらが正解」ではなく、タスクに応じて使い分ける
- コスト・レイテンシ・プライバシー・精度の4軸判断基準表で判断する
- ハイブリッド構成(ローカル + 外部フォールバック)が現実的
- まず外部APIで動くものを作り、必要に応じてローカルに移行
- 判断の経緯は設計メモに記録しておく
🔜 次回予告
第12回:モデルルーターの疑似コードでLLM切替を設計する
今回の判断基準表を、実際のコードで実現してみましょう。Pythonの疑似コードで「モデルルーター」を設計します。タスク種別に応じてローカルLLMとAPI LLMを自動的に切り替える仕組みを、コードを読みながら一緒に理解していきます。
「ルーティング条件をどう定義するか」「フォールバックをどう実装するか」——実装の勘所を具体的に解説します。
連載:AIに仕事を奪われる不安から始めるハーネス作成入門
著者: @singula00991| 週2回更新
次回は「ハーネス用のディレクトリ構成とREADMEを作る」を予定しています。