n8n + LM Studio で「複数ロールが議論して要約する」AIエージェントを作る(Webhook公開まで)
TL;DR
- n8n(セルフホスト) で、複数ロール(PM / エンジニア / QA / ユーザー代表)が議論する AI エージェントを作る
- LM Studio のローカル LLM(OpenAI互換API) を n8n の HTTP Request ノードから呼び出す
-
Production Webhook を publish し、
curlからそのまま叩ける API を完成させる - ワークフロー JSON は GitHub で公開・再利用可能
M4 Mac上で LM StudioがローカルLLMを起動 し、Docker内の n8nワークフロー(エージェント) が OpenAI互換API 経由でモデルへリクエストします。
この記事でやること
社内向け問い合わせ(例:PoCの進め方、落とし穴、判断軸など)を入力すると、
- ファシリテータ(司会)
- PM
- リードエンジニア
- QA
- ユーザー代表
が順番に議論し、最後に要約だけを返す
――そんな 簡易マルチエージェント を n8n で構築します。
想定読者
- ローカル環境で AIエージェントのPoC を試したい
- クラウドLLMに 社内情報を出したくない
- Difyよりも Webhook / 業務フロー連携 を重視したい
前提
- Docker が使えること
- LM Studio がインストール済みであること
- LM Studio の OpenAI互換API を有効化していること
1. LM Studio でローカル LLM API を起動する
LM Studio は /v1/chat/completions を含む OpenAI互換 API を提供します。
例:
- Base URL
http://localhost:1234/v1 - モデル例
google/gemma-3-27b
2. n8n を Docker で起動する
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Tokyo" \
-e TZ="Asia/Tokyo" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
2.1. ブラウザで n8n にアクセスし、空のワークフローを開く
Docker コンテナが起動したら、ブラウザで以下にアクセスします。
http://localhost:5678/
2.2. 初回アクセス時のセットアップ
初回アクセス時はセットアップ画面が表示されます。以下の流れで進めればOKです。
-
Set up owner account
- メールアドレス、ユーザー名、パスワードなどを適宜入力
- ローカル利用のみなので厳密でなくて問題ありません
-
Customize
- 特に設定せず、そのまま進めてOK
-
Get paid features for free
- Skip を選択
-
Welcome 画面が表示される
※ ここで表示される Welcome 画面のスクリーンショットを差し込みます。
2.3. 空のワークフローを開く
Welcome 画面からそのまま進むと、空のワークフロー(新規ワークフロー作成画面)が表示されます。
3. ワークフローJSONをインポートする
空のワークフロー画面右上のメニューから、以下の手順でインポートします。
- 右上の 「⋯」メニュー をクリック
- Import from file を選択
- GitHub からダウンロードしたワークフローJSONを選択
- ワークフローが読み込まれればOK
ワークフローJSONは GitHub で公開します。
ワークフローJSON(GitHub)
https://github.com/saka-cons/Dify-multi-agent-project-template_ja_local/blob/n8n_json/n8n%20multi-agent.json
3.5. インポートしたワークフローJSONの中身(ざっくり解説)
このワークフローは「問い合わせ内容(question)を受け取る → 複数ロールが順番に議論 → 最後に要約だけ返す」という 簡易マルチエージェント です。
3.5.1. どんなエージェント(ロール)がいる?
以下は、今回 n8n で作成したワークフロー全体の構成イメージです。
Webhook で受け取った入力を起点に、各ロールの LLM ノードが直列につながり、最後に要約を生成しています。
各ノードがそれぞれ 1つのエージェント(ロール) に対応しており、
「同じ question を受け取りつつ、前のロールの出力を踏まえて次が発話する」という形になっています。
登場するのは以下のロールです(ファシリテータが指名して発話していきます)。
- ファシリテータ(司会)
- PM
- リードエンジニア
- QA
- ユーザー代表
各ロールは、同じ入力(question)を見つつ「自分の立場から論点を追加する」イメージでコメントし、最後にファシリテータが 要約だけ を作ります。
3.5.2. Difyでやっていることを、n8nのノードに置き換えたイメージ
詳細は参照記事(Difyでの構成)を見てもらうのが早いです:
https://zenn.dev/shusuke_bridge/articles/168723683c89ed
参照記事では Dify のフロー上で「OpenAI互換のローカルLLM(LM Studio)を叩く」構成を作っていますが、本記事のワークフローではそれを n8n のノード列(HTTP Request) に落とし込んでいます。
-
各ロール = 1つのLLM呼び出し(HTTP Request)
それぞれsystemにロールの人格(視点)を与え、userに question を渡す - ロールの出力を順番につないで、最後に 要約ノード でまとめる
- 返却は「要約テキストのみ」(議論ログは返さない運用にすると扱いやすい)
つまり、Difyの「チャットフローでノードを並べる」感覚を、n8n の「ノード(HTTP)を直列につなぐ」に置き換えた、という理解でOKです。
4. Webhook を Production で公開する
ワークフロー右上の Publish を クリック します。
Production Webhook URL 例:
http://localhost:5678/webhook/multi-agent
5. 動作確認(この curl でOK)
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"question":"社内向け問い合わせ対応をAI化したい。最初のPoCで何を決め、どんな落とし穴がある?",
"model_id":"google/gemma-3-27b",
"base_url":"http://host.docker.internal:1234/v1"
}' \
'http://localhost:5678/webhook/multi-agent'
おわりに
ローカル完結で「複数視点 → 要約」を体験できる PoC として、n8n は非常に相性が良いです。



