ローカルLLM構築:n8nのフローを構築しつつ中断

必要な準備はできたかなと思い、早速n8nのフローを組んでいこうか!

・・・と思ったんですが、中断しました。

中断と言っても、フローを考え直さないとなと気づいた感じです。

見切り発車するとこうなるよなぁと。

記事にするか悩みましたが・・・まぁ良いかと。

n8nってこんな感じなんだなぁとか、思ってもらえれば良いかなと。

一応、以下の2記事を参考にしたんですが、もう少し自分がやりたいことを詰めてからにすればよかったなと。

トリガー設定から

n8nのワークフロー作成は、GUI操作なので分かりやすいですね。

Power Automateでのフロー作成を経験しておいてよかったなと。

まずは、まっさらなところからトリガーを設置します。

トリガーを選ぶ

手動やスケジュール、アプリの動作や他のワークフローからなどがあります。

今回設置しようとしたのはWebhook。

単純に、参考にした記事でトリガーに使われていたからですが。

この設定の時点で、テストURLと本番用のURLが用意されているのが良いですね。

アクティブにしているかどうかで使い分けるみたいですがー。

フローが出来上がると「publish」になるので・・・個人的に使うのかどうかでの使い分けという感じでしょうかね。

リクエスト完了後にOpen WebUIにデータを送る場合は、「Respond」を「Using 'Respond to Webhook’ Node」にするみたいです。

設定すると、アイコンが設置されます。

設置

フックだけなので何もないですが。

この時点で一応チェックはできるみたいで、「Exucute workflow」ボタンが表示されるようになります。

右に飛び出ている「+」を押すとフローを追加できます。

AIエージェント周り

次はAIエージェントを追加してみようかと。

AIエージェントが受け取るプロンプトの設定という感じですね。

「Source for Prompt」でChatトリガーを使うのか、関数を使うのか(という説明でいいのか)を選びます。

関数の場合は、「Define below」を選択します。直安すると「下に定義」。

その下にあるのが、「Prompt」です。

Open WebUIに入力したプロンプトを受け取るので、JSON形式で受け取るように「{{ $json.body.chatInput }}」を入力。

これで、AIエージェントのフローが追加されます。

AIエージェント追加

AIエージェントでは、設定項目が3つあります。

まずは、LLMを動かすための「Chat Model」。

仮でOllamaを設定してみました。

ローカル上のOllamaのURLと、APIキーを設定します。

Ollamaの設定

Docker上で構築しているので、host.docker.internalが含まれてます。

APIキーはOpen WebUIから確認。

管理者パネル>設定>接続にOllama APIの項目があるので、右にある歯車から設定を見ます。

これでモデルはOKです。

続いて、チャットのやり取りを記憶するためのメモリーを設定します。

「Chat Model」の隣にある「Memory」で、「Simple Memory」を選択します。

「Session ID」は「Difine below」にし。

「Key」に「{{ $('Webhook’).item.json.body.sessionId }}」を入力します。

Webhookからのデータを、これを元に記憶するそうです。

「Tool」は使用するデータのありかを指定する感じで、MCPサーバーを指定するイメージです。

今回は割愛しますが。

最後に、AI Agentの右の「+」から「Respond to Webhook」を選択し、「First Incoming Item」を入力。

これで、一通りのフローができたようです。

チェックツールはクローム拡張を使用

Open WebUIを使って返答があるかで確認することもできますが。

Open WebUIを通すことを考えていない場合や、まだ「N8N Pipe」を用意していない場合は。

クローム拡張の「Talend API Tester」が便利です。

冒頭の記事で紹介されていたので、そのままこれも使ってみた感じですが。

サクッと使えて良いです。

このツールを使う前に、ワークフローの「Exucute workflow」をクリックしておきましょう。

テストモードみたいなもので、フローが待機状態になり。

「Talend API tester」の右にJSONデータを入力後、「Send」を押すと受け取ってくれるようになります。

押し忘れても下部の「Response」欄で、400エラーが返されるだけですが。

成功すると200が返され、取得したコンテツの内容が表示されます。

されるはずなんですがー。

私の場合は。

No Content

えぇ・・・

原因はフロー設計だと思われる

そもそも、現在n8nを利用している理由は、下記の記事のようなネットニュース収集の自動化です。

気がつけばOpen WebUIとn8nを繋ぐことに集中しすぎました。

「Tool」のところで取得するようにすれば良いかなと軽く考えてましたがー。

うまく動いてくれませんでした。

そもそも、トリガーも「Webhook」で良いのかという疑問もあります。

Macをつけっぱなしにしてたり、Dockerを起動しっぱなしにしているわけでもないですし。

どうしようかなぁと。

まぁ、そもそも、初めて触るんだからとりあえず記事の通りにして、動く状況を体感しろよとも思いますが。

ハマりそうな気がしたので、今回は中断することに。

ちゃんと設計をしないとね

一番の失敗は、実現したい流れの実現可能性を考えていなかったことですかね。

「なんとなくできそうだ」で初めてしまい、必要なアクションを絞りきれていなかったことです。

とりあえず触ってみる派ではあるんですがー。

すこし見切り発車すぎました。

次回の実践時には、しっかりとフローを構築できるように準備します。

ただ、Power Automateよりも直感的に操作も設定もできるので。

失敗しても修正する敷居は低いかなと感じました。

それだけでも大収穫です。

このブログや記事の内容について、疑問に思っている事はありますか?

もしあれば、どんなことでも構いませんので、コメントを残していただくか、問い合わせフォームよりご連絡ください。

著者プロフィール
ぽんぞう@勉強中

はじめまして、「ぽんぞう@勉強中」です。
小企業に一人情報部員として働いている40代のおじさんです。IT技術での課題解決を仕事にしていますが、それだけでは解決できない問題にも直面。テクノロジーと心の両面から寄り添えるブログでありたいと、日々運営しています。詳しくはプロフィールページへ!