Node-REDのプラグインを開発してみる その1(LLM Plugin、Ollama、OpenAI)

はじめに

 今回はNode-REDのプラグインを開発してみました。

 Node-REDのプラグインに関する情報が少なすぎて、プラグインと言っていいのか分からないのですが、Node-RED MCUでもプラグインという名前がついていました。

▼Plugin frameworkというものが存在します。

https://qiita.com/k-toumura/items/9131b4a7cbce66cc088b

▼Node-RED MCUのプラグインについてはこちら

https://github.com/ralphwetzel/node-red-mcu-plugin

 これまでNode-REDのノードについては開発したことがあるのですが、ノードとは異なる仕組みをプラグインとして開発するのははじめてです。Node-REDのエディタ画面でLLMを利用できるようにしたいなと思っています。

▼今回開発したプラグインはNPMに公開しています。Node-REDのパレットの管理からインストールすることもできます。

https://flows.nodered.org/node/@background404/node-red-contrib-llm-plugin

▼以前の記事はこちら

Ollamaを使ってみる その2(ローカルLLMでのコードの生成と実行、qwen2.5-coder、Node-RED)

はじめに  今回はローカルLLMでコードを生成して、そのまま実行できるようにNode-REDのフローを作成してみました。  ChatGPTとプロンプトでやり取りして生成したコード…

Node-REDのノードを開発してみる その4(dualshock4ノード)

はじめに  今回はNode-REDと、PS4のコントローラであるDUALSHOCK 4で通信できる、dualshock4ノードを開発してみました。  2年ほど前からESP32とDUALSHOCK 4で通信して、…

仕様の検討

 今回開発するプラグインは、Node-REDのサイドバーでLLMと対話するためのものです。Node-RED Conに登壇した際にも少しだけ紹介していました。

▼Node-RED Conについてはこちら

Node-RED Con Nagoya 2025に登壇しました!

はじめに  今回は10/17に行われたNode-RED Con Nagoya 2025の振り返りです。1年に1回行われている、Node-REDのカンファレンスにはじめて登壇しました。  これまでNode-R…

 単にLLMと対話できるだけでなく、Node-REDの現状のフローをLLMに渡したり、LLMが提案したフローをNode-REDに取り込んだりすることができるようにします。

 感覚としては最近よくあるAIエディタ系のものと似ています。私はVS CodeでGitHub Copilotをよく利用しています。

▼GitHub Copilotについてはこちらで紹介しています。

GitHub Copilotを利用する その1(VS Codeとの連携)

はじめに  今回はGitHub CopilotをVisual Studio Code(VS Code)に導入してみました。  VS Codeで利用すると便利だと教えてもらったので使ってみたのですが、プロジェ…

 具体的な開発は、GitHub Copilotで全面的にAIを利用しました。情報が少なくて開発できるのか心配していたのですが、すぐに形になっていたので、改良していきました。

 いわゆるバイブコーディングで開発したコードは、AIの発展とともに複雑化していき、人間がチェックするのも大変になってきているように思います。これがNode-REDのようにビジュアルプログラミング系のツールで同様に利用できれば、人間にとっても読みやすい環境として開発を進めていくことができるのではないかと考えています。

動作確認

 実際に開発したプラグインで、LLMとの対話を試してみました。まずはAPIの料金がかからない、OllamaのローカルLLMを利用しました。

▼画面はこんな感じ。

 サイドバーでLLMと対話し、LLMが提案したフローを取り込むことができました。また、現状のフローについてLLMに説明してもらうことができました。

▼実際の動作はこちら。qwen2.5-coder:7bを用いています。

 私のノートPCで実行しており、gpt-oss:20bでも試していました。もっと性能の良いPCなら処理が速くなるかと思います。

▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。

ちょっと買い物:新しいノートPCとSSDの増設(ASUS TUF Gaming A15)

はじめに  今回はこれまで使っていたPCが壊れたので買い替えましたという話です。  以前はよく分からないGPUが載っていたノートPCを使っていたのですが、最近はUnreal E…

▼メモリはローカルLLMを実行するために、64GBに交換しています。gpt-oss:20bも利用できます。

ちょっと買い物:ノートPCのメモリ交換(ASUS TUF Gaming A15、gpt-oss-20b)

はじめに  今回はいつも使っているノートPCのメモリを交換して、16GBから64GBに増やしてみました。  リリースされたばかりのgpt-oss-20bをローカルで実行したときにメモ…

 ただしどのLLMのモデルであっても、正確な回答が返ってこなかったり、データ形式が不適切な場合がありました。この辺りは今後も修正していく必要があるのですが、やはりLLMの出力がランダムというのもあってデバッグが難しいところです。

 JSONファイルの出力形式についてLLMに渡していても、異なる形式のデータが提示されて読み込めなかったり、ノードのIDや座標などの不要な情報まで回答したりすることがありました。

 まだNPMには公開していないのですが、開発中のものではOpenAIのAPIにも対応中です。GitHubのリポジトリには公開しています。

▼GitHubのリポジトリはこちら

https://github.com/404background/node-red-contrib-llm-plugin

▼前回の記事で使っていた、OpenAIのAPIキーで試しています。

OpenAIのAPIキーを利用してみる その1(APIキーの発行)

はじめに  今回はOpenAIのAPIキーを利用してみました。  以前からAPIキーはお金がかかるので使わずに、ローカルLLMを利用してきました。しかし私のノートPCでは処理速度…

 gpt-5-nanoとgpt-5.2で試してみました。

▼まずgpt-5-nanoの場合はこんな感じ。色々とおかしな部分があります。

 データ形式が不適切なので、取り込み用のボタンが有効化されていませんでした。

▼一応コピーして取り込んでみたら、無名のフローが作成されてしまいました。

▼functionノード内のJavaScript自体は問題なく書かれていました。

▼gpt-5.2ではインポートできるデータが出力されていましたが、線でつながっていませんでした。

 このあたりのLLMの曖昧さを抑制できるように、出力を調整する仕組みが必要だなと思っています。また使いながら改良して、GitHubに公開しようと思っています。

最後に

 プラグインとしての形自体は、GitHub Copilotを利用してAIが開発してくれました。ここからはLLMを利用したプラグインという特性上、プロンプトなどで調整していく必要があるかと思っています。

 Node-REDでバイブコーディングができるぐらいに作りこんでいきたいところです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です