見出し画像

Dify.AIが実務に耐えられるか試してみた

ここ一年、LLMを使ったチャットボットや業務改善ツールを仕事で開発しています。

普段はPoCならStreamlit、本番開発ならゴリゴリにフロントとバックを作っているのですが、Dify.AIがオープンソースで商用利用も可能ということなので、試してみました。

Difyとは

オープンソースのLLMアプリ開発プラットフォーム

ノーコードでRAGを使ったチャットボット、エージェント、AIを使ったワークフローなどを作成・公開できる。

githubからリポジトリをcloneしてきてローカルで使うことも、運営が公開しているSaaSから無料or月額料金を払って使うこともできる。

手軽に試したい方は、Dify.AIでアカウント作成してテンプレート機能からすぐにチャットボットを作成・公開できます。

ノーコードで


様々な機能を持ったチャットボットを作成

試してわかったこと

  • ローカルでも簡単に動き、商用利用も可能(一部条件あり)

  • RAG構成のChatBotはかなり優秀

  • 複雑なワークフローの構成はまだ無理(今後に期待)

  • オープンソースで更新がめちゃ早い(だいたい週一更新)

現段階でもチャットボットなら実務に耐えられるし、今後のアップデートにもかなり期待できそうです。

詳しく説明していきます。

ローカルでも簡単に動き、商用利用も可能(一部条件あり)

githubにソースコードが公開されており、docker-composeコマンド一発で環境構築が完了・即座に利用を始められます。

実際、dockerインストール済みであれば、ダウンロード含めて5分くらいで構築完了しました。
ソースコードをcloneして、 `docker compose up -d`するだけです。

ローカルホストで動きます

ライセンスによると基本的にはApacheライセンスであり、以下2点に気を付ければ商用利用も可能なようです。

  • Difyのソースコードを使ってマルチテナント環境でSaaSサービスを提供する場合は、Difyから書面での許可が必要。

  • Difyのフロントエンドコンポーネントを使用する際は、ロゴや著作権表示の削除・変更は不可。

マルチテナント環境とはなんぞやという話なんですが、Claudeに聞いたところ、以下のような回答でした。

マルチテナント環境とは、複数のユーザーが同一のソフトウェアを共有しつつ、各ユーザーのデータを論理的に分離して管理できる環境です。物理的には同じシステムを使用しますが、各ユーザーは独自のデータとアカウントを持ち、他のユーザーから独立して機能します。

例えば、ユーザーAとユーザーBが同じソーシャルメディアプラットフォームを利用する場合、それぞれ独自のプロフィール、投稿、フレンドリストを持ちます。ユーザーAはユーザーAの投稿とフレンドのみアクセスでき、ユーザーBのデータにはアクセスできません。

マルチテナント環境の利点は、リソースの効率的な利用、スケーラビリティ、メンテナンスの容易さ、コスト削減などです。一方、データのセキュリティとプライバシー、パフォーマンス管理、ユーザー間の分離の維持が課題となります。

Claude 3 Opus

要は、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キーなどの必要な情報を入力すればすぐに試せるのがいいですね。

モデルプロバイダーの設定画面

ベクトル検索・全文検索・ハイブリット検索に対応しており、
リランクモデルも複数対応してます。

UIも充実していて、ChatGPTなどのチャットアプリで使える以下の機能はだいたい使えます。

  • ファイルのアップロード

  • workflowの結果確認

  • like, dislikeボタン

  • 履歴の自動保存・呼び出し

UIは充実

また、ユーザーの利用履歴や利用回数・アクティブユーザー数などのダッシュボードも完備されており、like, dislikeの結果なども確認できます。

ダッシュボードの様子

複雑なワークフローの構成はまだ無理(今後に期待)

残念ながら、複雑なワークフローの構成はまだ無理でした。
作れるのは、各種ツールの適用と、単純な条件分岐のみです。

例えば以下のことはできませんでした(2024.05.05現在)

  • function_callingを使って以下のことを行う

    • 複雑な条件分岐の設定

    • 出力の安定化

  • ワークフローをワークフローやチャットボット(orエージェント)から呼び出す

  • ループ処理

また、変数の管理がまだいまいちで、複雑なワークフローを作ろうとすると同じような変数が大量発生し、直感的な操作ができているとは言いにくいです。
LLMにjson形式でパラメータを出力させた場合、Pythonコードを書いて自力でパースしないといけなかったりもします。

ただ、組み込めるツールはたくさんあるので、現段階でも使えるシーンは多いと思います。

豊富な外部ツール

オープンソースで更新がとても早い(だいたい週一更新)

オープンソースであり、商用利用の条件も緩いこともあってか、バージョンの更新がとても速いです。

だいたい週一ペースで新しい機能が追加されています。

特にツールの追加・更新が早いです。
この辺もオープンソースの特徴でしょうか?

今使いにくい部分もすぐに解消されると信じてます。

まとめ

今までやっていた開発のすべてでDify.AIを使うわけにはいきませんが、
一部開発、とくにチャットボットのPoCにはかなり役にたってくれそうです。

やはり、好きな環境で動かせることと、使えるモデルやツールの数が膨大なのが強いですね。

移り変わりの早いLLM界隈にもついていけるツールな気がします。

まだ微妙な部分もありますが、その辺は今後に期待ということで、、、

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