0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

n8n + LM Studio で「複数ロールが議論して要約する」AIエージェントを作る

Posted at

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 で公開・再利用可能

image.png

M4 Mac上で LM StudioがローカルLLMを起動 し、Docker内の n8nワークフロー(エージェント) が OpenAI互換API 経由でモデルへリクエストします。


この記事でやること

社内向け問い合わせ(例:PoCの進め方、落とし穴、判断軸など)を入力すると、

  1. ファシリテータ(司会)
  2. PM
  3. リードエンジニア
  4. QA
  5. ユーザー代表

が順番に議論し、最後に要約だけを返す
――そんな 簡易マルチエージェント を 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です。

  1. Set up owner account

    • メールアドレス、ユーザー名、パスワードなどを適宜入力
    • ローカル利用のみなので厳密でなくて問題ありません
  2. Customize

    • 特に設定せず、そのまま進めてOK
  3. Get paid features for free

    • Skip を選択
  4. Welcome 画面が表示される

※ ここで表示される Welcome 画面のスクリーンショットを差し込みます。

image.png


2.3. 空のワークフローを開く

Welcome 画面からそのまま進むと、空のワークフロー(新規ワークフロー作成画面)が表示されます。

image.png


3. ワークフローJSONをインポートする

空のワークフロー画面右上のメニューから、以下の手順でインポートします。

  1. 右上の 「⋯」メニュー をクリック
  2. Import from file を選択
  3. GitHub からダウンロードしたワークフローJSONを選択
  4. ワークフローが読み込まれれば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 ノードが直列につながり、最後に要約を生成しています。

image.png

各ノードがそれぞれ 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 は非常に相性が良いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?