さとまたwiki
AIエージェント開発 / OpenRouterセットアップ

OpenRouterセットアップガイド

APIキーの取得から最初のエージェント実行までの完全ガイド

OpenRouterとは

OpenRouterは、400以上のAIモデル(GPT-5、Claude 4、Gemini 2.5など)に1つのAPIでアクセスできるサービス。OpenAI互換のAPIを提供するため、既存のコードを最小限の変更で移行可能。

400+

利用可能モデル数

1 API

統一インターフェース

Free

無料モデルあり

ステップ1: アカウント作成

1

OpenRouterにアクセス

https://openrouter.ai にアクセス

2

サインアップ

右上の「Sign In」をクリックし、Google/GitHubアカウントまたはメールでサインアップ

3

APIキーを生成

ダッシュボードの「Keys」セクションから「Create Key」をクリック。生成されたキーを安全に保存。

ステップ2: 環境設定

重要: APIキーは絶対にコードに直接書かないでください。環境変数を使用しましょう。

環境変数の設定

Linux/macOS (.bashrc または .zshrc)

bash
export OPENROUTER_API_KEY="sk-or-v1-xxxxxxxxxxxx"

Windows (PowerShell)

powershell
$env:OPENROUTER_API_KEY = "sk-or-v1-xxxxxxxxxxxx"

.envファイル(推奨)

text
# .env
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxx

ステップ3: Python環境セットアップ

必要なライブラリのインストール

bash
# OpenAI SDK(OpenRouter互換)
pip install openai

# 環境変数読み込み用
pip install python-dotenv

# オプション: エージェントフレームワーク
pip install langchain langchain-openai

基本的な接続テスト

python
import os
from openai import OpenAI
from dotenv import load_dotenv

# 環境変数を読み込む
load_dotenv()

# OpenRouterクライアントを設定
client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.getenv("OPENROUTER_API_KEY"),
)

# テストリクエスト
response = client.chat.completions.create(
    model="anthropic/claude-sonnet-4",  # 使用するモデル
    messages=[
        {"role": "user", "content": "Hello! Please respond with 'Connection successful!'"}
    ]
)

print(response.choices[0].message.content)
# 出力: Connection successful!

ステップ4: 最初のエージェントを作成

シンプルなツール呼び出しエージェントを作成してみましょう。このエージェントは計算ツールを使って数学の問題を解きます。

ツール呼び出しエージェント

python
import os
import json
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.getenv("OPENROUTER_API_KEY"),
)

# ツール定義
tools = [
    {
        "type": "function",
        "function": {
            "name": "calculate",
            "description": "数学の計算を実行します",
            "parameters": {
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "計算する式(例: '2 + 2', '10 * 5')"
                    }
                },
                "required": ["expression"]
            }
        }
    }
]

# ツール実行関数
def execute_tool(name: str, args: dict) -> str:
    if name == "calculate":
        try:
            result = eval(args["expression"])  # 注意: 本番環境ではsafe_evalを使用
            return str(result)
        except Exception as e:
            return f"エラー: {e}"
    return "未知のツール"

# エージェントループ
def run_agent(user_message: str):
    messages = [{"role": "user", "content": user_message}]

    while True:
        response = client.chat.completions.create(
            model="anthropic/claude-sonnet-4",
            messages=messages,
            tools=tools,
            tool_choice="auto"
        )

        assistant_message = response.choices[0].message

        # ツール呼び出しがない場合は終了
        if not assistant_message.tool_calls:
            return assistant_message.content

        # ツールを実行
        messages.append(assistant_message)
        for tool_call in assistant_message.tool_calls:
            result = execute_tool(
                tool_call.function.name,
                json.loads(tool_call.function.arguments)
            )
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result
            })

# テスト実行
result = run_agent("125 * 48 + 367 を計算してください")
print(result)
# 出力: 125 * 48 + 367 = 6,367 です。

モデル選択ガイド

用途推奨モデル理由
開発・テストmeta-llama/llama-3.3-70b-instruct:free無料で高品質
一般的なエージェントanthropic/claude-sonnet-4バランスが良い
複雑な推論anthropic/claude-opus-4最高の推論能力
コーディングopenai/gpt-5コード特化
大量処理(低コスト)x-ai/grok-4.1最安価格帯

トラブルシューティング

401 Unauthorized エラー

APIキーが正しく設定されているか確認。環境変数が読み込まれているかテスト。

429 Rate Limit エラー

リクエスト制限に達しています。少し待つか、クレジットを追加してください。

モデルが見つからない

モデル名は正確に指定する必要があります。モデル一覧で確認してください。