AWS EC2 で Dify 環境を構築する

はじめに

こんにちは。システム部の W です。

生成AIの活用が加速する中で、業務に役立つAIアプリケーションをスピーディに作りたいというニーズが高まっています。

本記事では、オープンソースの生成AIプラットフォーム「Dify」を使って、AWS EC2上にシンプルなAIチャットアプリ環境を構築する手順をご紹介します。

今回はEC2 + DockerによるDify環境構築及び簡単な対話アプリ作成をご紹介します。



Difyとは

Dify とは、ChatGPTなどの大規模言語モデル(LLM)を活用した生成AIアプリケーションをGUIAPIで構築・管理できるオープンソースプラットフォームです。

ノーコード・ローコードの操作でチャットボットや業務支援ツールを簡単に作成できます。

外部API連携やRAG(Retrieval-Augmented Generation)による回答精度の向上も可能です。

本記事では、Difyのローカル環境を AWS EC2 + Docker 上に構築し、Webブラウザからアクセスできる状態にします。

なお、本記事はDockerベースの仮想実行環境で構築を行います。

dify.ai


EC2 インスタンスの作成

※ 接続にはInstance Connectを使用するため、キーペアは不要。

AWSマネジメントコンソールにログイン
② EC2サービスを選択し、「インスタンスの作成」をクリック
Amazon Linux 2023 を選択。
インスタンスタイプは t3.medium を選択 *1
⑤ Nameタグを設定:"Dify-EC2-Instance"
⑥ ストレージは20GB以上を選択 *2
⑦ ネットワーク設定はそのままデフォルトを使用する
⑧ セキュリティグループを設定

  • SSH (ポート22):全てのIPを許可 または 自分のローカル端末のIP
  • HTTP (ポート80):全てのIPを許可 または 自分のローカル端末のIP
    *3

インスタンスを起動


EC2への接続

① 「インスタンス」メニューを選択
② EC2一覧から、作成したインスタンスを選択する
② 「接続」ボタンをクリック
③ 接続方法「EC2 Instance Connect」を選択
④ 「接続」ボタンをクリック *4
⑤ 接続確認
Amazon Linux のロゴとバージョン情報が表示されていることを確認


システムパッケージのアップデート

① コマンドを実行

sudo yum update -y

 Completeと表示されれば完了


Dockerのインストール

① インストール

sudo yum install -y docker

② サービスを起動

sudo systemctl start docker

インスタンス起動時に自動起動するように設定

sudo systemctl enable docker

④ バージョンを表示して、正しくインストールされたかを確認する

docker --version

 出力例:Docker version 24.0.5, build ced0996

 ※ Dify利用時にはDockerが起動している必要があります。


Docker Composeのインストール

① Docker Compose バイナリをダウンロード

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 ※curlがインストールされていない場合は下記コマンドでインストールする

sudo yum install -y curl

② 実行権限付与

sudo chmod +x /usr/local/bin/docker-compose

③ インストール成功確認(バージョン確認)

docker-compose --version

Gitインストール

Gitをインストールする

sudo yum install -y git

インストール確認(バージョン確認)

git --version

Difyのソースコードを取得

① Dify のリポジトリGitHub からクローン

git clone https://github.com/langgenius/dify.git

② Docker 用の構成があるディレクトリに移動

cd dify/docker

環境ファイル(.env)の作成と編集

① .env.example を .env にコピー

cp .env.example .env

② .env ファイルをエディタ(ここではviを使用する)で開く

vi .env

③ ファイル末尾に以下の3行を追加

PORT=5000  # Difyを起動するポート番号(デフォルト: 5000)
DATABASE_URL=postgresql://postgres@db:5432/dify
DISABLE_SIGNUP=true  # アカウント作成制限

Dify の起動(Docker Compose)

※ Dify起動後は、ポート80がすべてのIPを許可している場合、第三者が管理者を設定できる状態です。

手順10,11を実行して管理者を設定するか、時間をおいて作業を再開する場合にはインスタンスを停止してください。

またはセキュリティグループで自分のIPのみを許可する設定にしていれば、上記のリスクはありません。

① docker-compose.yaml のあるディレクトリへ移動(例: docker ディレクトリ)

cd dify/docker

② Docker Compose を使用してコンテナを起動

docker compose -f docker-compose.yaml up -d

③ 起動後の確認

docker-compose ps

(各サービス(api、web、db など)が Up になっているかを確認)


Difyへのアクセス確認

