メインコンテンツへ移動
AIチュートリアル

DifyでLLMアプリケーションを構築・セルフホストする

Difyの機能を学び、Docker ComposeでCommunity Editionをデプロイしてダッシュボードを初期化し、ワークフロー、モデル連携、RAG、エージェント、API、可観測性、高度なデプロイオプションについて詳しく解説します。

DifyでLLMアプリケーションを構築・セルフホストする

Difyとは?

Difyは、大規模言語モデルを活用したアプリケーションを開発するためのオープンソースプラットフォームです。ビジュアルAIワークフロー、検索拡張生成(RAG)、エージェント機能、モデル管理、可観測性、アプリケーションAPIを1つのインターフェースに統合し、チームがプロトタイプから本番環境へ移行するのを支援します。

何もインストールせずにホステッドサービスのDify Cloudを利用できるほか、自分の環境にCommunity Editionをデプロイすることもできます。追加要件を持つ組織向けに、エンタープライズ向けの選択肢も用意されています。

主な機能

  • ビジュアルワークフロー:ビジュアルキャンバス上でAIワークフローを構築・テストできます。
  • 幅広いモデルをサポート:推論プロバイダーまたはセルフホスト型ソリューションを通じて、数百の proprietaryおよびオープンソースモデルに接続できます。GPT、Mistral、Llama 3、OpenAI API互換モデルなどを利用できます。
  • Prompt IDE:プロンプトを作成し、モデルの性能を比較できます。また、チャットアプリケーションにテキスト読み上げなどの機能を追加できます。
  • RAGパイプライン:ドキュメントから情報を取り込み、検索できます。PDF、プレゼンテーション、その他の一般的な形式に対応したテキスト抽出機能も組み込まれています。
  • エージェントとツール:LLM Function CallingまたはReActを使ってエージェントを定義できます。DifyにはGoogle Search、DALL·E、Stable Diffusion、WolframAlphaなど50以上の組み込みツールがあり、カスタムツールにも対応しています。
  • LLMOps:アプリケーションのログと性能を監視し、本番データやアノテーションを使ってプロンプト、データセット、モデルを改善できます。
  • サービスとしてのバックエンド:対応するAPIを通じて、Difyアプリケーションを既存のビジネスロジックに統合できます。
  • 可観測性の統合:DifyはOpik、Langfuse、Arize Phoenixなどの可観測性オプションに対応しています。

Difyの実行方法を選ぶ

Dify Cloud

Dify Cloudはローカル環境のセットアップが不要なため、プラットフォームを試す最も手早い方法です。プロジェクトのREADMEによると、サンドボックスプランには200回分の無料GPT-4呼び出しが含まれ、セルフデプロイ版で利用できる機能が提供されます。

セルフホスト型Community Edition

セルフホスティングを利用すると、Difyを実行する環境を自分で管理できます。ドキュメントに記載されている最も簡単なインストール方法は、Docker Composeを使用する方法です。

エンタープライズおよび組織での利用

Difyにはエンタープライズ向けの機能もあります。組織はDifyチームに問い合わせて、要件やライセンスの選択肢について相談できます。

Docker ComposeでDifyをインストールする

要件を確認する

開始する前に、ホストマシンが次の最小要件を満たしていることを確認してください:

  • CPU:2コア以上
  • メモリ:4 GiB RAM以上
  • Docker:インストール済みで実行中
  • Docker Compose:バージョン2.24.0以降

Dockerがまだ利用できない場合は、公式のDockerインストールガイドを使用してください。

サービスを起動する

Difyリポジトリをチェックアウトしたディレクトリで、プロジェクトディレクトリとDockerディレクトリに移動し、環境変数ファイルの例をコピーしてサービスを起動します:

cd dify
cd docker
cp .env.example .env
docker compose up -d

-dオプションを指定すると、コンテナがデタッチモードで起動し、バックグラウンドで実行を継続できます。

ダッシュボードを初期化する

サービスの起動後、ブラウザーで次のアドレスを開きます:

http://localhost/install

ダッシュボードに表示される初期化手順に従ってください。セットアップに失敗した場合は、公式のセルフホスティングFAQを参照してください。

Difyへの貢献や変更を行いたい開発者は、Docker Composeのクイックスタートだけに頼らず、公式のソースコードデプロイガイドを使用してください。

基本的な使い方

1. モデルを選択する

Difyは、多数のホステッド推論プロバイダーやセルフホスト型ソリューションのモデルと統合できます。アプリケーションに適したプロバイダーとモデルを選択してください。GPT、Mistral、Llama 3、OpenAI API互換インターフェースを通じて提供されるモデルなどを利用できます。現在サポートされている統合については、モデルプロバイダー一覧を参照してください。

2. ワークフローを構築してテストする

ビジュアルキャンバスを使って、AIアプリケーションのロジックを組み立て、テストします。入力の処理、モデルへの送信、検索した情報による拡張、ツールへの受け渡しなど、単一のプロンプト以上の処理が必要なアプリケーションでは、ワークフローが役立ちます。

  1. アプリケーションがユーザーから受け取る内容を定義します。
  2. Difyのビジュアルワークフローインターフェースを使ってAIプロセスを表現します。
  3. ワークフローを適切なモデルに接続します。
  4. 動作をテストし、生成された結果を確認します。
  5. 必要に応じて、ワークフロー、プロンプト、データセット、モデルの選択を調整します。

