TL;DR
- OpenRouter の
:freeモデルは API キーさえあれば月額 $0 で強力な LLM を呼べる - Claude Code の
ANTHROPIC_BASE_URLを OpenRouter に向けるだけでモデルを差し替えられる - Qwen3 235B / DeepSeek R1 / Llama 4 Maverick などが現時点で無料枠対象
- タスク種別でモデルを使い分ける「コスト最適ルーティング」を 5 ステップで構築する
背景
AI コーディングアシスタントが普及した今、課題は「使えるかどうか」ではなく「コストをどう抑えるか」になってきました。
Anthropic Claude の API は高品質ですが、大量のコード生成・レビュー・ドキュメント生成を毎日回すと請求額がじわじわ上がります。
一方 OpenRouter は複数 LLM ベンダーへのリバースプロキシ的 API を提供しており、:free サフィックス付きモデルは レートリミット内であれば料金ゼロ で使えます。
Claude Code は ANTHROPIC_BASE_URL 環境変数で接続先エンドポイントを切り替えられるため、この 2 つを組み合わせることで 実装コストを大幅に削減できます。
本記事では、公開仕様のみをもとに「無料モデルをうまく使い倒す 5 つの設定」を解説します。
1. OpenRouter のセットアップ (基礎)
1-1. アカウント作成 & APIキー取得
openrouter.ai でアカウントを作り、ダッシュボードから APIキーを発行します。
:free モデルはクレジット残高不要ですが、APIキーは必須です。
1-2. :free モデルの見つけ方
OpenRouter のモデル一覧ページで "free" でフィルタするか、モデル ID 末尾が :free になっているものを探します。
2026年5月時点で無料枠が提供されているモデルの例:
| モデル ID | 提供元 | コンテキスト長 | 得意領域 |
|---|---|---|---|
qwen/qwen3-235b-a22b:free |
Alibaba Cloud | 40K | 推論・コード |
deepseek/deepseek-r1:free |
DeepSeek | 64K | 数学・論理・コード |
meta-llama/llama-4-maverick:free |
Meta | 128K | 長文処理・RAG |
mistralai/mistral-7b-instruct:free |
Mistral AI | 32K | 軽量・高速応答 |
google/gemma-3-27b-it:free |
8K | 一般タスク |
⚠️ 無料モデルの提供状況は OpenRouter 側の都合で変わります。本番運用前に必ず openrouter.ai/models で確認してください。
1-3. OpenAI 互換エンドポイント
OpenRouter は OpenAI API 互換フォーマットを提供しています。
Base URL : https://openrouter.ai/api/v1
Authorization: Bearer <YOUR_OPENROUTER_API_KEY>
model フィールドに上記のモデル ID を指定するだけで呼び出せます。
2. Claude Code を OpenRouter に向ける
Claude Code は内部的に Anthropic Messages API を呼び出しますが、ANTHROPIC_BASE_URL 環境変数でエンドポイントを上書きできます。
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_API_KEY="sk-or-v1-xxxxxxxxxxxxxxxxxxxx" # OpenRouter の API キー
これだけで claude CLI が OpenRouter 経由で LLM を呼び出すようになります。
Note: OpenRouter は
anthropic/プレフィックスのモデルも仲介しています。ただし Anthropic モデルは有料です。コスト $0 を目指すなら必ず:freeサフィックスのモデルを指定してください。
3. タスク別モデルルーティング戦略
「1 モデルで全タスクを処理する」のではなく、タスク種別に応じてモデルを切り替えるのが賢いアプローチです。
3-1. タスクとモデルのマッピング例
┌──────────────────────────────────────────────────────────┐
│ タスク │ 推奨モデル │
├──────────────────────────────────────────────────────────┤
│ コードレビュー (深い推論) │ deepseek-r1:free │
│ コード生成・補完 │ qwen3-235b-a22b:free │
│ 長文ドキュメント読解・RAG │ llama-4-maverick:free │
│ 単純な質問・チャット │ mistral-7b-instruct:free │
│ テスト生成 │ qwen3-235b-a22b:free │
└──────────────────────────────────────────────────────────┘
3-2. シェルエイリアスで切り替える
# ~/.bashrc or ~/.zshrc
# 推論・レビュー用 (DeepSeek R1 無料枠)
alias cc-review='CLAUDE_MODEL="deepseek/deepseek-r1:free" claude'
# コード生成用 (Qwen3 235B 無料枠)
alias cc-code='CLAUDE_MODEL="qwen/qwen3-235b-a22b:free" claude'
# 軽量・高速レスポンス用
alias cc-quick='CLAUDE_MODEL="mistralai/mistral-7b-instruct:free" claude'
CLAUDE_MODEL 環境変数は Claude Code が起動時に参照するため、コマンドライン引数を変えるだけでモデルが切り替わります。
4. .claude/settings.json によるプロジェクト単位の設定
Claude Code はプロジェクトルートに .claude/settings.json を置くことで、プロジェクト固有の設定を持てます。
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
"CLAUDE_MODEL": "qwen/qwen3-235b-a22b:free"
}
}
これで git clone 後すぐに全員が同じモデル設定で動けます。
APIキーはここに書かないでください。.env ファイルや OS のキーチェーンで管理するのが鉄則です。
.gitignore への追加
.env
.env.local
.claude/local.json # ローカル個人設定は別ファイルに分離
5. フォールバック設定でレートリミットを乗り越える
:free モデルはレートリミットが厳しい場合があります。OpenRouter の モデルルーティング機能 を使えば、プライマリモデルが詰まったときに自動で別モデルへフォールバックさせられます。
5-1. OpenRouter のルーティング構文
OpenRouter API では model フィールドにカンマ区切りでフォールバック候補を列挙できます (2024年以降の機能)。
import openai
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="<YOUR_OPENROUTER_KEY>",
)
response = client.chat.completions.create(
# プライマリ → フォールバック1 → フォールバック2 の順
model="qwen/qwen3-235b-a22b:free",
extra_body={
"route": "fallback",
"models": [
"qwen/qwen3-235b-a22b:free",
"deepseek/deepseek-r1:free",
"mistralai/mistral-7b-instruct:free",
],
},
messages=[{"role": "user", "content": "Hello"}],
)
公式ドキュメント: openrouter.ai/docs/model-routing
5-2. Claude Code 向けのラッパースクリプト
Claude Code から直接フォールバックを制御するのは難しいため、軽量プロキシスクリプト を間に挟む方法が実用的です。
#!/usr/bin/env python3
"""
simple_proxy.py — OpenRouter fallback proxy (学習用最小実装)
Claude Code → localhost:8080 → OpenRouter
"""
from http.server import HTTPServer, BaseHTTPRequestHandler
import json, urllib.request, urllib.error, os
OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions"
FREE_MODELS = [
"qwen/qwen3-235b-a22b:free",
"deepseek/deepseek-r1:free",
"mistralai/mistral-7b-instruct:free",
]
class ProxyHandler(BaseHTTPRequestHandler):
def do_POST(self):
length = int(self.headers["Content-Length"])
body = json.loads(self.rfile.read(length))
# モデルを Free リストの先頭に差し替え + fallback 設定を注入
body["models"] = FREE_MODELS
body["route"] = "fallback"
body.pop("model", None) # 元のモデル指定を除去
req = urllib.request.Request(
OPENROUTER_URL,
data=json.dumps(body).encode(),
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
},
)
try:
with urllib.request.urlopen(req) as resp:
result = resp.read()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.end_headers()
self.wfile.write(result)
except urllib.error.HTTPError as e:
self.send_response(e.code)
self.end_headers()
self.wfile.write(e.read())
def log_message(self, *args):
pass # ログ抑制
if __name__ == "__main__":
server = HTTPServer(("localhost", 8080), ProxyHandler)
print("Proxy listening on :8080")
server.serve_forever()
# 起動
OPENROUTER_API_KEY="sk-or-v1-xxx" python3 simple_proxy.py &
# Claude Code をプロキシに向ける
export ANTHROPIC_BASE_URL="http://localhost:8080"
export ANTHROPIC_API_KEY="dummy" # プロキシが本物のキーを持つので何でも OK
claude
ベンチマーク比較 (参考)
以下は公開されているベンチマーク結果の抜粋です。自社での実測値ではなく、各モデルの公開スコアを参照しています。
| モデル | HumanEval (code) | MATH | 速度感 |
|---|---|---|---|
| DeepSeek R1 | ~85% | ~97% | やや遅め (推論ステップ長い) |
| Qwen3 235B (A22B MoE) | ~87% | ~94% | 中速 (MoE で効率的) |
| Llama 4 Maverick | ~81% | ~88% | 速い |
| Mistral 7B Instruct | ~67% | ~60% | 非常に速い |
出典: 各モデルの公式ブログ・論文 / lmsys.org/leaderboard
ベンチマークはプロンプト設計・量子化レベルで大きく変わるため参考値として扱ってください。
注意点とトレードオフ
✅ Free モデルを使うべきシーン
- ローカル開発環境でのプロトタイピング
- CI の自動レビューコメント生成
- ドキュメント自動生成 (品質よりスピード優先)
- 個人 OSS プロジェクトのコスト削減
⚠️ Free モデルを避けるべきシーン
-
レートリミット依存の本番フロー:
:freeは利用者が集中すると遅延・エラーが増加 - 機密性の高いコードの送信: サードパーティ経由になるため、セキュリティポリシーを必ず確認
- レスポンス品質が直接ビジネス影響するケース: 最終的には有料モデルのほうが安定
ライセンス確認
各 OSS モデルのライセンスは以下の通りです。商用利用前に必ず確認してください。
| モデル | ライセンス | 商用利用 |
|---|---|---|
| Qwen3 | Apache 2.0 | ✅ 可 |
| DeepSeek R1 | MIT | ✅ 可 |
| Llama 4 | Llama 4 Community License | ⚠️ 月間 7 億ユーザー超は要申請 |
| Mistral 7B Instruct | Apache 2.0 | ✅ 可 |
| Gemma 3 | Gemma Terms of Service | ⚠️ 制限あり・要確認 |
まとめ
| 設定 | 効果 |
|---|---|
ANTHROPIC_BASE_URL を OpenRouter に向ける |
Claude Code から無料モデルを呼べる |
| タスク別シェルエイリアス | 用途に合ったモデルを即切り替え |
.claude/settings.json |
チーム全員で同じ設定を共有 |
| フォールバックリスト | レートリミット時の自動切り替え |
| 軽量プロキシ | より細かなルーティング制御 |
コスト $0 は「無制限に使える」ではなく「賢く使えば月の大部分を無料で回せる」という意味です。まずは開発環境だけでも試してみてください。有料モデルを使うべき場面と使い分けることで、品質を落とさずコストを最適化できます。
参考リンク
- OpenRouter 公式ドキュメント
- OpenRouter モデル一覧
- Claude Code 公式ドキュメント
- Qwen3 技術レポート (Alibaba Cloud)
- DeepSeek R1 論文
- Llama 4 公式ブログ (Meta AI)
- LMSYS Chatbot Arena Leaderboard
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!