見出し画像

Dify が苦手としていることと、その対策としての n8n の紹介


Dify とは

もうすっかり紹介記事がたくさん出てきている Dify ですが、皆さん既に色々と触られ試されていますでしょうか?

もう今さらここで Dify について説明するまでもないと思うのですが、いくつかの特徴を挙げると、

  • ホスティングサービスだけでなく、オープンソースのためセルフホストで展開できる

  • 技術的な知識なしに、ベクトルデータベースを用いた RAG の運用が簡単にできる

  • さまざまなワークフローを GUI ベースで分かりやすく作成できる

    • 複数の LLM を混在させる

    • 出力条件に応じて入力を変更させる

    • ……など

といったところでしょうか。
他にもたくさんあり、note 上だけでも熱量高く紹介されていますので、いくつかの記事をご参照ください。

Dify が苦手としていること

能動的な在り方

ただ現時点 2024/05/09 での Dify が苦手としていることとして、

  • 能動的な在り方

  • 外部サービスとの連携

という点があります。

まず最初の点。

端的に言うと、現状の Dify は WEB ブラウザでの GUI 上で、ユーザからの入力がトリガーとなって実行される使い方が、主なところになっています。
「ユーザからの入力待ち」=すなわち受動的であって、能動的にアクションを起こすことが難しいのです。

もちろん Dify には REST API が用意されており、POST リクエストを送ることによって、入力のトリガーとすることができます。

ただこの場合、POST リクエストを送信するためのシステムを別途で用意する必要があります。
ここで専門的な知識を持っていないことによる障壁が、途端に高くなってしまいます。

これは Google nest や Alexa など、スマートスピーカーが通ってきた課題でもあります。
「おーけーぐーぐる」「あれくさ」など、起動ワードを言わないと何かを実行してくれない彼らに対して、「不便だなー」と思われた方はたくさんいらっしゃるのではないでしょうか。

Google Home の公開 API を用いた開発などすることなく、たとえば所定の夜時間に Google カレンダーに登録されている翌日の予定を読み上げてほしい、とか、そういう願望を持ったりしませんでしたか?(非スマートスピーカーユーザには分かりづらい喩えかもしれませんが……)

外部サービスとの連携

上記のように「能動的」になってくれないこともあって、 Dify を外部サービスと連携させることは、専門的な知識を持っていないと難しいです。

たとえば外部サービスとの連携ということで一例を挙げると、以下のようなものはいかがでしょうか。

  • Gmail で受信したメールの中でも、特定の条件に合致したものについて、

  • Dify のワークフローに流し、

  • LLM でメールの内容を確認した上で、

  • LLM で返信文面の下案を作成し、

  • Gmail の下書きフォルダに格納する

これが自動でなされていれば、メールを受けた Gmail ユーザは、受信フォルダを数分後に開くと下書きされたものを確認できるようになっているので、内容チェックするなり手を入れるなりしてから、返信すればよいわけです。

他にも、「Dify とあのサービスが連携できたら……」というようなアイディアは、いくらでも出てきそうですよね。

しかし、

  • Gmail の内容を Dify に渡すのって、どうすればいいの??

  • Dify で生成した結果を Gmail の下書きに保存するのって、どうすればいいの??

となってしまうわけですね。
こうした「外部サービスとの連携」が、現状の Dify が苦手としていることなわけです。

ではどうしたら……?

n8n とは

……ということで紹介いたしますのが n8n です。

ワークフローオートメーションツールと呼ばれるもののうちの一つです。
様々なサービスやアプリケーションを連携させて、自動化の仕組みを作ることができるツールです。

競合としては、

  • IFTTT

  • Zapier

  • make

  • Claris Connect

といったものが挙げられますが、n8n がこれらと比較して頭抜けているのは GitHub 上でコードが公開されており、Docker を用いたセルフホストで展開させることが容易な点です。
つまり、立ち位置として Dify に似ています。

具体的に何ができるかというと、例えば、

  • メールの受信をトリガーに、

  • メール本文を解析し、

  • その内容に応じて別のサービスを実行する

といったような、一連の処理フローを作成できます。

Dify と同じく、ノードと呼ばれる単位でワークフローを構築していきます。
そして様々な機能がノードとして用意されており、目的の処理に応じてノードを組み合わせていくことで、自動化の仕組みが作られます。

WEBサーバからデータを取得する場合は「HTTPリクエスト」ノードを使い、メールを送信する場合は「メール送信」ノードを指定します。

