0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code + OpenRouter 無料モデル5選を徹底比較:コスト0円でAIエージェントを自走させる2026年版ガイド

0
Posted at

TL;DR

  • OpenRouter には :free サフィックス付きの無料モデルが複数存在し、Claude Code のサブエージェント・バッチ処理に活用できる
  • 2026年5月時点で実用レベルの無料モデルは Qwen3-235B-A22B、Gemini 2.0 Flash、DeepSeek R1、Mistral Small 3.2、Llama 4 Scout の5本柱
  • タスク特性(コーディング / 要約 / 翻訳 / 長文推論)によって使い分けることで品質とゼロコストを両立できる

背景:なぜ「無料モデル」に本気で向き合うか

Claude Code や自作の LLM ワークフローを日常的に動かしていると、ランニングコストは思った以上に膨らみます。Claude Opus や GPT-4o を全タスクに投入し続けると、月数万円規模になることも珍しくありません。

OpenRouter は プロバイダを抽象化した統一 API を提供しており、同一エンドポイント (https://openrouter.ai/api/v1/chat/completions) で OpenAI・Anthropic・Google・Meta 等のモデルを切り替えられます。そのなかに :free モデルというカテゴリが存在し、レート制限はあるものの 料金ゼロで API コールできます。

ポイントは「ゼロコスト=使い物にならない」ではない点です。2025〜2026年にかけて無料枠に追加されたモデルは、2年前の有料最高峰と同等以上の能力を持つものが増えています。


OpenRouter :free モデルの仕組み

エンドポイントとモデル指定

import openai

client = openai.OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="<YOUR_OPENROUTER_API_KEY>",
)

response = client.chat.completions.create(
    model="qwen/qwen3-235b-a22b:free",  # ← :free サフィックスで無料枠
    messages=[{"role": "user", "content": "Explain MoE in 3 sentences."}],
)
print(response.choices[0].message.content)

:free を省くと有料になるため注意。モデル名の末尾に必ず :free を付与してください。

無料枠の制約

制約項目 概要
RPM (Requests Per Minute) モデルによって異なる (多くは 10〜60 RPM)
TPD (Tokens Per Day) モデルによって異なる (数十万〜数百万トークン)
Context Length 有料版と同一の場合が多い
ストリーミング 対応モデルがほとんど
優先度 有料トラフィックより低い場合があり、混雑時はレイテンシが増加

2026年5月時点の実用無料モデル5選

1. qwen/qwen3-235b-a22b:free — コーディング・推論の王者

Qwen3-235B-A22B は Alibaba Cloud が公開した MoE(Mixture of Experts)モデルで、235B パラメータのうち推論時にアクティブになるのは 22B です。

強み

  • コーディング精度が非常に高い。HumanEval で GPT-4o 相当の数値を記録
  • 中国語・日本語・英語のマルチリンガル対応
  • 128K コンテキストウィンドウ (:free 枠でも同等)
  • thinking モードを有効にすると連鎖推論(Chain-of-Thought)が自動で走る

使いどころ

  • コードレビュー
  • SQL クエリ生成
  • 技術文書の翻訳・要約

注意点

  • thinking モードは出力トークンが増えるため、TPD を消費しやすい
  • RPM が比較的低め(ポーリングループを入れると良い)
# thinking モードの有効化 (extra_body で渡す)
response = client.chat.completions.create(
    model="qwen/qwen3-235b-a22b:free",
    messages=[{"role": "user", "content": "Write a Rust function that parses CSV."}],
    extra_body={"thinking": {"type": "enabled", "budget_tokens": 2048}},
)

2. google/gemini-2.0-flash-exp:free — スピードと長文処理

Gemini 2.0 Flash は Google DeepMind が公開した実験版モデル。Flash シリーズの特徴は低レイテンシと**巨大コンテキスト(1M トークン)**です。

強み

  • 最大 1,000,000 トークンのコンテキスト(ファイル丸ごと渡せる)
  • 応答速度が速く、インタラクティブな用途に向く
  • マルチモーダル対応(画像 → テキストの理解)
  • 日本語品質が Gemini 1.5 Pro を上回る

使いどころ

  • 長大なログファイル・コードベース全体を要約
  • スクリーンショットから UI のフィードバックを生成
  • リアルタイムに近い速度が求められるチャット補助

注意点

  • 実験版 (-exp) のため API 仕様が予告なく変わる可能性がある
  • 長文入力時は TPD を一気に消費する

3. deepseek/deepseek-r1:free — 数学・論理推論に特化