① EC2インスタンスのパブリックIPアドレスを確認
② ブラウザで http://<前項で確認したパブリックIP> にアクセス
③ Difyの初期セットアップ画面が表示されることを確認

 ※ 本手順ではEC2のパブリックIPは再起動すると変更される
  よって、EC2を再起動した後はパブリックIPを再度確認する必要がある
 ※ 接続許可
  セキュリティグループのインバウンドルールが以下に設定されている必要がある
  ポート80:「0.0.0.0/0」または「アクセスする自分のIPアドレス


管理者アカウントの作成

① 管理者設定画面の表示
  前項でアクセスした際にはこの画面が表示されている
② 任意のメールアドレスとパスワードを入力し、管理者を作成
③ 作成が完了すると、自動的にログイン状態になる
④ 管理者設定以降のアクセス
  ユーザーログイン + アカウント作成画面になる
  管理者とは別のアドレスとパスワードを設定する
  (同じメールアドレスとパスワードでも登録は可能)
  第三者はポート80が「0.0.0.0/0」で許可されていて、ログイン画面にアクセスできる場合でもアカウント作成はできない
  (※ DISABLE_SIGNUP=true の設定による、falseに変更すれば誰でもアカウント作成が可能になる)


Dify初期画面へのログインと確認

① Difyにログインし、初期管理画面が表示されることを確認
②ブラウザで http://<EC2のパブリックIP> にアクセス
③ Difyのダッシュボード画面が表示されることを確認


OpenAIのAPIキーの取得

LLM(大規模言語モデル)を使用するには、OpenAIのAPIキーが必要です。
OpenAIのAPIを利用するためには、以下の点に注意してください。

API利用には、OpenAIの公式サイトでユーザー登録が必要です。
openai.com

APIを有効にするためには、Billingページにて事前にチャージ(入金)が必要です。
platform.openai.com

支払いはクレジットカードのみです。
最低チャージ金額は 5ドル からです。
利用ごとに、APIの使用量に応じてチャージされた金額から引かれていきます。
チャージ残高がゼロになると、LLMの利用はできなくなります。
請求状況は OpenAIのBillingページで確認可能です。
実際の利用前に、どのモデルをどれだけ使うかを確認し、料金が発生する点をご理解のうえでご利用ください。
OpenAI API 利用料金:API Platform 料金
本手順では安価なGPT‑3.5 Turboを使用します。

① OpenAIの公式サイトにアクセスし、アカウントを作成、既にアカウントを作成済みならばログイン
② ログイン後、左のメニューから「API keys」を選択
③ 右上にある「Create new secret key」ボタンをクリックし、任意の名前をつけてキーを生成
④ 表示されたキーをコピーして保存
 ※ この画面でしか確認できないため、必ず保存しておく
 ※ API keyは第三者に知られないようにすること


LLMプロバイダーの設定

DifyでLLM(大規模言語モデル)を使用するための設定。
ここではOpenAIのAPIキーを使用する。

① Difyのダッシュボードにログイン
② 画面右上のアイコンをクリックして設定を開く
③ 左のメニューからモデルプロバイダーを選択
④ 「OpenAI」のカードにある「セットアップ」ボタンをクリック
⑤ 先ほど取得したAPIキーを入力し、「保存」をクリック


アプリの作成と実行(対話アプリ)

Dify上でチャット型の対話アプリを作成します。

① 「アプリを作成する」の「最初から作成」を選択
② 「チャットボット」を選択
③ アプリのアイコンと名前を入力
  説明は任意で入力
④ 「作成する」ボタンを押す
⑤ アプリが作成されるとダッシュボードにアプリが表示される

作成したアプリの主な機能
ユーザー入力を受けて応答するチャット型アプリです。
現在は オーケストレーション(プロンプト設計) 部分が空欄で、Difyがデフォルトのプロンプトで動作しています。
AWSVPCについて初心者にわかるように説明してください」といった質問に対して、わかりやすい文章で返答しています。
プロンプトに独自の指示文を記述すれば、より特化したAI応答が可能になります。
コンテキストをインポートすれば、特定ドメインの知識を持たせることが可能(例:社内マニュアルやFAQなど)です。


*1:選択理由:Difyの推奨構成は 2 vCPU / 4 GiB 以上

*2:Dockerを使用したインストールは20GB以上を推奨

*3:セキュリティの観点から、接続する機器のIPのみを許可することが望ましい

*4:セキュリティグループでポート22が許可されている必要がある