Node-RED で watsonx を触ってみる

# 参考URL

https://dotnsf.blog.jp/archives/1082246988.html

https://dotnsf.blog.jp/archives/1082258791.html

# 概要
ノーコードツール [Node-RED] を使用して watsonx を触ってみます。

基本的には、参考URLに記載させていただいた dotnsf さんの記事をなぞります。

# API ACCESS TOKEN の取得
watsonx のAPIを利用するために、API AccessToken を取得します。

## IAM 画面
IBM Cloud にログインし、画面上部の「管理メニュー」から「アクセス(IAM)」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/d74b63d9-b20e-8a98-2e68-c068388b2c28.png)

## APIキー 画面
【IAM画面】に遷移したら、画面左メニューの「APIキー」をクリックします。
【APIキー】画面に遷移したら画面右側の「作成ボタン＋」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/0e68564c-08c0-3f73-3948-8e45369e3236.png)

# IBM Cloud API キーの作成ダイアログ
【IBM Cloud API キーの作成】ダイアログが表示されたら「名前」に任意の名前を入力し、ダイアログ下部の「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/34d751c5-e0ee-9ce6-4df9-e42afb9eac4a.png)

しばらく待つと、【APIキーは正常に作成されました】と表示されるので、下部の「コピー」をクリックして、APIキーをコピーしておきます。コピーが完了したら画面右上の「×」ボタンでダイアログを閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/da58034c-db4e-d6d9-0ab9-93ab598cd030.png)

# watsonx の準備
IBM Cloud コンソールで Watsonx を利用できるようにします。

## Watson Machine Learning リソースの追加
IBM Cloudコンソールの上部検索バーに [Watson] と入力し、サジェストされる **Watson Machine Learning** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/6bc4f5de-e2eb-6f85-c19f-1133bb3e7afb.png)

【Watson Machine Lerning】画面に遷移したら、画面右側の「利用規約」にチェックを付けて「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/eab77f7d-1944-d614-39a4-e71b1bbb011f.png)

## Watson Machine Learning の起動
【Cloud Pak for Data および watsonx の Watson Machine Learning】画面に遷移したら、画面中央部の「起動」ボタン横の矢印ボタンをクリックして表示されるリストから、「IBM watsonx」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/2e8d7d9d-526f-8846-7a61-95ff629fdc76.png)

しばらく待つと、【watsonxへようこそ】ダイアログに遷移します。ツアーを開始するかどうかを尋ねられるので、ダイアログ右上の「×」ボタンをクリックしダイアログを閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/5f58fcd2-ce0a-8a1d-77ff-5807edc5e9db.png)

## プロンプト・ラボの準備
【IBM Watsonx ホーム画面】で「ファウンデーション・モデルを試し、...」のプロンプト・ラボをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/10edb15a-7bea-143d-b915-34f511430cb1.png)

### Watson Studio がプロビジョンされていない場合
【Watson Studio サービスが検出されませんでした】ダイアログが表示されるので、「サービスの関連付け」ボタンをクリックし、Watson Studio をプロビジョンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/119b306e-30a2-4154-154e-345648ac7665.png)

【Watson Studio】のセットアップダイアログが表示されるので、画面右の「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/e6468ab4-6597-2a4b-27ad-fd9a6ba7b7c2.png)

# Node-RED でフロー作成
## node-red-contrib-dotnsf-watsonxai Node の追加
[こちらのページでdotnsfさんが公開している](https://dotnsf.blog.jp/archives/1082258791.html) watsonai 用のノードを追加します。

【Node-RED エディター画面】右上の **「Ξ」ボタン**をクリックし**メニュー一覧**を表示します。
【ユーザ設定】ダイアログの **ノードを追加**タブをクリックし、検索欄に `node-red-contrib-dotnsf-watsonxai` と入力します。
結果一覧に「node-red-contrib-dotnsf-watsonxai」が表示されるのでクリックしてNode-REDに追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/eff46f66-2054-1573-f254-9b133a451a2d.png)

## フローを作成する
「node-red-contrib-dotnsf-watsonxaiノード」を試すためのフローを作成します。
以下のノードをエディタに配置して接続します。
- inject
- watsonx.ai
- debug

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/31006c28-1a80-6922-d6ed-a05065cd6680.png)

### フローのコード
```
[{"id":"5a60186cc1bb2129","type":"tab","label":"WatsonX","disabled":false,"info":"","env":[]},{"id":"2da45e5580740ace","type":"inject","z":"5a60186cc1bb2129","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":80,"wires":[["2776363a5daed759"]]},{"id":"bf3b68002f066c91","type":"debug","z":"5a60186cc1bb2129","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":500,"y":220,"wires":[]},{"id":"2776363a5daed759","type":"watsonx.ai","z":"5a60186cc1bb2129","name":"","apikey":"","project_id":"","model_id":"ibm/mpt-7b-instruct2","only_firstline":false,"x":330,"y":160,"wires":[["bf3b68002f066c91"]]}]
```

## ノードを設定する
各ノードが正常に動作するように設定します。

### inject ノード

watsonx.ai に問い合わせるためのプロンプトを、文字列として **payload** に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/1df0e8d6-423b-b33d-828d-47d02e1c3dea.png)


#### プロンプトサンプル
```
入力:\nAbout Watson Discovery\\nIBM Watson® Discovery is an intelligent document processing engine that helps you to gain insights from complex business documents.\n翻訳\n
```


### watsonx.ai ノード
watsonx.ai のAPIを利用するための設定情報を入力します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/478c67c7-88f7-cb32-a5ab-d1fc5129783b.png)

#### API Key
[こちらの画面](#ibm_cloud_api_キーの作成ダイアログ)で作成した `API Key`を入力します

#### Project ID
【IBM Watsonx ホーム画面】の下部にある「プロジェクト」からプロジェクトをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/75dc05d6-6443-b9e5-71c0-17ad4ab0a323.png)
【プロジェクトの詳細画面】に遷移したら「管理タブ」をクリックします。
【一般メニュー】に **プロジェクトID** が表示されているのでコピーして、ノードの設定ダイアログに貼り付けます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/1bf54f2b-e1e4-5204-f0b7-b8c815364f4a.png)

# 実行
**inject**ノードをクリックして実行します。
いままでの設定が正しい場合、Node-REDのデバッグウインドウに watsonx.ai の結果が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311258/494b8ee7-cd9e-e812-3cc1-f3b795e8c79c.png)