Difyで「LinuxへSSHし、結果をAIで分析する」ワークフローを作成する
はじめに
プログデンスの圓佛です。Difyを利用するとAIを利用したワークフローをWeb上で簡単に作成することができます。今回は「DifyからLinuxへSSHし、ストレージの使用量を確認し、結果をAIで分析する」というワークフローを作成してみます。
「Dify」=「ディフィー」
「Dify」の発音ですが、2025/6/28にDify公式が以下のように投稿しています。公式な読み方・発音は「ディフィー」に統一されたそうです。
ワークフローの全体像
SSH Command Execution Pluginプラグインを利用するとDifyからSSHできるようになります。Difyのプラグイン管理画面からこのプラグインをインストールします。
ワークフローの構成
今回、作成したワークフローの全体像は以下です。
以降、ワークフローの内容をステップごとに確認していきます。
1.開始
開始は特に何も設定しておらず、デフォルトのままです。
2.SSH COMMAND EXECUTION
SSH Command Executionでは「SSH接続情報」と「実行するコマンド」を定義します。SSH接続できたらストレージの状態を取得する為に「df -h
」コマンドを実行しています。
尚、SSH Command Executionの実行結果は以下のようなJSONとして取得されます。結果をAIに解析させるには不要部分を削除し、コマンドの実行結果部分だけを残したい為、ワークフローの次ステップでは「コード実行」を利用します。
{
"text": "",
"files": [],
"json": [
{
"stderr": "",
"stdout": "Filesystem Size Used Avail Use% Mounted on\ntmpfs 392M 1.3M 391M 1% /run\n/dev/mapper/ubuntu--vg-ubuntu--lv 28G 12G 15G 45% /\ntmpfs 2.0G 0 2.0G 0% /dev/shm\ntmpfs 5.0M 0 5.0M 0% /run/lock\n/dev/sda2 2.0G 192M 1.6G 11% /boot\noverlay 28G 12G 15G 45% /var/lib/docker/overlay2/db80172a9f5521d9e177366f64945e05d25fccdd4e639c7ad68b0e54083a1acc/merged\ntmpfs 392M 12K 392M 1% /run/user/0\n",
"success": true
}
]
}
3.コード実行
コード実行ではNodeまたはPythonを実行することができます。まず、入力変数として前ステップの結果から「json
」部分を受け取るように設定します。そして、実際のPythonコードでは入力変数(json
)から「stdout
」部分を抽出する処理を記載します。
Pythonコード部分は以下の通りです。
def main(arg1: list) -> str:
return {
"result": arg1[0]["stdout"]
}
4.LLM
結果をAIで処理させます。今回はAIモデルとしてGemini 2.5 Flash-Liteを指定しました。AIに処理させる対象文字列として、コンテキスト設定には前のステップの出力変数にあたるresult
変数を指定します。システムプロンプト/ユーザプロンプトには各々、以下を指定しました。
プロンプト種別 | 内容 |
---|---|
システムプロンプト | あなたはLinuxのエキスパートです。質問に対して日本語で簡潔に回答してください。 |
ユーザプロンプト | result はLinuxでdfコマンドを実行し、ディスクの使用率を確認した結果です。この結果に問題があるか、どうか、教えてください。 |
5.終了
最後にAI分析の結果を表示してワークフローを終了します。
ワークフローの実行例
ワークフローの実行例は以下の通りです。Linux上でコマンドを実行した結果をAIが分析し、アドバイスしてくれています。
より実践的にするには
より実践的なものにするには例えば以下のような改善が考えられます。
- 解析の難しい、複雑なコマンドを実行結果をAIに処理させる
- 複数のコマンドの実行結果から、AIに分析させる
- 結果をSlackなどで通知する
- etc.