
n8n AIエージェントチュートリアル:スマートなワークフローを段階的に構築
「AIエージェントが欲しい」という思いと、「実際に動作するAIエージェントを持っている」という状態の間には、通常、何百行ものPythonの接着コード(グルーコード)が存在します。n8n AIエージェントはこのギャップを、ドラッグ&ドロップでLLM搭載のエージェントを組み立てられるビジュアルワークフローエディタによって埋めます。これらのエージェントは、Web検索、データベースへのクエリ、メール送信、スプレッドシートの更新など、実際的な作業を実行します。フレームワークのボイラープレートコードを書く代わりに、システムプロンプトを記述するだけで済みます。
このチュートリアルでは、ゼロから2つの実用的なエージェントワークフロー(Webリサーチエージェントと、メモリ機能を備えた顧客サポートボット)を構築する手順を案内します。最後まで読み終える頃には、必要なすべてのノードタイプと、それらがどのように連携するかを理解できるようになります。
n8nとは何か(そしてなぜAIエージェントに使うのか?)
n8n はオープンソースのワークフロー自動化プラットフォームです。Zapierのようなものですが、必要に応じてコードを書ける哲学を持ち、セルフホスト可能です。ノードベースのビジュアルエディタを通じて、500以上のサービスを接続します。
特にAIエージェントにおいてn8nが興味深いのは、ネイティブの LangChain統合 が備わっている点です。LangChainのPythonコードを書く代わりに、同じ概念(エージェント、ツール、メモリ、モデル)をビジュアルノードとして設定できます。AI Agentノードが推論ループを処理するため、あなたは何を使って思考させ、何を実行させるかをプラグインするだけです。
純粋なコードではなくn8nを選ぶ理由:
- ビジュアルデバッグ: エージェントの推論チェーンがどこで壊れているかを正確に確認できます
- 500以上の統合が即座にエージェントのツールになる: Slack、Gmail、Google Sheets、データベースなど
- 無料でセルフホスト可能(コミュニティエディション)、または月額$20から始まるn8n Cloudを利用可能
- MCPサポートにより、n8nワークフローが外部AIエージェントのツールになったり、その逆も可能になります
LangGraph、CrewAI、OpenAI Agents SDKなどの異なるエージェントフレームワークを評価している場合、n8nは別のカテゴリに位置します。これは、Pythonランタイムを管理せずに本番環境で使えるエージェントを求める人々のためのものです。
n8n AI Agentノードの仕組み
n8n内のすべてのAIエージェントワークフローには階層構造があります。Agentノードが中心にあり、その下にサブノードが接続されて機能を提供します。
<!-- IMAGE: n8n AI agent node architecture diagram showing trigger, agent, model, tools, and memory connections -->構成要素は以下の通りです:
| 構成要素 | 役割 | 例となるノード |
|---|---|---|
| トリガー | ワークフローを開始する | Chat Trigger、Webhook、Schedule |
| AI Agent | 推論エンジン(ReActループ) | Tools Agent、OpenAI Functions Agent |
| チャットモデル | 思考を支えるLLM | OpenAI GPT-4o、Anthropic Claude、Ollama |
| ツール | エージェントが実行できるアクション | HTTP Request、Calculator、SerpAPI、Code |
| メモリ | ターン間の会話コンテキスト | Window Buffer、Postgres、Redis |
| 出力 | 結果の送り先 | Respond to Webhook、Send Email、Update Sheet |
Tools Agent は、90%のケースで使用することになるでしょう。これは最も柔軟なエージェントタイプで、プロンプトを受け取り、どのツールを呼び出すかを推論し、それらを実行し、回答が得られるまでループします。内部では、ReAct(Reason + Act)ループ、つまり「思考、行動、観察、繰り返し」を実行しています。
n8nは他にも特化型エージェントを提供しています。データベースクエリ用の SQL Agent、タスクをサブステップに分解する Plan and Execute Agent、よりシンプルなチャットフロー向けの Conversational Agent です。しかし、Tools Agent でほとんどのユースケースをカバーできます。
開始前に必要なもの
何かを構築する前に、以下の3つを整えてください:
- n8nインスタンス: n8n Cloudにサインアップ(Starterプランは月額$20)するか、Dockerでセルフホストします:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n-
LLM APIキー: OpenAI、Anthropic、またはGoogle Geminiのもの。無料のローカルモデルには Ollama も使用できますが、ツール呼び出しのパフォーマンスは異なります。
-
ツールAPIキー(任意): Web検索用のSerpAPI(月額$50)またはBrave Search API(無料枠)。検索なしでもエージェントを構築できますが、これが最も一般的な最初のツールです。
n8nが起動したら、http://localhost:5678(セルフホストの場合)またはクラウドダッシュボードを開きます。新しいワークフローを作成すれば準備完了です。
エージェント1の構築:Webリサーチエージェント
このエージェントはトピックを受け取り、Webを検索し、結果を読み取り、構造化された要約を記述します。これはn8n AIエージェントの「Hello World」であり、コンテンツリサーチにおいて genuinely に有用です。
ステップ1:Manual Triggerを追加
+ ボタンをクリックし、「Manual Trigger」を検索します。キャンバス上にドロップします。これにより、「Test Workflow」をクリックしてワークフローをテストできます。後でこれをWebhookやChat Triggerに置き換えます。
ステップ2:Edit Fieldsノードを追加
トリガーの後に Edit Fields ノードを追加します。topic というフィールドを設定し、文字列値として "Latest developments in Model Context Protocol" のような値を入力します。これはユーザー入力をシミュレートします。
ステップ3:AI Agentノードを追加
「AI Agent」を検索して追加します。エージェントタイプとして Tools Agent を選択します。
System Message フィールドに、動作を定義するプロンプトを記述します:
You are a research assistant. When given a topic:
1. Search the web for the latest information
2. Read at least 3 different sources
3. Write a structured summary with:
- Key findings (bullet points)
- Notable quotes or data points
- Sources used
Be specific. Include dates, names, and numbers when available.
Do NOT make up information. If search results are unclear, say so.Prompt 下で、式 {{ $json.topic }} を設定します。これにより、Edit Fieldsノードからトピックを取得します。
ステップ4:チャットモデルを接続
Agentノードの下にある + をクリックしてサブノードを追加します。OpenAI Chat Model(または使用中のLLM)を選択します。
設定内容:
- Model:
gpt-4o(またはコスト削減のためにgpt-4o-mini) - Temperature:
0.3(低いほど事実重視で、創造性は低くなります)
認証情報セクションにAPIキーを貼り付けます。
ステップ5:検索ツールを追加
再度 + をクリックしてツールサブノードを追加します。SerpAPI(またはカスタム検索APIを叩きたい場合は HTTP Request Tool)を選択します。
SerpAPIの場合:
- 認証情報としてAPIキーを追加
- エージェントは検索が必要だと判断した際にこのツールを呼び出します
無料の代替案として、Brave Search APIを叩くように設定された HTTP Request Tool を使用します:
URL: https://api.search.brave.com/res/v1/web/search
Method: GET
Query Parameters: q={{ $fromAI("query", "search query") }}
Headers: X-Subscription-Token: YOUR_BRAVE_KEY$fromAI() 式が魔法のような役割を果たします。これはエージェントに「ここで渡す値をあなたが決定してください」と伝えます。
ステップ6:テスト
Test Workflow をクリックします。右側の実行パネルを確認します。以下が表示されます:
- エージェントがトピックを受信
- 検索を実行することを決定(ツール呼び出し)
- SerpAPIが結果を返す
- エージェントが結果について推論
- より詳細な情報が必要な場合、再度検索を行う可能性
- 最終的な要約を生成
エージェントが収束せずにループする場合、システムプロンプトにより明確な指示が必要です。いつ検索を停止すべきかを正確に指示してください。
<!-- IMAGE: n8n workflow canvas showing completed research agent with connected nodes -->エージェント2の構築:メモリ機能を備えた顧客サポートボット
リサーチエージェントはステートレスでした。各実行後にすべてを忘れてしまいます。顧客サポートボットは会話を記憶する必要があります。ここで エージェントメモリ が登場します。
ステップ1:Chat Triggerを使用
今回は、Manual Triggerではなく Chat Trigger ノードから始めます。これにより、会話をテストするためのn8n組み込みチャットウィジェットが利用できます。
ステップ2:エージェントを設定
Tools Agent ノードを追加します。システムプロンプト:
You are a customer support agent for a SaaS project management tool called "TaskFlow."
Rules:
- Always greet the user by name if provided
- Check the knowledge base before answering questions
- If you cannot find an answer, say: "Let me connect you with a human agent"
- Never make up features or pricing that you don't find in the knowledge base
- Keep responses concise (2-3 sentences max unless the user asks for detail)
Available tools:
- Knowledge base search: use this for product questions
- Ticket creation: use this when the user reports a bug or requests a featureステップ3:メモリを追加
Agentの + をクリックしてサブノードを追加し、Window Buffer Memory を選択します。
- Context Window Length:
10(最後の10メッセージペアを記憶) - Session ID:
{{ $json.sessionId }}(チャットトリガーから取得)
これは最もシンプルなメモリオプションで、最近のメッセージをスライディングウィンドウで保持します。セッション間で永続的なメモリが必要な本番用ボットの場合は、代わりに Postgres Chat Memory または Redis Chat Memory を使用してください。これらのアプローチのトレードオフについては、最適なAIエージェントメモリツールに関するガイド で解説しています。
ステップ4:ツールを追加
2つのツールサブノードを追加します:
ツール1 -- ナレッジベース(Vector Store QA): ベクトルストア(Pinecone、Qdrant、Supabase)に製品ドキュメントがある場合、Vector Store Question Answer Tool を使用します。これは基本的に単一ノードでの RAG(Retrieval-Augmented Generation) です。
ツール2 -- チケット作成(HTTP Request): チケットングAPIにPOSTするように設定された HTTP Request Tool を追加します:
URL: https://api.yourapp.com/tickets
Method: POST
Body (JSON):
{
"title": "{{ $fromAI('title', 'ticket title') }}",
"description": "{{ $fromAI('description', 'issue description') }}",
"priority": "{{ $fromAI('priority', 'low, medium, or high') }}"
}ステップ5:会話をテスト
Test Workflow をクリックし、チャットパネルを開きます。複数ターンの会話を試してみてください:
- 「こんにちは、アレックスです。タスクをCSVにエクスポートするにはどうすればいいですか?」
- 「PDFエクスポートはどうですか?」
- 「実は、PDFエクスポートが私にとって壊れています。バグ報告を出してもらえますか?」
エージェントが最初の2つの質問に対してナレッジベースを検索し、3つ目の質問に対してチケットを作成する様子を観察してください。メモリノードにより、アレックスの名前とPDFの問題に関するコンテキストを記憶していることがわかります。
MCPを使用してエージェントを拡張する
n8nは現在、双方向で Model Context Protocol (MCP) をサポートしており、ここで強力さが発揮されます。
MCPサーバーの利用: エージェントに MCP Client Tool サブノードを追加します。任意のMCPサーバーURLを指定すると、エージェントはそのサーバーが公開しているすべてのツールを自動的に発見し、呼び出すことができます。1つのノードで数十のツールを利用可能になります。
ワークフローをMCPツールとして公開: MCP Server Trigger ノードを使用して、任意のn8nワークフローをMCP互換のツールに変換します。Claude Desktop、Cursor、またはVS Codeで実行されている外部エージェントが、あなたのn8nワークフローを発見して呼び出すことができるようになります。「Slack通知を送信する」ワークフローを一度構築すれば、スタック内のすべてのMCP互換エージェントがそれを使用できます。
この双方向のMCPサポートにより、n8nはエージェントハブとなります。あなたのn8nエージェントはMCP経由で外部ツールを呼び出し、外部エージェントはMCP経由であなたのn8nワークフローを呼び出します。
より良いn8nエージェントのための実践的ヒント
多数のエージェントワークフローを構築してきた経験から、実際に重要なことは以下の通りです:
ツールの数を少なく保つ。 エージェントは5〜7を超えるツールがあると混乱します。それ以上必要な場合は、専門的な「ワーカーエージェント」にタスクをルーティングする「マネージャーエージェント」を作成してください。n8nはエージェント間ワークフローをサポートしています。
システムプロンプトで具体的指示を出す。 「ユーザーを助けて」と言うだけでなく、正確なルール、出力形式、各ツールを使用する時期を明記してください。プロンプトが具体的であればあるほど、予期しないツール呼び出しは減ります。
トークン制限を設定する。 チャットモデルの設定で最大トークン制限を設定してください。これがないと、混乱したエージェントが1回のループでAPI予算を使い果たす可能性があります。
エラーハンドリングノードを使用する。 失敗を検知し、Slackやメールで通知する Error Trigger ワークフローを追加してください。否则、エージェントはサイレントに失敗します。
まずエッジケースでテストする。 エージェントが知らないはずのことを質問してみてください。「分かりません」と答えずに幻覚(hallucination)を起こす場合、プロンプトにガードレールが必要です。
開発中はすべてをログに記録する。 実行ログを有効にする(Proプランまたはセルフホストで利用可能)ことで、エージェントがどこで間違えたかを正確に再生およびデバッグできます。
n8nエージェントが適している場合(および適していない場合)
n8nは以下の場合に最適です:
- Pythonインフラを管理せずに本番環境のエージェントを求めたい場合
- ワークフローが複数のSaaSツール(Slack、Gmail、Notion、データベース)を接続する場合
- チームにエージェントの動作を変更する必要のある非開発者が含まれる場合
- エージェントの推論チェーンのビジュアルデバッグが必要な場合
n8nはおそらく不適切な選択です:
- エージェントアーキテクチャの細かな制御が必要な場合(代わりに LangGraphまたはCrewAI を使用)
- 統合のない純粋な計算系エージェント(MLパイプライン、データ処理)の場合
- 複雑な状態管理を持つマルチエージェントリサーチシステムを構築している場合
ビジネス自動化のユースケース、顧客サポートボット、データ処理エージェント、リサーチアシスタント、リード qualification において、n8nはパワーとアクセシビリティの間のスイートスポットを突いています。
FAQ
n8nはAIエージェントにどのLLMをサポートしていますか?
n8nはOpenAI(GPT-4o、GPT-4、GPT-3.5)、Anthropic Claude(Claude 3.5および4ファミリー)、Google Gemini、Mistral、Cohere、HuggingFaceモデル、およびOllama経由のローカルモデルをサポートしています。単一のサブノードを変更するだけでモデルを切り替えられ、ワークフローの変更は不要です。
AIエージェントの構築にn8nは無料ですか?
セルフホスト版のコミュニティエディションは、実行制限なしで完全無料です。n8n Cloudは月額$20(Starter)から始まり、2,500回の実行が含まれます。API呼び出しについては、LLMプロバイダー(OpenAI、Anthropicなど)への支払いが別途必要です。
n8nのAI AgentはPythonでエージェントを書くことと比較してどうですか?
n8nはカスタマイズ性を速度とトレードオフします。LangChainを使用したPythonエージェントは、すべての推論ステップを完全に制御できます。n8nはその能力の80%を20%の時間で提供し、ビジュアルデバッグと500以上の組み込み統合を備えています。研究や新しいアーキテクチャにはPythonを選び、ビジネス自動化にはn8nを選んでください。
n8nエージェントはWeb検索やデータベースなどのツールを使用できますか?
はい。n8nエージェントはノードとして利用可能なあらゆるツールを使用できます。SerpAPI、Brave Search、HTTP Request(任意のAPI用)、SQLデータベース、Google Sheets、Slackなど数百種類以上です。これらをAgentノード下のサブノードとして追加します。
n8nのMCP Client Toolとは何ですか?
MCP Client Toolは、あなたのn8nエージェントを外部のMCP(Model Context Protocol)サーバーに接続します。エージェントはそのサーバーが公開しているすべてのツールを自動的に発見し、推論中にそれらを呼び出すことができます。数十の外部ツールを解放できる単一のノードです。
n8n AIエージェントにメモリを追加するにはどうすればよいですか?
Agentノードの下にメモリサブノードを追加します。Window Buffer Memory が最もシンプルなオプションです(最後のNメッセージを保持)。セッション間で永続的なメモリが必要な場合は、Postgres Chat Memory、Redis Chat Memory、または Zep Memory を使用してください。個別の会話を追跡するためにセッションIDを設定します。
n8nで複数のエージェントを接続できますか?
はい。n8nはエージェント間ワークフローをサポートしており、「マネージャー」エージェントが専門的な「ワーカー」エージェントにタスクを委任できます。各ワーカーを別々のサブワークフローとして構築し、Call n8n Workflow ツール経由で接続します。
Tools Agentと他のエージェントタイプの違いは何ですか?
Tools Agent はReAct推論ループを使用し、任意のツールで動作します。OpenAI Functions Agent はOpenAIのネイティブ関数呼び出しAPIを使用します(わずかに高速ですがOpenAI限定)。SQL Agent はデータベースクエリに特化しています。Plan and Execute Agent は複雑なタスクをサブステップに分解します。ほとんどのユースケースでは、Tools Agent から始めてください。
n8nエージェントを本番環境にデプロイするにはどうすればよいですか?
セルフホストの場合:PostgreSQLとRedisを使用してDocker Composeを採用し、水平スケーリングのためにキューモードを有効にし、SSL付きのリバースプロキシの背後に配置します。クラウドの場合:ワークフローをアクティブ化するだけで、n8nがインフラストラクチャを処理します。どちらの場合も、外部アプリがエージェントを呼び出せるように、Chat TriggerをWebhookトリガーに置き換えます。
n8nエージェントはファイルアップロードや画像を処理できますか?
n8nはバイナリデータ処理を通じてファイルを処理できます。Webhook経由でファイルアップロードを受け取り、テキストを抽出し(例えばPDFパーサーを使用したCodeノード)、コンテンツについて推論するエージェントを構築できます。ネイティブなビジョン/画像分析は、使用するLLMが多モーダル入力をサポートしているか(例えばGPT-4o)に依存します。