Node-REDとローカル生成AIの連携

目次

Node-RED環境の用意

Linuxの場合(Ubuntu)

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

小文字の y を入れて、Enterキーを押します。

Are you really sure you want to do this ? [y/N] ?

大文字の N を入力して、Enterキーを押します。

Would you like to install the Pi-specific nodes ? [y/N] ?

Node.jsとNode-REDが同時にインストールされます。(2023年11月現在)

実行結果

大文字の N を入力して、Enterキーを押します。

Node-REDを自動起動できるようにします。

Node-REDの起動

Macの場合

パッケージを使ったNode.jsとNPMのインストール

Node.js の公式ホームページhttps://nodejs.org/en にアクセスし、「LTS」と表示されている方をクリックし、「.pkg」形式のファイルをダウンロードする。2023年11月現在は、20.10.0 LTS。

ダウンロードした「pkg」ファイルをダブルクリックして、インストール開始。画面指示に従って、インストールを行う。

バージョン確認

ターミナルアプリを起動して、Node.jsとNPMがインストールされているか確認するために、定番のバージョン確認を行う。

node.js のバージョン確認

実行結果 ( 2023年11月現在 )

npm のバージョン確認

実行結果 ( 2023年11月現在 )

Node-REDのインストールと起動

Node.js 環境が整ったら、Node-REDをインストールしていきます。

次のコマンドを実行します。

パスワードの入力が求められるので、現在ログインしているユーザーのパスワードを入れて、Enterキーを押します。

次のコマンドを実行し、Node-REDを起動します。

実行結果

Node-REDの起動確認

Webブラウザで、http://127.0.0.1:1880/ にアクセスします。Node-RED環境が表示され、利用できます。

ここまでの手順は、あくまで開発環境や検証環境の場合の手順です。Node-REDをビジネスとして運用する場合は、systemctlによる自動起動なども対応しなければなりません。

ローカルLLMを用いた生成AI用APIサーバーとNode-REDの接続

ローカル生成AIのAPIサーバーは、http://127.0.0.1:8000/docs でアクセスするものとします。ローカル生成AIのAPIサーバーは、まだ準備していない場合は、https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1775992841 をご覧ください。

今回はパソコン上で、生成AIのAPIサーバーとNode-REDの両方を起動しているので、IPアドレスは127.0.0.1 を使います。

ここでは下図の仕組みを動かして、APIを用いた生成AIによる文章生成の仕組みを体験します。この仕組みを自分で実装できるようになれば、あなたは生成AIを使った、さまざまな仕組みを作ることができようになります。Node-REDは、ロボットやIoT機器との連携も得意分野の1つなので、Webサービス開発以外にも出来ることがたくさんあります。

上図の仕組みは、以下のJSON形式のコードになっていますので、これをNode-REDに読み込むことですぐに動かすことができます。

上記のJSON形式のコードをコピーします。

Node-REDの画面で、画面右上の「三」>>「読み込み」の順にクリックします。

「フローを読み込み」画面表示されます。コピーしておいたJSON形式のコードを貼り付け、「読み込み」をクリックします。

「ローカル生成AI」のフロー(タブ形式で表示されている)が表示されます。画面右上の「デプロイ」をクリックします。

画面左上の「inject」ノード(箱状の部品)のボタンをクリックすると、次のような結果が返ってきます。

「function1」と表示されているノード(箱状の部品)には、ローカル生成APIのAPIサーバーにリクエストするためのJSON形式の質問文(プロンプト)が書かれています。このJSONデータを変更することで、ローカル生成APIのAPIサーバーにPOSTするリクエストを変更することができます。

「function1」と表示されているノード(箱状の部品)をダブルクリックします。編集後、「完了」をクリックします。

ノードを編集したので、画面右上の「デプロイ」をクリックすることを忘れないでください。

画面左上の「inject」ノード(箱状の部品)のボタンをクリックすると、編集したJSONデータ(質問文)にあわせた回答が返ってきます。

今回使ったLLMは、「ELYZA-japanese-Llama-2-7b-fast-instruct-q8_0.gguf」です。株式会社ELYZAが開発し提供しているLLMをGGUF形式に変換したものを使っていますが、専門職大学という制度がはじまってから数年しか経っていないこともあって、この例のように、AIが生成する文章が間違っていることがあります。

AIのもとになるモデル(LLMやマルチモーダルモデルなど)が間違ったものを生成する場合、モデルに適用されたライセンスや利用規約にもとづき、カスタマイズ(教育)したモデルを作ることで、回答精度が向上するとともに、モデルを作るというビジネスになもなります。