モデル別実行レシピ

OpenRouterの無料オープンウェイトモデルをコードレビューAPIにつなぐ

公開コードとレビュー指示をOpenRouterに送り、オープンウェイトモデルの回答を受け取ります。

OpenRouterは複数のモデルプロバイダーの推論API1を共通のリクエスト形式でつなぎます。このレシピではMeta Llama 3.3 70B Instructの:free版を指定して公開Pythonコードをレビューし、リクエスト本文、無料枠、プロバイダーのプライバシー方針を確認します。

実行条件と要点
  • モデルID末尾の:freeは無料エンドポイントで、openrouter/freeはリクエストに合う無料モデルを選ぶ動的ルーターです。
  • OpenRouterの無料枠は標準で毎分20回、1日50回までです。クレジットの累計購入額が10ドル以上になると、1日の上限は1,000回に増えます。
  • OpenRouterは入力・出力を自社の学習に使わないと説明していますが、各リクエストはモデルプロバイダーへ送られます。このレビュー例には公開コードを使い、プロバイダーの方針を確認してください。

公開コードを送り、レビューを受け取ります

OpenRouterは複数のモデルプロバイダーの推論APIを共通のリクエスト形式でつなぎます。公開コードとレビュー指示を送ると、モデルの指摘が応答として返ります。このガイドではLlama 3.3 70B Instructの無料版を指定し、短いPythonコードをレビューするAPIリクエストを作ります。

Llama 3.3は重みを公開しており、Meta Llama 3.3 Community Licenseに従って利用します。OpenRouterの:freeはホストAPIのトークン2料金が0であることを示します。Meta Llama 3.3モデルカード・OpenRouter無料エンドポイント

ノートPCのコード画面と複数のインターフェースが、中央の装置を介してつながる作業台のイラスト
APIはレビュー対象のコードと指示を送り、モデルの回答を受け取ります。

モデルIDと無料ルートを選びます

モデルID末尾の:freeは、そのモデルの無料ホスト版です。openrouter/freeは各リクエストに合う無料モデルを選ぶルーターなので、実際に使われるモデルは呼び出しごとに変わることがあります。コードレビューを比較・再現するなら、この例のように具体的な無料モデルIDを指定します。自動選択を使う場合も、重みの公開状況は別に確認してください。例のレビュー指示文は英語で書いています。

Python標準ライブラリで最初のリクエストを送ります

Python 3、インターネット接続、OpenRouterアカウントで作成したAPIキーが必要です。このスクリプトはPython標準のurllibでリクエストを送り、SDKのインストールは不要です。getpassは入力中のキーを画面に表示しないため、コマンド履歴やソースファイルにキーを書く必要がありません。この例では、公開してもよい短いPython関数だけをAPIに送ります。

コードを review.py として保存し、ターミナルで python3 review.py を実行します。入力を求められたら API キーを入力して Enter を押します。

キーを共有ドキュメントやリポジトリに保存しないでください。すでに公開してしまった場合は、OpenRouter のダッシュボードでキーを無効にし、新しいキーを作成します。

公開Python関数のレビューを依頼する
import getpass
import json
import urllib.request

