AI FunctionをNode-REDから呼び出す


はじめに

Watson Machine LearningのAI Function機能を使って、SPSS Modelerの機械学習モデルをFunction定義するの続編です。
上のリンクで作ったAI Functionのサービスを簡単に呼べる方法はないか、いろいろ考えてみて、
Node-REDからWatson Studioの機械学習モデルを呼び出すみたいに、Node-REDの部品になっていると一番作る側は楽かと思いました。
オリジナルの部品に比べると相当低機能ですが、実際にそういうノードを作って、npmに公開しておきましたので、ご紹介します。

Nodeの紹介

node-red-contrib-ai-functionが、そのサイトです。せっかく作ったので、Webページの画面も紹介しておきましょう。

自分のNode-RED環境にこのノードを追加する場合はIBM CloudのNode-REDで追加ノードの導入手順の手順に従って下さい。

使い方

使い方はとても簡単です。ノードを編集画面に配置して、config nodeを設定する手順は
Node-REDからWatson Studioの機械学習モデルを呼び出すとまったく同じなので、そちらを参照して下さい。
後は、Watson Studioの管理画面から、AI FunctionのDeployment IDを取得して、下の画面のようにNodeの設定画面で設定します。ちなみに、「Mode」の項目は、前のNodeのときからそのまま残ってしまっていますが、今は「Run Function」しか選べないです。

Deployment IDはWatson Machine LearningのDeplotment管理画面の以下の領域に表示されているものを利用します。

あとは、下の図のように「inject」「function」「debug」の各ノードを編集エリアに配置し、一直線につなぎます。

functionノードで入力用jsonを組み立てます。実装のサンプルは以下の通りです。「項目名」を意味するfieldsと「項目値」を意味するvaluesを設定します。valuesの方は配列を二重にする必要があるので注意して下さい。

msg.payload = {
    "fields": ["CLASS", "AGE", "BP", "AL", "SC", "POT", "PCV"],
    "values": [[null, 75, 70, 0, 0.8, 3.5, 46]]
}

injectボタンをクリックすると、下のような結果が返ってくるはずです。