DeepSeek R1 は中国の DeepSeek が公開した推論特化モデル。OpenAI o1 と同クラスの性能を MIT ライセンスで公開したことで大きな話題になりました。

強み

  • AIME(数学オリンピック難問)で o1 相当のスコア
  • 長い推論チェーン(<think> タグ内に思考過程を出力)
  • MIT ライセンスなので商用利用・ファインチューニングが可能

使いどころ

  • アルゴリズム問題の解法検討
  • 複雑なビジネスロジックのバグ原因調査
  • テストケースの網羅性検討

注意点

  • <think>...</think> ブロックを除去してから最終回答を取り出す必要がある(以下参照)
  • 出力が長くなりやすい
import re

def extract_answer(raw: str) -> str:
    """<think>ブロックを除去して最終回答のみ返す"""
    return re.sub(r"<think>.*?</think>", "", raw, flags=re.DOTALL).strip()

response = client.chat.completions.create(
    model="deepseek/deepseek-r1:free",
    messages=[{"role": "user", "content": "Prove why 0.1 + 0.2 != 0.3 in IEEE 754."}],
)
answer = extract_answer(response.choices[0].message.content)

4. mistralai/mistral-small-3.2:free — 欧州産・軽量・高速

Mistral Small 3.2 は Mistral AI(フランス)が公開した 22B クラスのモデルで、軽量ながら実用的な品質を持ちます。

強み

  • トークン速度が速い(低レイテンシ)
  • 関数呼び出し(Function Calling)の安定性が高い
  • 欧州規制(AI Act)準拠を意識した透明性
  • Apache 2.0 ライセンス

使いどころ

  • Function Calling を使った構造化データ抽出
  • 軽い Q&A・FAQ 応答
  • 短文の翻訳・添削
# Function Calling の例
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"},
                },
                "required": ["location"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="mistralai/mistral-small-3.2:free",
    messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
    tools=tools,
    tool_choice="auto",
)

5. meta-llama/llama-4-scout:free — Meta の最新・長文 Scout

Llama 4 Scout は Meta が 2025年にリリースした Llama 4 シリーズのうち、10M トークンコンテキストに対応した実験的モデルです。

強み

  • 10,000,000 トークンという桁違いのコンテキスト長
  • ネイティブマルチモーダル対応
  • Llama ライセンス(商用利用は規模要件あり)で公開されたウェイトを使用
  • RAG なしで丸ごとドキュメントを渡す「ブルートフォース検索」が可能

使いどころ

  • 大規模コードリポジトリ全体を渡しての質問応答
  • 長期ログの異常検知
  • 複数ドキュメントにまたがるQ&A

注意点

  • 実用上、10M トークンを使い切る前に TPD の上限に達することが多い
  • コンテキスト長を活かすほどレイテンシが増加する

5モデルの比較表

モデル コーディング 推論/数学 日本語 速度 長文対応 ライセンス
Qwen3-235B-A22B ★★★★★ ★★★★☆ ★★★★★ ★★★☆☆ 128K Apache 2.0
Gemini 2.0 Flash ★★★★☆ ★★★☆☆ ★★★★☆ ★★★★★ 1M 独自(実験版)
DeepSeek R1 ★★★★☆ ★★★★★ ★★★☆☆ ★★☆☆☆ 128K MIT
Mistral Small 3.2 ★★★☆☆ ★★★☆☆ ★★★☆☆ ★★★★★ 32K Apache 2.0
Llama 4 Scout ★★★☆☆ ★★★☆☆ ★★★☆☆ ★★☆☆☆ 10M Llama 4

実践:Claude Code のサブエージェントに組み込む

Claude Code では Task ツールや外部スクリプト呼び出しでサブエージェントを並列起動できます。重いタスクはメインの Claude Sonnet に任せ、軽量・反復処理は :free モデルにオフロードするという使い方が有効です。

パターン1:コードレビューバッチ

# review_batch.py
import openai
import pathlib

client = openai.OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="<YOUR_OPENROUTER_API_KEY>",
)

def review_file(path: pathlib.Path) -> str:
    code = path.read_text()
    resp = client.chat.completions.create(
        model="qwen/qwen3-235b-a22b:free",
        messages=[
            {
                "role": "system",
                "content": "You are a strict code reviewer. Point out bugs and style issues.",
            },
            {"role": "user", "content": f"```python\n{code}\n```"},
        ],
        max_tokens=1024,
    )
    return resp.choices[0].message.content

