モデル別実行レシピ
最終更新
OpenRouterの無料オープンウェイトモデルをコードレビューAPIにつなぐ
公開コードとレビュー指示をOpenRouterに送り、オープンウェイトモデルの回答を受け取ります。
OpenRouterは複数のモデルプロバイダーの推論API1を共通のリクエスト形式でつなぎます。このレシピではMeta Llama 3.3 70B Instructの:free版を指定して公開Pythonコードをレビューし、リクエスト本文、無料枠、プロバイダーのプライバシー方針を確認します。
公開コードを送り、レビューを受け取ります
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無料エンドポイント

モデル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 のダッシュボードでキーを無効にし、新しいキーを作成します。
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"])正常な応答と最初のエラーを見分けます
成功すると、ターミナルにコードレビューが出力されます。応答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を選び直します。

無料枠内で費用を0に保ちます
2026年10月16日時点のOpenRouter料金案内では、標準アカウントの無料モデル枠は毎分20回、1日50回です。失敗したリクエストも1日の上限に含まれます。クレジットを累計10ドル以上購入すると無料モデルの上限は1日1,000回に増えます。無料枠で試すなら、クレジットを購入しない方が費用を管理しやすくなります。
| アカウント条件 | 無料モデルの上限 | 確認事項 |
|---|---|---|
| 標準の無料アカウント | 毎分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["provider"] = {
"data_collection": "deny",
"zdr": True,
}無料APIで試す作業と別の方法を選ぶ場面を分けます

用語の注釈
よくある質問
- この記事で最初に確認すべきことは何ですか?
- 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)