プログラミング経験がない方でも、GUI でノードを組み立てることで比較的簡単にワークフローを作成できるのが特徴です。

公式サイトよりワークフロー画像の転載

連携可能な既存サービスも膨大に用意されていて、ゆくゆくはもしかしたら Dify も他サービスとの連携機能が実装されていくのかもしれませんが、n8n の開発速度もとても早いので、追いつくことは困難でしょう。

数百種類の既存サービスと連携させられる

なお n8n にも LLM に関するノードはあり、n8n 単独でもベクトルデータベースと繋げることで RAG の実装まで可能になっているのですが、手軽さは Dify の方が圧倒的に楽です。

つまるところ、餅は餅屋といいますので、LLM は Dify、 そして他サービスとの連携は n8n に任せる、といった棲み分けをするのが良いのではと思っています。

  • Google フォームに入力された問い合わせに対しての下書きを自動作成

  • 定期的にスプレッドシート上のデータを集計させ、報告資料を自動生成

  • IoT デバイスからのセンサーデータに応じて、最適な制御コマンドを生成

とまあ、何でもできそうですよね。

Dify と n8n の連携方法

ではそんな Dify と n8n の連携方法はどうしたら……?

ホスティングサービスとしての Dify, n8n の契約

ということで、まず一番簡単なやり方は、両方ともホスティングサービスを契約することですね。
お金で解決! 時短! 楽!

セルフホストで運用

ただ、せっかくセルフホストで展開できる Dify, n8n ですので、制約なしにやりたいですよね。
両方ともバージョンアップの激しいサービスですので、定期的な保守が大変かもしれませんが、それでも従量制限がないというのは大きな魅力です。

ということで、具体的な構築手順につきましては、別途以下記事を書きましたので、こちらをご参照ください。
有料設定してはいますが、骨子部分はすべて無料の範囲におさまっています。
(以下記事内に、本記事の内容を書くとなると長くなりすぎてしまうなあ……ということで、分割記事として書きました)

何で VPS ? と思われる方もいらっしゃると思います。

AWS, GCP, Azure のような大手クラウドベンダー上のサービスに展開するのもよいでしょう。
ただ私個人としては、あまり外資にお金が流れていくのもなあ……という気持ちが強く、国内 VPS の利用を推しています。

もちろん、一瞬たりともダウンさせてはいけない! みたいなシビアな環境で運用しないといけないものであれば、大手クラウドベンダー上での運用もいたしかたなしですが、今回の要件であれば「本当にそこまでやる必要あります?」というのはしっかり考えてもよいかもしれません。

実際の連携例

実際の連携例として、

  • Gmail で受信したメールに対して、特定のラベルを人間が付けた場合、

  • ラベルの付いたメールをチェックして、

  • LLM が返信文面を作成して、

  • 下書きとして保存

というワークフローの記事をご用意いたしました。


まとめ


この「まとめ」は Claude 3 Sonnet によるものです。

Dify は優れた LLM ホスティングサービスですが、能動的な処理の実行や外部サービスとの連携が苦手な点がありました。
一方で、n8n はワークフローオートメーションツールとして、さまざまなサービスを連携させた自動化フローを作成することができます。

つまり、Dify の優れた LLM 機能と n8n の外部サービス連携能力を組み合わせることで、より高度な自動化ソリューションを実現できます。
例えば、受信メールの内容解析から LLM による返信文案作成、Gmail 下書き保存までの一連の処理をスムーズに行えるようになります。

両者を連携させる方法としては、ホスティングサービスを利用する手軽な方法と、セルフホストでの構築による自由度の高い方法があります。
セルフホストでの構築は初期コストと運用コストがかかりますが、機能の制限がなくなる半面、定期的な保守作業が必要になります。

いずれの方式でも、Dify と n8n を組み合わせることで、LLM の高度な機能を最大限活用した、効率的で知的な自動化ソリューションを実現できます。
今後の LLM 活用の広がりに合わせ、両者の連携需要は高まっていくことが予想されます。

おわりに

はい、ということで、以上になります!

具体的に n8n と Dify とを連携させることでどんなことができるかというのは、アイディア次第でいくらでも! という感じではありますが、もし記事にして欲しいネタなどありましたらコメントでお知らせいただけると嬉しいです😀

「そうは言っても難しいよ!」「代わりに構築してくれん?」という場合はお気軽にご相談ください🙌


この記事が気に入ったらサポートをしてみませんか?