![見出し画像](https://assets.st-note.com/production/uploads/images/139575342/rectangle_large_type_2_6495cb7297430c8f28c77047149b5d27.png?width=1200)
Dify.AIが実務に耐えられるか試してみた
ここ一年、LLMを使ったチャットボットや業務改善ツールを仕事で開発しています。
普段はPoCならStreamlit、本番開発ならゴリゴリにフロントとバックを作っているのですが、Dify.AIがオープンソースで商用利用も可能ということなので、試してみました。
Difyとは
オープンソースのLLMアプリ開発プラットフォーム。
ノーコードでRAGを使ったチャットボット、エージェント、AIを使ったワークフローなどを作成・公開できる。
githubからリポジトリをcloneしてきてローカルで使うことも、運営が公開しているSaaSから無料or月額料金を払って使うこともできる。
手軽に試したい方は、Dify.AIでアカウント作成してテンプレート機能からすぐにチャットボットを作成・公開できます。
![](https://assets.st-note.com/img/1714878075727-WWnpluSVVY.png?width=1200)
![](https://assets.st-note.com/img/1714878393042-BxLTd36fh1.png?width=1200)
試してわかったこと
ローカルでも簡単に動き、商用利用も可能(一部条件あり)
RAG構成のChatBotはかなり優秀
複雑なワークフローの構成はまだ無理(今後に期待)
オープンソースで更新がめちゃ早い(だいたい週一更新)
現段階でもチャットボットなら実務に耐えられるし、今後のアップデートにもかなり期待できそうです。
詳しく説明していきます。
ローカルでも簡単に動き、商用利用も可能(一部条件あり)
githubにソースコードが公開されており、docker-composeコマンド一発で環境構築が完了・即座に利用を始められます。
実際、dockerインストール済みであれば、ダウンロード含めて5分くらいで構築完了しました。
ソースコードをcloneして、 `docker compose up -d`するだけです。
![](https://assets.st-note.com/img/1714864913287-Ho34vH9Hwa.png?width=1200)
ライセンスによると基本的にはApacheライセンスであり、以下2点に気を付ければ商用利用も可能なようです。
Difyのソースコードを使ってマルチテナント環境でSaaSサービスを提供する場合は、Difyから書面での許可が必要。
Difyのフロントエンドコンポーネントを使用する際は、ロゴや著作権表示の削除・変更は不可。
マルチテナント環境とはなんぞやという話なんですが、Claudeに聞いたところ、以下のような回答でした。
マルチテナント環境とは、複数のユーザーが同一のソフトウェアを共有しつつ、各ユーザーのデータを論理的に分離して管理できる環境です。物理的には同じシステムを使用しますが、各ユーザーは独自のデータとアカウントを持ち、他のユーザーから独立して機能します。
例えば、ユーザーAとユーザーBが同じソーシャルメディアプラットフォームを利用する場合、それぞれ独自のプロフィール、投稿、フレンドリストを持ちます。ユーザーAはユーザーAの投稿とフレンドのみアクセスでき、ユーザーBのデータにはアクセスできません。
マルチテナント環境の利点は、リソースの効率的な利用、スケーラビリティ、メンテナンスの容易さ、コスト削減などです。一方、データのセキュリティとプライバシー、パフォーマンス管理、ユーザー間の分離の維持が課題となります。
要は、Difyで作成した一つのアプリを、顧客ごとのデータは分離して管理しつつ、複数顧客でリソース共有して使うようなサービスはダメ見たいです。
対して、各企業に専用のサーバーを立てて、業務改善ツールとして使ったり、顧客ごとにデータを管理しない問い合わせChatBotなどには利用できそうです。
Dify.AI(オンラインでSaaSとして公開されているDify)のライセンス条項では、「"Dify.AIに類似した"マルチテナントサービスには利用できません」とも読み取れる内容になっているので、結構いろんなサービスができるのかもしれません。気になる方はDify公式にメールを送って確認してみてください。
確認してみました。
以下でまとめているので、気になる方は読んでみてください。
また、DifyはAPIサーバーとして利用することもできるので、フロントだけ自作すれば、二番目の条件も関係ありません。
ソースコードを引っ張ってきて、好きな環境で動かせる上に、商用利用も可能というところが熱いですね。
RAG構成のChatBotはかなり優秀
最も熱い分野ということもあって、RAGに関する機能は充実してます。
まず、だいたいすべてのモデルが使えます。
OpenAIやANTHROPICはもちろんのこと、Azure OpenAI Service、Google Gemini, NVIDIA API Catalog, qroq cloud、Hugging Faceなどにも対応しています。
それぞれAPIキーなどの必要な情報を入力すればすぐに試せるのがいいですね。
![](https://assets.st-note.com/img/1714867209474-qdC7AQzHtj.png?width=1200)
ベクトル検索・全文検索・ハイブリット検索に対応しており、
リランクモデルも複数対応してます。
UIも充実していて、ChatGPTなどのチャットアプリで使える以下の機能はだいたい使えます。
ファイルのアップロード
workflowの結果確認
like, dislikeボタン
履歴の自動保存・呼び出し
![](https://assets.st-note.com/img/1714878393042-BxLTd36fh1.png?width=1200)
また、ユーザーの利用履歴や利用回数・アクティブユーザー数などのダッシュボードも完備されており、like, dislikeの結果なども確認できます。
![](https://assets.st-note.com/img/1714867754371-Nku68ZHzva.png?width=1200)
複雑なワークフローの構成はまだ無理(今後に期待)
残念ながら、複雑なワークフローの構成はまだ無理でした。
作れるのは、各種ツールの適用と、単純な条件分岐のみです。
例えば以下のことはできませんでした(2024.05.05現在)
function_callingを使って以下のことを行う
複雑な条件分岐の設定
出力の安定化
ワークフローをワークフローやチャットボット(orエージェント)から呼び出す
ループ処理
また、変数の管理がまだいまいちで、複雑なワークフローを作ろうとすると同じような変数が大量発生し、直感的な操作ができているとは言いにくいです。
LLMにjson形式でパラメータを出力させた場合、Pythonコードを書いて自力でパースしないといけなかったりもします。
ただ、組み込めるツールはたくさんあるので、現段階でも使えるシーンは多いと思います。
![](https://assets.st-note.com/img/1714868524435-BfRwAdLcw0.png)
オープンソースで更新がとても早い(だいたい週一更新)
オープンソースであり、商用利用の条件も緩いこともあってか、バージョンの更新がとても速いです。
だいたい週一ペースで新しい機能が追加されています。
特にツールの追加・更新が早いです。
この辺もオープンソースの特徴でしょうか?
今使いにくい部分もすぐに解消されると信じてます。
まとめ
今までやっていた開発のすべてでDify.AIを使うわけにはいきませんが、
一部開発、とくにチャットボットのPoCにはかなり役にたってくれそうです。
やはり、好きな環境で動かせることと、使えるモデルやツールの数が膨大なのが強いですね。
移り変わりの早いLLM界隈にもついていけるツールな気がします。
まだ微妙な部分もありますが、その辺は今後に期待ということで、、、