TL;DR
- Claude Code の
ANTHROPIC_API_KEY以外に OpenRouter 経由で :free モデルを呼ぶ設定を追加できる - 調査・要約・下書き等の「品質 80% でよいタスク」を :free モデルに流すと月の LLM コストが大幅に落ちる
- 本記事では環境設定・モデル選定・プロンプトパターン・コスト計算の実践手順を解説
背景
Claude Code は強力な AI コーディングアシスタントだが、claude-opus-4 や claude-sonnet-4 を素直に使い続けると 月 $50〜200 に達するケースがある。
一方 OpenRouter では qwen/qwen3-8b:free や meta-llama/llama-4-maverick:free など、無料枠で使える高性能モデルが常時複数提供されている。
発想の転換: 全タスクを最高品質モデルに流すのではなく、
「タスク品質要件 × コスト」でモデルを使い分ける
前提知識
| 用語 | 概要 |
|---|---|
| Claude Code | Anthropic 製のターミナル統合 AI コーディングツール |
| OpenRouter | 複数 LLM プロバイダを統一 API で扱えるプロキシサービス |
:free モデル |
OpenRouter 上でレート制限はあるが トークン課金ゼロのモデル群 |
OPENROUTER_API_KEY |
OpenRouter ダッシュボードで発行する Bearer トークン |
OpenRouter の :free モデルは openrouter.ai/models でフィルタ free: true を選択すると一覧できる(2026年時点で 30 モデル超)。
5つの設定パターン
パターン 1 — シェルエイリアスで用途別モデルを切り替える
最も簡単なアプローチ。.zshrc / .bashrc に以下を追記する。
# 品質最優先 (コード生成・リファクタリング)
alias cc-pro='claude'
# コスト最小 (調査・要約・コメント生成)
alias cc-free='ANTHROPIC_BASE_URL=https://openrouter.ai/api/v1 \
ANTHROPIC_API_KEY=$OPENROUTER_API_KEY \
ANTHROPIC_MODEL=qwen/qwen3-8b:free \
claude'
使い方:
# 通常の Claude Code (課金あり)
cc-pro "この関数をリファクタしてテストも書いて"
# :free モデル (課金なし)
cc-free "この diff の変更内容を日本語で 3 行にまとめて"
ポイント:
ANTHROPIC_BASE_URLを OpenRouter に向けると、Claude Code は
OpenRouter を「Anthropic 互換 API」として扱う。ANTHROPIC_MODEL環境変数で
呼び出すモデルを上書きできる(Claude Code v1.x 以降対応)。
パターン 2 — .claude/settings.json でモデルをプロジェクト別に設定
プロジェクトルートに .claude/settings.json を置くことで、リポジトリ単位でデフォルトモデルを固定できる。
{
"model": "qwen/qwen3-8b:free",
"apiKeyHelper": "echo $OPENROUTER_API_KEY",
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1"
}
}
活用例:
my-project/
├── .claude/
│ └── settings.json ← :free モデル固定 (ドキュメント生成リポジトリ)
└── src/
ドキュメント専用リポジトリや社内 Wiki 更新スクリプトなど、コード品質より速度・コストが優先される用途に向く。
パターン 3 — カスタムスクリプトでタスクを自動ルーティング
入力プロンプトのキーワードで「無料モデル」「課金モデル」を自動振り分けするラッパースクリプト。
#!/usr/bin/env bash
# cc-router: キーワードでモデルを自動選択
PROMPT="$*"
FREE_KEYWORDS=("要約" "翻訳" "コメント" "README" "CHANGELOG" "explain" "summarize" "translate")
use_free=false
for kw in "${FREE_KEYWORDS[@]}"; do
if echo "$PROMPT" | grep -qi "$kw"; then
use_free=true
break
fi
done
if $use_free; then
echo "[router] :free モデルを使用 (qwen3-8b)" >&2
ANTHROPIC_BASE_URL=https://openrouter.ai/api/v1 \
ANTHROPIC_API_KEY="$OPENROUTER_API_KEY" \
ANTHROPIC_MODEL=qwen/qwen3-8b:free \
claude "$PROMPT"
else
echo "[router] claude-sonnet を使用 (課金あり)" >&2
claude "$PROMPT"
fi
chmod +x cc-router
alias cc='cc-router'
cc "この関数の README を日本語で書いて" # → :free
cc "バグを修正してテストを追加して" # → claude-sonnet
パターン 4 — GitHub Actions で :free モデルを CI に組み込む
PR の差分要約・コードレビューコメントを CI で自動生成するワークフロー例。OpenRouter :free モデルを使うことでコスト $0。
# .github/workflows/ai-pr-summary.yml
name: AI PR Summary
on:
pull_request:
types: [opened, synchronize]
jobs:
summarize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
- name: Generate PR summary
env:
ANTHROPIC_BASE_URL: https://openrouter.ai/api/v1
ANTHROPIC_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
ANTHROPIC_MODEL: meta-llama/llama-4-maverick:free
run: |
DIFF=$(git diff origin/main...HEAD --stat)
claude --print "以下の git diff --stat を日本語で 5 行以内に要約して:\n$DIFF" \
> summary.txt
cat summary.txt
- name: Post comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const summary = fs.readFileSync('summary.txt', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## 🤖 AI による変更要約\n\n${summary}`
});
注意:
OPENROUTER_API_KEYは GitHub Secrets に登録し、
ワークフローファイルには直接書かないこと。
パターン 5 — CLAUDE.md に :free モデル向け制約プロンプトを書く
:free モデルはコンテキスト長・応答品質が有料モデルより低い場合がある。CLAUDE.md に モデル特性を前提とした制約を書くことで出力品質を安定させる。
<!-- CLAUDE.md (このリポジトリが :free モデル専用の場合) -->
## モデル動作指針
- 応答は **500 トークン以内**に収める
- コードブロックは 1 ファイルずつ個別に出力する
- 不明点があれば推測で補完せず「不明です」と返す
- 日本語で質問された場合は日本語で回答する
- 関数シグネチャは変更せず、実装のみ変更する
短く明確な制約を書くことで、コンテキスト消費を抑えつつ誤答を減らせる。
モデル選定ガイド (2026年時点の :free 代表例)
| モデル | 得意分野 | コンテキスト | 速度 |
|---|---|---|---|
qwen/qwen3-8b:free |
日本語・多言語・汎用 | 32K | 速い |
qwen/qwen3-14b:free |
コード・推論 | 32K | 中 |
meta-llama/llama-4-maverick:free |
英語コード・汎用 | 128K | 中 |
google/gemma-3-12b-it:free |
英語・軽量タスク | 8K | 速い |
mistralai/mistral-7b-instruct:free |
英語・要約・分類 | 32K | 速い |
最新の対応モデル一覧は openrouter.ai/models で
Freeフィルタを適用して確認。
コスト比較シミュレーション
月 100 回、平均 2K トークン(入力 1K + 出力 1K)のタスクを実行した場合:
| 構成 | 月額概算 |
|---|---|
| claude-sonnet-4 (100%) | 約 $15〜30 |
| :free モデル (100%) | $0 |
| 70% :free + 30% sonnet | 約 $4〜9 |
「全タスクを :free モデルにする」のは品質リスクがあるが、70% を振り分けるだけでも月コストを約 70% 削減できる計算になる。
落とし穴と対処法
① レート制限
:free モデルは リクエスト数制限がある(OpenRouter の場合、無料枠は概ね 200 req/day 前後)。
CI でバッチ処理する際は sleep 2 などで間隔を開ける。
for file in docs/*.md; do
cc-free "この Markdown のタイポを修正して" < "$file"
sleep 2 # レート制限対策
done
② 応答の一貫性
:free モデルはモデルバージョンが予告なく変わる場合がある。
本番コードの自動生成には使わず、レビュー支援・ドキュメント補助に留めるのが安全。
③ プロンプトのトークン効率
無料モデルのコンテキスト長は短いことが多い。
長い diff を丸ごと渡すより git diff --stat や head -n 50 で前処理するとよい。
# NG: diff 全文をそのまま渡す
git diff | cc-free "要約して"
# OK: stat のみに絞る
git diff --stat | cc-free "どのファイルが変更されたか日本語で箇条書きにして"
まとめ
| # | パターン | 用途 |
|---|---|---|
| 1 | シェルエイリアス | 個人開発・手動切り替え |
| 2 | .claude/settings.json |
プロジェクト単位のデフォルト設定 |
| 3 | キーワードルーティングスクリプト | 自動振り分けで手間ゼロ |
| 4 | GitHub Actions 連携 | CI コストゼロの PR 自動要約 |
| 5 |
CLAUDE.md 制約プロンプト |
:free モデルの出力品質を安定化 |
「全部を無料モデルにする」ではなく、「タスクの性質に合わせてモデルを選ぶ」という設計思想が重要。コスト管理を仕組み化することで、AI ツールを罪悪感なく使い倒せるようになる。
参考リンク
- Claude Code 公式ドキュメント
- OpenRouter — モデル一覧
- OpenRouter API ドキュメント
- Qwen3 モデルカード (Hugging Face)
- Llama 4 Maverick (Meta)
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!