api_key = getpass.getpass("OpenRouter API key: ")
payload = {
    "model": "meta-llama/llama-3.3-70b-instruct:free",
    "messages": [
        {
            "role": "user",
            "content": (
                "Review this public Python example for correctness. State one concrete issue, "
                "if any, and suggest a minimal fix:\n\n"
                "def percentage(part, total):\n"
                "    return part / total * 100\n"
            ),
        }
    ],
    "max_tokens": 200,
}
request = urllib.request.Request(
    "https://openrouter.ai/api/v1/chat/completions",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
with urllib.request.urlopen(request, timeout=60) as response:
    result = json.load(response)
print(result["choices"][0]["message"]["content"])
リクエスト本文にはモデルIDと公開コードを入れ、APIキーは入力プロンプトからだけ読み込みます。

正常な応答と最初のエラーを見分けます

成功すると、ターミナルにコードレビューが出力されます。応答JSONのchoices[0].message.contentにレビュー本文が入り、usageにトークン情報が含まれることがありますが、現在のスクリプトはレビュー本文だけを出力します。

トークン情報も表示するには、スクリプト末尾のprint(result["choices"][0]["message"]["content"])の次の行にprint(result.get("usage"))を追加します。

totalが0のときのゼロ除算と条件チェックを指摘する回答が期待できますが、修正案はコードとテストで確認してください。

HTTP Error 401の場合は、キーが正しく有効か、Bearer の後に空白があるかを確認します。HTTP Error 429は毎分20回または1日の上限に達した可能性があります。無料枠が回復するまで自動再試行を止め、リクエスト数を減らしてください。No endpoints foundやモデルエラーが出たら、該当する:freeエンドポイントが現在利用可能か、必要な機能やプロバイダーフィルターが合っているかを確認し、利用可能な無料モデルIDを選び直します。

小型デスクトップPCにつながるモニターに、コードエディターとチャット画面が並んでいる
リクエストではモデルID、メッセージ、出力上限を指定します。

無料枠内で費用を0に保ちます

2026年10月16日時点のOpenRouter料金案内では、標準アカウントの無料モデル枠は毎分20回、1日50回です。失敗したリクエストも1日の上限に含まれます。クレジットを累計10ドル以上購入すると無料モデルの上限は1日1,000回に増えます。無料枠で試すなら、クレジットを購入しない方が費用を管理しやすくなります。

OpenRouter無料モデルのリクエスト上限 · 2026年10月16日確認
アカウント条件無料モデルの上限確認事項
標準の無料アカウント毎分20回・1日50回失敗リクエストも1日の上限に含む
クレジットを累計10ドル以上購入毎分20回・1日1,000回累計購入額の条件

この例ではモデル文字列meta-llama/llama-3.3-70b-instruct:freeを保ち、別のモデルを選ぶ際も表示価格を確認してください。meta-llama/llama-3.3-70b-instructのように:freeがないIDは有料ルートの場合があります。OpenRouterの無料プランには予算・支出制御機能が表示されていないため、試用中はクレジットを追加せず、自動チャージも設定しないでください。Activityで利用モデルと費用を確認し、有料モデルを自動フォールバック先に加えないようにします。

モデルプロバイダーに送るコードと個人情報を管理します

OpenRouterは入力・出力を自社モデルの学習に使わないと説明していますが、リクエストは選択したモデルプロバイダーへ送信されます。保持・学習方針はプロバイダーによって異なるため、Llama 3.3のモデルページで提供者の説明を読み、公開コードだけを送ってください。OpenRouterプライバシーポリシー・Llama 3.3無料エンドポイント

プロバイダーフィルターを適用するには、リクエスト本文に provider 設定を追加します。data_collection: "deny" はデータを収集するプロバイダーを除外し、zdr: true は Zero Data Retention ポリシーを持つプロバイダーのみを選びます。

条件に合う無料プロバイダーがない場合はリクエストを停止します。有料モデルへ自動で切り替える fallback は設定しません。Python 例では payload を作成した後、request = urllib.request.Request( の行の直前にコードを追加します。プロバイダーのデータ収集制御

payloadの後、APIリクエスト前に加える任意のプライバシーフィルター
payload["provider"] = {
    "data_collection": "deny",
    "zdr": True,
}
条件を満たす無料プロバイダーがなければ、フィルターによってリクエストが失敗することがあります。

無料APIで試す作業と別の方法を選ぶ場面を分けます

1日50回の枠内で公開コードのバグ候補を尋ねたり、プロンプト3や出力形式を調整したりする作業には無料APIが向いています。

リクエスト数が増えたり、遅延、プロバイダー、データ保持条件を一定に管理する必要が出てきたら、最新のモデルページと有料プランの制御機能を比較してください。推論料金をかけずに内部コードをリポジトリ外へ出さずに確認したい場合は、ローカルモデルが適しています。無料モデルや提供先は変わるため、実運用の前に無料モデル一覧と料金・上限を確認してください。

デスクのモニターにチャット画面とコードエディターが並んで表示されている
モデルの回答をコードの横に置き、修正案の根拠を確認できます。

用語の注釈

  1. API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。

    本文に戻る
  2. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る
  3. プロンプト — モデルに送る入力文です。生成モデルでは作りたい結果を説明する文になり、出力の構成や内容を大きく左右します。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
OpenRouterは複数のモデルプロバイダーの推論APIを共通のリクエスト形式でつなぎます。このレシピではMeta Llama 3.3 70B Instructの`:free`版を指定して公開Pythonコードをレビューし、リクエスト本文、無料枠、プロバイダーのプライバシー方針を確認します。
選ばないほうがよいのはどのような場合ですか?
キーを共有ドキュメントやリポジトリに保存しないでください。すでに公開してしまった場合は、OpenRouter のダッシュボードでキーを無効にし、新しいキーを作成します。
条件と出典はどこで確認できますか?
Llama 3.3は重みを公開しており、Meta Llama 3.3 Community Licenseに従って利用します。OpenRouterの`:free`はホストAPIのトークン料金が0であることを示します。[Meta Llama 3.3モデルカード](https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct)・[OpenRouter無料エンドポイント](https://openrouter.ai/meta-llama/llama-3.3-70b-instruct:free)