Dify

Dify、はじめました。いえ、Dify 三昧の日々です。

1. はじめに

少し時間が開きました。
こんにちは、ディーネットのよろず請負、深見です。

今回は、今流行りの生成 AI に関連したお話になります。ChatGPT の鮮烈なデビュー以来、話題の尽きない生成 AI です。Open AI 社の ChatGPT、Anthropic 社の Claude、Google の Gemini と、最近では DeepSeek まで、多様なサービスが犇めき合っています。

これらをチャットボットとして個々に利用するのも良いのですが、使い方が限定されることもあり、もっと自分の思うような作業やレポート作成などに生成 AI を活用できれば…と考えたことはありませんか?そう、生成 AI を使ったアプリケーションを手軽に作成してみたい、そんな願いを叶えるソリューションの登場です。

そこで今回は、最近注目を集めている生成 AI アプリ作成プラットフォーム「Dify」をご紹介します。

2. Dify とは?

Dify は、非エンジニアでも簡単に AI アプリケーションを構築・展開・運営できるオープンソースの LLMOps(Large Language Model Operations)プラットフォームです。

複雑なコーディングやプログラミングの知識がなくても、大規模言語モデル(LLM)を活用したアプリケーションを簡単に作成できるのが特徴です。直感的なインターフェースを通じて、プロンプトの設計からデプロイメントまでをノーコードで実現できます。

基本的な機能

  • ノーコードでの AI アプリケーション構築
  • 複数の LLM プロバイダー(OpenAI、Anthropic、Google など)との連携
  • プロンプト管理とバージョン管理
  • データセットの管理と RAG(Retrieval-Augmented Generation)機能
  • アプリケーションのパフォーマンス分析とモニタリング
  • API エンドポイントの自動生成

SaaS 版とセルフホスト版の違い

SaaS 版:

  • クラウドベースで即座に利用開始可能
  • インフラ管理不要
  • 月額サブスクリプション料金体系
  • データ保存に関するポリシーに従う必要あり

セルフホスト版(コミュニティ版):

  • 自社インフラで完全にホスト可能
  • データの完全な所有権と管理権限
  • オープンソースで無料
  • インフラの設定と管理が必要

作成できる生成 AI アプリの例

  1. カスタマーサポートチャットボット - 顧客の問い合わせに自動対応するAIアシスタント
  2. マーケティングコピーライター - 商品説明やプロモーション文を自動生成
  3. 法律文書アシスタント - 契約書や法的文書の作成・分析を支援
  4. コンテンツサマライザー - 長文記事や報告書を要約するツール
  5. プログラミングアシスタント - コード生成や問題解決をサポートする開発者向けツール

今回は Dify コミュニティ版のセルフホストについて、少し掘り下げてみましょう。

3. AWS 環境で EC2 ベースでの Dify サーバの構築

ここでは「Dify サーバ (EC2)」+「Amazon Bedrock」+「ELB(ALB)」という構成で構築する方法をご紹介します。注目のクラウドサービス AWS における、ポピュラーかつ実用的な構成です。

ぶっちゃけ、Dify を稼働させるには Docker + docker compose が利用できる環境があれば十分ですが、今回は AWS での本格的な構築方法をご案内します。

※以下の手順は、一部の詳細を省略したダイジェストでの紹介になります。

DifySystem001

AWS 環境の構築

  1. VPC の作成

    • AWS マネジメントコンソールにログインし、VPC サービスを選択
    • 「VPC を作成」をクリックし、必要な設定(CIDR ブロック、サブネットなど)を行う
    • パブリックサブネットとプライベートサブネットを設定
  2. セキュリティグループの設定

    • EC2 インスタンス用のセキュリティグループを作成
    • 必要なポート(HTTP:80、HTTPS:443、SSH:22)の許可設定を行う

EC2 を Linux サーバで構築

  1. EC2 インスタンスの起動

    • Amazon Linux 2 や Ubuntu などの Linux AMI を選択
    • 必要なスペック(t3.medium 以上推奨)を選択
    • 作成した VPC とサブネットを選択
    • キーペアを作成またはインポート
    • ストレージは最低 30GB 以上を推奨
  2. EC2 への接続とセットアップ

    • SSH を使用して EC2 インスタンスに接続
    • システムの更新: sudo yum update -y または sudo apt update && sudo apt upgrade -y
    • Docker と Docker Compose のインストール:
      sudo amazon-linux-extras install docker
      sudo service docker start
      sudo usermod -a -G docker ec2-user
      sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      sudo chmod +x /usr/local/bin/docker-compose

Amazon Bedrock の設定

  1. Bedrock サービスの有効化

    • AWS マネジメントコンソールで Bedrock サービスに移動
    • 必要なモデル(Claude、Titan など)へのアクセスをリクエスト
  2. API キーの作成

    • IAM コンソールで Bedrock へのアクセス権を持つ IAM ユーザーを作成
    • アクセスキー ID とシークレットアクセスキーを取得
      ※ Dify は IAM ロールにも対応しているため、適切な IAM ロールを用意して EC2 に適用することも可能です。

Dify のインストール

  1. Dify リポジトリのクローン

    git clone https://github.com/langgenius/dify.git
    cd ~/dify/docker
  2. 環境設定ファイルの準備

    cp .env.example .env
  3. .env ファイルの編集

    • データベースやキャッシュ設定
    • AWS 認証情報の設定
      ※1 .env ファイルを用意するだけでも利用は可能です。
      ※2 Dify は IAM ロールに対応しているため、適切な IAM ロールを用意して EC2 に適用することも可能です。
  4. Docker Compose でのデプロイ

    docker-compose up -d

