TL;DR
- OpenRouter の
:freeモデルを Claude Code 経由で呼び出すと LLM コストをほぼゼロ にできる - 設定は環境変数 2 本 +
CLAUDE.mdに数行書くだけ - 無料モデルでも「調査・草稿・テスト生成」は十分こなせる
- コスト最適化の考え方として「タスク種別ごとにモデルを使い分ける」戦略が有効
背景: LLM コストとの戦い
AI コーディングアシスタントが実用域に入ってきた一方、Claude Opus や GPT-4o をフルに使うと月の API 費用が想定外に膨らむという課題が顕在化しています。
OpenRouter は複数の LLM プロバイダへの統合 API ゲートウェイです。そのなかに :free サフィックス付きのモデルが複数存在し、これらはレート制限はあるものの 無料で API コールできます。
この記事では以下を解説します。
- OpenRouter
:freeモデルの種類と特性 - Claude Code (CLI) と組み合わせる設定方法
- タスク種別によるモデル使い分け戦略
- 実際に試した感触と注意点
OpenRouter :free モデルとは
OpenRouter では <provider>/<model-name>:free という形式のモデル識別子が用意されており、2026 年時点で以下のようなモデルが無料利用可能です(レート制限あり)。
| モデル識別子 | 特徴 |
|---|---|
google/gemini-2.0-flash-exp:free |
マルチモーダル・高速・コーディング向き |
meta-llama/llama-3.3-70b-instruct:free |
Meta OSS・バランス良好 |
qwen/qwen3-235b-a22b:free |
Alibaba・コード生成強め |
mistralai/mistral-7b-instruct:free |
軽量・英語向き |
deepseek/deepseek-r1:free |
推論特化・思考プロセス出力 |
注意: 無料モデルは利用可能状況が変わることがあります。最新のモデル一覧は openrouter.ai/models で
freeフィルタを使って確認してください。
レート制限の現実
無料モデルには概ね以下の制約があります。
- リクエスト数: 約 20 req/分、200 req/日
- コンテキスト長: モデルによって異なる (32k〜128k)
- レイテンシ: 有料モデルより遅い場合がある(特に混雑時)
「大量の自動処理」には向かないですが、人間が読みながら対話するペースならほぼ問題なく使えます。
Claude Code との統合設定
Claude Code は Anthropic の CLI ベースのコーディングアシスタントですが、ANTHROPIC_BASE_URL を差し替えることで OpenRouter 互換エンドポイントを向けられます。
手順 1: OpenRouter API キーを取得
openrouter.ai でサインアップし、「Keys」から API キーを発行します(無料プランあり)。
手順 2: 環境変数を設定
# ~/.bashrc または ~/.zshrc に追記
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_API_KEY="sk-or-v1-xxxxxxxxxxxx" # OpenRouter の API キー
source ~/.zshrc
手順 3: Claude Code を起動してモデルを指定
# 特定のモデルを指定して起動
claude --model "qwen/qwen3-235b-a22b:free"
または CLAUDE.md にデフォルトモデルを書いておく方法もあります(プロジェクトルートに配置)。
<!-- CLAUDE.md -->
## AI Settings
- Default model: qwen/qwen3-235b-a22b:free
- Use free tier models for exploratory tasks
手順 4: 動作確認
claude -p "Hello! What model are you running on?"
OpenRouter 経由で呼び出すと、レスポンスヘッダや一部モデルは自己紹介で使用モデルを返します。
タスク種別によるモデル使い分け戦略
「全部無料モデルで済ます」のは無理がありますが、タスクを分類して適切なモデルに振り分けることでコストを大幅に削減できます。
タスク種別 推奨モデル
─────────────────────────────────────────────────────────
ファイル探索・grep 代替 :free モデル (コスト 0)
テストコード生成 :free モデル (コスト 0)
ドキュメント草稿 :free モデル (コスト 0)
コードレビュー (軽微) :free モデル (コスト 0)
──────────────────────────────────────────────────────────
複雑なリファクタリング claude-3-5-sonnet (有料)
アーキテクチャ設計相談 claude-3-5-sonnet (有料)
マルチファイル変更 claude-3-7-sonnet (有料)
──────────────────────────────────────────────────────────
本番バグ緊急修正 claude-opus (有料・最終手段)
シェルエイリアスで使い分けを楽にする
# ~/.zshrc
alias ai-free='ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1" \
ANTHROPIC_API_KEY="sk-or-v1-xxxx" \
claude --model "qwen/qwen3-235b-a22b:free"'
alias ai-sonnet='claude --model "claude-sonnet-4-5"'
こうすると ai-free でコストゼロの調査モード、ai-sonnet で有料の実装モードと明確に使い分けられます。
実際に試した感触
✅ 無料モデルが得意なこと
テストコード生成は品質が高く実用的でした。既存コードを渡してユニットテストを書かせると、Jest / Vitest / pytest いずれでも 8 割以上そのまま使えるコードが返ってきます。
// こういうコードを渡すと...
export function formatPrice(cents: number): string {
return `¥${(cents / 100).toLocaleString('ja-JP')}`;
}
// Vitest のテストをこれだけ丁寧に生成してくれる
import { describe, it, expect } from 'vitest';
import { formatPrice } from './price';
describe('formatPrice', () => {
it('整数円を正しくフォーマットする', () => {
expect(formatPrice(100000)).toBe('¥1,000');
});
it('0円を処理できる', () => {
expect(formatPrice(0)).toBe('¥0');
});
it('大きな金額を正しくカンマ区切りにする', () => {
expect(formatPrice(1000000)).toBe('¥10,000');
});
});
README・CHANGELOG の草稿生成も非常に使いやすく、diff を見ながら「このリリースで何が変わったか」を要約させるユースケースは高精度でした。
⚠️ 注意が必要なこと
- コンテキスト長: 大きなファイルを丸ごと渡すとレート制限に引っかかりやすい。関係する関数だけを抜き出して渡す工夫が必要
- レイテンシのバラつき: 混雑時は 30〜60 秒待つことも。タイムアウト設定を緩めておくと安心
-
モデルの入れ替わり:
:free枠のモデルは予告なく変更・廃止されることがある。CI 等に組み込む場合はフォールバックモデルを設定する
OpenRouter の transforms オプション活用
OpenRouter 独自の機能として、プロンプトが長すぎてコンテキスト超過しそうな場合に自動で切り詰めるオプションがあります。
# API 直呼びの例 (curl)
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3-235b-a22b:free",
"messages": [{"role": "user", "content": "...長いプロンプト..."}],
"transforms": ["middle-out"]
}'
"middle-out" を指定するとコンテキストウィンドウに収まるよう中間部を自動圧縮します。これにより 大きなコードベースを渡すときのエラーを減らせます。
よくあるトラブルと対処法
401 Unauthorized
Error: 401 Unauthorized
→ ANTHROPIC_API_KEY に OpenRouter の API キー (sk-or-v1-...) が入っているか確認。Anthropic のキー (sk-ant-...) を誤って入れていないか注意。
Model not found
Error: model "qwen/qwen3-235b-a22b:free" not found
→ OpenRouter のモデル一覧が更新されている可能性。openrouter.ai/models で現在の :free モデルを確認し、識別子を最新のものに更新する。
レスポンスが途中で切れる
→ 無料モデルは max_tokens 上限が低い場合がある。Claude Code の設定やプロンプト側で「コードブロックは 100 行以内に収める」などの制約を入れると安定しやすい。
コスト比較のイメージ
以下はあくまで概算です(2026 年時点の公開料金ベース)。
| シナリオ | モデル | 1 日あたりの推定コスト |
|---|---|---|
| コード調査 30 回 + テスト生成 10 回 |
:free のみ |
¥0 |
| リファクタリング 5 回 + 設計相談 3 回 | Sonnet | 約 ¥150〜300 |
| 大規模コード生成 10 回 | Opus | 約 ¥1,500〜3,000 |
「調査・草稿は free、本番品質が必要な箇所だけ有料」 という使い分けで、多くの開発者は月コストを 70〜80% 削減できると感じています。
まとめ
- OpenRouter
:freeモデルはANTHROPIC_BASE_URLを差し替えるだけで Claude Code から使える - 環境変数 2 本 + シェルエイリアスでフリー/有料の使い分けが簡単になる
- テスト生成・ドキュメント草稿・コード調査は無料モデルで十分
- 複雑な設計・大規模リファクタリングには有料モデルを使い分ける
-
transforms: ["middle-out"]でコンテキスト超過エラーを軽減できる
AI コーディングアシスタントを「コストが怖いから控えめに使う」のではなく、モデル選定の戦略で積極的に使いながらコストを最適化するのが 2026 年の現実解です。
参考リンク
- OpenRouter 公式ドキュメント
- OpenRouter モデル一覧 (free フィルタ)
- Claude Code 公式ドキュメント
- Qwen3 モデルカード (Hugging Face)
- Meta Llama 3.3 リリースノート
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!