TL;DR
- OpenRouter の
:freeモデルは コスト 0 円で Claude Code のサブエージェント・バッチ処理に転用できる - 2026 年時点でコーディング用途に実用水準なのは Gemini 2.0 Flash Experimental / Qwen3 30B A3B / DeepSeek V3 0324 / Mistral Small 3.1 / Llama 4 Scout の 5 モデル
- 用途別の使い分けが重要:「要約・分類はQwen3」「コード生成はDeepSeek V3」「英文ドキュメント整形はLlama 4 Scout」が現時点のおすすめ構成
背景:なぜ無料モデルをわざわざ選ぶのか
Claude Code(Anthropic 公式 CLI)は Claude モデル本体を呼び出すが、日常的なバッチ処理・ログ要約・定型コード生成のような「重くないタスク」にフル Claude Sonnet / Opus を使い続けると API コストが積み上がる。
OpenRouter は複数プロバイダの LLM を単一エンドポイント(https://openrouter.ai/api/v1)で提供しており、モデル名の末尾が :free のものは 1 トークンも課金されない。Claude Code の ANTHROPIC_BASE_URL を差し替えることはできないが、エージェント内部の「サブタスク処理」や「プロンプト前処理スクリプト」として呼び出すことは十分可能だ。
本記事では OpenRouter :free モデルのうちコーディング・技術文書用途で実用になる 5 つを評価基準ごとに比較する。
評価基準
| 軸 | 評価内容 |
|---|---|
| コード生成品質 | 小〜中規模関数の初回精度・構文エラー率 |
| 推論速度 | 1,000 トークン出力あたりの体感レイテンシ |
| コンテキスト長 | 長いファイルや diff を丸ごと渡せるか |
| 日本語対応 | コメント・ドキュメント生成に使えるか |
| Rate Limit | 無料枠の RPM (Requests Per Minute) 制限 |
5 モデル一覧
1. Google Gemini 2.0 Flash Experimental
モデル ID: google/gemini-2.0-flash-exp:free
| 項目 | 評価 |
|---|---|
| コード生成 | ★★★★☆ |
| 速度 | ★★★★★(最速クラス) |
| コンテキスト長 | 1M tokens |
| 日本語 | ★★★★☆ |
| Rate Limit | 10 RPM(無料) |
Google の Gemini 2.0 Flash は「速度最優先」モデルであり、1M トークンという圧倒的なコンテキスト長が特長。大きな TypeScript リポジトリを丸ごと渡して「影響範囲を教えて」といったタスクに向く。コード補完の精度は GPT-3.5 水準を超えており、無料枠の中では最もバランスが良い。
向いているタスク例
# 長いコンテキストを活用する例
with open("large_codebase_context.txt") as f:
context = f.read()
response = client.chat.completions.create(
model="google/gemini-2.0-flash-exp:free",
messages=[
{"role": "user", "content": f"{context}\n\n上記のコードで型エラーが起きる箇所を列挙してください。"}
]
)
注意点: Experimental モデルのため API 仕様が変更される可能性がある。プロダクション用途より検証・開発フローに留めること推奨。
2. Qwen3 30B A3B(Alibaba)
モデル ID: qwen/qwen3-30b-a3b:free
| 項目 | 評価 |
|---|---|
| コード生成 | ★★★★☆ |
| 速度 | ★★★★☆ |
| コンテキスト長 | 32K tokens |
| 日本語 | ★★★★★(最高水準) |
| Rate Limit | 20 RPM |
Qwen3 は Alibaba が 2025 年に公開した MoE(Mixture of Experts)アーキテクチャのモデル。30B パラメータながら実際に使用するのは 3B 相当の Expert のみで、推論コストが低く速度が出やすい。
日本語のコードコメント生成や日本語 README の自動作成精度が 5 モデル中トップ。技術文書の和訳・コメント補完目的なら Qwen3 一択。
向いているタスク例
# 英語コメントを日本語に一括変換するシェルスクリプト内で呼ぶイメージ
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3-30b-a3b:free",
"messages": [
{
"role": "user",
"content": "以下の関数の英語コメントを日本語 JSDoc に変換してください:\n\nfunction debounce(fn, delay) { ... }"
}
]
}'
注意点: 32K トークンのコンテキスト上限は中規模ファイルには十分だが、モノレポ全体を渡すには不足する。
3. DeepSeek V3 0324
モデル ID: deepseek/deepseek-v3-0324:free
| 項目 | 評価 |
|---|---|
| コード生成 | ★★★★★(最高水準) |
| 速度 | ★★★☆☆(重め) |
| コンテキスト長 | 64K tokens |
| 日本語 | ★★★☆☆ |
| Rate Limit | 5 RPM |
DeepSeek V3 は HumanEval・MBPP などのコーディングベンチマークで GPT-4o に匹敵するスコアを記録した中国発のモデル。純粋なコード生成精度では 5 モデル中トップ。Rust / Go / TypeScript のような型厳密な言語での精度が高く、アルゴリズム実装タスクには迷わずこちら。
レイテンシが高め(5〜10 秒/回)で Rate Limit も厳しいため、リアルタイム補完よりバッチコード生成に向く。
向いているタスク例
# テスト自動生成バッチ処理
import openai
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=OPENROUTER_API_KEY,
)
def generate_unit_tests(source_code: str) -> str:
resp = client.chat.completions.create(
model="deepseek/deepseek-v3-0324:free",
messages=[
{
"role": "system",
"content": "You are a senior engineer. Generate comprehensive pytest unit tests.",
},
{"role": "user", "content": source_code},
],
)
return resp.choices[0].message.content
注意点: Rate Limit が 5 RPM と厳しい。並列呼び出しには asyncio.Semaphore などでスロットリングを組むこと。
4. Mistral Small 3.1
モデル ID: mistralai/mistral-small-3.1-24b-instruct:free
| 項目 | 評価 |
|---|---|
| コード生成 | ★★★☆☆ |
| 速度 | ★★★★★(最速クラス) |
| コンテキスト長 | 128K tokens |
| 日本語 | ★★★☆☆ |
| Rate Limit 目安 | 20 RPM |
Mistral Small 3.1 は 24B パラメータながら EU 産モデルらしいコンパクトさと安定性が特長。128K コンテキストと高い RPM を活かした「軽量・高頻度タスク」向け。
コード生成精度は DeepSeek や Gemini に劣るが、ルーティング・分類・単純な文字列変換のような前処理タスクでは十分な精度が出る。エージェントのルーターとして「このタスクはコード生成か、ドキュメント生成か」を振り分けるだけなら Mistral Small で十分コストゼロをキープできる。
向いているタスク例
# タスク分類ルーター
TASK_ROUTER_PROMPT = """
以下のユーザーリクエストを次のいずれかに分類してください:
- CODE_GENERATION
- DOCUMENTATION
- CODE_REVIEW
- REFACTORING
- OTHER
リクエスト: {request}
分類ラベルのみ返答してください。
"""
def classify_task(user_request: str) -> str:
resp = client.chat.completions.create(
model="mistralai/mistral-small-3.1-24b-instruct:free",
messages=[
{"role": "user", "content": TASK_ROUTER_PROMPT.format(request=user_request)}
],
max_tokens=10,
)
return resp.choices[0].message.content.strip()
5. Meta Llama 4 Scout
モデル ID: meta-llama/llama-4-scout:free
| 項目 | 評価 |
|---|---|
| コード生成 | ★★★★☆ |
| 速度 | ★★★★☆ |
| コンテキスト長 | 128K tokens |
| 日本語 | ★★★☆☆ |
| Rate Limit 目安 | 15 RPM |
Meta が 2025 年に公開した Llama 4 ファミリーの「Scout」バリアント。英語技術文書の生成・README 作成・PR 説明文の自動生成で安定したアウトプットを出す。
Llama モデルはオープンウェイトのためローカル実行との差異が小さく、OpenRouter で試してから Ollama / llama.cpp でセルフホストに移行するパスが描きやすい点も利点。
向いているタスク例
# PR description 自動生成
def generate_pr_description(diff: str) -> str:
resp = client.chat.completions.create(
model="meta-llama/llama-4-scout:free",
messages=[
{
"role": "system",
"content": (
"You are a helpful engineer. "
"Write a concise GitHub Pull Request description in English "
"based on the following git diff."
),
},
{"role": "user", "content": diff},
],
)
return resp.choices[0].message.content
用途別おすすめマトリクス
| ユースケース | おすすめモデル | 理由 |
|---|---|---|
| 長いファイルの影響範囲調査 | Gemini 2.0 Flash Exp | 1M コンテキスト |
| 日本語コメント・README 生成 | Qwen3 30B A3B | 日本語品質 No.1 |
| アルゴリズム・型定義の初回実装 | DeepSeek V3 0324 | コード精度 No.1 |
| タスク分類・ルーティング | Mistral Small 3.1 | 高 RPM・低レイテンシ |
| 英語 PR / ドキュメント生成 | Llama 4 Scout | 英文安定・セルフホスト移行容易 |
OpenRouter 共通の設定パターン(Python)
OpenRouter は OpenAI SDK 互換なので base_url を差し替えるだけで動く。
import openai
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="<OPENROUTER_API_KEY>", # 環境変数から取得すること
default_headers={
# サイトURL・アプリ名を入れると OpenRouter の usage 画面で識別しやすい
"HTTP-Referer": "https://your-app.example.com",
"X-Title": "MyApp Dev Tools",
},
)
OPENROUTER_API_KEY は必ず環境変数経由で渡し、コードにハードコードしないこと(.env + python-dotenv が最もシンプル)。
Rate Limit 対策:指数バックオフの最小実装
無料モデルは Rate Limit が厳しいため、リトライロジックは必須。
import time
import random
from openai import RateLimitError
def call_with_backoff(client, model: str, messages: list, max_retries: int = 5) -> str:
"""指数バックオフ付きの OpenRouter 呼び出し"""
for attempt in range(max_retries):
try:
resp = client.chat.completions.create(model=model, messages=messages)
return resp.choices[0].message.content
except RateLimitError:
if attempt == max_retries - 1:
raise
wait = (2 ** attempt) + random.uniform(0, 1)
print(f"Rate limited. Retrying in {wait:.1f}s (attempt {attempt + 1}/{max_retries})")
time.sleep(wait)
return ""
モデル切り替えを抽象化する設計パターン
将来的に有料モデルへ昇格させるときのために、モデル選択をロジックから分離しておくと保守が楽になる。
from enum import Enum
from dataclasses import dataclass
class TaskType(Enum):
CODE_GEN = "code_gen"
DOC_JP = "doc_jp"
DOC_EN = "doc_en"
ROUTING = "routing"
LONG_CONTEXT = "long_context"
@dataclass
class ModelConfig:
model_id: str
max_tokens: int
temperature: float
# タスク→モデルのマッピングを 1 箇所で管理
FREE_MODEL_MAP: dict[TaskType, ModelConfig] = {
TaskType.CODE_GEN: ModelConfig("deepseek/deepseek-v3-0324:free", 4096, 0.2),
TaskType.DOC_JP: ModelConfig("qwen/qwen3-30b-a3b:free", 2048, 0.5),
TaskType.DOC_EN: ModelConfig("meta-llama/llama-4-scout:free", 2048, 0.5),
TaskType.ROUTING: ModelConfig("mistralai/mistral-small-3.1-24b-instruct:free", 32, 0.0),
TaskType.LONG_CONTEXT: ModelConfig("google/gemini-2.0-flash-exp:free", 4096, 0.3),
}
def get_model(task: TaskType) -> ModelConfig:
return FREE_MODEL_MAP[task]
注意事項・ライセンス
| モデル | ライセンス |
|---|---|
| Gemini 2.0 Flash Exp | Google API Terms of Service(商用利用可、Experimental のため変更あり得) |
| Qwen3 30B A3B | Apache 2.0(商用利用可) |
| DeepSeek V3 0324 | DeepSeek Model License(商用利用可・一定条件あり) |
| Mistral Small 3.1 | Apache 2.0(商用利用可) |
| Llama 4 Scout | Llama 4 Community License(月間 7 億人以上の利用は Meta 要承認) |
OpenRouter 経由で使用する場合でも、各モデルのライセンスはモデル提供元の規約に準拠する点に注意。利用規約の最新情報は各公式リポジトリ・OpenRouter のモデル詳細ページで確認のこと。
まとめ
コスト 0 円で実用になる OpenRouter :free モデルは確実に存在し、タスクの性質に応じた使い分けで有料 API の呼び出し回数を大幅に削減できる。
- 精度最優先 → DeepSeek V3 0324
- 速度最優先 → Gemini 2.0 Flash Exp / Mistral Small 3.1
- 日本語最優先 → Qwen3 30B A3B
- セルフホスト移行を見据える → Llama 4 Scout
まずは pip install openai → base_url 差し替えだけで試せるので、今日の開発フローに1つ組み込んでみてほしい。
参考リンク
- OpenRouter ドキュメント
- OpenRouter モデル一覧(:free フィルタ)
- Qwen3 公式リポジトリ (Apache 2.0)
- DeepSeek V3 公式リポジトリ
- Meta Llama 4 公式ページ
- Mistral AI 公式ドキュメント
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!