# 複数ファイルをバッチ処理
src_dir = pathlib.Path("src")
for py_file in src_dir.glob("**/*.py"):
    review = review_file(py_file)
    print(f"=== {py_file} ===\n{review}\n")

パターン2:フォールバックチェーン

Rate limit エラーが返ってきたら次のモデルに切り替えるフォールバックパターンです。

from openai import RateLimitError
import time

FREE_MODELS = [
    "qwen/qwen3-235b-a22b:free",
    "google/gemini-2.0-flash-exp:free",
    "deepseek/deepseek-r1:free",
]

def call_with_fallback(messages: list, retries: int = 3) -> str:
    for model in FREE_MODELS:
        for attempt in range(retries):
            try:
                resp = client.chat.completions.create(
                    model=model,
                    messages=messages,
                    max_tokens=2048,
                )
                return resp.choices[0].message.content
            except RateLimitError:
                wait = 2 ** attempt  # exponential backoff
                print(f"[{model}] Rate limited. Retry in {wait}s...")
                time.sleep(wait)
        print(f"[{model}] Exhausted retries. Trying next model.")
    raise RuntimeError("All free models exhausted.")

パターン3:タスク特性でルーティング

def route_to_model(task_type: str) -> str:
    routing = {
        "coding":      "qwen/qwen3-235b-a22b:free",
        "math":        "deepseek/deepseek-r1:free",
        "long_doc":    "google/gemini-2.0-flash-exp:free",
        "structured":  "mistralai/mistral-small-3.2:free",
        "huge_context": "meta-llama/llama-4-scout:free",
    }
    return routing.get(task_type, "qwen/qwen3-235b-a22b:free")

model = route_to_model("math")

品質ティアと使い分けの指針

無料モデルを使えばすべてのタスクがゼロコストになるわけではありません。品質要件に応じた使い分けが重要です。

品質ティア
─────────────────────────────────────────────
Tier 1 (最高品質): Claude Sonnet / GPT-4o
  → 最終納品物・ユーザー向け生成物・重要判断

Tier 2 (高品質 無料): Qwen3-235B / DeepSeek R1
  → コードレビュー・バグ解析・技術文書生成

Tier 3 (高速 無料): Gemini 2.0 Flash / Mistral Small
  → インタラクティブ補助・構造化抽出・翻訳

Tier 4 (特化用途): Llama 4 Scout
  → 10M コンテキスト専用・ブルートフォース検索
─────────────────────────────────────────────

コストポリシー的には「自動化バッチ処理は :free モデルを優先 → 品質不足なら Tier 1 にエスカレーション」というフローが現実的です。


よくあるハマりポイント

1. モデル名が変わる

:free モデルは OpenRouter 側のポリシー変更や提供元の判断で予告なく追加・削除・有料化されることがあります。定期的に openrouter.ai/models で :free フィルタを確認する運用が必要です。

2. max_tokens を省くと長文で詰まる

デフォルトの max_tokens は無指定だとモデルによって異なります。バッチ処理では必ず明示的に指定しましょう。

3. 思考ブロックをそのまま表示させない

DeepSeek R1 の <think> や Qwen3 の thinking モードは、エンドユーザーに生の思考過程を見せる設計ではありません。前述の extract_answer() のような後処理を入れましょう。

4. :free と有料版の context length が違う場合がある

モデルによっては、:free 版は有料版より短いコンテキスト長に制限されています。OpenRouter の /models エンドポイントで context_length を取得して確認してください。

import httpx

models = httpx.get(
    "https://openrouter.ai/api/v1/models",
    headers={"Authorization": "Bearer <YOUR_KEY>"},
).json()

free_models = [m for m in models["data"] if m["id"].endswith(":free")]
for m in free_models:
    print(m["id"], m.get("context_length"))

まとめ

# ポイント
1 OpenRouter :free モデルは 2026年時点で実用レベルに達している
2 コーディングは Qwen3-235B・推論は DeepSeek R1・速度は Gemini Flash・構造化は Mistral Small・超長文は Llama 4 Scout
3 フォールバックチェーン+タスクルーティングで安定性と品質を両立
4 最終成果物・ユーザー向け生成物は Tier 1 にエスカレーションする品質ゲートを設けること
5 モデルリストは定期チェック必須(無料枠は流動的)

Claude Code のバックグラウンドタスクや CI/CD の自動レビューなど、人の目が直接届かないバッチ処理こそ :free モデルの出番です。ぜひコスト構造を見直してみてください。


参考リンク


✍️ 本記事の著者: 合同会社ジモラボ

ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。

興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?