Dify の初期設定

  1. Web インターフェースへのアクセス

    • ブラウザで http://<EC2のパブリックIP>/install にアクセス
      ※初期は HTTPSでないことにご注意を
  2. 管理者アカウントの作成

    • 初回アクセス時に管理者アカウントを登録
       ※名前、メールアドレス、パスワードを設定
       ※メールアドレスがログインアカウントになります。
  3. LLM プロバイダーの設定

    • 設定画面で Amazon Bedrock を選択し、API キーを設定
      ※ Dify は IAM ロールに対応しており、IAM ロールを適用済みなら API キーは不要になります。
  4. ACM の設定

    • ALB で SSL 証明書を利用するため、適当なドメインを用意して SSL 証明書を準備します。
  5. ALB の設定

    • AWS マネジメントコンソールで ALB を作成
    • ターゲットグループに EC2 インスタンスを追加
    • リスナーとルーティングの設定
      ※ 最初はセキュリティを考慮して、セキュリティグループで ALB へのアクセスを制限すると良いでしょう。

4. Dify で Workspace の紹介

Workspace は Dify 上でのプロジェクト管理の単位であり、チームやプロジェクトごとに分けて管理できます。複数のアプリケーションや設定を一つの Workspace にまとめることで、共同作業を効率化します。

DifyStudio 001
※注:こちらは、アプリを登録(作成)した状態になります。

(1) スタジオ

スタジオは Dify の中核となる機能で、生成 AI アプリをノーコードで作成できる作業環境です。直感的なインターフェースを通じて、複雑なプログラミングなしでアプリケーションを設計できます。

初心者向け

チャットボット

  • 質問応答形式で対話する AI アプリケーション
  • プロンプトテンプレートを使って AI の応答をカスタマイズ可能
  • 知識ベースを連携させて特定領域に特化した回答を提供可能

エージェント

  • より高度なタスクを実行できる自律型の AI アシスタント
  • ツールや外部 API との連携が可能
  • 複数のステップを要する複雑なタスクを自動化

テキスト ジェネレーター

  • 特定の形式や目的に合わせたテキストを生成
  • マーケティングコピー、記事、レポートなどを自動作成
  • テンプレートを使用して一貫した出力フォーマットを維持

上級ユーザー向け

チャットフロー

  • 会話の流れをビジュアルに設計できる高度な機能
  • 条件分岐や意思決定ポイントを含む複雑な対話を構築
  • ユーザー入力に基づいて動的に会話の方向を変更可能

ワークフロー

  • 複数の AI モデルや外部サービスを連携させる自動化プロセス
  • データの処理から分析、出力までを一連の流れとして設計
  • API やデータベースとの連携による高度な業務自動化

(2) ナレッジ

Dify のナレッジ機能は、AI アプリケーションに外部知識を与えるための仕組みです。主な特徴は以下の通りです:

  1. 知識ベースの作成:様々なドキュメント(PDF、Web ページ、テキストなど)をアップロードして、アプリケーション専用の知識ソースを構築できます。

  2. データの取り込みと処理:アップロードされたコンテンツは自動的に処理され、検索可能なチャンクに分割されます。

  3. RAG(Retrieval-Augmented Generation)アプローチ:ユーザーの質問に基づいて関連する知識を取得し、AI の回答生成に活用します。

  4. セマンティック検索:単なるキーワードマッチングではなく、質問の意味に基づいて関連情報を検索します。

  5. 引用と出典表示:AI が回答する際に、情報の出典を明示できるため、透明性と信頼性が向上します。

この機能により、AI アプリケーションは汎用的な知識だけでなく、特定のドメインや組織の専門知識に基づいて応答できるようになります。

(3) ツール

Dify のツール機能は、AI アプリケーションの能力を拡張するための仕組みです。これにより、AI はテキスト生成だけでなく、外部システムと連携して実際のアクションを実行できるようになります。

主な特徴:

  • 組み込みツール:天気情報取得、ウェブ検索、計算機能など基本的なツールが最初から利用可能
  • カスタムツール開発:REST API を通じて独自のツールを定義・接続可能
  • 関数呼び出し:AI が状況に応じて適切なツールを選択し、必要なパラメータで実行
  • ワークフロー統合:複数のツールを連携させて複雑なタスクを実行

これらのツールを活用することで、データベース操作、予約システム連携、社内システムとの統合など、より実用的な AI アプリケーションを構築できます。

5. おわりに

今回は Dify についての概要と AWS 環境での始め方などをご紹介しました。「使ってみたいけれど、環境構築や維持が大変そう…」と感じる方は、ぜひ当社へご相談ください。
(当社内では、社内向けで Dify を運用、活用をしています)

当社では Dify 導入をサポートするサービスをご用意しております。詳しくは、以下の URL をご参照ください。
https://denet.ad.jp/cloudassist/aws/solution-example/dify/

次回以降も Dify 関連のお話を予定しております。ラインナップとしては、

  • Dify の RAG 機能のナレッジの詳細説明
  • Dify の機能拡張の Plugin について
  • Dify と他のサービス(Slack など)との連携
  • Dify と Amazon Bedrock の組み合わせによる応用例
  • Dify アプリの定期実行方法

などを予定しています。不定期での投稿になることはご容赦ください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA