はじめに
インターネットにつながらない環境でDifyを使用するメモです。
インターネットにつながらない環境でDifyの基本的な使い方のメモはこちらです。
今回はインターネットにつながらない環境の中でDifyと外部(APIサーバ)を連携させる方法について説明します。
APIサーバにはNode-REDを使用する前提で説明します。
環境準備
インターネットにつながらない環境にDifyを構築するメモはこちらです。
インターネットにつながらない環境にNode-REDを構築するメモはこちらです。
Node-REDをDifyと同じサーバ(またはVM)の上で起動することも可能です。
その場合、Node-REDを起動する時にDifyと同じdockerネットワーク(docker_default)を指定します。
sudo docker run -d -v /home/ユーザー名/.node-red:/data -p 1880:1880 --net=docker_default --name node-red nodered/node-red:latest
API接続
DifyとNode-REDをREST APIで接続します。
Node-RED
サンプルとしてシステムの状態をOKまたはNGで応答するフローを作成します。
フローの全体像です。
以下のノードを使用します。
- http in
- change
- http response
「http in」ノードのURLに名前(パス)を入力します。例として「/node-red」とします。
「change」ノードはシステムの状態を設定します。
対象の値はJSONata式(ランダムで「OK」または「NG」を応答する例)で設定します。
$shuffle(["OK","NG"])[0]
「http response」ノードはそのままで、設定する必要はありません。
Dify
サンプルとしてAPIサーバへシステムの状態を問い合わせて、応答結果(OKまたはNG)に応じてシステムの状態を回答するワークフローを作成します。
ワークフローの全体像です。
以下のノードを使用します。
「開始」ノードの右側に「HTTPリクエスト」「LLM」「終了」ノードを追加します。
「開始」ノードはそのままで、設定する必要はありません。
「HTTPリクエスト」はAPIのURLにNode-REDのURLを入力します。
Node-REDをDifyと同じサーバ(またはVM)の上でコンテナを起動した場合の例です。
http://node-red:1880/node-red
「LLM」ノードはコンテキストのSYSTEMにプロンプトを入力します。
システム状態がOKの場合は正常です。
システム状態がNGの場合は異常です。
システム状態を回答してください。
#システム状態
/HTTPリクエストの変数{x}body
「終了」ノードは出力変数にLLMの変数{x}textを選択します。
実行結果
「実行」を選択します。
システム状態がOKの場合の応答例です。
システム状態がNGの場合の応答例です。