目次
はじめに
前回より少し時間が空いてしまいました。こんにちは、ディーネットのよろず請負、深見です。
(※最近は社内でのDify担当になっています)
前回は駆け足でしたが、Difyの概要とAWS環境での構築について簡単にご紹介しました。今回は前半で前回のおさらいとしてAWS環境での構築ポイントをまとめ、後半ではDifyアプリとしてチャットボットの作成手順を詳しくご紹介します。
実際のDifyアプリ作成を通して、Difyでのアプリケーション開発がいかに簡単であるかを体感いただけると思います。
Dify環境構築のおさらい
前回はAWS環境をベースに、Difyのコミュニティエディションを使ったサーバ構築をご紹介しました。主な構成要素は以下の通りです:
- AWS のネットワーク環境(VPC)の作成
- Dify サーバとなる EC2 インスタンスの準備
- ALB(Application Load Balancer)の作成
- Bedrock の設定
VPC の作成
特別なポイントはありませんが、注意点としてはEC2を作成するサブネットをPublicにするかPrivateにするかという選択があります。
セキュリティを考慮するとPrivateサブネットが望ましいのですが、その場合はDifyのメンテナンス作業に注意が必要です。DifyのバージョンアップなどではGitHubへのアクセスが必要となるため、NATインスタンスやNAT Gatewayの設定を検討する必要があります。
前回の構築では、この点を考慮してサブネットをPublicとして設計しました。
※Publicサブネットを選択する場合は、セキュリティグループでの制限など、適切なセキュリティ対策を講じることが重要です。
EC2 インスタンスの作成
EC2インスタンスはLinuxサーバとして構築します。推奨スペックは以下の通りです:
- インスタンスタイプ:t3.medium(2vCPU, 4GBメモリ)
- ディスク容量:50GB以上を推奨
- サーバOS:Docker + docker-compose が利用できれば問題なし
(AmazonLinux2023やAlmaLinux9系での動作確認済み、Ubuntuでも問題ありません) - gitコマンドも利用できるように準備
ALB の作成
Difyサーバを構築した時点では、HTTPでの通信のみとなります。一時的な利用や、セキュリティグループで自社からのアクセスのみに限定する場合は問題ありませんが、社外からのアクセスも必要となる場合はSSL化によるHTTPS通信が必要です。
ここではALBを介してDifyサーバへアクセスする構成とし、SSL証明書はACMを利用してALBに設定しています。
ALBの利用には以下のメリットがあります:
- サイトのSSL化
- ルールによるアクセス制御
- Amazon Cognitoと組み合わせることによるDifyアプリへの認証機能の追加
Bedrock の設定
DifyでモデルプロバイダーとしてBedrockを利用する場合、事前にBedrockでモデルアクセスの許可(アクセスの付与)を設定する必要があります。Difyではアクセス許可を与えられたモデルのみが利用可能となります。
IAM の設定
通常、DifyでBedrockを利用するにはアクセスキーとシークレットアクセスキーが必要ですが、現在のDifyではIAMロールに対応しています。事前にEC2へIAMロールを適用しておけば、アクセスキーとシークレットアクセスキーは不要となります。
セキュリティ上、アクセスキーの使用は避けたいところですので、IAMロールでの対応が推奨されます。
以下はDifyがBedrockにアクセスするために必要なIAMポリシーの参考例です:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "*"
}
]
}
※Resourceについても、利用するモデルで制限をかけることをお勧めします。
Difyアプリ(チャットボット)の作成
それでは、実際にDifyでチャットボットアプリを作成してみましょう。
-
Workspace上の「最初から作成」を選択
-
「チャットボット」を選択
-
「アプリのアイコンと名前」と「説明(任意)」に情報を入力し、[作成]をクリック
-
基本設定画面が表示されます。初回は特に設定変更せず、そのまま進みましょう
-
[更新を公開]をクリックし、続いて[アプリを実行]をクリック
-
ブラウザで別タブ(ウィンドウ)が開き、チャットボットとして利用できるようになります
これだけで簡単にチャットボットが作成できました!
Difyアプリ(チャットボット)の調整
チャットボットの動作調整は「手順」(プロンプト)で行います。ここでチャットボットの性格付けをし、話し方や特徴、得意分野などを設定できます。
プロンプトの記述に迷った場合は、便利なお助け機能があります:
- 右上の[自動]をクリックする
- 「プロンプト生成器」が開きます
- [指示]欄に希望する内容を箇条書きで記述
- [生成]をクリックすると、指示に沿ったプロンプトが自動生成されます
- 内容に問題なければ、[適用]をクリック
※注意:適用すると元の[手順]の内容が上書きされますので、元の内容が必要な場合は事前にコピーなどをしておいてください。
変更後は[更新を公開]をクリックし、[アプリを実行]で動作確認します。
この段階ではほぼデフォルト設定での作成となりますので、イメージと異なる場合は自動生成したプロンプトを編集して調整するか、再度プロンプト生成器で作り直すとよいでしょう。
プロンプト調整は試行錯誤の過程を楽しみながら、ぜひ感覚を掴んでいただければと思います。ChatGPTを利用されている方であれば、プロンプト作成のコツはある程度理解されているかもしれません。
おわりに
今回も駆け足気味になりましたが、Dify活用の一部をご紹介できたかと思います。
「Difyを自社向けに導入したいけれど、なかなか大変そう...」と感じる方は、ぜひ当社にご相談ください。当社ではDify導入をサポートするサービスをご用意しております。詳しくは、以下のURLをご参照ください。
https://denet.ad.jp/cloudassist/aws/solution-example/dify/
今後もDify関連の記事を予定しています。ラインナップとしては:
- Difyアプリの作成(チャットフロー、ワークフローなど)
- Difyの機能拡張であるPluginについて
- DifyのRAG機能におけるナレッジの詳細解説
- DifyとAmazon Bedrockの組み合わせによる応用例
- Difyと他のサービス(Slackなど)との連携
- Difyアプリの定期実行方法
など、様々なトピックを予定しています。不定期での投稿となりますが、ご了承ください。