はじめに:なぜ今、n8nとOpenRouterの連携が重要なのか?
こんにちは、「けんぶん」編集部です。業務自動化ツールn8nを活用し、複数の大規模言語モデル(LLM)を使い分けたいと考えたことはありませんか?「このタスクには高速なGeminiを、あちらの分析には高精度なGPT-4oを」といった具合に、適材適所でモデルを切り替えることで、コストとパフォーマンスの最適化が可能です。その夢を実現する鍵となるのが、LLMのルーターとして機能する「OpenRouter」です。しかし、実際にn8nとOpenRouterを連携させようとすると、いくつかの予期せぬ壁にぶつかります。この記事は、単なる成功手順の解説ではありません。私たちが実際に経験した試行錯誤の全プロセス、直面したエラー、そして最終的にたどり着いた最も安定的で強力な連携方法である「AI Agentノード」の活用法まで、すべての情報を余すことなく共有することを目的としています。この記事を読めば、あなたもn8n上で複数のLLMを自在に操るワークフローを構築できるようになるでしょう。
基本の理解:n8nとOpenRouterとは?
本題に入る前に、主要なツールについて簡単に定義しておきましょう。
- n8n: オープンソースのワークフロー自動化ツール。ビジュアル的なインターフェースで、様々なWebサービスやAPIを連携させ、複雑なプロセスを自動化できます。「コードを書かずにプログラミングする」ような感覚で、高度な自動化を実現します。
- OpenRouter: 多数のLLMへのアクセスを単一のAPIエンドポイントに集約するサービスです。OpenAI、Google、Anthropicなど、様々なプロバイダーのモデルを同じAPI形式で呼び出せます。モデルごとのAPIキー管理やコードの書き換えが不要になり、コスト管理も一元化できるのが大きなメリットです。
【結論】n8n x OpenRouter連携の最適解:AI Agentノード活用法
数々の試行錯誤の末、私たちがたどり着いた最も安定的かつ高機能な連携方法は「AI Agentノード」と「OpenRouter Chat Model」を組み合わせるアプローチでした。当初試していたHTTPRequestノードやOpenAIノードでの接続は、パラメータの非互換性や認証設定の複雑さからエラーが頻発しましたが、この方法は驚くほどスムーズに動作しました。
AI Agentノード方式の5つの主要な利点
| 特性 | 詳細説明 | 実装への影響 |
|---|---|---|
| ネイティブなMemory管理 | 会話履歴を自動で管理する機能が組み込まれている。 | 複数ターンにわたる対話形式のワークフローを別途実装することなく、簡単に構築できる。 |
| Tool連携の容易さ | Web検索や計算、他のn8nノードの実行などを「Tool」としてAIに提供できる。 | 単なるテキスト生成だけでなく、外部情報やツールを活用した、より高度で自律的なAIエージェントを作成可能になる。 |
| 安定性とエラーハンドリング | API連携の複雑な部分が抽象化されており、自動リトライなどの機能が内蔵されている。 | レート制限や一時的なAPIエラーに対する耐性が高く、安定したワークフローを維持しやすい。 |
| シンプルなモデル切り替え | ノードの設定画面でモデル名(例: google/gemini-2.0-flash-exp:free)を変更するだけで、簡単に使用するLLMを切り替えられる。 |
モデルの比較実験や、タスクに応じたモデルの動的な選択が非常に容易になる。 |
| コンテキストの自動最適化 | 会話履歴やToolの使用状況を考慮し、LLMに渡すプロンプトのコンテキストを自動で管理・最適化してくれる。 | トークン数の超過エラーを防ぎやすく、効率的なAPIコールが実現できる。 |
ステップ・バイ・ステップ:AI Agentノードによる複数LLM比較ワークフロー構築ガイド
それでは、実際に複数のLLM(Gemini, GPT-4o mini, DeepSeek R1)の出力を並列で比較するワークフローを構築していきましょう。
graph TD
A[Manual Trigger] --> B(Set: プロンプト定義);
B --> C{AI Agent - Gemini};
B --> D{AI Agent - GPT-4o mini};
B --> E{AI Agent - DeepSeek R1};
C --> F(Set: 結果統合);
D --> F;
E --> F;
F --> G[Output: Notion/Google Sheetsなど];
Step 1: OpenRouter APIキーの取得
- OpenRouter公式サイトにアクセスし、アカウントを作成またはログインします。
- ダッシュボードの「Keys」セクションに移動します。
- 「Create Key」ボタンをクリックし、キーに名前を付けて生成します。
- 生成されたAPIキー(
sk-or-...で始まる文字列)をコピーし、安全な場所に保管します。
Step 2: n8nでの認証情報(Credential)設定
次に、n8nにOpenRouterのAPIキーを登録します。このCredentialは、後のAI Agentノードで利用します。
- n8nの左サイドバーから「Credentials」を選択します。
- 「Add credential」ボタンをクリックし、「OpenRouter Chat Model」を検索して選択します。
- 以下の情報を入力します:
- – Credential Name: わかりやすい名前(例:
MyOpenRouterCredential)を入力します。 - – API Key: Step 1で取得したAPIキーを貼り付けます。
- – Base URL (オプション):
https://openrouter.ai/api/v1と入力します。(空でも動作する場合が多いですが、明示的に指定することを推奨します) - 「Save」をクリックして認証情報を保存します。
Step 3: AI Agentノードによる並列実行ワークフローの構築
ワークフローの中核部分を構築します。まずプロンプトを定義し、それを3つのAI Agentノードに並列で渡します。
- Setノード (プロンプト定義): ワークフローの最初に「Set」ノードを配置し、各モデルに渡す共通のプロンプトを定義します。これにより、プロンプトの管理が一元化されます。
- AI Agentノード (Gemini): 「AI Agent」ノードを追加し、以下のように設定します。
- – Chat Model > Model:
OpenRouter Chat Modelを選択します。 - – Chat Model > Credential: Step 2で作成した認証情報を選択します。
- – Chat Model > Model Name:
google/gemini-2.0-flash-exp:freeを入力します。 - – Chat Model > Temperature:
0.3(一貫性重視) - – Chat Model > Max Tokens:
2000 - AI Agentノードの複製: 設定したGemini用のAI Agentノードを2つ複製し、それぞれ
Model Nameをopenai/gpt-4o-miniとdeepseek/deepseek-r1に変更します。ノード名も「AI Agent – GPT4o」「AI Agent – DeepSeek」のように変更しておくと後でわかりやすいです。
Step 4: 結果の統合と分析(Setノード)
3つのモデルからの出力を1つのJSONオブジェクトにまとめるため、再度「Set」ノードを配置します。このノードは3つのAI Agentノードすべてからデータを受け取るように接続します。
{
"timestamp": "{{$now}}",
"prompt": "{{$json.prompt}}",
"model_comparison": {
"gemini": {
"model": "google/gemini-2.0-flash-exp:free",
"response": "{{$('AI Agent - Gemini').item.json.output.text}}",
"tokens_used": "{{$('AI Agent - Gemini').item.json.output.tokens_used || 'N/A'}}",
"processing_time_ms": "{{$('AI Agent - Gemini').item.json.duration}}"
},
"gpt4o_mini": {
"model": "openai/gpt-4o-mini",
"response": "{{$('AI Agent - GPT4o').item.json.output.text}}",
"tokens_used": "{{$('AI Agent - GPT4o').item.json.output.tokens_used || 'N/A'}}",
"processing_time_ms": "{{$('AI Agent - GPT4o').item.json.duration}}"
},
"deepseek_r1": {
"model": "deepseek/deepseek-r1",
"response": "{{$('AI Agent - DeepSeek').item.json.output.text}}",
"tokens_used": "{{$('AI Agent - DeepSeek').item.json.output.tokens_used || 'N/A'}}",
"processing_time_ms": "{{$('AI Agent - DeepSeek').item.json.duration}}"
}
}
}
この設定により、各モデルの応答、使用トークン数、処理時間を一元的に比較できるデータが生成されます。このデータを後続のノード(Google Sheets, Notionなど)に渡して、結果を保存・可視化します。
【調査の軌跡】成功に至るまでの試行錯誤とトラブルシューティング大全
冒頭で述べた通り、私たちは最初からこの「AI Agentノード」方式にたどり着いたわけではありません。ここでは、多くの方が最初に試すであろう一般的なアプローチと、そこで私たちが直面した具体的なエラー、そしてその解決策を共有します。この失敗の記録こそが、あなたの時間と労力を節約する最も価値ある情報かもしれません。
試行1: OpenAI Chat Modelノード(非推奨)
- 試した理由: OpenRouterはOpenAI互換APIを提供しているため、標準の
OpenAI Chat ModelノードにBase URLを指定すれば動作すると考えました。これは最も直感的なアプローチです。 - 発生したエラー:
Bad request - please check your parameters,Invalid input: expected false - 原因分析: このエラーは、n8nの
OpenAIノードが内部的に送信している特定のパラメータ(この場合はstore)を、OpenRouterのAPIがサポートしていないために発生します。互換APIといえども、100%同じ仕様ではないという典型的な例です。 - 教訓: 「互換API」を謳うサービスを利用する際は、全てのパラメータや機能が完全互換であるとは限らないと心得るべきです。予期せぬエラーが発生した場合は、より低レベルな制御が可能な方法(HTTP Requestなど)を検討する必要があります。
試行2: HTTP Requestノード(上級者向け・代替案)
- 試した理由:
OpenAIノードが機能しないため、APIリクエストを完全に制御できるHTTP Requestノードに切り替えました。これにより、送信するパラメータを細かく指定できます。 - 発生したエラー1:
JSON parameter needs to be valid JSON - 原因分析と解決策: これはリクエストボディのJSON形式が正しくないというエラーです。原因は、JSON内にn8nのExpression(動的変数を埋め込む記法)を記述する際のミスでした。
"content": "{{ $json.user_prompt }}"のように、Expressionをダブルクォートで囲む必要があります。また、JSON全体の括弧の対応が取れているか、末尾に不要なカンマがないかなど、基本的な構文チェックが重要です。 - 発生したエラー2:
Authorization failed - please check your credentials(HTTP 401エラー) - 原因分析と解決策: 認証情報の渡し方に問題がありました。
HTTP RequestノードでHeader認証を使用する場合、Authorizationヘッダーの値はBearer sk-or-xxxxxxxxのように、APIキーの前にBearer(最後に半角スペース)というプレフィックスを付ける必要があります。このプレフィックスを忘れると、APIサーバーはキーを正しく認識できません。 - 教訓:
HTTP Requestノードは非常に強力で柔軟ですが、認証ヘッダーの形式やリクエストボディのJSON構文など、APIの仕様を正確に理解している必要があります。デバッグには細心の注意が求められます。
比較表:各接続方法のメリット・デメリット
| 接続方法 | メリット | デメリット | 推奨ユースケース |
|---|---|---|---|
| AI Agentノード (推奨) | 設定が最も簡単。Memory/Tool機能が強力。安定性が高い。 | 低レベルなAPIパラメータの完全な制御はできない。 | ほとんどのユースケース。特に会話型AIや自律エージェントの構築。 |
| HTTP Requestノード | APIリクエストを完全に制御可能。あらゆるAPIに対応できる柔軟性。 | 設定が複雑。認証やJSON構文でミスしやすい。エラーハンドリングを自前で実装する必要がある。 | OpenRouterが提供する特殊なパラメータを使いたい場合や、他のノードでは対応できないAPIを叩く必要がある上級者向け。 |
| OpenAI Chat Modelノード | OpenAIのAPIを直接使う場合は最適。 | OpenRouterとの互換性が不完全で、パラメータ非対応によるエラーが発生する。 | OpenRouterとの連携には非推奨。OpenAIのAPIを直接利用する場合に限定すべき。 |
実践的な活用例と応用シナリオ
この並列比較ワークフローは、様々な応用が可能です。ここでは3つの具体的なシナリオを紹介します。
- 大規模テキストの並列要約と評価: 長文のレポートや議事録(例: 10万トークン)を入力とし、各モデルに要約を生成させます。Gemini Flashの速度、GPT-4o miniのバランス、DeepSeek R1の分析の深さを比較し、処理時間とコスト、そして要約の品質を評価します。これにより、タスクに最適な「コストパフォーマンスの良い」モデルを見つけ出すことができます。
- 経済分析レポートの多角的視点生成: 「日本の金融政策とインフレーションの関係」といった専門的なテーマをプロンプトとして与えます。各モデルから得られる回答(標準的な説明、学術的な分析、深い推論など)を比較・統合することで、単一モデルでは得られない多角的な視点を含んだ、より質の高いレポートを自動生成します。
- コスト最適化ルーティングパイプライン: ユーザーからの問い合わせをまず低コストで高速なGemini Flashで処理します。もしGeminiが回答に自信がない、またはタスクが複雑だと判断した場合(特定のキーワードが含まれるなど)、ワークフローが自動的に高精度なDeepSeek R1やGPT-4o miniに処理を引き継ぎます。これにより、全体の運用コストを抑えつつ、品質を担保するスマートなパイプラインが実現します。
詳細情報:コストとパラメータの仕様
OpenRouterを利用する上で重要なコストとパラメータに関する情報をまとめます。
モデル別コスト比較(入力100万トークンあたり)
| モデル名 | 入力コスト (USD) | 出力コスト (USD) | 特徴 |
|---|---|---|---|
| Google: Gemini 2.0 Flash (Free Tier) | 0.075 | N/A | 非常に高速・低コスト。初期処理や簡単なタスクに最適。 |
| OpenAI: GPT-4o mini | 0.15 | N/A | コストと性能のバランスが良い。汎用的なタスクに向いている。 |
| DeepSeek: DeepSeek R1 | 0.55 | N/A | 推論能力が高い。複雑な分析や深い洞察が必要なタスクに最適。 |
※コストは変動する可能性があるため、最新の情報はOpenRouterの料金ページでご確認ください。
主要パラメータ設定のベストプラクティス
| 比較要件 | Temperature | Max Tokens | ユースケース |
|---|---|---|---|
| 事実ベース・一貫性重視 | 0.1 – 0.3 | 1500 – 2000 | 要約、データ抽出、質疑応答 |
| バランス重視 | 0.5 – 0.7 | 2000 – 3000 | 記事作成、一般的な分析、メール文案作成 |
| クリエイティブ・多様性重視 | 0.8 – 1.0 | 2500 – 4000 | アイデア出し、ブレインストーミング、創作活動 |
著者の気づきと考察
今回の調査を通じて、いくつかの重要な気づきがありました。最も大きな発見は、「高機能な抽象化レイヤー(AI Agentノード)は、時に低レベルな直接操作(HTTP Requestノード)よりも安定して強力である」ということです。当初はAPIを直接叩くHTTP Requestノードが最も確実だと考えていましたが、認証やパラメータの微妙な差異といった「落とし穴」が多く、結果的にAI Agentノードが提供する洗練されたインターフェースの方がはるかに開発効率が高いと実感しました。これは、n8nが単なるAPIリンカーではなく、AIとの連携を深く考慮したプラットフォームへと進化している証左だと感じます。今後の探求としては、AI Agentの「Tool機能」をさらに活用し、OpenRouter経由で呼び出したLLMにWeb検索やファイル操作を実行させる、より自律的なエージェントワークフローの構築に挑戦していきたいと考えています。
まとめと次のステップ
本記事では、n8nでOpenRouterを使用して複数のLLMを連携させる方法について、私たちの試行錯誤の全記録と共に、最終的な最適解である「AI Agentノード」を活用した具体的な構築手順を解説しました。
- 最適解: n8nとOpenRouterの連携には
AI AgentノードとOpenRouter Chat ModelCredentialの組み合わせが最も安定的で高機能です。 - 試行錯誤の教訓:
OpenAIノードは互換性の問題があり、HTTP Requestノードは設定が複雑で上級者向けです。失敗から学ぶことで、より堅牢なワークフローを設計できます。 - 応用可能性: この連携により、モデルの性能比較、多角的なレポート生成、コスト最適化パイプラインなど、高度なAI自動化が実現可能です。
この記事を参考に、ぜひあなた自身のn8nワークフローに多様なLLMを組み込んでみてください。まずは以下のステップから始めることをお勧めします。
- OpenRouterでAPIキーを取得する。
- n8nで
OpenRouter Chat ModelCredentialを作成する。 - 単一の
AI Agentノードで、簡単なプロンプトを送信して接続テストを行う。 - 慣れてきたら、本記事で紹介した並列比較ワークフローを構築し、あなたの業務に合わせたカスタマイズを始める。