ダイファイ は、AIアプリケーションのためのエンジンと開発プラットフォームである。
企業レベルのAIアプリケーションやインテリジェント・ボディ・アプリケーションを開発する必要がある場合、一般的にいくつかの選択肢がある:
- すべてのコードを手書きし、大手モデルベンダーのあらゆる種類のAPIインターフェースと自分でインターフェースする。
- VercelのAI SDKのような、カプセル化のレイヤーを持つSDKをいくつか使用する。
- DifyのようなAIアプリ開発プラットフォームを利用する。
ディファイに似ている製品には"バックル".しかし、Buttonは純粋なクラウドSaaSであり、ソリューションの一部として顧客に提供するには適していない。そのため、オープンソースでプライベート展開が容易なDifyの方が適している。
ディファイのライセンスは市販されている
DifyはApacheのオープンソースプロトコルを使用していますが、商用利用にはさらにいくつかの制限があります:
1.マルチテナント・サービスは許可されていません;
2.Dify Web Console インターフェースのロゴおよび著作権情報の変更は認められません。
全体として、このオープンソースのプロトコルはまだ非常に緩い。各企業顧客専用の個別のセットをデプロイし、Dify Web Consoleを使用させない限り、違反にはなりません。
つまり、コードを一行も書くことなく、Dify Web Consoleの視覚化ツールを使ってスマートボディアプリケーションを構築し、自動生成されたAPIを自分のソリューションに統合することができるのです。
私のプロジェクトにDifyを使う必要がありますか?
スマートボディのアプリケーションを開発するためにDifyを使う必要はない。基本的には、OpenAIのAPIを古いJava 8とSpring Bootのバックエンドに統合することができる。
しかし、スマートボディのアプリケーションには、キュー・ワードの常時デバッグや知識ベース・データの処理にまで踏み込む特徴があります。Difyを使用することで、開発経験と効率を大幅に向上させることができます。プロンプトを変更して新しいバージョンをリリースすることはできません。
DifyのバックエンドはPythonで開発されている。AI関連のコンポーネントのエコシステムのほとんどがPythonパッケージを直接利用できるようになっているからだ。エンタープライズ・アプリケーションで一般的なJavaバックエンドとは異なり、ビジネス・クラスタとは別にスタンドアロンでデプロイすることが推奨される。
Dify コンポーネントの概要
Difyは共通のフロントエンドとバックエンドの分離アーキテクチャを採用しており、非常に多くのコンポーネントと非常に柔軟なデプロイ方法を備えている。
Dify公式サイトが推奨するDocker Composeデプロイソリューションは、ローカルでの開発および体験にのみ使用できます。本番環境では、ニーズに応じてK8sやその他の可用性の高いデプロイソリューションを使用する必要があります。
Difyバージョン0.15.3を例にとると、本番環境での展開には以下のコンポーネントが必要です:
必須コンポーネント
- アプリ
- ワーカー
- ウェブ
基本コンポーネント
- ポストグレス
- レディス
- サンドボックス
- ssrf_proxy
- サートボット
- nginx
- 堰を切ったように
コンポーネントの関係を以下に示す。
建築レイヤリングの詳細
バックエンド
Difyのバックエンドには以下が含まれる。
- "api"、gunicornで開始したPythonのフラスコサービス;
- celeryで起動した "worker "は、redisキューから非同期タスクを消費する。これらのタスクは、データセットファイルのインポートやデータセットドキュメントの更新などです。
前方部分
フロントエンドの「ウェブ」はNext.jsで開発されています。pm2(node)でビルドして起動します。
アクセス層
Nginxはウェブリクエストをapiやウェブに転送するのに使われ、certbotはHTTPS証明書を自動的に管理するのに使われる。
ストレージ層
ディファイのストレージレイヤーは
- リレーショナル・データベース PostgreSQL
- NoSQLデータベース/キャッシュ Redis
- ベクトルデータベースデフォルトはWeaviate。
安全性
Difyは、アプリケーション開発プラットフォームとして、ビジネスロジックを処理するワークフローノードをオーケストレーションするビジュアルツールとして利用できます。
ワークフローノードでは、ユーザーがPython/NodeJSコードを実行できるため、リスクの高い操作の実行を制限するサンドボックス機構が必要となる。
以下の2つのモジュールが関係する。
- サンドボックス」は囲碁で開発された。
- ssrf_proxy "はsquidで設定されたネットワーク・アウトレットである。
LangChainとの比較
LangChainは最も古いLLMアプリケーション開発フレームワークです。下の図からわかるように、Difyはあらゆる面でLangChainを凌駕しています。
本番環境におけるDifyのプライベート展開
AI Intelligent Bodyアプリケーションを顧客向けにカスタマイズする必要がある場合、また、垂直産業向けのAIソリューションを提供する必要がある場合は、Difyを本番環境にプライベートで導入することをご検討ください。
以下の2つの理由から、ディファイのコードを修正し、深くカスタマイズする必要があるかもしれません:
1.企業の内部データをオープンにする。特に、構造化された内部データを、以下に使用できる形に照合する。 ラグ 知識ベースの
2.ログイン認証をオープンにし、インテリジェンスが自身のアイデンティティを理解し、パーソナライズされたサービスを提供できるようにする。