3. Prompt IDEでプロンプトを開発する

Prompt IDEを使うと、インタラクティブなインターフェースでプロンプトを作成・テストできます。どのモデルがアプリケーションに最適かを判断する前に、モデルの性能を比較できます。チャットベースのアプリケーションでは、IDEにテキスト読み上げなどの機能を組み込むこともできます。

4. RAGで知識を追加する

DifyのRAGパイプラインは、ドキュメントの取り込みと検索をカバーします。一般的な知識ベースアプリケーションでは、PDFやプレゼンテーションなどの対応ファイルを取り込み、テキストを抽出し、ユーザーへの回答時に関連する情報を検索できます。

たとえば、社内ドキュメントに基づいて質問に回答するアシスタントを作成できます。モデルがもともと持つ知識だけに頼るのではなく、アプリケーションが取り込んだドキュメントから関連コンテンツを検索し、回答の生成に利用できます。

5. ツールを使用するエージェントを作成する

アクションや外部サービスが必要なタスクには、Function CallingまたはReActを使ってエージェントを定義します。Google Search、DALL·E、Stable Diffusion、WolframAlphaなどの組み込みツールを追加するか、アプリケーションの設計に対応したカスタムツールを接続できます。

例として、検索を使って情報を収集してから回答を生成するリサーチエージェントがあります。また、ユーザーが画像などのビジュアル出力を求めたときに、画像生成ツールを呼び出すクリエイティブエージェントも作成できます。

6. APIを通じてアプリケーションを統合する

Difyの機能には対応するAPIがあり、完成したアプリケーションを別の製品のバックエンドとして利用できます。Webアプリケーション、社内ツール、その他の業務システムからDifyで構築したロジックを呼び出す必要がある場合は、このバックエンド・アズ・ア・サービス方式を使用します。現在の統合手順については公式ドキュメントを参照してください。

監視と継続的な改善

DifyのLLMOps機能を使うと、アプリケーションのログとパフォーマンスを継続的に監視できます。本番データとアノテーションを活用して、プロンプト、データセット、モデルの選択を改善できます。これにより、アプリケーションをデプロイし、その動作を確認し、観測結果に基づいて改良する反復的なワークフローを構築できます。

可観測性をさらに高めるには、DifyとOpik、Langfuse、Arize Phoenixの統合を確認してください。環境のトレーシング、評価、監視のニーズに応じて統合先を選択します。

高度なセットアップのヒント

環境変数をカスタマイズする

基本的な起動時のデフォルト設定はdocker/.env.exampleに保存されています。クイックスタートコマンドを実行すると、これらのデフォルト設定がdocker/.envにコピーされます。カスタムデプロイでは、このファイルを編集します。オプションの高度な変数は、テーマ別にdocker/envs/以下に整理されています。

設定を変更したら、dockerディレクトリから次のコマンドを再度実行します。

docker compose up -d

利用可能な設定の完全な一覧は、環境変数のドキュメントを確認してください。

Grafanaでメトリクスを監視する

コミュニティが作成したGrafanaダッシュボードでは、DifyのPostgreSQLデータベースをデータソースとして利用できます。アプリケーション、テナント、メッセージなど、さまざまなメトリクスのレベルで監視できます。

Kubernetesにデプロイする

高可用性環境向けに、READMEにはコミュニティが提供するHelmチャートとKubernetes YAMLファイルが掲載されています。利用可能な選択肢は次のとおりです。

これらのデプロイリソースはコミュニティによる提供物です。本番環境で使用する前に、ドキュメントと互換性を確認してください。

クラウドインフラストラクチャツールを使用する

プロジェクトのREADMEでは、主要なクラウドプラットフォーム向けのコミュニティによるデプロイ方法も紹介しています。

  • Terraform: Azure GlobalおよびGoogle Cloud向けのコミュニティプロジェクトがあります。
  • AWS CDK: AWSのサンプルでは、EKSベースおよびECSベースのセルフホスティングオプションを利用できます。
  • Alibaba Cloud: Computing NestとData Managementのデプロイオプションが掲載されています。
  • Azure Kubernetes Service: コミュニティ提供のAzure DevOps PipelineとHelmチャートを使って、DifyをAKSにデプロイできます。

セキュリティ報告を非公開で処理する

セキュリティ脆弱性をGitHub issueとして公開しないでください。プロジェクトでは、security@dify.ai宛てに非公開で報告するよう求めています。

ヘルプの利用と貢献

質問やフィードバックにはGitHub Discussionsを、バグや機能提案にはGitHub Issuesを利用してください。アプリケーションの共有や他のユーザーとの交流には、Discordコミュニティを利用できます。

コードの開発に貢献したい場合は、プロジェクトのコントリビューションガイドをお読みください。翻訳に貢献する方は、国際化READMEをご参照ください。

まとめ

Difyは、ワークフロー、プロンプト、RAG、エージェント、モデル管理、可観測性、APIを、統合されたLLMアプリケーションプラットフォームにまとめます。Dify Cloudですぐに試すことも、Docker Composeを使ってCommunity Editionをセルフホストすることもできます。まずはデフォルト設定で始め、目的を絞ったAIアプリケーションを構築・テストし、要件の拡大に応じて監視やクラウドデプロイのオプションを導入しましょう。